Indholdsfortegnelse:
- Trin 1:
- Trin 2: Konfigurationsregister
- Trin 3: Dataregister
- Trin 4: Single-ended ADC-tilstand
- Trin 5:
- Trin 6: Differentiel ADC -tilstand
Video: Arduino og TI ADS1110 16-bit ADC: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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:
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
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:
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
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:
Sådan laver du ADC Current Sense: 5 trin
Sådan gør du ADC aktuel fornuft: I denne instruktionsbog beskriver vi, hvordan du implementerer en 8-bit analog-til-digital-konverter (ADC) i SLG46855V, der kan registrere belastningsstrøm og grænseflade med en MCU via I2C. Dette design kan bruges til forskellige aktuelle registreringsapplikationer, f.eks
7-segment til visning af ADC #Arduino-værdier, #Arduino: 4 trin
7-segment til visning af ADC #Arduino-værdier, #Arduino: I denne artikel vil jeg lave et projekt, der stadig er relateret til den forrige artikel. Nemlig behandling af ADC -data. Så du behøver ikke en seriel skærm for at se værdien af ADC -dataene. i denne artikel vil jeg lave et ADC Value viewer -display. så du ikke
Læs ADC -værdier fra potentiometre: 4 trin
Læs ADC -værdier fra potentiometre: I denne artikel vil jeg vise dig, hvordan du læser ADC -værdier fra et potentiometer. Dette er grundlaget for Arduino -programmering. som læser analoge værdier ved hjælp af den analoge pin leveret af Arduino. udover at bruge potentio, er der flere sensorer, der
Arduino og PCF8591 ADC DAC IC: 7 trin
Arduino og PCF8591 ADC DAC IC: Har du nogensinde ønsket dig flere analoge inputstifter på dit Arduino -projekt, men ikke ønsket at punge ud til en Mega? Eller vil du gerne generere analoge signaler? Tjek derefter emnet for vores tutorial - NXP PCF8591 IC.Det løser begge disse problemer
Spil sange med Arduino Brug ADC til PWM på Flyback Transformer eller højttaler: 4 trin
Spil sange med Arduino Brug ADC til PWM på Flyback Transformer eller Speaker: Hej Guys, Dette er den anden del af min anden instruerbare (det var meget svært), Grundlæggende i dette projekt har jeg brugt ADC og TIMERS på min Arduino til konverter lydsignal til et PWM -signal. Dette er meget lettere end min tidligere Instructa