Dokładność pomiarów ADS1110 i AT90S2313

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
Mortan
-
Posty: 20
Rejestracja: 04 sie 2008, 15:13
Lokalizacja: Kielce

Dokładność pomiarów ADS1110 i AT90S2313

Post autor: Mortan » 26 gru 2008, 19:51

Witam
Zbudowałem układ wg. własnego schematu (załącznik pod postem). Bardzo prosty, zadaniem mikrokontrolera jest odczytywać oraz wyświetlać wyniki pomiarów na wyświetlaczu LCD. Napisałem taki program:

Kod: Zaznacz cały

Dim Napiecie As Single , Pga As Integer 
Dim Addressw As Byte , Addressr As Byte , Pomiarh As Byte , Pomiarl As Byte 

Addressr = &B10011011 
Pga = 1                                                     'Odczytu 

Cls 
Do 
Gosub Odczyt                                                'Odczyt Pomiaru 
Cursor Off 
Gosub Wyswietl                                              'Wyświetlenie Na Lcd 
Waitms 250 
Waitms 250 
Loop 
End 

Odczyt: 
I2cstart 
I2cwbyte Addressr                                           'Adres Do Odczytu 
I2crbyte Pomiarh , Ack                                      'Odczyt Pomiaru 
I2crbyte Pomiarl , Nack 
I2cstop                                                     'Bit Stopu 
Napiecie = Pomiarh * 256                                    'Przekształcenie 
Napiecie = Napiecie + Pomiarl 
Napiecie = Napiecie * 2.048 
Napiecie = Napiecie / 32768 
Napiecie = Napiecie / Pga 
Return 

Wyswietl:                                                   'Wyświetlenie Pomiaru Na Lcd 
  Upperline 
 Lcd "  Nap: " ; Napiecie ; " V" 
Return

Problem polega na tym, że dokładność pomiarów to ok 1mV, jednak mi jest potrzebna większa dokładność - do trzeciego miejsca po przecinku (0,000V).

Nawet po niepodłączaniu żadnego napięcia mierzonego do punktów Vin+ i Vin- na wyświetlaczu pojawiają się jakieś śmieci, typu 0,009464. Czwarte i kolejne na prawo miejsca po przecisnku non stop się zmieniają. Próbowałem stosować kondensatory 100nF, jednak jedyne co to udało mi się zmienić napięcie do 0,0052647.

Co robić?
Będę wdzięczny za pomoc
Pozdrawiam
Załączniki
sch.JPG

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 27 gru 2008, 10:52

Winne są oczywiście zakłócenia. Ja też próbowałem pomiaru różnych wielkości (Napięc, prądów, temperatur) za pomocą AVRów i nierzadko borykałem się z "latającymi" wartościami. Czasami pomagało podlączenie do wejścia solidnego kondensatora, czyli 3,3-10uF. Układ co prawda wolniej reagował na ewentualne zmiany, ale wskazania nie "latały" już tak bardzo.

Zauważ także, ze na dokladność pomiaru ma pewien wpływ wielkość napięcia referencyjnego a także poziom mierzonych sygnaów/wielkości (odstęp sygnał-szum).

No i kolejna zasada: prowadzenie obwodów masy i zasilania - na zasadach stosowanych w układach audio. Często pomaga oddzielenie obwodu zasilania analogowego i cyfrowego.

Mortan
-
Posty: 20
Rejestracja: 04 sie 2008, 15:13
Lokalizacja: Kielce

Post autor: Mortan » 27 gru 2008, 11:39

Zauważ także, ze na dokladność pomiaru ma pewien wpływ wielkość napięcia referencyjnego a także poziom mierzonych sygnaów/wielkości (odstęp sygnał-szum).
Napięcie referencyjne w tym przetworniku (ADS1110) jest stałe - 2,048V

Czyli co, jedyna rada to większy kondensator, kosztem szybkości pomiarów.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 27 gru 2008, 12:14

Każde z wejść różnicowych do masy przez kondensator daj i dodatkowo możesz wstawić jeden między Vin- i Vin+. Uzyskanie stabilnych wyników przy 24bitach jest bardzo trudne do osiągnięcia, 22bity przy dobrze zaprojektowanej płytce także czasem powoduje latanie wyniku. Jak wygląda u ciebie sytuacja w działkach wewnętrznych? Ja ostatnio uruchamiałem jeden przetwornik 24bit to 4 ostatnie cyfry "fruwały" przy odczycie działek nie przeliczanych na napięcie.

Jony130
Moderator
Posty: 3170
Rejestracja: 11 sie 2005, 16:33
Lokalizacja: wrocław

Post autor: Jony130 » 27 gru 2008, 12:16

A nie możesz tego programowo zniwelować?
Mierzysz napięcie niepodłączone a potem odejmujesz to od wartości zmierzonej.
Albo co na to samo wyjdzie, traktujesz pomiar przy niepodłączonym jak twoje zero.

Awatar użytkownika
tom5555
Użytkownik
Posty: 625
Rejestracja: 23 sty 2008, 1:20
Lokalizacja: Zabrze
Kontakt:

Post autor: tom5555 » 27 gru 2008, 17:48

A przy zwarciu ze sobą wejść Vin (lub obu do masy) jest to samo?

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 27 gru 2008, 20:17

Można zrobić programowo, stosując po prostu uśrednianie wyników. Sumujemy 5 czy 10 pomiarów a potem to przez 5 czy 10 dzielimy i wyświatlamy wynik. Jak nic nie pomagało, to tak właśnie sobie radziłem.

aktus
Użytkownik
Posty: 379
Rejestracja: 06 sie 2007, 20:44
Lokalizacja: Tychy

Post autor: aktus » 27 gru 2008, 21:21

Wrzuć jeśli możesz pcb tutaj, bo może uda nam się cosik pomóc z rozmieszczeniem elementów i ścieżek.

Mortan
-
Posty: 20
Rejestracja: 04 sie 2008, 15:13
Lokalizacja: Kielce

Post autor: Mortan » 28 gru 2008, 11:14

Serdecznie dziękuje za pomoc.
Zrobiłem tak jak wyżej radziliście, zaokrągliłem pomiary do 3 miejsca po przecinku i wszystko jest teraz ok.
Zresztą już po podłączniu tej części układu, do reszty, czyli wzmacniacza i filtru dolnoprzepustowego widać było efekty.
Wrzuć jeśli możesz pcb tutaj, bo może uda nam się cosik pomóc z rozmieszczeniem elementów i ścieżek.
Na razie wszystko miałem prowizorycznie zamontowane na płytce testowej.

Ja ostatnio uruchamiałem jeden przetwornik 24bit to 4 ostatnie cyfry "fruwały" przy odczycie działek nie przeliczanych na napięcie.
U mnie było to samo, z tym, że przetwornik 16bit.

Teraz spróbuje to polutować na płytce uniwersalnej, zobaczymy co wyjdzie.

Jeszcze raz dziękuje.

aktus
Użytkownik
Posty: 379
Rejestracja: 06 sie 2007, 20:44
Lokalizacja: Tychy

Post autor: aktus » 28 gru 2008, 14:32

To jak masz to podłączone na płytce testowej, to spróbuj zasilić przetwornik z innego miejsca - według schematu napięcie bierzesz z linii zasilania wyświetlacza. Poza tym ten przetwornik wprowadza i tak błędy rzędu 0,004% do 0,01%

Mortan
-
Posty: 20
Rejestracja: 04 sie 2008, 15:13
Lokalizacja: Kielce

Post autor: Mortan » 28 gru 2008, 15:09

To jak masz to podłączone na płytce testowej, to spróbuj zasilić przetwornik z innego miejsca
Spróbuje.

Przetwornik działa w miarę prawidłowo, napięcie mierzę z dokładnością do 0,000V. Jednak nie do końca jest tak jak chciałbym. Przetwornik podłączony jest do filtru dolnoprzepustowego, wzmacniacza i mostka tensometrycznego. I teraz przykład:
Kładąc obciążnik 3kg napięcie wynosi 0,069V, ale kładąc już 6kg napięcie wynosi 0,139V - juz jest różnica 0,001V. Przy większych ciężarach są większe i bardziej znaczące błedy.

Moim zdaniem słusznym rozwiązaniem problemu, było by zwiększenie wzmocnienia. Jedynym ograniczeniem jest maksymalny zakres pomiarowy przetwornika - 2,048V. Zastanawiam się, czy jest możliwość zwiększenia tego zakresu? Lub może lepszym rozwiązaniem będzie zakup innego A/D 16 bitowego odpowiadającego moim wymaganiom. Co mi możecie polecić? Wolałbym, żeby był podobny w funkcjonalności do AD1110, z tym, że miałaby większy zakres mierzonych napięć.

A może rozwiązać to jakość programowo? Ograniczeniem tu jest objętość kodu - AT90S2313 - 2kb. Odpada więc zmienna Single i zaokrąglenie ostatnich cyfr do trzeciego miejsca po przecinku. Ale nie wiem nawet czy to by pomogło, jeżeli tak, to mogę się szarpnąć te 5zł i kupić coś innego z AVR :razz:

Proszę o odpowiedź
Pozdrawiam

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 28 gru 2008, 23:04

Hmm, nie używałem nigdy zewnętrznych A/D o rozdzielczości powyżej 10 bitów, po prostu nie miałem takiej potrzeby, więc może pozostali Koledzy coś podpowiedzą.

Z AVR proponuję użyć Atmega 8, ma 8KB Flash i chyba 512 bajtów RAM, doatkowo przynajmniej 3 kanałowy 10 bitowy przetwornik A/D (nota podaje, że jest 3x10bit + 3x8 bit, przy czym wszystkie 6 kanałów daje wartości 0-1023, co jest dla mnie dziwne).

Rozumiem,że chcesz zrobić coś w rodzaju elektronicznej wagi czy siłomierza? Z dokładnością będzie problem. Nie bez kozery najdokładniejsze wagi laboratoryjne, mierzące do 4-5 miejsca po przecinku są takie drogie.

Życzę jednak sukcesów i zadowolenia z wykonanego urządzenia :)

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 28 gru 2008, 23:18

Przetwornik w Atmedze8 można sobie darować jako pomiarowy. On jest dobry do woltomierza i to też raczej mało dokładnego.

M@ciej pisze:(nota podaje, że jest 3x10bit + 3x8 bit, przy czym wszystkie 6 kanałów daje wartości 0-1023, co jest dla mnie dziwne)
To dziwne bo moja nota podaje:
– 8-channel ADC in TQFP and QFN/MLF package
Eight Channels 10-bit Accuracy
– 6-channel ADC in PDIP package
Six Channels 10-bit Accuracy
:)

Mortan
-
Posty: 20
Rejestracja: 04 sie 2008, 15:13
Lokalizacja: Kielce

Post autor: Mortan » 29 gru 2008, 14:38

Zamówiłem przetwornik AD7730, dedykowany m.in. do pomiarów tensometrycznych. Jednak dopóki nie otrzymam koperty z przetwornikiem, będę jeszcze coś kombinował z tym wzmocnieniem.

Zastanawiam się jeszcze, czy nie dało by się powiększyć mierzonego zakresu programowo, tj. przetwornik (ADS1110) przekraczając napięcie 2,047V zerował by się, a do zmiennej zapisywany byłby wynik aktualnego pomiaru. Potem tylko obróbka i były by wyniki.
Tylko nie wiem, czy ograniczeniem jest to, że nie można podać większego napięcia do pomiaru, bo przetwornik się skopci, czy poprostu brakuje mu dalej skali.

Jednym słowem, czy dało by się nim zmierzyć napięcie, podając na Vin- warość 0V, a na Vin+ 3V, ale po przekroczeniu 2V przetwornik by się zerował? Czy uzyskał bym wynik 1V?

Nie wiem czy dobrze kombinuje, nie chciałbym go zniszczyć, dlatego pytam.

aktus
Użytkownik
Posty: 379
Rejestracja: 06 sie 2007, 20:44
Lokalizacja: Tychy

Post autor: aktus » 29 gru 2008, 20:17

U producenta sample zamawiałeś? Mi wyświetla komunikat, że do Polski nie wysyłają. ads1110 można zasilać napięciem 6V, ale mogą być problemy z translacją napięć adc <-> uC

ODPOWIEDZ