- Nödvändiga komponenter
- PCF8591 ADC / DAC-modul
- I2C-stift i Raspberry Pi
- Gränssnitt PCF8591 ADC / DAC-modul med Raspberry Pi
- Python-program för analog till digital omvandling (ADC)
Analog till digital omvandling är en mycket viktig uppgift inom inbäddad elektronik, eftersom de flesta av sensorerna ger utdata som analoga värden och för att mata dem till mikrokontroller som bara förstår binära värden, måste vi konvertera dem till digitala värden. För att kunna bearbeta analoga data behöver mikrokontroller Analog till Digital Converter.
Vissa mikrokontroller har inbyggd ADC som Arduino, MSP430, PIC16F877A men en del mikrokontroller har det inte som 8051, Raspberry Pi osv. Och vi måste använda några externa IC till analogomvandlare som ADC0804, ADC0808. Nedan hittar du olika exempel på ADC med olika mikrokontroller:
- Hur man använder ADC i Arduino Uno?
- Raspberry Pi ADC-handledning
- Gränssnitt ADC0808 med 8051 mikrokontroller
- 0-25V digital voltmeter med AVR-mikrokontroller
- Hur man använder ADC i STM32F103C8
- Hur man använder ADC i MSP430G2
- Hur man använder ADC i ARM7 LPC2148
- Använda ADC-modulen för PIC-mikrokontroller med MPLAB och XC8
I den här handledningen ska vi lära oss hur man gränssnitt PCF8591 ADC / DAC-modul med Raspberry Pi.
Nödvändiga komponenter
- Raspberry Pi
- PCF8591 ADC-modul
- 100K Pot
- Startkablar
Det antas att du har Raspberry Pi med senaste Raspbian OS installerat i det och du vet hur man SSH i Pi med hjälp av en terminalprogramvara som kitt. Om du är ny på Raspberry Pi, följ den här artikeln för att komma igång med Raspberry Pi. Fortfarande om du står inför något problem finns det massor av Raspberry Pi-handledning som kan hjälpa till.
PCF8591 ADC / DAC-modul
PCF8591 är en 8-bitars analog-till-digital eller 8-bitars digital-till-analog-omvandlarmodul, vilket innebär att varje stift kan läsa analoga värden upp till 256. Den har också LDR och termistorkrets på kortet. Denna modul har fyra analoga ingångar och en analoga utgångar. Det fungerar på I 2 C-kommunikation, så det finns SCL- och SDA-stift för seriell klocka och seriell data-adress. Det kräver 2,5-6V matningsspänning och har låg standby-ström. Vi kan också manipulera ingångsspänningen genom att justera vredet på potentiometern på modulen. Det finns också tre hoppare på brädet. J4 är ansluten för att välja åtkomstkrets för termistor, J5 är ansluten för att välja åtkomstkrets för LDR / fotomotståndoch J6 är ansluten för att välja den justerbara spänningsaccesskretsen. Det finns två lysdioder ombord D1 och D2-D1 visar utspänningsintensiteten och D2 visar intensiteten på matningsspänningen. Högre utgångs- eller matningsspänning, högre intensitet för LED D1 eller D2. Du kan också testa dessa lysdioder med en potentiometer på VCC eller på AOUT-stift.
I2C-stift i Raspberry Pi
För att kunna använda PCF8591 med Raspberry Pi är det första du behöver göra att känna till Raspberry Pi I2C-portnålarna och konfigurera I2C-porten i Raspberry pi.
Nedan är stiftdiagrammet för Raspberry Pi 3 modell B + och I2C-stift GPIO2 (SDA) och GPIO3 (SCL) används i denna handledning.
Konfigurera I2C i Raspberry Pi
Som standard är I2C inaktiverad i Raspberry Pi. Så först måste det vara aktiverat. För att aktivera I2C i Raspberry Pi
1. Gå till terminalen och skriv sudo raspi-config.
2. Nu visas Raspberry Pi Software Configuration Tool.
3. Välj gränssnittsalternativ och aktivera sedan I2C.
4. Efter att ha aktiverat I2C startar du om Pi.
Skannar I2C-adress för PCF8591 med Raspberry Pi
För att börja kommunicera med PCF8591 IC måste Raspberry Pi känna till sin I2C-adress. För att hitta adressen ansluter du först SDA och SCL-stift på PCF8591 till SDA och SCL-stift på Raspberry Pi. Anslut även + 5V- och GND-stiften.
Öppna nu terminalen och skriv kommandot nedan för att veta adressen till ansluten I2C-enhet, sudo i2cdetect –y 1 eller sudo i2cdetect –y 0
Efter att ha hittat I2C-adressen nu är det dags att bygga kretsen och installera nödvändiga bibliotek för att använda PCF8591 med Raspberry Pi.
Gränssnitt PCF8591 ADC / DAC-modul med Raspberry Pi
Kretsschema för gränssnitt mellan PCF8591 och Raspberry Pi är enkelt. I detta gränssnittsexempel kommer vi att läsa de analoga värdena från någon av de analoga stiften och visa det på Raspberry Pi-terminalen. Vi kan ändra värdena med en 100K-pott.
Anslut VCC och GND till GPIO2 och GPIO på Raspberry Pi. Anslut sedan SDA och SCL till GPIO3 respektive GPIO5. Anslut äntligen en 100K-kruka med AIN0. Du kan också lägga till 16x2 LCD för att visa ADC-värden istället för att visa det på Terminal. Läs mer om gränssnitt 16x2 LCD med Raspberry Pi här.
Python-program för analog till digital omvandling (ADC)
Den kompletta program och arbets video ges i slutet av den här guiden.
Först importerar du smbus- biblioteket för I 2 C-busskommunikation och tidsbiblioteket för att ge en vilotid mellan att skriva ut värdet.
import SMBus import tid
Definiera nu några variabler. Den första variabeln innehåller adressen för I 2 C-bussen och den andra variabeln innehåller adressen för den första analoga ingångsstiftet.
adress = 0x48 A0 = 0x40
Därefter har vi gjort ett objekt för funktionen SMBus (1) för biblioteket smbus
buss = smbus.SMBus (1)
Nu, medan den första raden säger till IC att göra den analoga mätningen vid den första analoga ingångsstiftet. Den andra raden lagrar adressen som läses vid analog stift i ett variabelt värde . Skriv ut värdet.
medan True: bus.write_byte (address, A0) value = bus.read_byte (address) print (value) time.sleep (0.1)
Nu sparar du äntligen pythonkoden i någon fil med.py-entension och kör koden i raspberry Pi-terminal med kommandot nedan ”
python filnamn.py
Innan du kör koden, se till att du har aktiverat I 2 C-kommunikationen och att alla stift är anslutna enligt bilden, annars visar det fel. De analoga värdena måste börja visas på terminalen som nedan. Justera grytans ratt så ser du gradvis förändring av värdena. Läs mer om hur du kör programmet i
Komplett pythonkod och video ges nedan.