Spisu treści:
- Krok 1:
- Krok 2: Rejestr konfiguracji
- Krok 3: Rejestr danych
- Krok 4: tryb ADC z jednym zakończeniem
- Krok 5:
- Krok 6: Tryb różnicowego ADC
Wideo: Arduino i 16-bitowy ADC TI ADS1110: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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:
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
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:
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
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:
Jak sprawić, by prąd ADC wyczuł: 5 kroków
Jak wyczuć prąd ADC: W tej instrukcji opiszemy, jak zaimplementować 8-bitowy konwerter analogowo-cyfrowy (ADC) w SLG46855V, który może wykrywać prąd obciążenia i łączyć się z MCU przez I2C. Ta konstrukcja może być używana do różnych zastosowań związanych z wykrywaniem prądu, takich jak
Arduino i PCF8591 ADC DAC IC: 7 kroków
Arduino i PCF8591 ADC DAC IC: Czy kiedykolwiek chciałeś mieć więcej analogowych pinów wejściowych w swoim projekcie Arduino, ale nie chciałeś rozwidlać się na Mega? A może chcesz generować sygnały analogowe? Następnie sprawdź temat naszego samouczka – układ scalony NXP PCF8591. Rozwiązuje oba te problemy
Czy wiesz o regulacji ADC ESP32?: 29 kroków
Czy wiesz o regulacji ADC ESP32?: Dzisiaj opowiem o bardziej technicznym problemie, ale myślę, że każdy, kto pracuje z ESP32, powinien wiedzieć: kwestia regulacji odczytu ADC (przetwornika analogowo-cyfrowego). Uważam to za ważne, ponieważ podczas „pomiaru” zwł
Akumulatorowy woltomierz cyfrowy za pomocą ICL7107 ADC: 7 kroków (ze zdjęciami)
Akumulatorowy woltomierz cyfrowy wykorzystujący ICL7107 ADC: W tym samouczku pokażę, jak zrobić bardzo prosty woltomierz cyfrowy, który może mierzyć napięcia od 20 mV do 200 V. Ten projekt nie będzie wykorzystywał żadnego mikrokontrolera takiego jak arduino. Zamiast tego ADC, czyli ICL7107 będzie używany z niektórymi passi
Wprowadzenie do ADC w mikrokontrolerze AVR - dla początkujących: 14 kroków
Wprowadzenie do ADC w mikrokontrolerze AVR | dla początkujących: W tym samouczku dowiesz się wszystkiego o ADC w mikrokontrolerze avr