Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

algorytm - Zasilacz cyfrowy laboratoryjny

piurek10 19 Sty 2015 18:29 762 5
  • #1 19 Sty 2015 18:29
    piurek10
    Poziom 13  

    Witajcie
    Jestem na etapie programowania układu zasilacza laboratoryjnego z ograniczeniem prądowym.
    mikrokontroler atmega16
    Mój algorytm jest taki:

    Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej)
    W przerwaniu:
    - sczytane wartości napięć i prądów i porównanie ich z wartościami zadanymi
    -jeśli prąd powyżej 1A niż zadany to wyjście napięciowe zmniejszone o połowę i wystawia zmienną kontrolną1 na 1
    -Jeśli różnica 0,5A a 1A to napięcie zmniejszone o 0,8V zmienna kontrolna2 na 1
    -jeśli nie ma regulacji to zmienne kontrolne na zero

    Pętla główna:
    - obsługa przycisków
    - wyświetlanie co 1s wartości prądu oraz bez przerwy wartości zadanych (konieczne przy obsłudze przez przyciski.
    - Jeśli prąd przekracza 100mA to zmniejszenie napięcia o 0,11V i kontrolna3 1
    w przeciwnym przypadku na 0
    - regulacja napięcia jeśli wszystkie kontrolne na zero
    gdy napięcie około 2,7V od zadanej to zmiana o około 1,2V gdy natomiast różnica mniejsza niż 2,7V to zmiana o 0,156V

    Tak więc to jest mój algorytm jak macie jakieś uwagi to proszę napiszcie. Całość pisana jest w bascomie, w przerwaniu nie mogę zejść z czasem niżej bo dużo czasu zajmują obliczenia na zmiennych zmiennoprzecinkowych.

    0 5
  • #2 19 Sty 2015 18:34
    dondu
    Moderator Mikrokontrolery Projektowanie

    piurek10 napisał:
    Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej)
    ...
    Całość pisana jest w bascomie, w przerwaniu nie mogę zejść z czasem niżej bo dużo czasu zajmują obliczenia na zmiennych zmiennoprzecinkowych.

    No to nie stosuj zmiennoprzecinkowych obliczeń oraz zrób krok do przodu i zmień język na C.

    Co do samego algorytmu - skoro jest ograniczenie które znasz, to je usuń.

    0
  • #3 19 Sty 2015 22:37
    piurek10
    Poziom 13  

    Mam za mało czasu jeśli chodzi o naukę C. Co do zmiennoprzecinkowych to w pewnych musze ze względu na dzielenie które jest nieuniknione. Chciałem się upewnić czy rozkład zadań jest odpowiedni.

    0
  • #4 19 Sty 2015 22:43
    dondu
    Moderator Mikrokontrolery Projektowanie

    Każde zadanie można zrealizować na wiele sposobów zależnie od różnych ograniczeń i innych wymogów projektu. Dlatego Twój sposób jest dobry jeśli działa, a że natrafiłeś na jego ograniczenia i znasz ich przyczyny to bardzo dobrze, bo uzmysławia Ci to, że następny projekt powinieneś już robić w C.

    Dlatego nie bardzo jest Ci jak pomóc poza wskazaniem, byś co najmniej zmienił obliczenia na stałoprzecinkowe, o czym pisałem wcześniej.

    0
  • #5 15 Lut 2015 15:15
    jarek_lnx
    Poziom 43  

    Cytat:
    Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej)
    W przerwaniu:
    - sczytane wartości napięć i prądów i porównanie ich z wartościami zadanymi
    -jeśli prąd powyżej 1A niż zadany to wyjście napięciowe zmniejszone o połowę i wystawia zmienną kontrolną1 na 1
    -Jeśli różnica 0,5A a 1A to napięcie zmniejszone o 0,8V zmienna kontrolna2 na 1
    -jeśli nie ma regulacji to zmienne kontrolne na zero

    Dziwny ten algorytm, jak na regulator bardzo niedokładny i bardzo powolny, jeśli nie możesz użyć wydajnego procesora szybkiego ADC i DAC i porządnego kompliatora z optymalizacją, to nie ma sensu tego robić cyfrowo.
    Zrób to analogowo, byle jaki wzmacniacz operacyjny za 50gr da ci kilka tysięcy razy lepszy czas regulacji (kilka us) oraz kilkaset razy lepszą dokładność (<1mA), a na wejęcie analogowego układu regulacji podasz sygnał z DAC'a i będziesz miał sterowanie cyfrowe..

    Cytat:

    Co do zmiennoprzecinkowych to w pewnych musze ze względu na dzielenie które jest nieuniknione
    Czy ten Bascom jest aż tak kiepski że dwóch liczb stałoprzecinkowych podzielić nie umie? Nawet jeśli to wielu przypadkach można zastąpić dzielenie mnożeniem, nie wydaje mi sie żeby w zasilaczu było coś czego nie można zrobić bez liczb zmiennoprzecinkowych.

    O ile w ograniczeniu prądowym można zaakceptować taki kulawy regulator cyfrowy (nie wszyscy potrzebują stabilizacji prądu) to wymagania na parametry stabilizacji napiecia zazwyczaj są dość ważne, mam nadzieję że napiecia nie regulujesz cyfrowo.

    0
  • #6 15 Lut 2015 15:38
    tmf
    Moderator Mikrokontrolery Projektowanie

    piurek10 napisał:

    Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej)
    W przerwaniu:
    - sczytane wartości napięć i prądów i porównanie ich z wartościami zadanymi
    -jeśli prąd powyżej 1A niż zadany to wyjście napięciowe zmniejszone o połowę i wystawia zmienną kontrolną1 na 1
    -Jeśli różnica 0,5A a 1A to napięcie zmniejszone o 0,8V zmienna kontrolna2 na 1
    -jeśli nie ma regulacji to zmienne kontrolne na zero


    Przecież regulacja i kontrola prądu co 8 ms jest zupełnie bez sensu. Do czego tak zabezpieczony zasilacz miałby się przydać?
    W MCU masz komparator analogowy - wystarczy na jedno wejście podać mierzoną wartość a na drugie wyfiltrowany PWM. Przerwanie będziesz miał tylko wtedy, gdy np. napięcie na jednym wejściu jest wyższe niż na drugim. Ciągle jest to słabe, ale już o niebo lepsze. Swoją drogą to nie ma sensu na siłę wszędzie wstawiać cyfrówki, nawet jeśli w danym zastosowaniu, jak już wspomniano, wystarczy prosty układ analogowy za 50 gr. MCU w takim zasilaczu może służyć np. do ustawienia napięć i prądów, czy ogólnego sterowania.

    0