RTV forum PL | NewsGroups PL

Stabilność Uref w ATmega16: Jak poprawić pomiar napięcia i prądu w zasilaczu?

stabilnosc Uref w Atmega oraz dziwne pomysly odnosnie pomiar

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Stabilność Uref w ATmega16: Jak poprawić pomiar napięcia i prądu w zasilaczu?

BartekK
Guest

Sun Nov 26, 2006 3:55 pm   



Tak sobie kombinuje woltomierz + amperomierz + dodatki na avr, do
zasilacza laboratoryjnego, i po przetestowaniu partii (~20szt) atmega16
w dil40 rozrzut Uref wewnetrznego (ktory mialby miec 2.56v) jest na
poziomie 2.2v do 2.7v! Moze i jest stabilne to napiecie, ale nijak nie
jest "rowne". Co dziwne - w tqfp rozrzut uref jest duzo mniejszy (na
poziomie 2.45 - 2.60v), ale nadal jest to mocno krzywe... Z takim uref
blad pomiaru bylby zdecydowanie zbyt duzy.
Do bledow pomiaru dochodza jeszcze bledy np rezystancji w dzielniku
napiecia, stad pomiar robi sie conajmniej marny. Kalibracja po prostu
jest wymagana, po stronie cyfrowej przy 10bit przetworniku nie ma ona
sensu, potencjometru tez bym chcial uniknac...
I tak sobie wymyslilem - moze Uref wytwarzac z PWM 16bit ? Stabilnosc
zegara (chocby nawet z RC wewnetrznego, ale raczej kwarc) jest dosc
duza, rozdzielczosc 16bit daje dosc duze pole manewru, przy duzej
czestotliwosci filtr nie musialby byc jakis okrutny... Uref moglbym
wystrugac w zakresie 0 - Ucc (prawie)...
Po pierwsze slyszalem ze ADC w avr nie lubi malych Uref (<2v) - czy to
potwierdzone, bo np do pomiaru pradu bardzo by mi pasowalo Uref 1.023v Smile
Po drugie - kalibracja - poleganie na zasilaniu +5v idealnym i
przyjecie ze np 0x00ff da mi 2.5v - to chyba nie najlepsze rozwiazanie.
Zasilanie moze sie zmienic, byc niestabilne, filtr pwm tez nie bedzie
idealny... Wymyslilem cos takiego:
- procesor ustawia (bo ma taka mozliwosc, np przekaznikiem) pomiar z
nozki na ktorej jest Uref z jakiegos dobrego scalonego Uref np 5v i tak
kombinuje z PWM by zmierzone na ADC napiecie bylo odpowiednie, np dla
zakresu pomiarowego 0.00 - 40.95v pomiar 5.00v dalby wynik z ADC 0x007D
(125). Jesli tak by bylo (i pomiar 0v bylby 0x0000 bo z tym tez bywa
roznie w avr, czasem 0 daje 0x0001 albo 0x0002), to mamy skalibrowane.

Moze za bardzo kombinuje? moze da sie to zrobic prosciej jakos, bez
dobrego Uref wsadzanego do ukladu, moze jednokrotna taka kalibracja i
zapisanie wartosci PWM do eepromu wystarczy?

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

T.M.F.
Guest

Sun Nov 26, 2006 4:13 pm   



BartekK napisał(a):
Quote:
Tak sobie kombinuje woltomierz + amperomierz + dodatki na avr, do
zasilacza laboratoryjnego, i po przetestowaniu partii (~20szt) atmega16
w dil40 rozrzut Uref wewnetrznego (ktory mialby miec 2.56v) jest na
poziomie 2.2v do 2.7v! Moze i jest stabilne to napiecie, ale nijak nie
jest "rowne". Co dziwne - w tqfp rozrzut uref jest duzo mniejszy (na
poziomie 2.45 - 2.60v), ale nadal jest to mocno krzywe... Z takim uref
blad pomiaru bylby zdecydowanie zbyt duzy.

Czytales datasheet? Strona 295 - internal voltage reference min 2,3V,
max 2,7V, typical 2,56V. I wszystko jasne.

Quote:
I tak sobie wymyslilem - moze Uref wytwarzac z PWM 16bit ? Stabilnosc
zegara (chocby nawet z RC wewnetrznego, ale raczej kwarc) jest dosc
duza, rozdzielczosc 16bit daje dosc duze pole manewru, przy duzej
czestotliwosci filtr nie musialby byc jakis okrutny... Uref moglbym
wystrugac w zakresie 0 - Ucc (prawie)...

Nie prosciej dac zewnetrzne napiecie odniesienia?

Quote:
Po pierwsze slyszalem ze ADC w avr nie lubi malych Uref (<2v) - czy to
potwierdzone, bo np do pomiaru pradu bardzo by mi pasowalo Uref 1.023v Smile

Znowu datasheet sie klania - str. 295 - Reference Voltage - for single
ended and differential conversion minimum 2,0V.

Quote:
idealny... Wymyslilem cos takiego:
- procesor ustawia (bo ma taka mozliwosc, np przekaznikiem) pomiar z
nozki na ktorej jest Uref z jakiegos dobrego scalonego Uref np 5v i tak
kombinuje z PWM by zmierzone na ADC napiecie bylo odpowiednie, np dla
zakresu pomiarowego 0.00 - 40.95v pomiar 5.00v dalby wynik z ADC 0x007D

Ale jesli masz juz to Uref to po co kombinowac, nie prosciej je
podlaczyc jako napiecie referencyjne do procka?



--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Desoft
Guest

Sun Nov 26, 2006 4:50 pm   



Użytkownik "BartekK" <sibi@drut.org> napisał w wiadomości
news:ekc9ro$mr2$1@atlantis.news.tpi.pl...
Quote:
Tak sobie kombinuje woltomierz + amperomierz + dodatki na avr, do
zasilacza laboratoryjnego, i po przetestowaniu partii (~20szt) atmega16
[.. ciach..]


Ja to widzę na dwa sposoby.
1. Program kalibracyjny. Wkładamy procek zaprogramowany w układ
elektroniczny docelowy i program kalibracyjny podaje nam jakąś stałą, która
po wstawieniu do programu oryginalnego jest stałą korekcji.
1' metoda mniej dokładna: mierzymy Uref dla każdego procesora i wstawiamy do
programu.
2. Kalibracja programowa - po wyzwoleniu procek przechodzi do kalibracji
mierzy napięcie zewnętrzne i jakąś stałą zapisuje do pamięci nieulotnej.

--
Desoft
http://217.96.144.226/desoft

BartekK
Guest

Sun Nov 26, 2006 5:24 pm   



T.M.F. napisał(a):
Quote:
nijak nie jest "rowne". Co dziwne - w tqfp rozrzut uref jest duzo
mniejszy (na poziomie 2.45 - 2.60v), ale nadal jest to mocno krzywe...
Z takim uref blad pomiaru bylby zdecydowanie zbyt duzy.
Czytales datasheet? Strona 295 - internal voltage reference min 2,3V,
max 2,7V, typical 2,56V. I wszystko jasne.
Czytalem, wiem. Co nie znaczy ze mi sie to podoba Smile dlatego tez szukam

innego rozwiazania. Niedawno mnie tu ktos zjechal "przeciez atmega ma
bardzo dobre, stabilne, wewnetrzne, zawsze rowne 2.56v uref"...

Quote:
Nie prosciej dac zewnetrzne napiecie odniesienia?
Nie, bo raz potrzeba takie, a raz inne... A najwygodniej by bylo miec

mozliwosc zmieniania - np (w uproszczeniu) miec Uref=4.095v dla pomiaru
do 40.95v (z krokiem 0.01v), a gdy zmierzone napiecie jest <20v to
przelaczyc Uref = 2.047v i mnozyc wynik x2, uzyskujac krok/rozdzielczosc
0.005v itd... A przy pomiarze pradu jeszcze inaczej...

Quote:
Znowu datasheet sie klania - str. 295 - Reference Voltage - for single
ended and differential conversion minimum 2,0V.
Tez to widzialem, ale co to oznacza? Ponizej 2.0v wybuchnie, nie bedzie

mierzyc, bedzie zle mierzyc... ?

Quote:
Ale jesli masz juz to Uref to po co kombinowac, nie prosciej je
podlaczyc jako napiecie referencyjne do procka?
Jak wyzej...


--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

BartekK
Guest

Sun Nov 26, 2006 5:27 pm   



Desoft napisał(a):
Quote:
Użytkownik "BartekK" <sibi@drut.org> napisał w wiadomości
news:ekc9ro$mr2$1@atlantis.news.tpi.pl...
Tak sobie kombinuje woltomierz + amperomierz + dodatki na avr, do
zasilacza laboratoryjnego, i po przetestowaniu partii (~20szt) atmega16
Ja to widzę na dwa sposoby.
1. Program kalibracyjny. Wkładamy procek zaprogramowany w układ
elektroniczny docelowy i program kalibracyjny podaje nam jakąś stałą, która
po wstawieniu do programu oryginalnego jest stałą korekcji.
1' metoda mniej dokładna: mierzymy Uref dla każdego procesora i wstawiamy do
programu.
2. Kalibracja programowa - po wyzwoleniu procek przechodzi do kalibracji
mierzy napięcie zewnętrzne i jakąś stałą zapisuje do pamięci nieulotnej.
Tak, tylko ze wszelka korekcja po stronie cyfrowej jest juz bezsensowna,

przynajmniej przy rozdzielczosci 10bit wewnetrznego przetwornika. W tym
caly sens manewrowania z Uref, by krok/rozdzielczosc pomiaru wychodzila
"rowna" - tzn np. 1bit = 0.1v, bo co mi z pomiaru przy ktorym zmiana o
jeden bit jest rowna 0.082456v ? Jak to wyswietlac? Zaokraglac? To co
pare bitow wyjdzie przeskok o 0.2v zamiast o 0.1v...

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

AK
Guest

Sun Nov 26, 2006 6:23 pm   



BartekK napisał(a):
Quote:
2. Kalibracja programowa - po wyzwoleniu procek przechodzi do kalibracji
mierzy napięcie zewnętrzne i jakąś stałą zapisuje do pamięci nieulotnej.
Tak, tylko ze wszelka korekcja po stronie cyfrowej jest juz bezsensowna,
przynajmniej przy rozdzielczosci 10bit wewnetrznego przetwornika. W tym
caly sens manewrowania z Uref, by krok/rozdzielczosc pomiaru wychodzila
"rowna" - tzn np. 1bit = 0.1v, bo co mi z pomiaru przy ktorym zmiana o
jeden bit jest rowna 0.082456v ? Jak to wyswietlac? Zaokraglac? To co
pare bitow wyjdzie przeskok o 0.2v zamiast o 0.1v...
Rozwiazaniem jest pomiar wielokrotny i usrednianie wyniku.

Jako zrodlo referencyjne proponuje LM431 (np.
http://www.national.com/ds/LM/LM431.pdf)
Spisuje sie bardzo dobrze w takich zastosowaniach.

Pozdr
AK

>

Desoft
Guest

Sun Nov 26, 2006 8:35 pm   



Użytkownik "BartekK" <sibi@drut.org> napisał w wiadomości
news:ekcf6v$c57$1@atlantis.news.tpi.pl...

Quote:
Tak, tylko ze wszelka korekcja po stronie cyfrowej jest juz bezsensowna,
przynajmniej przy rozdzielczosci 10bit wewnetrznego przetwornika. W tym
caly sens manewrowania z Uref, by krok/rozdzielczosc pomiaru wychodzila
"rowna" - tzn np. 1bit = 0.1v, bo co mi z pomiaru przy ktorym zmiana o
jeden bit jest rowna 0.082456v ? Jak to wyswietlac? Zaokraglac? To co
pare bitow wyjdzie przeskok o 0.2v zamiast o 0.1v...

Równa, to znaczy jaka? 0,1V przecież procesory liczą w systemie dwójkowym.
Raczej napięcie odniesienia powinno wynosić 2,56V - byłoby "okrągłe"
tylko jak przenieść to na dziesiętny wyświetlacz?

Są dwie metody rozwiązywania tego typu problemów:
sprzętowa (można się nawet obyć bez procesora) i programowa.

--
Desoft
http://217.96.144.226/desoft

T.M.F.
Guest

Sun Nov 26, 2006 8:44 pm   



BartekK napisał(a):
Quote:
T.M.F. napisał(a):
nijak nie jest "rowne". Co dziwne - w tqfp rozrzut uref jest duzo
mniejszy (na poziomie 2.45 - 2.60v), ale nadal jest to mocno
krzywe... Z takim uref blad pomiaru bylby zdecydowanie zbyt duzy.
Czytales datasheet? Strona 295 - internal voltage reference min 2,3V,
max 2,7V, typical 2,56V. I wszystko jasne.
Czytalem, wiem. Co nie znaczy ze mi sie to podoba Smile dlatego tez szukam
innego rozwiazania. Niedawno mnie tu ktos zjechal "przeciez atmega ma
bardzo dobre, stabilne, wewnetrzne, zawsze rowne 2.56v uref"...

No to podlacz pod stabilizowane 5V zasilajace uklad poprzez filtr.

Quote:
Nie prosciej dac zewnetrzne napiecie odniesienia?
Nie, bo raz potrzeba takie, a raz inne... A najwygodniej by bylo miec
mozliwosc zmieniania - np (w uproszczeniu) miec Uref=4.095v dla pomiaru
do 40.95v (z krokiem 0.01v), a gdy zmierzone napiecie jest <20v to
przelaczyc Uref = 2.047v i mnozyc wynik x2, uzyskujac krok/rozdzielczosc
0.005v itd... A przy pomiarze pradu jeszcze inaczej...

Skoro potrzebujesz rozne to wewnetrzne Uref i tak ci nic nie daje.
Poza tym okresl z jaka dokladnosci potrzebujesz dokonac pomiaru. ATMega
umozliwia uzyskanie rozdzielczosci rzedu 2mV, Obnizajac Uref i tak
wiekszej nie uzyskasz. Pomysl nad wykorzystaniem mozliwosci wzmocnienia
sygnalu przez ATMege, masz o ile sie nie myle do wyboru 10 i 200x.

Quote:
Znowu datasheet sie klania - str. 295 - Reference Voltage - for single
ended and differential conversion minimum 2,0V.
Tez to widzialem, ale co to oznacza? Ponizej 2.0v wybuchnie, nie bedzie
mierzyc, bedzie zle mierzyc... ?

Pewnie bedzie mierzyc, niesadze zeby wybuchlo. Ale policzmy
2,0V/2^10=1,95mV. Poniewaz rozdzielczosc przetwornika jest na poziomie
2mV (gdzies o tym pisza w datasheet) to zmniejszajac napiecie
odniesienia nic nie zyskujesz. A wrecz tracisz.

--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

BartekK
Guest

Sun Nov 26, 2006 9:36 pm   



Desoft napisał(a):
Quote:
caly sens manewrowania z Uref, by krok/rozdzielczosc pomiaru wychodzila
"rowna" - tzn np. 1bit = 0.1v
Równa, to znaczy jaka? 0,1V przecież procesory liczą w systemie dwójkowym.
Raczej napięcie odniesienia powinno wynosić 2,56V - byłoby "okrągłe"
tylko jak przenieść to na dziesiętny wyświetlacz?
Widze ze dalej nie rozumiesz problemu.

Dla ulatwienia przyjmijmy przetwornik 2bitowy - 4 poziomy
11 = Umax = Uref
10 = 2/3*Uref
01 = 1/3*Uref
00 = 0 * Uref
I teraz chcialoby sie wyswietlic zmierzone napiecie w postaci
"dziesietnej" - powiedzmy na wyswietlaczu lcd tekstowym zeby byla duza
dowolnosc. Napiecie wejsciowe (mierzone) dzielisz dzielnikiem
rezystancyjnym - aby zakres napiec sie zmiescil (lub z lekkim zapasem,
by krok byl wygodny do wyswietlenia) miedzy 0 a Uref.
Powiedzmy ze chcemy mierzyc napiecia w okolicy 0-9v, czyli 0v, 3v, 6v i
9v. Ustawiamy w takim wypadku Uref na 3v, podzial na dzielniku
rezystancyjnym /3, wynik (binarnie) mnozymy przez 3 i wyswietlamy i
gotowe ?
Niestety nasz dzielnik na opornikach nie jest idealny, oporniki maja
jakas tam precyzje i wyszedl nam podzial /3.8
Jak to skompensujesz po stronie cyfrowej?
Nijak, bo zmierzysz 9v/3.8 = 2,368v, co zalapie sie moze na wartosc
binarna 10, a moze na 11? (zaleznie od histerezy komparacji napiecia w ADC).
Ale wystarczyloby zmodyfikowac Uref dla tago nieidealnego dzielnika na
2.368v, i juz mamy skale i dokladnosc zachowana.

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

Desoft
Guest

Sun Nov 26, 2006 10:06 pm   



Użytkownik "BartekK" <sibi@drut.org> napisał w wiadomości
news:ekcu0d$o2e$1@nemesis.news.tpi.pl...


Quote:
Dla ulatwienia przyjmijmy przetwornik 2bitowy - 4 poziomy
11 = Umax = Uref
10 = 2/3*Uref
01 = 1/3*Uref
00 = 0 * Uref
I teraz chcialoby sie wyswietlic zmierzone napiecie w postaci
"dziesietnej" - powiedzmy na wyswietlaczu lcd tekstowym zeby byla duza
dowolnosc. Napiecie wejsciowe (mierzone) dzielisz dzielnikiem
rezystancyjnym - aby zakres napiec sie zmiescil (lub z lekkim zapasem,
by krok byl wygodny do wyswietlenia) miedzy 0 a Uref.
Powiedzmy ze chcemy mierzyc napiecia w okolicy 0-9v, czyli 0v, 3v, 6v i
9v. Ustawiamy w takim wypadku Uref na 3v, podzial na dzielniku
rezystancyjnym /3, wynik (binarnie) mnozymy przez 3 i wyswietlamy i
gotowe ?
Niestety nasz dzielnik na opornikach nie jest idealny, oporniki maja
jakas tam precyzje i wyszedl nam podzial /3.8
Jak to skompensujesz po stronie cyfrowej?
Nijak, bo zmierzysz 9v/3.8 = 2,368v, co zalapie sie moze na wartosc
binarna 10, a moze na 11? (zaleznie od histerezy komparacji napiecia w
ADC).
Ale wystarczyloby zmodyfikowac Uref dla tago nieidealnego dzielnika na
2.368v, i juz mamy skale i dokladnosc zachowana.

No chyba nic z tego nie rozumiem...
i ile pokaże wyświetlacz przy wartości napięcia wejściowego 4,5V?


--
Desoft
http://217.96.144.226/desoft

Lukasz Sokol
Guest

Sun Nov 26, 2006 10:29 pm   



BartekK wrote:

Quote:
Jak to skompensujesz po stronie cyfrowej?

A stronie cyfrowej to dokładnie wisi -

Ja bym raczej porównał ADC do analogowego miernika wskazówkowego :
pamiętasz tam zasadę działania ? tam był zakres, ilość działek na skali,
z tego otrzymywało się ilość np. woltów na działkę i MNOŻYŁO przez ilość
odczytanych działek już w głowie aby otrzymać odczyt w woltach... Przy
kwantyzacji ADC masz podobnie : masz zakres przetwornika i ilość
możliwych kombinacji bitów; reszta to już tylko matematyka; część
'głowy' przeniesiona do elektroniki.


Quote:
Nijak, bo zmierzysz 9v/3.8 = 2,368v, co zalapie sie moze na wartosc
binarna 10, a moze na 11? (zaleznie od histerezy komparacji napiecia w
ADC).

2.368 < 3.0 więc 'załapie się' na 00.


Quote:
Ale wystarczyloby zmodyfikowac Uref dla tago nieidealnego dzielnika na
2.368v, i juz mamy skale i dokladnosc zachowana.

Lepiej poczytaj o przetwornikach analogowo - cyfrowych i co one tak

naprawdę mierzą.

el es

(no offence Smile

Adam Dybkowski
Guest

Mon Nov 27, 2006 1:04 am   



BartekK napisał(a):

Quote:
Moze za bardzo kombinuje? moze da sie to zrobic prosciej jakos, bez
dobrego Uref wsadzanego do ukladu, moze jednokrotna taka kalibracja i
zapisanie wartosci PWM do eepromu wystarczy?

Napięcie odniesienia z marnego źródła Uref, które jest w procesorze,
może się zmieniać w zależności od temperatury i samopoczucia procesora
Smile w dość szerokim zakresie, cytowano tu już odpowiedni fragment PDFa.

Najlepiej byłoby robić autokalibrację okresowo (np. co minutę) a jeżeli
robisz rzadko szybkie pomiary to przed każdym pomiarem. Wystarczy, że
zasilasz procesor z porządnego stabilizatora liniowego (dającego np.
równe 5V) i możesz zmierzyć napięcie VBG wybierając VCC (twoje 5V) jako
Uref. A wtedy szybkie wyliczenie poprawki i po problemie.

Nie ma sensu przejmować się "nierównymi" wynikami obliczeń. Wystarczy
liczyć wszystko np. w uV na całkowitych liczbach 32-bitowych. A jeżeli
poprawka do wprowadzenia wyjdzie na przykład 2,3845 to po prostu wykonaj
operację (x * 23845) / 10000.

Przykładowe wyświetlenie napięcia podanego w uV do 3 cyfr po przecinku:
printf_P (PSTR ("%lu,%03lu"), x / 1000000UL, (x / 1000UL) % 1000UL);

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Stabilność Uref w ATmega16: Jak poprawić pomiar napięcia i prądu w zasilaczu?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map