Innholdsfortegnelse:
- Trinn 1:
- Trinn 2: Konfigurasjonsregister
- Trinn 3: Dataregister
- Trinn 4: ADC-modus med én ende
- Trinn 5:
- Trinn 6: Differensiell ADC -modus
Video: Arduino og TI ADS1110 16-biters ADC: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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:
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
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:
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
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:
Hvordan lage ADC Current Sense: 5 trinn
Hvordan lage ADC Current Sense: I denne instruksjonsboken vil vi beskrive hvordan du implementerer en 8-biters analog-til-digital-omformer (ADC) i SLG46855V som kan registrere laststrøm og grensesnitt med en MCU via I2C. Denne designen kan brukes til forskjellige nåværende applikasjoner, for eksempel
7-segment for å vise ADC #Arduino-verdier, #Arduino: 4 trinn
7-segment for å vise ADC #Arduino-verdier, #Arduino: I denne artikkelen vil jeg lage et prosjekt som fremdeles er relatert til den forrige artikkelen. Nemlig å behandle ADC -data. Så du trenger ikke en seriell skjerm for å se verdien av ADC -dataene. i denne artikkelen vil jeg lage en ADC Value viewer -visning. så du ikke
Les ADC -verdier fra potensiometre: 4 trinn
Les ADC -verdier fra potensiometre: I denne artikkelen vil jeg vise deg hvordan du leser ADC -verdier fra et potensiometer. Dette er grunnlaget for Arduino -programmering. som leser analoge verdier ved hjelp av den analoge pinnen levert av Arduino. i tillegg til å bruke potensioet, er det flere sensorer som
Arduino og PCF8591 ADC DAC IC: 7 trinn
Arduino og PCF8591 ADC DAC IC: Har du noen gang ønsket deg flere analoge inngangspinner på Arduino -prosjektet ditt, men ikke ønsket å punge ut for en Mega? Eller vil du generere analoge signaler? Sjekk deretter ut emnet for opplæringen vår - NXP PCF8591 IC. Den løser begge disse problemene
Spill sanger med Arduino ved å bruke ADC til PWM på Flyback Transformer eller høyttaler: 4 trinn
Spill sanger med Arduino ved å bruke ADC til PWM på Flyback Transformer eller Speaker: Hello Guys, Dette er den andre delen av min andre instruerbare (det var mye vanskelig), I utgangspunktet har jeg i dette prosjektet brukt ADC og TIMERS på min Arduino for å konverter lydsignal til et PWM -signal. Dette er mye enklere enn min forrige Instructa