- Kinakailangan ang Mga Bahagi
- MCP4725 DAC Module (Digital sa Analog Converter)
- I2C pin sa Raspberry Pi
- Pag-install ng MCP4725 Adafruit library sa Raspberry Pi
- Pag-install ng Adafruit LCD display library
- Circuit Diagram at Mga Koneksyon
- Programming Raspberry Pi para sa Digital to Analog Conversion
Gumagana lamang ang mga Microcontroller sa mga digital na halaga ngunit sa totoong mundo kailangan nating harapin ang mga signal ng Analog. Iyon ang dahilan kung bakit ang ADC (Analog sa Digital Converter) ay naroroon upang i-convert ang totoong mga halaga ng Analog sa Digital form upang ang mga microcontrollers ay maaaring maproseso ang mga signal. Ngunit paano kung kailangan natin ng mga signal ng Analog mula sa mga digital na halaga, kaya narito ang DAC (Digital to Analog Converter).
Ang DAC ay maaaring magamit sa maraming mga application tulad ng Motor control, Control Brightness ng LED Lights, Audio Amplifier, Video Encoder, Mga Data acquisition System atbp.
Na-interfaced na namin ang MCP4725 DAC Module sa Arduino at STM32. Ngayon gagamitin namin ang parehong MCP4725 DAC IC upang mag-disenyo ng isang Digital to Analog converter gamit ang Raspberry Pi. Ipinapalagay na na-install mo na ang pinakabagong OS sa iyong Raspberry PI at may access dito sa pamamagitan ng SSH. Kung hindi, sundin ang Pagsisimula sa tutorial ng Raspberry Pi bago magpatuloy. Narito ginagamit namin ang Rasbian Stretch na naka-install sa Raspberry Pi 3.
Kinakailangan ang Mga Bahagi
- Raspberry Pi 3 B + (Na may naka-install na Raspbian OS)
- MCP4725 DAC IC
- 16x2 LCD display
- Breadboard
- Mga Koneksyon sa Mga Wires
MCP4725 DAC Module (Digital sa Analog Converter)
Ang MCP4725 IC ay isang 12-Bit Digital sa Analog Converter Module na ginagamit upang makabuo ng mga output analog voltages mula (0 hanggang 5V) at kinokontrol ito ng paggamit ng komunikasyon ng I2C. Ito rin ay kasama ng board na hindi masalitaw na memorya ng EEPROM.
Ang IC na ito ay may 12-Bit na resolusyon. Nangangahulugan ito na ginagamit namin ang (0 hanggang 4096) bilang input upang maibigay ang output ng boltahe patungkol sa boltahe ng sanggunian. Ang maximum na boltahe ng sanggunian ay 5V.
Formula upang makalkula ang Output Voltage
O / P Boltahe = (Sanggunian Boltahe / Resolusyon) x Halaga ng Digital
Halimbawa Halimbawa kung gagamitin namin ang 5V bilang sanggunian boltahe at ipagpalagay natin na ang digital na halaga ay 2048. Kaya upang makalkula ang output ng DAC.
O / P Boltahe = (5/4096) x 2048 = 2.5V
Pinout ng MCP4725
Nasa ibaba ang imahe ng MCP4725 na may malinaw na nagpapahiwatig ng mga pangalan ng pin.
Mga Pin ng MCP4725 |
Gamitin |
PALABAS |
Mga output ng Analog Boltahe |
GND |
GND para sa Output |
SCL |
Linya ng I2C Serial Clock |
SDA |
Linya ng Serial Data ng I2C |
VCC |
Input Reference Voltage 5V o 3.3V |
GND |
GND para sa pag-input |
Ang IC na ito ay maaaring makontrol gamit ang komunikasyon ng I2C na nangangailangan lamang ng dalawang wires na SCL at SDA. Bilang default, ang I2C address para sa MCP4725 ay 0x60. Ngayon alam namin ang tungkol sa komunikasyon ng I2C sa Raspberry pi.
I2C pin sa Raspberry Pi
Upang magamit ang MCP4725 sa Raspberry Pi, ang unang bagay na dapat gawin ay ang pag-alam sa mga port ng Raspberry Pi I2C at pag-configure ng I2C port sa Raspberry pi.
Nasa ibaba ang Pin Diagram ng Raspberry Pi 3 Model B +, at ang mga I2C pin na GPIO2 (SDA) at GPIO3 (SCL) ay ginagamit sa tutorial na ito.
Ang pag-configure ng I2C sa Raspberry Pi
Bilang default, ang I2C ay hindi pinagana sa Raspberry Pi. Kaya muna dapat itong paganahin. Upang paganahin ang I2C sa Raspberry Pi
1. Pumunta sa terminal at i-type ang sudo raspi-config.
2. Ngayon lilitaw ang Tool ng Pag-configure ng Raspberry Pi Software.
3. Piliin ang mga pagpipilian sa Interfacing at pagkatapos ay paganahin ang I2C.
4. Matapos paganahin ang I2C i-reboot ang Pi.
Ang pag-scan sa I2C Address ng MCP4725 gamit ang Raspberry Pi
Ngayon upang masimulan ang komunikasyon sa MCP4725 IC, dapat malaman ng Raspberry Pi ang I2C address nito. Upang hanapin ang address unang ikonekta ang SDA at SCL pin ng MCP4725 sa SDA at SCL pin ng Raspberry Pi. Ikonekta din ang mga + 5V at GND na pin.
Ngayon buksan ang terminal at i-type sa ibaba ang utos upang malaman ang address ng nakakonektang aparato na I2C, sudo i2cdetect –y 1 o sudo i2cdetect –y 0
Matapos hanapin ang I2C address ngayon oras na upang mai-install ang mga kinakailangang aklatan para sa paggamit ng MCP4725 sa Raspberry Pi.
Pag-install ng MCP4725 Adafruit library sa Raspberry Pi
Upang magamit ang MCP4725 DAC board na may I2C bus ng Raspberry Pi, ginagamit ang isang Adafruit MCP4725 library. Upang mai-download at mai-install ang library sundin ang mga hakbang na ito:
1. Tiyaking nakakonekta ang Raspberry Pi sa isang aktibong internet.
2. Susunod na buksan ang isang terminal at patakbuhin ang mga sumusunod na linya nang paisa-isa.
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. Matapos ang matagumpay na pag-install ngayon ang Adafruit MCP4725 library ay maaaring mai-import sa anumang script ng sawa sa pamamagitan ng paggamit ng linya
I-import ang Adafruit_MCP4725
Pag-install ng Adafruit LCD display library
Ginagamit ang isang LCD sa proyektong ito upang maipakita ang mga halaga ng DAC at analog boltahe upang mai-download at mai-install ang LCD library sa Raspberry Pi sundin ang mga hakbang na ito:
1. Buksan ang isang window ng terminal at isa-isahin ang mga sumusunod na linya.
apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install
2. Matapos ang pag-install ng LCD library ngayon ang Adafruit_python_CharLCD ay maaaring magamit mula sa anumang script ng sawa sa pamamagitan ng paggamit ng sumusunod na linya
i-import ang Adafruit_CharLCD bilang LCD
Ngayon ang Raspberry Pi ay handa nang mag-code para sa Digital to Analog converter kaya't ikonekta natin ang circuit tulad ng ipinakita sa figure sa ibaba.
Circuit Diagram at Mga Koneksyon
Ang diagram ng circuit para sa paggamit ng DAC IC MCP4725 na may Raspberry Pi ay ibinibigay sa ibaba:
Mga Koneksyon sa Circuit sa pagitan ng (16x2) LCD at Raspberry Pi
LCD |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5V |
V0 |
Mula sa potentiometer para sa control ng kaibahan |
Ang RS |
GPIO25 |
RW |
GND |
E |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO22 |
A |
+ 5V |
K |
GND |
Mga Koneksyon sa Circuit sa pagitan ng MCP4725 at Raspberry Pi
MCP4725 |
Raspberry Pi 3 B + |
Multimeter |
GND |
GND |
Negatibong Probe |
VCC |
+ 5V |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
PALABAS |
- |
Positibong Probe |
Ang kumpletong pag-setup ay ganito ang hitsura:
Programming Raspberry Pi para sa Digital to Analog Conversion
Ang kumpletong Python code para sa Raspberry Pi ay ibinibigay sa pagtatapos ng tutorial na ito. I-upload lamang ito sa raspberry pi gamit ang anumang SSH client tulad ng Putty o anumang FTP client tulad ng FileZilla o maaari mong direktang isulat ang programa sa raspberry pi sa pamamagitan ng pagkonekta ng isang monitor dito. Dagdagan ang nalalaman tungkol sa pagprogram ng raspberry Pi dito.
Sa program na ito ang isang digital na halaga ng 0-4096 ay ipinadala mula sa Raspberry Pi sa MCP4725 sa pamamagitan ng I2C bus upang makagawa ng isang analog output voltage na 0 hanggang 5V na maaaring mapatunayan sa multimeter. Ang parehong mga digital at analog na halaga ay ipinapakita sa 16x2 LCD. Sa aming programa ang digital na halaga ay ipinadala na may dagdag na 150 gamit ang para sa loop (0,150,300,450… 4050). Tingnan natin nang detalyado ang programa.
Isama muna ang lahat ng kinakailangang aklatan. Dito ginagamit ang LCD, MCP4725 at time library.
i-import ang Adafruit_CharLCD bilang LCD import Adafruit_MCP4725 oras ng pag-import
Susunod na tukuyin ang mga LCD pin kasama ang no. ng hilera at mga haligi. Alam namin na ang 16X2 LCD ay may 2 mga hilera at 16 na mga haligi. Dagdagan ang nalalaman tungkol sa interfacing LCD sa Raspberry Pi dito.
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # Tukuyin ang haligi ng LCD at laki ng hilera para sa 16x2 LCD. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
Susunod na ipakita ang ilang maligayang mensahe sa LCD sa loob ng limang segundo.
lcd.message ('Circuit Digest') time.s Sleep (2.0) lcd.message ('\ nDAC gamit ang Rpi') oras. sleep (5.0) lcd.clear ()
Sa susunod na linya, ang isang halimbawa ng DAC ay nilikha gamit ang I2C address ng MCP4725 DAC IC. Ang aking board ay may isang address ng 0x60, baguhin ito ayon sa iyong board.
dac = Adafruit_MCP4725.MCP4725 (address = 0x60)
Susunod na isang para sa loop ay ginagamit sa loob habang loop upang baguhin ang digital na halaga x na ipinadala sa MCP4725 sa pamamagitan ng I2C bus. Ang saklaw ng para sa loop ay (0,4095,150). Ang x na halaga ay nag-iiba mula 0 hanggang 4050 na may pagtaas na 150.
habang Totoo: para sa x sa saklaw (0,4097,150):
Ang halaga ng Digital ay ipinadala sa MCP4725 gamit ang sumusunod na linya
dac.set_voltage (x)
Nakasalalay sa digital na halaga ang halaga ng analog ay kinakalkula gamit ang formula kung saan ang 5 ay sanggunian boltahe at x ay digital na halaga.
boltahe = x / 4096.0 * 5.0
Pagkatapos ang halagang Digital at halaga ng Analog ay ipinapakita sa LCD na may pagkaantala ng 2 segundo gamit ang mga sumusunod na linya
lcd.cursor_pos = (0,0) lcd.message ("Halaga ng DAC:" + str (x)) lcd.message ("\ nAnalogVolt:%.2f"% boltahe) oras. tulog (2)
Dito ipinakita ang halagang Digital sa unang hilera at halagang analog sa pangalawang hilera ng LCD display. Ang isang multimeter ay konektado din sa MCP4725 Output Pins upang mapatunayan ang boltahe ng analog.
Kumpletong code na may demonstrasyon Ang video ay ibinibigay sa ibaba.