- Nødvendige komponenter
- PCF8591 ADC / DAC-modul
- I2C-ben i Raspberry Pi
- Interfacing PCF8591 ADC / DAC-modul med Raspberry Pi
- Python-program til analog til digital konvertering (ADC)
Analog til digital konvertering er en meget vigtig opgave i indbygget elektronik, da de fleste sensorer leverer output som analoge værdier og for at føde dem til mikrocontroller, som kun forstår binære værdier, er vi nødt til at konvertere dem til digitale værdier. For at kunne behandle de analoge data har mikrocontrollere brug for Analog til Digital Converter.
Nogle mikrokontroller har indbygget ADC som Arduino, MSP430, PIC16F877A, men nogle mikrokontroller har det ikke som 8051, Raspberry Pi osv., Og vi skal bruge nogle eksterne analoge til digitale konverter IC'er som ADC0804, ADC0808. Nedenfor kan du finde forskellige eksempler på ADC med forskellige mikrocontrollere:
- Hvordan bruges ADC i Arduino Uno?
- Raspberry Pi ADC vejledning
- Interfacing ADC0808 med 8051 Microcontroller
- 0-25V digitalt voltmeter ved hjælp af AVR-mikrocontroller
- Sådan bruges ADC i STM32F103C8
- Sådan bruges ADC i MSP430G2
- Sådan bruges ADC i ARM7 LPC2148
- Brug af ADC-modul fra PIC Microcontroller med MPLAB og XC8
I denne vejledning skal vi lære at interface PCF8591 ADC / DAC-modul med Raspberry Pi.
Nødvendige komponenter
- Hindbær-pi
- PCF8591 ADC-modul
- 100K pot
- Jumperkabler
Det antages, at du har Raspberry Pi med den nyeste Raspbian OS installeret i den, og du ved hvordan man SSH i Pi ved hjælp af en terminalsoftware som kitt. Hvis du er ny hos Raspberry Pi, skal du følge denne artikel for at komme i gang med Raspberry Pi. Stadig hvis du står over for ethvert problem, så er der masser af Raspberry Pi Tutorials, der kan hjælpe.
PCF8591 ADC / DAC-modul
PCF8591 er et 8 bit analogt til digitalt eller 8 bit digitalt til analogt konverteringsmodul, hvilket betyder, at hver ben kan læse analoge værdier op til 256. Det har også LDR og termistor kredsløb på kortet. Dette modul har fire analoge indgange og en analoge indgange. Det fungerer på I 2 C-kommunikation, så der er SCL- og SDA-ben til serielt ur og seriel data-adresse. Det kræver 2,5-6V forsyningsspænding og har lav standby-strøm. Vi kan også manipulere indgangsspændingen ved at justere drejeknappen til potentiometeret på modulet. Der er også tre springere på tavlen. J4 er forbundet for at vælge termistoradgangskredsløb, J5 er tilsluttet for at vælge LDR / fotomodstandsadgangskredsløbog J6 er tilsluttet for at vælge det justerbare spændingsadgangskredsløb. Der er to lysdioder om bord på D1, og D2-D1 viser udgangsspændingsintensiteten, og D2 viser intensiteten af forsyningsspændingen. Højere output- eller forsyningsspænding, højere intensitet af LED D1 eller D2. Du kan også teste disse lysdioder ved hjælp af et potentiometer på VCC eller på AOUT-pin.
I2C-ben i Raspberry Pi
For at bruge PCF8591 med Raspberry Pi er den første ting at gøre, at kende Raspberry Pi I2C- portnålene og konfigurere I2C-porten i Raspberry pi.
Nedenfor er pin-diagrammet over Raspberry Pi 3 Model B +, og I2C-ben GPIO2 (SDA) og GPIO3 (SCL) bruges i denne vejledning.
Konfiguration af I2C i Raspberry Pi
I2C er som standard deaktiveret i Raspberry Pi. Så først skal det være aktiveret. For at aktivere I2C i Raspberry Pi
1. Gå til terminalen og skriv sudo raspi-config.
2. Nu vises Raspberry Pi softwarekonfigurationsværktøjet.
3. Vælg Interfacing-indstillinger, og aktiver derefter I2C.
4. Efter at I2C er aktiveret, genstart Pi.
Scanning af I2C-adresse på PCF8591 ved hjælp af Raspberry Pi
For at starte kommunikation med PCF8591 IC skal Raspberry Pi nu kende sin I2C-adresse. For at finde adressen skal du først tilslutte SDA- og SCL-stiften på PCF8591 til SDA- og SCL-stiften på Raspberry Pi. Tilslut også + 5V og GND-benene.
Åbn nu terminalen, og skriv kommandoen nedenfor for at kende adressen på den tilsluttede I2C-enhed, sudo i2cdetect –y 1 eller sudo i2cdetect –y 0
Efter at have fundet I2C-adressen nu er det tid til at oprette kredsløbet og installere de nødvendige biblioteker til brug af PCF8591 med Raspberry Pi.
Interfacing PCF8591 ADC / DAC-modul med Raspberry Pi
Kredsløbsdiagram til grænseflade mellem PCF8591 og Raspberry Pi er enkel. I dette interface-eksempel læser vi de analoge værdier fra en hvilken som helst af de analoge ben og viser det på Raspberry Pi-terminalen. Vi kan ændre værdierne ved hjælp af en 100K pot.
Tilslut VCC og GND til GPIO2 og GPIO på Raspberry Pi. Tilslut derefter SDA og SCL til henholdsvis GPIO3 og GPIO5. Tilslut til sidst en 100K pot med AIN0. Du kan også tilføje 16x2 LCD for at vise ADC-værdier i stedet for at vise det på Terminal. Lær mere om grænseflade mellem 16x2 LCD og Raspberry Pi her.
Python-program til analog til digital konvertering (ADC)
Det komplette program og arbejdsvideoen er vist i slutningen af denne vejledning.
Først skal du importere smbus- biblioteket til I 2 C-buskommunikation og tidsbiblioteket for at give en hviletid mellem udskrivning af værdien.
import smbus importtid
Definer nu nogle variabler. Den første variabel indeholder adressen på I 2 C-bussen, og den anden variabel indeholder adressen på den første analoge indgangsstift.
adresse = 0x48 A0 = 0x40
Dernæst har vi lavet et objekt med funktionen SMBus (1) i biblioteket smbus
bus = smbus.SMBus (1)
Nu, mens den første linje fortæller IC'en at foretage den analoge måling ved den første analoge indgangsstift. Den anden linje gemmer adressen læst ved analog pin i en variabel værdi . Endelig udskriv værdien.
mens True: bus.write_byte (adresse, A0) værdi = bus.read_byte (adresse) print (værdi) time.sleep (0.1)
Gem nu endelig pythonkoden i en fil med.py-entension og kør koden i raspberry Pi-terminal ved hjælp af kommandoen nedenfor ”
python filnavn.py
Inden du kører koden, skal du sikre dig, at du har aktiveret I 2 C-kommunikationen, og alle benene er forbundet som vist i diagrammet, ellers viser det fejl. De analoge værdier skal begynde at vises på terminalen som nedenfor. Juster gryderets knap, og du vil se den gradvise ændring i værdierne. Lær mere om at køre programmet i
Komplet pythonkode og video er angivet nedenfor.