Innholdsfortegnelse:

Arduino og TI ADS1110 16-biters ADC: 6 trinn
Arduino og TI ADS1110 16-biters ADC: 6 trinn

Video: Arduino og TI ADS1110 16-biters ADC: 6 trinn

Video: Arduino og TI ADS1110 16-biters ADC: 6 trinn
Video: Conversor ADS1110 EVM TEXAS INSTRUMENTS 2024, November
Anonim
Arduino og TI ADS1110 16-bit ADC
Arduino og TI ADS1110 16-bit ADC

I denne opplæringen undersøker vi hvordan du bruker Arduino til å jobbe med Texas Instruments ADS1110-en utrolig liten, men nyttig 16-biters analog-til-digital-omformer IC.

Den kan fungere mellom 2,7 og 5,5 V, så den er også fin for Arduino Due og andre utviklingsplater med lavere spenning. Før du fortsetter, må du laste ned databladet (pdf), da det vil være nyttig og referert til i denne opplæringen. ADS1110 gir deg muligheten til en mer nøyaktig ADC enn den som tilbys av Arduinos 10-biters ADC-og den er relativt enkel å bruke. Den er imidlertid bare tilgjengelig som bare en del i SOT23-6.

Trinn 1:

Bilde
Bilde

Den gode nyheten er at du kan bestille ADS1110 montert på et veldig praktisk breakout -bord. ADS1110 bruker I2C -bussen for kommunikasjon. Og siden det bare er seks pinner, kan du ikke angi bussadressen - i stedet kan du velge mellom seks varianter av ADS1110 - hver med sin egen adresse (se side to i databladet).

Som du kan se på bildet ovenfor, er vårt merket “EDO” som samsvarer med bussadressen 1001000 eller 0x48h. Og med eksempelkretsene har vi brukt 10kΩ opptrekksmotstander på I2C-bussen.

Du kan bruke ADS1110 som enten en endet eller differensiell ADC-Men først må vi undersøke konfigurasjonsregisteret som brukes til å kontrollere forskjellige attributter og dataregisteret.

Trinn 2: Konfigurasjonsregister

Gå til side elleve i databladet. Konfigurasjonsregisteret er en byte stort, og ettersom ADS1110 tilbakestilles på en strøm-syklus-må du tilbakestille registret hvis behovene dine er forskjellige fra standardinnstillingene. Dataarket staver det ganske pent … bit 0 og 1 bestemmer forsterkningsinnstillingen for PGA (programmerbar forsterkningsforsterker).

Hvis du bare måler spenninger eller eksperimenterer, la disse være null for en gevinst på 1V/V. Deretter styres datahastigheten for ADS1110 med bit 2 og 3. Hvis du har slått på kontinuerlig sampling, bestemmer dette antall prøver per sekund som ADC tar.

Etter litt eksperimentering med en Arduino Uno fant vi ut at verdiene som returneres fra ADC var litt av når du bruker den raskeste hastigheten, så la den være 15 SPS med mindre annet kreves. Bit 4 angir enten kontinuerlig prøvetaking (0) eller engangs prøvetaking (1). Ignorer bit 5 og 6, men de er alltid satt til 0.

Til slutt bit 7-hvis du er i engangs samplingsmodus, setter du den til 1 forespørsler om en prøve-og leser den vil fortelle deg om de returnerte dataene er nye (0) eller gamle (1). Du kan kontrollere at den målte verdien er en ny verdi - hvis den første biten av konfigurasjonsbyten som kommer etter dataene er 0, er den ny. Hvis den returnerer 1, er ADC -konverteringen ikke fullført.

Trinn 3: Dataregister

Siden ADS1110 er en 16-biters ADC, returnerer den dataene over to byte-og følger deretter med verdien av konfigurasjonsregisteret. Så hvis du ber om tre byte, kommer hele partiet tilbake. Dataene er i "to -komplement" -form, som er en metode for å bruke signerte tall med binær.

Konvertering av de to bytene gjøres ved hjelp av noen enkle matematikk. Ved prøvetaking ved 15 SPS faller verdien som returneres av ADS1110 (ikke spenningen) mellom -32768 og 32767. Den høyere byten av verdien multipliseres med 256, legges deretter til den lavere byten -som deretter multipliseres med 2.048 og til slutt delt på 32768. Ikke få panikk, da vi gjør dette i den kommende eksempelskissen.

Trinn 4: ADC-modus med én ende

Enkelt ADC-modus
Enkelt ADC-modus

I denne modusen kan du lese en spenning som faller mellom null og 2,048 V (som også tilfeldigvis er den innebygde referansespenningen for ADS1110). Eksempelkretsen er enkel (fra databladet).

Ikke glem 10kΩ opptrekksmotstander på I2C-bussen. Følgende skisse bruker ADS1110 i standardmodus, og returnerer bare den målte spenningen:

// Eksempel 53.1 - ADS1110 ensidig voltmeter (0 ~ 2.048VDC) #inkludere "Wire.h" #define ads1110 0x48 flytespenning, data; byte highbyte, lowbyte, configRegister; ugyldig oppsett () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); mens (Wire.available ()) // sikre at alle dataene kommer i {highbyte = Wire.read (); // høy byte * B11111111 lowbyte = Wire.read (); // lav byte configRegister = Wire.read (); }

data = høybyte * 256;

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

Trinn 5:

Bilde
Bilde

Når den er lastet opp, kobler du til signalet for å måle og åpner den serielle skjermen - du vil bli presentert med noe som ligner det serielle skjermbildet som vises i dette trinnet.

Hvis du trenger å endre forsterkningen til den interne programmerbare forsterkningsforsterkeren til ADC - må du skrive en ny byte inn i konfigurasjonsregisteret ved å bruke:

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

før du ber om ADC -data. Dette vil være 0x8D, 0x8E eller 0x8F for forsterkningsverdier på henholdsvis 2, 4 og 8 - og bruk 0x8C for å tilbakestille ADS1110 til standard.

Trinn 6: Differensiell ADC -modus

Differensiell ADC -modus
Differensiell ADC -modus

I denne modusen kan du lese forskjellen mellom to spenninger som hver faller mellom null og 5 V. Eksempelkretsen er enkel (fra databladet).

Vi må merke oss her (og i databladet) at ADS1110 ikke kan godta negative spenninger på noen av inngangene. Du kan bruke den forrige skissen for de samme resultatene- og den resulterende spenningen vil være verdien av Vin-trukket fra Vin+. For eksempel, hvis du hadde 2 V på Vin+ og 1 V på Vin- ville den resulterende spenningen være 1 V (med forsterkningen satt til 1).

Nok en gang håper vi at du fant dette interessant og muligens nyttig. Dette innlegget ble brakt til deg av pmdway.com - alt for produsenter og elektronikkentusiaster, med gratis levering over hele verden.

Anbefalt: