Przetwornik A/D ADS1110 16-bit I2C
Jeden z najlepszych przetworników analogowo-cyfrowych w układzie delta-sigma. Posiada wewnętrzne źródło referencyjne o niespotykanej jak na tę klasę przyrządów dokładności. Już oddzielny zakup samego źródła odniesienia o takiej precyzji byłby porównywalny z ceną samego przetwornika. Idealna stabilność, dokładność i stabilność temperaturowa daje bezpośredni pomiar bez żadnych obwodów ani bez obróbki matematycznej z rozdzielczością 0,01mV i dokładnością 1mV !
ADS1110 to kompletny system akwizycji danych, zamknięty w miniaturowej obudowie SOT23-6. Obejmuje on 16-bitowy przetwornik A/C typu delta-sigma, źródło napięcia referencyjnego, wzmacniacz programowalny (PGA), oscylator i interfejs szeregowy I2C. Zakres zastosowań to przede wszystkim różnego typu aplikacje pomiarowe wymagające małego poboru mocy i miniaturowych podzespołów, między innymi przenośne urządzenia medyczne. Wewnętrzny przetwornik A/C oferuje w pełni różnicową architekturę, mechanizm autokalibracji i 16-bitową charakterystykę bez tzw. gubienia kodów. Konwersje są przeprowadzane w oparciu o wewnętrzne źródło referencyjne 2,048V o dokładności 0,05% i dryfcie temperaturowym 5ppm/° C z szybkością 15, 30, 60 lub 240 próbek na sekundę. Maksymalne wzmocnienie bloku PGA wynosi 8V/V. ADS1110 pracuje z pojedynczym napięciem zasilania z zakresu od 2,7V do 5,5V. W stanie aktywnym pobiera około 240uA prądu zasilania, przy czym istnieje możliwość automatycznego przechodzenia w tryb power-down po każdej konwersji.
Zdjęcie pokazuje równoczesny pomiar dokładnego miernika i naszego przetwornika ADS1110 i jak widać wyniki nie różnią się. Doskonała stabilność i powtarzalność czyni ten przetwornik idealny dla profesjonalnych zastosowań jak i dla hobbystów dzięki cenie, zintegrowaniu i łatwości oprogramowania (nie jest potrzebna żadna procedura uśredniająca wyniki).
Przykładowy kod w BASCOMie:
ConfigLcd= 16 * 2
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E =
P1.3 , Rs = P1.2
Config Scl = P3.5
Config Sda = P3.4
Dim Napiecie AsSingle, Pga AsInteger
Dim Addressw AsByte, Addressr AsByte, Pomiarh AsByte, Pomiarl AsByte
Dim Napiecies AsString* 10
Dim Sig AsString* 1 'Deklaracja dodatkowej zmiennej - znak
Addressw =&B10[zasłonięte]000 'adresy do zapisu dla ukladów A0 i E0
Addressr =&B10[zasłonięte]001 'adresy do odczytu dla ukladów A0 i E0
Pga = 1 'stopien wewnetrznego podzialu
Cls
'------- Petla glowna ---------------
Do
Sig ="+"'Wstepne ustawienie znaku wartosci
Gosub Odczyt 'Odczyt Pomiaru
CursorOff
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
'------------------------------------------------
'konieczna modyfikacja procedury
If Napiecie >= 32767 Then'jesli Napiecie(word) >= 32767
Napiecie = 65535 - Napiecie 'oblicz wartosc dopelnienia do 65535
Sig ="-"'i ustaw zmienna Sig na znak minus
EndIf
'koniec glownej modyfikacji
'------------------------------------------------
'Dla ADS1100 wpisujemy zamiast 2.048 wartość napięcia zasilania, im dokladniej tym lepiej, od tego zalezy dokladność pomiarów
Napiecie = Napiecie * 2.048
Napiecie = Napiecie / 32768
Napiecie = Napiecie / Pga
Napiecie = Napiecie * 1 'w tej linii zamiast 1 w przypadku
Zastosowania Dzielnika Napiecia W Celu Rozszerzenia Zakresu , Wpisujemy
Wspólczynnik Podzialu.
Return
Wyswietl:'Wyświetlenie Pomiaru Na Lcd
Upperline
Napiecies =Fusing(napiecie , 0.&&&)'Zaokrąglenie Wart. Napięcia
Lcd" Nap: "; Sig ; Napiecie ;" V"'... Oraz Jego Wyświetlenie - tu tez
Zmiana - Wyswietlenie Znaku Zmierzonej Wartosci
Return'Powrót Z Podprocedury
----------------------------------------------------------------------
'Procedura obslugujaca przetwornik ADS1100/ADS1110, wynik pomiaru wyswietlany jest na LCD
'Nalezy zwrocic uwage na adresy przetwornikow, jesli sa inne niz A0/E0 nalezy je zmienic wg. wzoru zapis-1001xxx0, odczyt 1001xxx1
ConfigLcd= 16 * 2
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
Config Scl = P3.5
Config Sda = P3.4
Dim Napiecie AsSingle, Pga AsInteger
Dim Addressw AsByte, Addressr AsByte, Pomiarh AsByte, Pomiarl AsByte
Dim Napiecies AsString* 10
Addressw =&B10[zasłonięte]000 'adresy do zapisu, adres dla ukladów A0 i E0
Addressr =&B10[zasłonięte]001
Pga = 1 'Odczytu
Cls
Do
Gosub Odczyt 'Odczyt Pomiaru
CursorOff
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 'Dla ADS1100 wpisujemy zamiast 2.048 wartość napięcia zasilania, im dokladniej tym lepiej, od tego zalezy dokladność pomiarów
Napiecie = Napiecie * 2.048
Napiecie = Napiecie / 32768
Napiecie = Napiecie / Pga
Napiecie = Napiecie * 1 'w tej linii zamiast 1 w przypadku zastosowania dzielnika napiecia w celu rozszerzenia zakresu, wpisujemy wspólczynnik podzialu.
Return
Wyswietl:'Wyświetlenie Pomiaru Na Lcd
Upperline
Napiecies =Fusing(napiecie , 0.&&&)'Zaokrąglenie Wart. Napięcia
Lcd" Nap: "; Napiecies ;" V"'... Oraz Jego Wyświetlenie
Return'Powrót Z Podprocedury