Witam,
trzeci dzień męczę się z obsługą ADC w ATmega88PA.
Buduję układ gdzie chce sprawdzać, czy jest właściwe napięcie zasilania i czy bateria awaryjna ma właściwe napięcie.
Oto mój kod i schemat pomiaru
Pomiar napięcia 12V za pomocą dzielnika, napięcie odniesienia 1,1V z ATmega88.
Pomiar napięcia baterii (3xAA), aby nie pobierać z niej prądu dzielnikiem realizuję poprzez pomiar względem napięcia zasilania 5V. Pomiar nie jest dokładny ale wystarczy do określenia że bateria jest już słaba.
Problem polega na tym, że gdy cały powyższy program jest skompilowany to oba pomiary następujące po sobie nie działają. Działa albo jeden pomiar, albo drugi, ale zazwyczaj oba są zakłamane, tzn niepoprawnie mierzą napięcia.
Jednak gdy działa tylko z jeden z pomiarów (np wyłączę całą sekwencję pomiaru napięcia zasilania 12V ) to pomiar napięcia baterii działa poprawnie. I odwrotnie, jak nie mierzę baterii a samo napięcie 12V to też jest ok.
Inaczej... to działa:
To samodzielnie też działa:
Ale oba pomiary następujące po sobie już nie działają.
O co tu chodzi? Czy zmiana napięć odniesienia potrzebuje jakiejś specjalnej sekwencji, jakiegoś czasu aby zaczęło to działać?
Proszę o wskazówki.
Dodano po 2 [godziny] 46 [minuty]:
EDIT: wygląda, na to że mam podobny problem jak inni z pomiarem napięcia w odniesieniu do napięcia 1,1V. https://www.avrfreaks.net/forum/setup-time-when-measuring-internal-vref-atmega88
Po dodaniu kilku opóźnień i odrzuceniu pierwszego pomiaru po zmianie kanału ADC i zmianie napięcia referencyjnego pomiar zaczął działać poprawnie.
Aktualnie tak to wygląda, ale jeszcze eksperymentuje :
Wygląda na to, że po przełączeniu z napięcia referencyjnego z VCC (5V) na 1,1V procesor potrzebuje kilka ms na ustabilizowanie i spadek napięcia na C=100nF z 5V, na 1,1V.
trzeci dzień męczę się z obsługą ADC w ATmega88PA.
Buduję układ gdzie chce sprawdzać, czy jest właściwe napięcie zasilania i czy bateria awaryjna ma właściwe napięcie.
Oto mój kod i schemat pomiaru
Kod: VB.net
Pomiar napięcia 12V za pomocą dzielnika, napięcie odniesienia 1,1V z ATmega88.
Pomiar napięcia baterii (3xAA), aby nie pobierać z niej prądu dzielnikiem realizuję poprzez pomiar względem napięcia zasilania 5V. Pomiar nie jest dokładny ale wystarczy do określenia że bateria jest już słaba.
Problem polega na tym, że gdy cały powyższy program jest skompilowany to oba pomiary następujące po sobie nie działają. Działa albo jeden pomiar, albo drugi, ale zazwyczaj oba są zakłamane, tzn niepoprawnie mierzą napięcia.
Jednak gdy działa tylko z jeden z pomiarów (np wyłączę całą sekwencję pomiaru napięcia zasilania 12V ) to pomiar napięcia baterii działa poprawnie. I odwrotnie, jak nie mierzę baterii a samo napięcie 12V to też jest ok.
Inaczej... to działa:
Kod: VB.net
To samodzielnie też działa:
Kod: VB.net
Ale oba pomiary następujące po sobie już nie działają.
O co tu chodzi? Czy zmiana napięć odniesienia potrzebuje jakiejś specjalnej sekwencji, jakiegoś czasu aby zaczęło to działać?
Proszę o wskazówki.
Dodano po 2 [godziny] 46 [minuty]:
EDIT: wygląda, na to że mam podobny problem jak inni z pomiarem napięcia w odniesieniu do napięcia 1,1V. https://www.avrfreaks.net/forum/setup-time-when-measuring-internal-vref-atmega88
Po dodaniu kilku opóźnień i odrzuceniu pierwszego pomiaru po zmianie kanału ADC i zmianie napięcia referencyjnego pomiar zaczął działać poprawnie.
Aktualnie tak to wygląda, ale jeszcze eksperymentuje :
Kod: VB.net
Wygląda na to, że po przełączeniu z napięcia referencyjnego z VCC (5V) na 1,1V procesor potrzebuje kilka ms na ustabilizowanie i spadek napięcia na C=100nF z 5V, na 1,1V.
