Inhaltsverzeichnis:

Arduino und der 16-Bit-ADC TI ADS1110 - Gunook
Arduino und der 16-Bit-ADC TI ADS1110 - Gunook

Video: Arduino und der 16-Bit-ADC TI ADS1110 - Gunook

Video: Arduino und der 16-Bit-ADC TI ADS1110 - Gunook
Video: ADS1115 16-Bit Analog-to-Digital Converter: In-Depth Tutorial with Arduino, ESP8266 & ESP32 2024, Juli
Anonim
Arduino und der 16-Bit-ADC TI ADS1110
Arduino und der 16-Bit-ADC TI ADS1110

In diesem Tutorial untersuchen wir die Verwendung von Arduino für die Arbeit mit dem Texas Instruments ADS1110 – einem unglaublich kleinen, aber nützlichen 16-Bit-Analog-Digital-Wandler-IC.

Es kann zwischen 2,7 und 5,5 V betrieben werden, sodass es auch für Arduino Due und andere Entwicklungsboards mit niedrigerer Spannung geeignet ist. Bevor Sie fortfahren, laden Sie bitte das Datenblatt (pdf) herunter, da es in diesem Tutorial nützlich ist und auf das Bezug genommen wird. Der ADS1110 bietet Ihnen die Möglichkeit eines genaueren ADCs als die 10-Bit-ADCs des Arduino – und er ist relativ einfach zu bedienen. Es ist jedoch nur als blankes Teil in SOT23-6 verfügbar.

Schritt 1:

Bild
Bild

Die gute Nachricht ist, dass Sie den ADS1110 auf einem sehr praktischen Breakout-Board montiert bestellen können. Der ADS1110 verwendet den I2C-Bus zur Kommunikation. Und da es nur sechs Pins gibt, können Sie die Busadresse nicht einstellen, sondern können aus sechs Varianten des ADS1110 wählen – jede mit eigener Adresse (siehe Seite zwei des Datenblatts).

Wie Sie auf dem Foto oben sehen können, ist unsere mit „EDO“gekennzeichnet, was der Busadresse 1001000 oder 0x48h entspricht. Und bei den Beispielschaltungen haben wir 10kΩ Pullup-Widerstände auf dem I2C-Bus verwendet.

Sie können den ADS1110 entweder als Single-Ended- oder als Differential-ADC verwenden – aber zuerst müssen wir das Konfigurationsregister, das zur Steuerung verschiedener Attribute verwendet wird, und das Datenregister untersuchen.

Schritt 2: Konfigurationsregister

Blättern Sie zu Seite elf des Datenblatts. Das Konfigurationsregister ist ein Byte groß, und da der ADS1110 bei einem Aus- und Wiedereinschalten zurückgesetzt wird, müssen Sie das Register zurücksetzen, wenn Ihre Anforderungen von den Standardeinstellungen abweichen. Das Datenblatt beschreibt es recht ordentlich… Bit 0 und 1 bestimmen die Verstärkungseinstellung für den PGA (Programmable Gain Amplifier).

Wenn Sie nur Spannungen messen oder experimentieren, lassen Sie diese bei einer Verstärkung von 1 V / V auf Null. Als nächstes wird die Datenrate für den ADS1110 mit den Bits 2 und 3 gesteuert. Wenn Sie Continuous Sampling eingeschaltet haben, bestimmt dies die Anzahl der Samples pro Sekunde, die vom ADC genommen werden.

Nach einigen Experimenten mit einem Arduino Uno stellten wir fest, dass die vom ADC zurückgegebenen Werte bei Verwendung der schnellsten Rate etwas falsch waren. Belassen Sie es also bei 15 SPS, sofern nicht anders erforderlich. Bit 4 setzt entweder kontinuierliches Sampling (0) oder einmaliges Sampling (1). Ignorieren Sie die Bits 5 und 6, sie werden jedoch immer auf 0 gesetzt.

Schließlich Bit 7 – wenn Sie sich im einmaligen Sampling-Modus befinden, fordert das Setzen auf 1 ein Sample an – und das Lesen zeigt Ihnen an, ob die zurückgegebenen Daten neu (0) oder alt (1) sind. Sie können überprüfen, ob der gemessene Wert ein neuer Wert ist – wenn das erste Bit des Konfigurationsbytes, das nach den Daten folgt, 0 ist, ist es neu. Wenn 1 zurückgegeben wird, ist die ADC-Konvertierung noch nicht abgeschlossen.

Schritt 3: Datenregister

Da der ADS1110 ein 16-Bit-ADC ist, gibt er die Daten über zwei Bytes zurück – und dann folgt der Wert des Konfigurationsregisters. Wenn Sie also drei Bytes anfordern, kommt das ganze Los zurück. Die Daten liegen im „Zweierkomplement“-Format vor, einer Methode zur Verwendung von vorzeichenbehafteten Zahlen mit Binärzahlen.

Das Konvertieren dieser beiden Bytes erfolgt durch einige einfache Mathematik. Beim Abtasten mit 15 SPS liegt der vom ADS1110 zurückgegebene Wert (nicht die Spannung) zwischen -32768 und 32767. Das höhere Byte des Werts wird mit 256 multipliziert, dann zum niedrigeren Byte addiert – das dann mit 2,048 multipliziert wird und schließlich geteilt durch 32768. Keine Panik, wie wir dies in der kommenden Beispielskizze tun.

Schritt 4: Single-Ended-ADC-Modus

Single-Ended-ADC-Modus
Single-Ended-ADC-Modus

In diesem Modus können Sie eine Spannung zwischen Null und 2,048 V ablesen (was zufällig auch die eingebaute Referenzspannung für den ADS1110 ist). Die Beispielschaltung ist einfach (aus dem Datenblatt).

Vergessen Sie nicht die 10kΩ Pullup-Widerstände am I2C-Bus. Die folgende Skizze verwendet den ADS1110 im Standardmodus und gibt einfach die gemessene Spannung zurück:

// Beispiel 53.1 - ADS1110 einseitiges Voltmeter (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 float voltage, data; Byte Highbyte, Lowbyte, KonfigRegister; Void setup () { Serial.begin (9600); Wire.begin(); aufrechtzuerhalten. Void Schleife () { Wire.requestFrom (ads1110, 3); while(Wire.available()) // sicherstellen, dass alle Daten in { Highbyte = Wire.read(); // High-Byte * B11111111 Lowbyte = Wire.read (); // Low-Byte-ConfigRegister = Wire.read (); }

Daten = Highbyte * 256;

Daten = Daten + Lowbyte; Serial.print ("Daten >>"); Serial.println (Daten, DEC); Serial.print ("Spannung >>"); Spannung = Daten * 2,048; Spannung = Spannung / 32768,0; Serial.print (Spannung, DEC); Serial.println("V"); Verzögerung (1000); }

Schritt 5:

Bild
Bild

Schließen Sie nach dem Hochladen das zu messende Signal an und öffnen Sie den seriellen Monitor – Sie erhalten etwas Ähnliches wie das in diesem Schritt gezeigte serielle Monitorbild.

Wenn Sie die Verstärkung des internen Verstärkers mit programmierbarer Verstärkung des ADC ändern müssen, müssen Sie ein neues Byte in das Konfigurationsregister schreiben mit:

Wire.beginTransmission(ads1110);Wire.write(Konfigurationsbyte); Wire.endTransmission();

bevor Sie die ADC-Daten anfordern. Dies wäre 0x8D, 0x8E oder 0x8F für Gain-Werte von 2, 4 bzw. 8 – und verwenden Sie 0x8C, um den ADS1110 auf die Standardwerte zurückzusetzen.

Schritt 6: Differenzial-ADC-Modus

Differenzial-ADC-Modus
Differenzial-ADC-Modus

In diesem Modus können Sie die Differenz zwischen zwei Spannungen ablesen, die jeweils zwischen Null und 5 V fallen. Die Beispielschaltung ist einfach (aus dem Datenblatt).

Wir müssen hier (und im Datenblatt) beachten, dass der ADS1110 an keinem der Eingänge negative Spannungen akzeptieren kann. Sie können die vorherige Skizze für die gleichen Ergebnisse verwenden – und die resultierende Spannung ist der Wert von Vin- subtrahiert von Vin+. Wenn Sie beispielsweise 2 V an Vin+ und 1 V an Vin- hätten, wäre die resultierende Spannung 1 V (mit der Verstärkung auf 1).

Wir hoffen noch einmal, dass Sie dies interessant und möglicherweise nützlich fanden. Dieser Beitrag wird Ihnen von pmdway.com bereitgestellt - alles für Macher und Elektronik-Enthusiasten, mit kostenloser Lieferung weltweit.

Empfohlen: