Indholdsfortegnelse:

Arduino og TI ADS1110 16-bit ADC: 6 trin
Arduino og TI ADS1110 16-bit ADC: 6 trin

Video: Arduino og TI ADS1110 16-bit ADC: 6 trin

Video: Arduino og TI ADS1110 16-bit ADC: 6 trin
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Juli
Anonim
Arduino og TI ADS1110 16-bit ADC
Arduino og TI ADS1110 16-bit ADC

I denne vejledning undersøger vi brugen af Arduino til at arbejde med Texas Instruments ADS1110-en utrolig lille, men nyttig 16-bit analog-til-digital konverter IC.

Det kan fungere mellem 2,7 og 5,5 V, så det er også fint til Arduino Due og andre udviklingsplader med lavere spænding. Inden du fortsætter, skal du downloade databladet (pdf), da det vil være nyttigt og refereret til i denne vejledning. ADS1110 giver dig mulighed for en mere præcis ADC, end den tilbydes af Arduinos 10-bit ADC'er-og den er relativt let at bruge. Den er dog kun tilgængelig som en nøgen del i SOT23-6.

Trin 1:

Billede
Billede

Den gode nyhed er, at du kan bestille ADS1110 monteret på et meget bekvemt breakout board. ADS1110 bruger I2C -bussen til kommunikation. Og da der kun er seks pins, kan du ikke indstille busadressen - i stedet kan du vælge mellem seks varianter af ADS1110 - hver med deres egen adresse (se side to i databladet).

Som du kan se på billedet ovenfor, er vores mærket “EDO”, der matcher busadressen 1001000 eller 0x48h. Og med eksempelkredsløbene har vi brugt 10kΩ pull-up-modstande på I2C-bussen.

Du kan bruge ADS1110 som enten en enkelt eller differentiel ADC-Men først skal vi undersøge konfigurationsregistret, der bruges til at styre forskellige attributter og dataregisteret.

Trin 2: Konfigurationsregister

Gå til side elleve i databladet. Konfigurationsregistret er en byte i størrelse, og da ADS1110 nulstilles på en strømcyklus-skal du nulstille registret, hvis dine behov er forskellige fra standardindstillingerne. Databladet staver det ganske pænt … bit 0 og 1 bestemmer forstærkningsindstillingen for PGA (programmerbar forstærkerforstærker).

Hvis du bare måler spændinger eller eksperimenterer, skal du lade disse være nul for en gevinst på 1V/V. Derefter styres datahastigheden for ADS1110 med bit 2 og 3. Hvis du har aktiveret kontinuerlig sampling, bestemmer dette antallet af prøver pr. Sekund, som ADC tager.

Efter nogle eksperimenter med en Arduino Uno fandt vi ud af, at de værdier, der blev returneret fra ADC, var en smule off, når du bruger den hurtigste hastighed, så lad den være som 15 SPS, medmindre andet kræves. Bit 4 angiver enten kontinuerlig prøveudtagning (0) eller engangsudtagning (1). Ignorer bit 5 og 6, men de er altid indstillet til 0.

Endelig bit 7-hvis du er i engangsprøvetagningstilstand, skal du indstille den til 1 og anmoder om en prøve-og læse den vil fortælle dig, om de returnerede data er nye (0) eller gamle (1). Du kan kontrollere, at den målte værdi er en ny værdi - hvis den første bit af konfigurationsbyte, der kommer efter dataene, er 0, er den ny. Hvis den returnerer 1, er ADC -konverteringen ikke afsluttet.

Trin 3: Dataregister

Da ADS1110 er en 16-bit ADC, returnerer den dataene over to bytes-og følger derefter med værdien af konfigurationsregistret. Så hvis du anmoder om tre bytes, kommer hele partiet tilbage. Dataene er i "tos komplement" -form, som er en metode til at bruge signerede tal med binært.

Konvertering af disse to bytes udføres ved hjælp af nogle enkle matematik. Ved prøveudtagning ved 15 SPS falder værdien returneret af ADS1110 (ikke spændingen) mellem -32768 og 32767. Den højere byte af værdien ganges med 256, tilføjes derefter til den lavere byte -som derefter ganges med 2.048 og til sidst divideret med 32768. Gå ikke i panik, da vi gør dette i den kommende eksempelskitse.

Trin 4: Single-ended ADC-tilstand

Enkelt ADC-tilstand
Enkelt ADC-tilstand

I denne tilstand kan du aflæse en spænding, der falder mellem nul og 2,048 V (hvilket også tilfældigvis er den indbyggede referencespænding for ADS1110). Eksempelkredsløbet er enkelt (fra databladet).

Glem ikke 10kΩ pull-up modstande på I2C bussen. Den følgende skitse bruger ADS1110 i standardtilstanden og returnerer simpelthen den målte spænding:

// Eksempel 53.1 - ADS1110 enkeltsidet voltmeter (0 ~ 2.048VDC) #inkluderer "Wire.h" #define ads1110 0x48 float spænding, data; byte highbyte, lowbyte, configRegister; ugyldig opsætning () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); mens (Wire.available ()) // sikre, at alle data kommer i {highbyte = Wire.read (); // høj byte * B11111111 lowbyte = Wire.read (); // lav byte configRegister = Wire.read (); }

data = højbyte * 256;

data = data + lowbyte; Serial.print ("Data >>"); Serial.println (data, DEC); Serial.print ("Spænding >>"); spænding = data * 2,048; spænding = spænding / 32768,0; Serial.print (spænding, DEC); Serial.println ("V"); forsinkelse (1000); }

Trin 5:

Billede
Billede

Når det er uploadet, skal du forbinde signalet for at måle og åbne den serielle skærm - du vil blive præsenteret for noget, der ligner det serielle skærmbillede, der vises i dette trin.

Hvis du har brug for at ændre forstærkningen af ADC's interne programmerbare forstærkerforstærker - skal du skrive en ny byte i konfigurationsregistret ved hjælp af:

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

før du anmoder om ADC -data. Dette ville være 0x8D, 0x8E eller 0x8F for forstærkningsværdier på henholdsvis 2, 4 og 8 - og brug 0x8C til at nulstille ADS1110 tilbage til standard.

Trin 6: Differentiel ADC -tilstand

Differential ADC -tilstand
Differential ADC -tilstand

I denne tilstand kan du læse forskellen mellem to spændinger, der hver falder mellem nul og 5 V. Eksempelkredsløbet er enkelt (fra databladet).

Vi skal her bemærke (og i databladet), at ADS1110 ikke kan acceptere negative spændinger på nogen af indgangene. Du kan bruge den foregående skitse til de samme resultater- og den resulterende spænding vil være værdien af Vin-trukket fra Vin+. For eksempel, hvis du havde 2 V på Vin+ og 1 V på Vin- ville den resulterende spænding være 1 V (med forstærkningen sat til 1).

Endnu en gang håber vi, at du fandt dette interessant og muligvis nyttigt. Dette indlæg blev bragt til dig af pmdway.com - alt for producenter og elektronikentusiaster, med gratis levering over hele verden.

Anbefalede: