Spisu treści:

Arduino i 16-bitowy ADC TI ADS1110: 6 kroków
Arduino i 16-bitowy ADC TI ADS1110: 6 kroków

Wideo: Arduino i 16-bitowy ADC TI ADS1110: 6 kroków

Wideo: Arduino i 16-bitowy ADC TI ADS1110: 6 kroków
Wideo: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Lipiec
Anonim
Arduino i 16-bitowy ADC TI ADS1110
Arduino i 16-bitowy ADC TI ADS1110

W tym samouczku przyjrzymy się używaniu Arduino do pracy z Texas Instruments ADS1110 – niewiarygodnie małym, ale użytecznym 16-bitowym konwerterem analogowo-cyfrowym.

Może działać w zakresie od 2,7 do 5,5 V, więc jest również odpowiedni dla Arduino Due i innych płyt rozwojowych niskiego napięcia. Przed kontynuowaniem prosimy o pobranie arkusza danych (pdf), ponieważ będzie on przydatny i zostanie omówiony w tym samouczku. ADS1110 daje opcję dokładniejszego przetwornika ADC niż oferowany przez 10-bitowe przetworniki ADC Arduino – i jest stosunkowo łatwy w użyciu. Jednak jest dostępny tylko jako goła część w SOT23-6.

Krok 1:

Obraz
Obraz

Dobrą wiadomością jest to, że można zamówić ADS1110 zamontowany na bardzo wygodnej tabliczce zaciskowej. ADS1110 wykorzystuje do komunikacji magistralę I2C. A ponieważ jest tylko sześć pinów, nie można ustawić adresu magistrali – zamiast tego możesz wybrać jeden z sześciu wariantów ADS1110 – każdy z własnym adresem (patrz druga strona arkusza danych).

Jak widać na powyższym zdjęciu, nasz jest oznaczony „EDO”, co odpowiada adresowi autobusu 1001000 lub 0x48h. W przykładowych obwodach zastosowaliśmy rezystory podciągające 10kΩ na magistrali I2C.

ADS1110 można używać jako przetwornika ADC z jednym końcem lub różnicowego – ale najpierw musimy zbadać rejestr konfiguracyjny, który służy do kontrolowania różnych atrybutów, oraz rejestr danych.

Krok 2: Rejestr konfiguracji

Przejdź do strony jedenastej arkusza danych. Rejestr konfiguracji ma rozmiar jednego bajta, a gdy ADS1110 resetuje się po wyłączeniu zasilania – musisz zresetować rejestr, jeśli twoje potrzeby są inne niż domyślne. Arkusz danych wyjaśnia to całkiem zgrabnie… bity 0 i 1 określają ustawienie wzmocnienia dla PGA (programowalnego wzmacniacza wzmocnienia).

Jeśli tylko mierzysz napięcia lub eksperymentujesz, pozostaw je jako zero, aby uzyskać wzmocnienie 1 V/V. Następnie szybkość transmisji danych dla ADS1110 jest kontrolowana za pomocą bitów 2 i 3. Jeśli masz włączone ciągłe próbkowanie, określa to liczbę próbek na sekundę pobieranych przez ADC.

Po kilku eksperymentach z Arduino Uno stwierdziliśmy, że wartości zwracane z ADC były nieco zaburzone podczas korzystania z najszybszej szybkości, więc pozostaw ją jako 15 SPS, chyba że jest to wymagane. Bit 4 ustawia próbkowanie ciągłe (0) lub próbkowanie jednorazowe (1). Ignoruj bity 5 i 6, jednak zawsze są ustawione na 0.

Wreszcie bit 7 – jeśli jesteś w trybie jednorazowego próbkowania, ustawienie go na 1 żąda próbki – a odczytanie go powie ci, czy zwrócone dane są nowe (0) czy stare (1). Możesz sprawdzić, czy zmierzona wartość jest nową wartością – jeśli pierwszy bit bajtu konfiguracyjnego, który pojawia się po danych, ma wartość 0, jest to nowa wartość. Jeśli zwraca 1, konwersja ADC nie została zakończona.

Krok 3: Rejestr danych

Ponieważ ADS1110 jest 16-bitowym przetwornikiem ADC, zwraca dane o długości dwóch bajtów, a następnie podaje wartość rejestru konfiguracyjnego. Więc jeśli zażądasz trzech bajtów, cała partia wróci. Dane są w formie „uzupełnienia do dwóch”, co jest metodą używania liczb ze znakiem w systemie binarnym.

Konwersja tych dwóch bajtów odbywa się za pomocą prostej matematyki. Podczas próbkowania przy 15 SPS wartość zwracana przez ADS1110 (nie napięcie) mieści się w zakresie od -32768 do 32767. Wyższy bajt wartości jest mnożony przez 256, następnie dodawany do dolnego bajtu – który jest następnie mnożony przez 2,048 i na koniec podzielone przez 32768. Nie panikuj, jak to zrobimy w nadchodzącym szkicu przykładowym.

Krok 4: tryb ADC z jednym zakończeniem

Tryb single-ended ADC
Tryb single-ended ADC

W tym trybie można odczytać napięcie, które mieści się w zakresie od zera do 2,048 V (co również jest wbudowanym napięciem odniesienia dla ADS1110). Przykładowy obwód jest prosty (z karty katalogowej).

Nie zapomnij o rezystorach podciągających 10kΩ na magistrali I2C. Poniższy szkic wykorzystuje ADS1110 w trybie domyślnym i po prostu zwraca zmierzone napięcie:

// Przykład 53.1 - ADS1110 jednostronny woltomierz (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 napięcie float, dane; bajt wysoki bajt, dolny bajt, configRegister; void setup() { Serial.begin(9600); Wire.początek(); } void loop() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // upewnij się, że wszystkie dane znajdują się w { highbyte = Wire.read(); // wysoki bajt * B11111111 niski bajt = Wire.read(); // low byte configRegister = Wire.read(); }

dane = wysoki bajt * 256;

dane = dane + młodszy bajt; Serial.print("Dane >> "); Serial.println(dane, DEC); Serial.print("Napięcie >> "); napięcie = dane * 2,048; napięcie = napięcie / 32768,0; Serial.print(napięcie, DEC); Serial.println(" V"); opóźnienie (1000); }

Krok 5:

Obraz
Obraz

Po przesłaniu podłącz sygnał do pomiaru i otwórz monitor szeregowy – pojawi się coś podobnego do obrazu monitora szeregowego pokazanego w tym kroku.

Jeśli potrzebujesz zmienić wzmocnienie wewnętrznego programowalnego wzmacniacza wzmocnienia przetwornika ADC – będziesz musiał zapisać nowy bajt do rejestru konfiguracyjnego za pomocą:

Wire.beginTransmission(ads1110);Wire.write(bajt konfiguracyjny); Wire.endTransmission();

przed zażądaniem danych ADC. Będzie to 0x8D, 0x8E lub 0x8F dla wartości wzmocnienia odpowiednio 2, 4 i 8 – i użyj 0x8C, aby zresetować ADS1110 z powrotem do wartości domyślnych.

Krok 6: Tryb różnicowego ADC

Tryb różnicowego ADC
Tryb różnicowego ADC

W tym trybie można odczytać różnicę między dwoma napięciami, z których każde mieści się w zakresie od zera do 5 V. Przykładowy obwód jest prosty (z karty katalogowej).

Musimy zauważyć tutaj (i w arkuszu danych), że ADS1110 nie może akceptować ujemnych napięć na żadnym z wejść. Możesz użyć poprzedniego szkicu dla tych samych wyników – a wynikowe napięcie będzie wartością Vin- odjętą od Vin+. Na przykład, gdybyś miał 2 V na Vin+ i 1 V na Vin-, wynikowe napięcie wyniesie 1 V (przy wzmocnieniu ustawionym na 1).

Jeszcze raz mamy nadzieję, że znalazłeś to interesujące i być może przydatne. Ten post został dostarczony przez pmdway.com - wszystko dla producentów i entuzjastów elektroniki, z bezpłatną dostawą na całym świecie.

Zalecana: