Innehållsförteckning:
- Steg 1:
- Steg 2: Konfigurationsregister
- Steg 3: Dataregister
- Steg 4: ADC-läge med enda ända
- Steg 5:
- Steg 6: Differential ADC -läge
Video: Arduino och TI ADS1110 16-bitars ADC: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I denna handledning undersöker vi hur du använder Arduino för att arbeta med Texas Instruments ADS1110-en otroligt liten men användbar 16-bitars analog-till-digital-omvandlare IC.
Den kan fungera mellan 2,7 och 5,5 V så det är också bra för Arduino Due och andra utvecklingsbrädor med lägre spänning. Innan du fortsätter, ladda ner databladet (pdf) eftersom det kommer att vara användbart och hänvisas till under denna handledning. ADS1110 ger dig möjlighet att få en mer exakt ADC än som erbjuds av Arduinos 10-bitars ADC-och den är relativt enkel att använda. Det är dock bara tillgängligt som en ren del i SOT23-6.
Steg 1:
Den goda nyheten är att du kan beställa ADS1110 monterad på ett mycket bekvämt brytbord. ADS1110 använder I2C -bussen för kommunikation. Och eftersom det bara finns sex stift kan du inte ställa in bussadressen - istället kan du välja mellan sex varianter av ADS1110 - var och en med sin egen adress (se sida två i databladet).
Som du kan se på bilden ovan är vårt märkt “EDO” som matchar bussadressen 1001000 eller 0x48h. Och med exempelkretsarna har vi använt 10kΩ uppdragningsmotstånd på I2C-bussen.
Du kan använda ADS1110 som antingen en enda eller differentiell ADC-Men först måste vi undersöka konfigurationsregistret som används för att styra olika attribut och dataregistret.
Steg 2: Konfigurationsregister
Bläddra till sidan elva i databladet. Konfigurationsregistret är en byte stort, och eftersom ADS1110 återställs vid en strömcykel-måste du återställa registret om dina behov skiljer sig från standardvärdena. Databladet stavar det ganska snyggt … bitarna 0 och 1 bestämmer förstärkningsinställningen för PGA (programmerbar förstärkningsförstärkare).
Om du bara mäter spänningar eller experimenterar, lämna dessa som noll för en förstärkning på 1V/V. Därefter styrs datahastigheten för ADS1110 med bitarna 2 och 3. Om du har kontinuerlig sampling påslagen bestämmer detta antalet samplar per sekund som tas av ADC.
Efter lite experimenterande med en Arduino Uno fann vi att värdena som returnerades från ADC var lite av när vi använde den snabbaste hastigheten, så lämna den som 15 SPS om inte annat krävs. Bit 4 ställer in antingen kontinuerlig sampling (0) eller engångsprovtagning (1). Ignorera bit 5 och 6, men de är alltid inställda på 0.
Slutligen bit 7-om du är i enstaka samplingsläge, ställer du in det till 1 begär ett prov-och läser det kommer att berätta om den returnerade data är ny (0) eller gammal (1). Du kan kontrollera att det uppmätta värdet är ett nytt värde - om den första biten i konfigurationsbyten som kommer efter data är 0 är den ny. Om den returnerar 1 har ADC -konverteringen inte slutförts.
Steg 3: Dataregister
Eftersom ADS1110 är en 16-bitars ADC, returnerar den data över två byte-och följer sedan med värdet på konfigurationsregistret. Så om du begär tre byte kommer hela partiet tillbaka. Data finns i "tvåkomplement" -form, vilket är en metod för att använda signerade nummer med binärt.
Att konvertera dessa två byte görs med några enkla matematiker. Vid provtagning vid 15 SPS faller värdet som returneras av ADS1110 (inte spänningen) mellan -32768 och 32767. Den högre byten av värdet multipliceras med 256, läggs sedan till den lägre byten -som sedan multipliceras med 2.048 och slutligen dividerat med 32768. Få inte panik, eftersom vi gör detta i den kommande exempelskissen.
Steg 4: ADC-läge med enda ända
I det här läget kan du läsa en spänning som faller mellan noll och 2,048 V (som också råkar vara den inbyggda referensspänningen för ADS1110). Exempelkretsen är enkel (från databladet).
Glöm inte 10kΩ uppdragningsmotstånd på I2C-bussen. Följande skiss använder ADS1110 i standardläget och returnerar helt enkelt den uppmätta spänningen:
// Exempel 53.1 - ADS1110 enkelsidig voltmeter (0 ~ 2.048VDC) #inkludera "Wire.h" #define ads1110 0x48 flottörspänning, data; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); medan (Wire.available ()) // se till att all data kommer i {highbyte = Wire.read (); // hög byte * B11111111 lågbyte = Wire.read (); // low byte configRegister = Wire.read (); }
data = highbyte * 256;
data = data + lågbyte; Serial.print ("Data >>"); Serial.println (data, DEC); Serial.print ("Spänning >>"); spänning = data * 2,048; spänning = spänning / 32768,0; Serial.print (spänning, DEC); Serial.println ("V"); fördröjning (1000); }
Steg 5:
När den har laddats upp ansluter du signalen för att mäta och öppnar den seriella bildskärmen - du kommer att presenteras med något som liknar den seriella bildskärmen som visas i detta steg.
Om du behöver ändra förstärkningen för den interna programmerbara förstärkaren för ADC - måste du skriva en ny byte i konfigurationsregistret med:
Wire.beginTransmission (ads1110); Wire.write (konfigurationsbyte); Wire.endTransmission ();
innan du begär ADC -data. Detta skulle vara 0x8D, 0x8E eller 0x8F för förstärkningsvärden på 2, 4 respektive 8 - och använd 0x8C för att återställa ADS1110 till standard.
Steg 6: Differential ADC -läge
I det här läget kan du läsa skillnaden mellan två spänningar som var och en faller mellan noll och 5 V. Exempelkretsen är enkel (från databladet).
Vi måste notera här (och i databladet) att ADS1110 inte kan acceptera negativa spänningar på någon av ingångarna. Du kan använda föregående skiss för samma resultat- och den resulterande spänningen kommer att vara värdet av Vin subtraherat från Vin+. Om du till exempel hade 2 V på Vin+ och 1 V på Vin- skulle den resulterande spänningen vara 1 V (med förstärkningen inställd på 1).
Återigen hoppas vi att du tyckte att detta var intressant och möjligen användbart. Det här inlägget kommer till dig av pmdway.com - allt för tillverkare och elektronikentusiaster, med gratis leverans över hela världen.
Rekommenderad:
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: 11 steg
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: Har du någonsin haft mycket data du arbetar med och tänkt för dig själv … " hur kan jag göra allt av dessa data ser bättre ut och blir lättare att förstå? " Om så är fallet kan en tabell i Microsoft Office Word 2007 vara ditt svar
Ansluter bearbetning och Arduino och gör 7 segment och servo GUI -kontroller: 4 steg
Ansluta bearbetning och Arduino och göra 7 segment och servo GUI -kontroller: För vissa projekt måste du använda Arduino eftersom det ger en enkel prototypplattform men visning av grafik i seriell bildskärm av Arduino kan ta ganska lång tid och är till och med svårt att göra. Du kan visa grafer på Arduino Serial Monitor
Arduino och PCF8591 ADC DAC IC: 7 steg
Arduino och PCF8591 ADC DAC IC: Har du någonsin velat ha fler analoga ingångar på ditt Arduino -projekt, men inte velat gaffla ut en Mega? Eller vill du generera analoga signaler? Kolla sedan in ämnet för vår handledning - NXP PCF8591 IC.Det löser båda dessa problem
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid