Inhoudsopgave:
- Stap 1:
- Stap 2: Configuratieregister
- Stap 3: Gegevensregistratie
- Stap 4: Single-ended ADC-modus
- Stap 5:
- Stap 6: Differentiële ADC-modus
Video: Arduino en de TI ADS1110 16-bit ADC: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
In deze tutorial onderzoeken we het gebruik van Arduino om te werken met de Texas Instruments ADS1110 - een ongelooflijk klein maar handig 16-bits analoog-naar-digitaal converter-IC.
Het kan werken tussen 2,7 en 5,5 V, dus het is ook prima voor Arduino Due en andere ontwikkelingsborden met een lager voltage. Voordat u verder gaat, downloadt u alstublieft het gegevensblad (pdf), aangezien dit nuttig zal zijn en waarnaar wordt verwezen tijdens deze zelfstudie. De ADS1110 geeft je de mogelijkheid van een nauwkeuriger ADC dan aangeboden door de 10-bit ADC's van de Arduino - en het is relatief eenvoudig te gebruiken. Het is echter alleen beschikbaar als een kaal onderdeel in SOT23-6.
Stap 1:
Het goede nieuws is dat u de ADS1110 gemonteerd op een zeer handig breakout-bord kunt bestellen. De ADS1110 gebruikt de I2C-bus voor communicatie. En aangezien er slechts zes pinnen zijn, kunt u het busadres niet instellen - in plaats daarvan kunt u kiezen uit zes varianten van de ADS1110 - elk met hun eigen adres (zie pagina twee van het gegevensblad).
Zoals je op de bovenstaande foto kunt zien, is die van ons gemarkeerd met "EDO", wat overeenkomt met het busadres 1001000 of 0x48h. En met de voorbeeldcircuits hebben we 10kΩ pull-up-weerstanden op de I2C-bus gebruikt.
U kunt de ADS1110 gebruiken als een single-ended of differentiële ADC. Maar eerst moeten we het configuratieregister onderzoeken dat wordt gebruikt om verschillende attributen te besturen, en het dataregister.
Stap 2: Configuratieregister
Ga naar pagina elf van het gegevensblad. Het configuratieregister is één byte groot en aangezien de ADS1110 wordt gereset bij een power-cycle, moet u het register opnieuw instellen als uw behoeften afwijken van de standaardinstellingen. Het datablad geeft het vrij netjes weer … bits 0 en 1 bepalen de versterkingsinstelling voor de PGA (programmeerbare versterkingsversterker).
Als je alleen spanningen meet of experimenteert, laat deze dan op nul voor een winst van 1V/V. Vervolgens wordt de datasnelheid voor de ADS1110 geregeld met bits 2 en 3. Als u continue bemonstering hebt ingeschakeld, bepaalt dit het aantal monsters per seconde dat door de ADC wordt genomen.
Na wat experimenteren met een Arduino Uno ontdekten we dat de waarden die door de ADC werden geretourneerd een beetje afwijken bij gebruik van de snelste snelheid, dus laat het op 15 SPS tenzij anders vereist. Bit 4 stelt ofwel continue bemonstering (0) of eenmalige bemonstering (1) in. Negeer bits 5 en 6, maar ze zijn altijd ingesteld als 0.
Ten slotte bit 7 - als u in de eenmalige bemonsteringsmodus bent, stelt u deze in op 1 en vraagt u om een monster - en als u het leest, weet u of de geretourneerde gegevens nieuw (0) of oud (1) zijn. U kunt controleren of de gemeten waarde een nieuwe waarde is - als het eerste bit van de configuratiebyte dat na de gegevens komt, 0 is, is het nieuw. Als het 1 retourneert, is de ADC-conversie nog niet voltooid.
Stap 3: Gegevensregistratie
Omdat de ADS1110 een 16-bits ADC is, retourneert hij de gegevens over twee bytes - en volgt dan de waarde van het configuratieregister. Dus als je drie bytes aanvraagt, komt de hele boel terug. De gegevens zijn in "twee-complement"-vorm, wat een methode is om ondertekende getallen met binair getal te gebruiken.
Het converteren van die twee bytes wordt gedaan door enkele eenvoudige wiskunde. Bij bemonstering met 15 SPS valt de waarde die wordt geretourneerd door de ADS1110 (niet de spanning) tussen -32768 en 32767. De hogere byte van de waarde wordt vermenigvuldigd met 256, vervolgens opgeteld bij de lagere byte - die vervolgens wordt vermenigvuldigd met 2,048 en uiteindelijk gedeeld door 32768. Geen paniek, want we doen dit in de aanstaande voorbeeldschets.
Stap 4: Single-ended ADC-modus
In deze modus kunt u een spanning aflezen die tussen nul en 2,048 V valt (wat ook de ingebouwde referentiespanning is voor de ADS1110). Het voorbeeldcircuit is eenvoudig (uit het gegevensblad).
Vergeet de 10kΩ pull-up weerstanden op de I2C-bus niet. De volgende schets gebruikt de ADS1110 in de standaardmodus en retourneert eenvoudig de gemeten spanning:
// Voorbeeld 53.1 - ADS1110 enkelzijdige voltmeter (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 float voltage, data; byte highbyte, lowbyte, configRegister; void setup() { Serial.begin(9600); Draad.begin(); } void loop() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // zorg ervoor dat alle gegevens binnenkomen {highbyte = Wire.read(); // hoge byte * B11111111 lowbyte = Wire.read (); // low byte configRegister = Wire.read(); }
gegevens = highbyte * 256;
data = data + lowbyte; Serial.print("Gegevens >> "); Serial.println(data, DEC); Serial.print("Spanning >> "); spanning = gegevens * 2.048; spanning = spanning / 32768.0; Serial.print (voltage, DEC); Serieel.println ("V"); vertraging (1000); }
Stap 5:
Eenmaal geüpload, sluit u het te meten signaal aan en opent u de seriële monitor - u krijgt iets te zien dat lijkt op de afbeelding van de seriële monitor die in deze stap wordt getoond.
Als u de versterking van de interne programmeerbare versterkingsversterker van de ADC wilt wijzigen, moet u een nieuwe byte in het configuratieregister schrijven met:
Wire.beginTransmission (ads1110); Wire.write (configuratiebyte); Wire.endTransmission();
voordat u de ADC-gegevens opvraagt. Dit zou 0x8D, 0x8E of 0x8F zijn voor versterkingswaarden van respectievelijk 2, 4 en 8 - en gebruik 0x8C om de ADS1110 terug te zetten naar de standaardwaarde.
Stap 6: Differentiële ADC-modus
In deze modus kunt u het verschil aflezen tussen twee spanningen die elk tussen nul en 5 V vallen. De voorbeeldschakeling is eenvoudig (uit het gegevensblad).
We moeten hier (en in het gegevensblad) opmerken dat de ADS1110 geen negatieve spanningen op een van de ingangen kan accepteren. U kunt de vorige schets gebruiken voor dezelfde resultaten - en de resulterende spanning is de waarde van Vin- afgetrokken van Vin+. Als u bijvoorbeeld 2 V op Vin+ en 1 V op Vin- had, zou de resulterende spanning 1 V zijn (met de versterking ingesteld op 1).
Nogmaals, we hopen dat u dit interessant en mogelijk nuttig vond. Dit bericht aangeboden door pmdway.com - alles voor makers en elektronica-enthousiastelingen, met gratis levering wereldwijd.
Aanbevolen:
Hoe ADC Current Sense te maken: 5 stappen
Hoe ADC Current Sense te maken: In deze Instructable zullen we beschrijven hoe een 8-bit analoog-naar-digitaal-omzetter (ADC) in de SLG46855V kan worden geïmplementeerd die laadstroom en interface met een MCU via I2C kan detecteren. Dit ontwerp kan worden gebruikt voor verschillende stroomdetectietoepassingen zoals
7-segment om ADC #Arduino-waarden, #Arduino weer te geven: 4 stappen
7-segment om ADC weer te geven #Arduino Values, #Arduino: In dit artikel zal ik een project maken dat nog steeds gerelateerd is aan het vorige artikel. Namelijk het verwerken van ADC-gegevens. U heeft dus geen seriële monitor nodig om de waarde van de adc-gegevens te zien. in dit artikel zal ik een ADC Value viewer-weergave maken. dus jij niet
ADC-waarden lezen van potentiometers: 4 stappen:
Lees ADC-waarden van potentiometers: In dit artikel laat ik u zien hoe u ADC-waarden van een potentiometer kunt lezen. Dit is de basis van Arduino-programmering. die analoge waarden leest met behulp van de analoge pin die door Arduino wordt geleverd. Naast het gebruik van de potentio, zijn er verschillende sensoren die
ADC MCP3008 (Raspberry Pi): 4 stappen
ADC MCP3008 (Raspberry Pi): Basishandleiding voor het instellen van een analoog naar digitaal converter met de Raspberry Pi
Inleiding tot ADC in AVR-microcontroller - voor beginners: 14 stappen
Inleiding tot ADC in AVR-microcontroller | voor beginners: in deze tutorial weet je alles over ADC in avr-microcontroller