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
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