- Komponenter krävs
- MCP4725 DAC-modul (digital till analog omvandlare)
- I2C-stift i Raspberry Pi
- Installerar MCP4725 Adafruit-biblioteket i Raspberry Pi
- Installerar Adafruit LCD-skärmbibliotek
- Kretsschema och anslutningar
- Programmering Raspberry Pi för digital till analog konvertering
Mikrokontroller fungerar bara med digitala värden men i verkliga världen måste vi hantera analoga signaler. Det är därför ADC (analoga till digitala omvandlare) finns för att konvertera verkliga analoga värden till digital form så att mikrokontroller kan bearbeta signalerna. Men vad händer om vi behöver analoga signaler från digitala värden, så här kommer DAC (Digital till Analog Converter).
DAC kan användas i många applikationer som motorstyrning, LED-lampornas ljusstyrka, ljudförstärkare, videokodare, datainsamlingssystem etc.
Vi har redan kopplat MCP4725 DAC-modulen med Arduino och STM32. Idag kommer vi att använda samma MCP4725 DAC IC för att designa en Digital till Analog-omvandlare med Raspberry Pi. Det antas att du redan har installerat det senaste operativsystemet på din Raspberry PI och har tillgång till det via SSH. Om inte, följ guiden Komma igång med Raspberry Pi innan du fortsätter. Här använder vi Rasbian Stretch installerad på Raspberry Pi 3.
Komponenter krävs
- Raspberry Pi 3 B + (med Raspbian OS installerat)
- MCP4725 DAC IC
- 16x2 LCD-skärm
- Bakbord
- Anslutande ledningar
MCP4725 DAC-modul (digital till analog omvandlare)
MCP4725 IC är en 12-bitars digital till analog omvandlarmodul som används för att generera analoga utspänningar från (0 till 5V) och den styrs med hjälp av I2C-kommunikation. Den levereras också med EEPROM-minne om flyktigt minne.
Denna IC har 12-bitars upplösning. Det betyder att vi använder (0 till 4096) som ingång för att tillhandahålla spänningsutgången med avseende på referensspänning. Max referensspänning är 5V.
Formel för beräkning av utspänning
O / P-spänning = (referensspänning / upplösning) x digitalt värde
Till exempel om vi använder 5V som referensspänning och låt oss anta att det digitala värdet är 2048. Så för att beräkna DAC-utgången.
O / P-spänning = (5/4096) x 2048 = 2,5V
Pinout av MCP4725
Nedan är bilden av MCP4725 med tydligt angivande stiftnamn.
Stift av MCP4725 |
Använda sig av |
UT |
Utgångar Analog spänning |
GND |
GND för utdata |
SCL |
I2C seriell klocklinje |
SDA |
I2C Seriell datalinje |
VCC |
Ingångsreferensspänning 5V eller 3,3V |
GND |
GND för inmatning |
Denna IC kan styras med hjälp av I2C-kommunikationen som endast kräver två ledningar SCL och SDA. Som standard är I2C-adressen för MCP4725 0x60. Nu vet vi om I2C-kommunikation i Raspberry pi.
I2C-stift i Raspberry Pi
För att kunna använda MCP4725 med Raspberry Pi är det första du behöver göra att känna till Raspberry Pi I2C-portstift och konfigurera I2C-port 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 MCP4725 med Raspberry Pi
För att kunna börja kommunicera med MCP4725 IC måste Raspberry Pi känna till sin I2C-adress. För att hitta adressen ansluter du först SDA- och SCL-stiftet på MCP4725 till SDA- och SCL-stiftet 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 är det nu dags att installera nödvändiga bibliotek för att använda MCP4725 med Raspberry Pi.
Installerar MCP4725 Adafruit-biblioteket i Raspberry Pi
För att använda MCP4725 DAC-kort med I2C-buss från Raspberry Pi används ett Adafruit MCP4725-bibliotek. Följ dessa steg för att ladda ner och installera biblioteket:
1. Se till att Raspberry Pi är ansluten till ett aktivt internet.
2. Öppna sedan en terminal och kör följande rader en efter en.
sudo apt-get install git build-essential python-dev git clone https://github.com/adafruit/Adafruit_Python_MCP4725.git cd Adafruit_Python_MCP4725 sudo python setup.py install
3. Efter framgångsrik installation kan Adafruit MCP4725-biblioteket importeras i valfritt pythonscript med hjälp av raden
Importera Adafruit_MCP4725
Installerar Adafruit LCD-skärmbibliotek
En LCD används i detta projekt för att visa DAC och analoga spänningsvärden så att ladda ner och installera LCD-biblioteket i Raspberry Pi följ dessa steg:
1. Öppna ett terminalfönster och kör följande rader en efter en.
apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install
2. Efter installationen av LCD-biblioteket kan Adafruit_python_CharLCD nu användas från vilket python-skript som helst med hjälp av följande rad
importera Adafruit_CharLCD som LCD
Nu är Raspberry Pi redo att koda för Digital till Analog-omvandlare, så låt oss ansluta kretsen enligt bilden nedan.
Kretsschema och anslutningar
Kretsschema för användning av DAC IC MCP4725 med Raspberry Pi ges nedan:
Kretsförbindelser mellan (16x2) LCD och Raspberry Pi
LCD |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5V |
V0 |
Från potentiometer för kontrastkontroll |
RS |
GPIO25 |
RW |
GND |
E |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO22 |
A |
+ 5V |
K |
GND |
Kretsförbindelser mellan MCP4725 och Raspberry Pi
MCP4725 |
Raspberry Pi 3 B + |
Multimeter |
GND |
GND |
Negativ sond |
VCC |
+ 5V |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
UT |
- |
Positiv sond |
Komplett installation kommer att se ut så här:
Programmering Raspberry Pi för digital till analog konvertering
Komplett Python-kod för Raspberry Pi ges i slutet av denna handledning. Ladda bara upp det till hallon pi med vilken SSH-klient som helst som Putty eller någon FTP-klient som FileZilla eller så kan du direkt skriva in programmet i hallon pi genom att ansluta en bildskärm till den. Läs mer om programmering av hallon Pi här.
I detta program skickas ett digitalt värde på 0-4096 från Raspberry Pi till MCP4725 via I2C-buss för att producera en analog utgångsspänning på 0 till 5V som kan verifieras med multimetern. Både de digitala och analoga värdena visas på 16x2 LCD. I vårt program skickas det digitala värdet med ett steg på 150 som använder för loop (0,150,300,450… 4050). Låt oss se programmet i detalj.
Inkludera först alla nödvändiga bibliotek. Här används LCD, MCP4725 och tidsbibliotek.
import Adafruit_CharLCD som LCD import Adafruit_MCP4725 import tid
Därefter definierar du LCD-stiften tillsammans med nr. av rad och kolumner. Vi vet att 16X2 LCD har 2 rader och 16 kolumner. Läs mer om gränssnitt mellan LCD och Raspberry Pi här.
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # Definiera LCD-kolumn och radstorlek för 16x2 LCD. lcd_column = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_column, lcd_rows, lcd_backlight)
Nästa visas ett välkomstmeddelande på LCD i fem sekunder.
lcd.message ('Circuit Digest') time.sleep (2.0) lcd.message ('\ nDAC using Rpi') time.sleep (5.0) lcd.clear ()
I nästa rad skapas en DAC-instans med I2C-adressen för MCP4725 DAC IC. Min tavla har en adress på 0x60, ändra den enligt din tavla.
dac = Adafruit_MCP4725.MCP4725 (adress = 0x60)
Därefter används en för loop inuti medan loop för att ändra det digitala värdet x som skickas till MCP4725 via I2C-buss. Den för slingan intervall är (0,4095,150). X-värdena varierar från 0 till 4050 med ett steg på 150.
medan True: för x i intervallet (0,4097,150):
Det digitala värdet skickas till MCP4725 med följande rad
dac.set_voltage (x)
Beroende på det digitala värdet beräknas det analoga värdet med formeln där 5 är referensspänning och x är digitalt värde.
spänning = x / 4096.0 * 5.0
Då visas det digitala värdet och det analoga värdet på LCD-skärmen med en fördröjning på 2 sekunder med följande rader
lcd.cursor_pos = (0,0) lcd.message ("DAC Value:" + str (x)) lcd.message ("\ nAnalogVolt:%.2f"% voltage) time.sleep (2)
Här visas det digitala värdet på den första raden och det analoga värdet på den andra raden på LCD-displayen. En multimeter är också ansluten till MCP4725 utgångsstift för att verifiera den analoga spänningen.
Komplett kod med demonstrationsvideo ges nedan.