Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Symulacyjny program do szacowania kilku filtrów RC dla PWM

trol.six 18 Nov 2020 10:00 7902 0
  • Symulacyjny program do szacowania kilku filtrów RC dla PWM

    Program symulacyjny do obliczania wartości tętnień oraz czasu stabilizacji kilku filtrów RC z przebiegu PWM (skrótowo):
    1xRC, 2xRC, 3xRC, 3xRC_BUF, SALLEN-KEY, RC_SALLEN-KEY, 4th_1xOPAMP, 2xSALLEN-KEY

    Na wstępie, gdyby ktoś nie wiedział, co to jest PWM i filtry napisałem troszke o tym:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=19084682

    Myśle że warto przeczytać, chociaż wstęp, inaczej możecie nie wiedzieć o czym jest ten program.

    Programik pisany był na system linux, działa w konsoli, nie wiem czy skompiluje się na innych systemach.

    Prezentuje się skromnie :)

    Symulacyjny program do szacowania kilku filtrów RC dla PWM

    Po uruchomieniu mamy następujące opcje do wyboru:

    EDYCJA:
    LEFT / RIGH - poruszanie sie po menu
    UP/ DOWN - zmiana o 1
    + / - zmiana o 0.1
    0.123456789 zatwierdzenie ENTEREM - nowa wartość z klawiatury

    Edytowany element ma znaczek '>' dla rozpoznania.

    1xRC itp - rodzaj filtru
    T - stała czasowa (wartości elementów R1 C1 1 równej okresowi PWM)
    I - współczynnik rezystancji (impedancji) dla elementów gałęzi RC
    IFL - współczynnik rezystancji (impedancji) dla gałęzi filtrów aktywnych
    MPWM - zwielokrotnienie PWM (np. zamiast 1x12 bit 2x11 bit)
    TIMS - maksymalny czas trwania symulacji
    CPWM - ilość cykli obliczeniowych (precyzja)

    ALL SAVE / ADD-a - zapisywanie wszystkich lub po wciśnięciu 'a', symulacji do pliku html
    AUTOMATIC / MANUAL - automatyczne wyliczenie wartości RC (z T I IFL) lub ręczna edycja

    R1-R4 C1-C4 - wartości elementów w odniesieniu do okresu PWM

    r -uruchom symulacje
    q - wyjście z programu
    a - dodaj wyniki do pliku html
    c - zakończ plik html

    Tak prezentują się filtry:

    Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM

    Program podczas obliczeń określa czas stabilizacji oraz wartości tętnień dla 50% wypełnienia, plus wartości overshoot.

    Wyniki:
    aprox - aproksymacja do kolejnej liczby dziesiętnej( dla 50% PWM to jest 0,4 0,49 0,499 .. itd )
    tim - czas w stałych czasowych okresu PWM
    pk-pk - tętnienia międzyszczytowe za określony okres

    overshoot - wyniki overshoot jeśli takowe zostały obliczone
    tim - czas w stałych czasowych overshoot
    value - wartość overshoot
    pk-pk - tętnienia międzyszczytowe za określony okres

    Dla każdego podaje czas w stałych czasowych. Zapisuje także wyniki w pliku html, ilość wyników jest ograniczona do 15 na jeden plik html. Może być mniejsza przez wciśniecie 'c' i zakończenie zapisywania do pliku. Pliki html numerowane są od 0 do 999. Pliki nie są nadpisywane i zapisywane są do kolejnej wolnej numeracji.

    Progam kończy symulacje gdy:
    - wartości będą różne, i dokładne 9 miejsc po przecinku
    - wartość międzyszczytowa overshoot jest mniejsza niż 9-go miejsca po przecinku
    - zrobiono 9 analiz dla overshoot
    - przekroczony został czas symulacji
    - przekroczono 90000 stałych czasowych

    Wykresy:
    Jeźeli mamy w systemie program do wykresów gnuplot, to generuje trzy zbiorcze wykresy.
    Jeden z czasem ustalania, drugi z wartością międzyszczytową, trzeci parametr to jakość filtracji.
    Gnuplot ma kilka wyjść generujacych grafike, wybierane są w kolejności: png, jpeg, pngcairo

    Opis legendy na wykresach:
    filtr-kolejny numer symulacji-stała czasowa-współczynnik impedancji dla RC-współczynnik impedancji dla SK-zwielokrotnieniePWM

    Przykład zbiorczych wykresów:

    Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM Symulacyjny program do szacowania kilku filtrów RC dla PWM


    Tak prezentuje się strona html:
    Symulacyjny program do szacowania kilku filtrów RC dla PWM

    Opcje podczas uruchomienia:
    -p ścieżka gdzie mają być zapisywane wyniki symulacji, ostatni katalog nie musi istnieć.
    domyślnie /tmp/pwmf

    Ograniczenia:

    R - 0.1 - 1000000
    C - 0.001 - 1000
    T - I - IFL - 0.1 - 10000
    MPWM - 1 - 2048 (potęgi dwa)
    TIMS - 1 - 1000
    CPWM - 1 - 10000

    Wady:
    słabym punktem programu, którego jeszcze musze przemyśleć, jest fakt że dla filtrów z oscylacjami wykresy są tylko w zakresie do czasu osiągnięcia tych 50%. Wynika to z tego że 100% pewne oszacowanie takich na bazie symulacji filtrów jest problematyczne. O ile przy wykryciu kilku kolejnych oscylacji daje możliwość oszacowania wartości o tyle czasem odpowiedź układu jest długa w skali czasu i nie ma po prostu dostatecznych danych. No, może angażując bardziej zaawansowaną matematyke. No ale ja jestem przeciętniakiem matematycznym :)

    Kolejna rzecz to odróżnienie z wykresu czy dane są po oscylacjach czy nie. Tego też nie widać. A może okazać się istotne. Stąd wykresy mają charakter wizualizacyjny a konkrety należy odczytać po prostu z danych.

    Błedy obliczeniowe:
    Program liczy dość prosto na liczbach typu double. Nie jest jakimś majstersztykiem obliczeniowym, ponieważ mam takie wrażenie że większa dokładność nie jest jakoś potrzebna.

    Wyniki wartości tętnień dla różnych CPWM dla filtra SALLEN_KEY dla dokładności 6:

    1    0.03124988
    2    0.03100568
    4    0.03088414
    8    0.03082351
    16   0.03079350
    32   0.03077863
    64   0.03077120
    128  0.03076750
    256  0.03076565
    512  0.03076473
    1024 0.03076427
    2048 0.03076404


    Im większa jest wartość CPWM tym dłuższy czas kalkulacji z powodu większej ilości obliczeń.

    Plany:
    - kolorowanie
    - uruchamianie symulacji z danych z pliku
    - uruchomienie wykresu podczas działania programu
    - ulepszenie pliku html: np sortowanie itp
    - jakiś opis itp.


    Program:

    Program jest na gitlabie, na licencji GNU-GPLv2, wersja binarna 32 i 64 bitowa linux, źródła:
    https://gitlab.com/trolsix/pwmfl/

    Wersja 0.1.0 w załączniku

    Cool? Ranking DIY
    About Author
    trol.six
    Level 31  
    Offline