Witam wszystkich znawców tematu oraz zainteresowanych.
Ze jestem w sumie początkujący jeżeli chodzi o mikrokontrolery to prosze o nutę wyrozumiałości.
Tworzę regulator ładowania akumulatorów z paneli fotowoltaicznych oraz w niedalekiej przyszlości innych źródeł... To w sumie już nie istotne jakiekolwiek bedzie to źródło ale tak czy siak spotykamy się z problemem że napięcie rośnie i po naładowaniu baterii musi zostać odłączone a nadwyżka przekierowana na inny odbiornik np. typu grzałka. Zrobiłem już część programu w Bascomie a całość oparta jest na układzie Atmega8 i wyświetlaczu 16*4. Narazie mam jedynie pomiar napięcia, prądu i mocy. Teraz przyszła kolej na regulację prądu ładowania albo raczej zapobiegnięciu przeładowania baterii... Chciałbym to zrobić w następujący sposób: Mój akumulator jest 12V, napięcie ładowania nie powinno wieć przekroczyć ok. 14,4V. Prąd jest tak dobrany że nie uszkodzi aku i tym na razie się nie przejmujemy.. W początkowej fazie ładowania napięcie jest znacznie niższe od 14,4 ale wraz z postępem ładowania napięcie bedzie się zwiększać i kiedy osiągnie ustalony próg chciałem załączyć grzałkę wody ale stopniowo i proporcjonalnie do nadwyżki mocy. W tym celu uruchomiłem TIMER1 w trybie Pwm który steruje Mosfet-em włączającym grzałkę.(testowo żarówke) Wszystko by fajnie działalo gdyby nie jeden problem... uruchomiony Timer cały czas zwiększa swoją wartość a po zliczeniu do max- wartości zaczyna znowu od początku, efektem tego mam migającą żarówkę i chwilowy brak obciążenia. Próbowłalem różnych kombinacji większych i mniejszych. Zatrzymywanie timera przy maksymalnej wartosci lub minimalnej oraz coraz bardziej zagmatwanych warunków ale ciągle nie działa to właściwie.
Napiecie pobieram z przetwornika ADC i ma ono postac liczbową zawierającą sie w przedziale 0-1024 (jeżeli źle pamiętam to przepraszam, początkowy jestem
Wiem że dla 14,4 wartość ta wynosi 470 i wtym momencie startuje timer który zwiększa swoją wartość o 51 jeżeli napięcie ciągle jest większe lub zmniejsza o 51 jeżeli wartosc ADC maleje, a po przekroczeniu 470 timer zostaje wyłączony.
Ten program działa prawie dobrze ale wiem że jest zrobiony fatalnie i na około a dotego niestała wartosci Timera powodują że program się zawiesza...
If Pwm1a = 255 And Pomiar_ac >= 470 Then
Stop Timer1
End If
If Pwm1a < 238 And Pomiar_ac >= 470 Then
Start Timer1
End If
If Pwm1a < 238 And Pomiar_ac >= 470 Then
Pwm1a = Pwm1a + 17
End If
If Pwm1a > 6 And Pomiar_ac < 469 Then
Pwm1a = Pwm1a - 17
End If
If Pwm1a <= 5 And Pomiar_ac < 469 Then
Stop Timer1
End If
Wcześniej wyglądało to tak..
If Pomiar_ac > 470 then
Pwm1a = Pwm1a +51
end if
if Pomiar_ac =< 470 then
Pwm1a = Pwm1a - 51
end if
Teraz moje pytanie.. Jak to właściwie napisać w Bascomie aby program byl poprawnie wykonywany, może ma ktoś inny pomysł na zrealizowanie płynnej regulacji napięcia?
Ze jestem w sumie początkujący jeżeli chodzi o mikrokontrolery to prosze o nutę wyrozumiałości.
Tworzę regulator ładowania akumulatorów z paneli fotowoltaicznych oraz w niedalekiej przyszlości innych źródeł... To w sumie już nie istotne jakiekolwiek bedzie to źródło ale tak czy siak spotykamy się z problemem że napięcie rośnie i po naładowaniu baterii musi zostać odłączone a nadwyżka przekierowana na inny odbiornik np. typu grzałka. Zrobiłem już część programu w Bascomie a całość oparta jest na układzie Atmega8 i wyświetlaczu 16*4. Narazie mam jedynie pomiar napięcia, prądu i mocy. Teraz przyszła kolej na regulację prądu ładowania albo raczej zapobiegnięciu przeładowania baterii... Chciałbym to zrobić w następujący sposób: Mój akumulator jest 12V, napięcie ładowania nie powinno wieć przekroczyć ok. 14,4V. Prąd jest tak dobrany że nie uszkodzi aku i tym na razie się nie przejmujemy.. W początkowej fazie ładowania napięcie jest znacznie niższe od 14,4 ale wraz z postępem ładowania napięcie bedzie się zwiększać i kiedy osiągnie ustalony próg chciałem załączyć grzałkę wody ale stopniowo i proporcjonalnie do nadwyżki mocy. W tym celu uruchomiłem TIMER1 w trybie Pwm który steruje Mosfet-em włączającym grzałkę.(testowo żarówke) Wszystko by fajnie działalo gdyby nie jeden problem... uruchomiony Timer cały czas zwiększa swoją wartość a po zliczeniu do max- wartości zaczyna znowu od początku, efektem tego mam migającą żarówkę i chwilowy brak obciążenia. Próbowłalem różnych kombinacji większych i mniejszych. Zatrzymywanie timera przy maksymalnej wartosci lub minimalnej oraz coraz bardziej zagmatwanych warunków ale ciągle nie działa to właściwie.
Napiecie pobieram z przetwornika ADC i ma ono postac liczbową zawierającą sie w przedziale 0-1024 (jeżeli źle pamiętam to przepraszam, początkowy jestem
Wiem że dla 14,4 wartość ta wynosi 470 i wtym momencie startuje timer który zwiększa swoją wartość o 51 jeżeli napięcie ciągle jest większe lub zmniejsza o 51 jeżeli wartosc ADC maleje, a po przekroczeniu 470 timer zostaje wyłączony.
Ten program działa prawie dobrze ale wiem że jest zrobiony fatalnie i na około a dotego niestała wartosci Timera powodują że program się zawiesza...
If Pwm1a = 255 And Pomiar_ac >= 470 Then
Stop Timer1
End If
If Pwm1a < 238 And Pomiar_ac >= 470 Then
Start Timer1
End If
If Pwm1a < 238 And Pomiar_ac >= 470 Then
Pwm1a = Pwm1a + 17
End If
If Pwm1a > 6 And Pomiar_ac < 469 Then
Pwm1a = Pwm1a - 17
End If
If Pwm1a <= 5 And Pomiar_ac < 469 Then
Stop Timer1
End If
Wcześniej wyglądało to tak..
If Pomiar_ac > 470 then
Pwm1a = Pwm1a +51
end if
if Pomiar_ac =< 470 then
Pwm1a = Pwm1a - 51
end if
Teraz moje pytanie.. Jak to właściwie napisać w Bascomie aby program byl poprawnie wykonywany, może ma ktoś inny pomysł na zrealizowanie płynnej regulacji napięcia?