logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega8][BASCOM] uP stabilizator prądu, problem z konfig

Tomekddd 11 Gru 2010 12:21 2190 26
REKLAMA
  • #1 8853845
    Tomekddd
    Poziom 23  
    Witam, chcę zrobić coś w rodzaju stabilizatora prądu na tym uK i mam pewien problem. Otóż procek ma generować sygnał PWM który będzie sterował jasnością diody o stałym wypełnieniu impulsu do czasu zmiany parametru zasilania tzn. jeśli napięcie zasilania spadnie to i na wyjściu PWMu będzie niższe wtedy Atmega ma zwiększyć wypełnienie PWMu aby dioda nie zmieniła jasności świecenia to samo ma zrobić w przypadku wzrostu napięcia zasilania tyle że wtedy zmniejszy wypełnienie PWMu. Napisałem krótki program w którym uK mierzy PWM ale niestety nie działa. Wyczytałem że to powinno być mierzone w połowie impulsu PWM ale nie mam pojęcia jak skonfigurować do tego atmegę. Kanał ADC0 mam podłączony pod wyjście OC1A.

    Może ma ktoś jakieś sugestie jak taki układ zrealizować z jak najmniejszą ilością elementów zewnętrznych?

    Mój kod poniżej
    $regfile = "m8def.dat".dat "
    $crystal = 8000000
    
    Config Lcd = 16 * 2                                         'konfiguracja wyświetlacza
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.6 , Rs = Portd.7
    
    
    Config Pind.0 = Input
    Config Pind.1 = Input
    Config Pinb.1 = Output
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 8
    
    Set Portd.0
    Set Portd.1
    
    S1 Alias Pind.0
    S2 Alias Pind.1
    
    Dim Warpwm As Byte
    Warpwm = 0
    Dim Waradc As Byte
    Waradc = 0
    
    
    Cursor Off = Nobline
    
    Start Adc
    Do
    Cls
    Waradc = Getadc(0)
    Debounce S1 , 0 , Up , Sub
    Debounce S2 , 0 , Down , Sub
    Pwm1a = Warpwm
    Locate 1 , 1 : Lcd Warpwm
    Locate 2 , 1 : Lcd Waradc
    Waitms 100
    Loop
    End                                                         'end program
    
    
    Up:
    Incr Warpwm
    Return
    
    Down:
    Decr Warpwm
    Return
  • REKLAMA
  • #2 8854131
    Konto nie istnieje
    Poziom 1  
  • #3 8854265
    Tomekddd
    Poziom 23  
    Teraz mam podłączone ADC pod wyjście PWM i niestety uK nie mierzy nic, czasem coś wyskoczy na wyświetlacz ale zaraz znika tak jakby trafiał z pomiarem akurat w zero PWMu.

    Ten układ musi mierzyć PWM dlatego że do diody nie daję rezystora bo będzie to zasilane z 3V a przy niewielkim spadku napięcia zasilania strasznie spadnie jasność diody bo rezystor będzie miał za duży spadek.

    Ślęczę nad notą atmegi i nie mogę sobie poradzić z tym timerem.
  • #4 8854340
    Konto nie istnieje
    Poziom 1  
  • #5 8854401
    Tomekddd
    Poziom 23  
    No to teraz już nie mam pojęcia jak to zrobić. Masz jakiś pomysł?

    Takie coś chciałem zrobić
    Cytat:
    A najlepiej to chyba mierzyć prąd impulsowy gdzieś w środku impulsu PWMa.
    I odpowiednim wartościom prądu impulsowego przyporządkować odpowiednie wartości PWMa.
    To już nie wymaga filtru (nie może go w zasadzie nawet tam być) i charakterystyka regulacji będzie sztywna i na pewno układ nie będzie się wzbudzał czy coś.
    Uruchamiasz Timer w trybie Phase Correct PWM. W przerwaniu od Compare (czyli w środku impulsu PWM) wyzwalasz pomiar ADC. Potem wartością ADC indexujesz tablicę z wartościami PWM i pobierasz nową wartość PWM. No i ładujesz ją do rejestru Compare Timera.


    cytat z tego tematu Link
  • #6 8854626
    Konto nie istnieje
    Poziom 1  
  • #7 8854643
    Tomekddd
    Poziom 23  
    A mogę dać bardzo mały rezystor żeby nie wpływał na jasność diody? czy np. 10Ohm wystarczy?
  • REKLAMA
  • #8 8854655
    Konto nie istnieje
    Poziom 1  
  • #9 8855028
    Tomekddd
    Poziom 23  
    Ok a jak dobrać rezystor żeby nie stracić na jasności diody nawet przy niskim napięciu?
  • #10 8855108
    Konto nie istnieje
    Poziom 1  
  • #11 8855141
    Tomekddd
    Poziom 23  
    Zasilanie tego będzie maks 3V więc nie aż tak dużo żeby bardzo przeciążyć diodę, a dodatkowo układ będzie włączany raz na kilka minut co tydzień czy dwa. Testuje teraz jakąś super jasna diodę steruję bezpośrednio PWMem bez rezystora o wypełnieniu 6% co daje prąd ok 4mA (miernik cyfrowy tyle wskazuje) i po 4 godzinach nic złego sie z nią nie dzieje.

    Wszystko było by ok gdyby tylko dało się tu wcisnąć automatyczną regulację wypełnienia żeby przy spadku napięcia zasilania zwiększyło się troszkę wypełnienie aby utrzymać te 4mA.
  • #12 8855273
    kots
    Poziom 12  
    Może nie doczytałem wszystkiego co już się pojawiło i powtarzam.

    Zamiast kombinować z trafianiem zrób układ mierzący średni prąd czyli między opornik pomiarowy a wejście procka dajesz układ RC o stałej czasowej kilka razy większej niż okres PWM.

    Innym wyjściem jest mierzenie napięcia zasilania i na jego podstawie wylicznanie wartości dla PWM
  • #13 8855297
    Tomekddd
    Poziom 23  
    Właśnie kombinuję w kierunku pomiaru napięcia zasilania ale nie mogę dojść do jakiegoś sensownego rozwiązania, da się jakoś zrobić żeby na podstawie napięcia zasilania obliczać wartość PWM? Jedyne na co wpadłem to ścisłe ustalenie przedziałów wypełnienia impulsu. Może jest jakiś algorytm który na bieżąco by obliczał?
  • #14 8855377
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #15 8855960
    Tomekddd
    Poziom 23  
    Poczytałem trochę i z tego co wiem to żeby takie tablicowanie wykonać to muszę utworzyć tablicę w której komórki będę przechwytywał wartość napięcia zasilania. A co po tym? Czy może do każdej komórki ze zmierzoną wartością zasilania przyporządkować wypełnienie PWMu?
  • #16 8855979
    Konto nie istnieje
    Poziom 1  
  • #17 8857452
    Tomekddd
    Poziom 23  
    Jak gęsto mogę wykonać pomiary? Narazie testuje to na zestawie uruchomieniowym na Atmedze8 która niżej niż 4,5V nie zejdzie.
  • #18 8857891
    Konto nie istnieje
    Poziom 1  
  • #19 8858022
    Tomekddd
    Poziom 23  
    Chodziło mi co ile zmniejszać napięcie zasilania żeby to wstawić do tabeli? co 0,5V wystarczy?

    Testuję to na zestawie uruchomieniowym w którym mam Atmegę zasilaną napięciem 5V atmega jest w wersji od 4,5 do 5,5V co nie pozwoli mi zmniejszyć zasilania poniżej dolnej granicy. Docelowy układ będzie wykonany na Attiny13 gdzie z zasilaniem mogę zejść do 1,8V ale pracował będzie na baterii 3V.
  • #20 8858070
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #21 8858845
    Tomekddd
    Poziom 23  
    Nom właśnie podejrzewam że odmówi współpracy ;) Pomiar wykonam w przeciągu kilku dni bo najpierw muszę jakoś zmniejszyć napięcie zasilania.
  • #22 8858865
    Konto nie istnieje
    Poziom 1  
  • #23 8858994
    Tomekddd
    Poziom 23  
    Dobry pomysł, muszę tylko wylutować stabilizator, jak tylko zrobię pomiary odezwę sie, to kwestia dwóch dni ;)
  • #24 8871652
    Konto nie istnieje
    Poziom 1  
  • #25 8871730
    Tomekddd
    Poziom 23  
    Zrobiłem i widzę mały problem otóż ta linia ma początek w miejscu poniżej zera a koniec sporo poniżej 192, tak miało być?
  • #26 8874970
    Konto nie istnieje
    Poziom 1  
  • #27 8876667
    Tomekddd
    Poziom 23  
    Dzisiaj dotarły do mnie części i zrobiłem pomiar na tych diodach które mają być docelowo w układzie, Z pomiary wyszło że charakterystyka troszeczkę sie spłaszczyła a to nawet lepiej. Nie musi być tak duże wypełnienie bo tylko do 175, a dokładniej to zerknij w załącznik.

    Co do załącznika to w arkuszu 1 wprowadziłem te poprawki, w drugim też do komórek od A6 do C6 i wykres który wstawiłeś troszkę się zmienił. Nie wiem tylko co zrobiłeś w komórkach niżej (tam gdzie jest pełno wartości) bo tu dane sie nie zaktualizowały. Druga sprawa to domyślam się że wartości w pierwszych komórkach to wartość zmiennej wypełnienia i zapewne zastosowałeś na to jakiś wzór którym procesor wyliczy sobie zmienną. Staram się rozkminić jaki to wzór i narazie mam kłopot, a podejrzewam że to będzie potrzebne do napisania programu.

    Aha i przyszła mi też docelowa kostka Attiny13 w którą zamierzam upchnąć program.
REKLAMA