Analoog naar digitaal conversie is een zeer belangrijke taak in embedded elektronica, aangezien de meeste sensoren output leveren als analoge waarden en om ze in een microcontroller te sturen die alleen binaire waarden begrijpt, moeten we ze omzetten in digitale waarden. Om de analoge gegevens te kunnen verwerken, hebben microcontrollers een analoog naar digitaal converter nodig.
Sommige microcontrollers hebben ingebouwde ADC zoals Arduino, MSP430, PIC16F877A, maar sommige microcontrollers hebben het niet zoals 8051, Raspberry Pi enz. En we moeten externe analoog-naar-digitaal converter-IC's gebruiken, zoals ADC0804, ADC0808. Hieronder vind je verschillende voorbeelden van ADC met verschillende microcontrollers:
- Hoe ADC te gebruiken in Arduino Uno?
- Raspberry Pi ADC-zelfstudie
- Koppeling tussen ADC0808 met 8051 Microcontroller
- 0-25V digitale voltmeter met AVR-microcontroller
- Hoe ADC te gebruiken in STM32F103C8
- Hoe ADC te gebruiken in MSP430G2
- Hoe ADC te gebruiken in ARM7 LPC2148
- Met behulp van ADC-module van PIC-microcontroller met MPLAB en XC8
In deze tutorial gaan we kijken hoe we de PCF8591 ADC / DAC-module met Arduino kunnen verbinden.
Vereiste componenten
- Arduino UNO
- PCF8591 ADC-module
- 100K pot
- Startkabels
PCF8591 ADC / DAC-module
PCF8591 is een 8 bit analoog naar digitaal of 8 bit digitaal naar analoog convertormodule, wat betekent dat elke pin analoge waarden tot 256 kan lezen. Het heeft ook een LDR en thermistorcircuit op het bord. Deze module heeft vier analoge ingangen en één analoge uitgang. Het werkt op I 2 C-communicatie, dus er zijn SCL- en SDA-pinnen voor de seriële klok en het seriële data-adres. Het vereist een voedingsspanning van 2,5-6V en heeft een lage stand- bystroom. We kunnen ook de ingangsspanning manipuleren door de knop van de potentiometer op de module aan te passen. Er zijn ook drie jumpers op het bord. J4 is verbonden om het thermistortoegangscircuit te selecteren, J5 is verbonden om het LDR / fotoweerstandstoegangscircuit te selecteren en J6 is verbonden om het instelbare spanningstoegangscircuit te selecteren. Om toegang te krijgen tot deze circuits moet u de adressen van deze jumpers gebruiken: 0x50 voor J6, 0x60 voor J5 en 0x70 voor J4. Er zijn twee LED's aan boord van D1 en D2- D1 toont de intensiteit van de uitgangsspanning en D2 toont de intensiteit van de voedingsspanning. Hoe hoger de uitgangs- of voedingsspanning, hoe hoger de intensiteit van LED D1 of D2. U kunt deze LED's ook testen door een potentiometer op VCC of op AOUT-pin te gebruiken.
Koppeling van PCF8591 ADC / DAC-module met Arduino
Het volledige programma en werken video wordt gegeven aan het einde van deze tutorial.
Ten eerste moeten we de bibliotheek definiëren voor I 2 C-communicatie en LCD-display.
# omvatten
Definieer vervolgens enkele macro's. De eerste macro is voor het definiëren van het adres van de databus voor IC en de tweede macro is voor het definiëren van het adres van de eerste invoerpen van de module, waar de invoer van de pot wordt gegeven.
# definiëren PCF8591 (0x90 >> 1) # definiëren AIn0 0x00
Definieer vervolgens de pinverbindingen van LCD met Arduino en initialiseer de waarde die we krijgen bij de analoge pin.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Waarde = 0;
Laten we nu naar de instelfunctie gaan . Hier hebben we in de eerste regel de I 2 C-communicatie geïnitialiseerd. En in de tweede regel hebben we het LCD-scherm geïnitialiseerd waarop we de analoge waarden afdrukken. Lees hier meer over het koppelen van 16x2 LCD-schermen met Arduino.
void setup () { Wire.begin (); lcd.begin (16,2); }
In de lusfunctie is de eerste regel om de verzending te starten, dwz dat de PCF8591 wordt gestart. De tweede regel vertelt het IC om de analoge meting uit te voeren op de eerste analoge ingangspen. De derde regel beëindigt de transmissie en de vierde regel haalt de gemeten gegevens van de analoge pin.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
In onderstaande gedeelte, zet de afgelezen waarde van analoge pin to Value variabele eerder gedefinieerd. En druk die waarde in de volgende regels af op het LCD-scherm.
Waarde = Wire.read (); lcd.print ("ADC-waarde ="); lcd.print (waarde); vertraging (500); lcd.clear ();}
Upload ten slotte de code in Arduino en voer deze uit. De analoge waarden verschijnen op het LCD-scherm. Pas de knop van de pot aan, en u zult de geleidelijke verandering in de waarden zien.