- ส่วนประกอบที่จำเป็น
- MCP4725 DAC Module (ตัวแปลงดิจิตอลเป็นอนาล็อก)
- I2C พินใน Raspberry Pi
- การติดตั้ง MCP4725 Adafruit library ลงใน Raspberry Pi
- การติดตั้งไลบรารีจอแสดงผล Adafruit LCD
- แผนภาพวงจรและการเชื่อมต่อ
- การเขียนโปรแกรม Raspberry Pi สำหรับการแปลงดิจิตอลเป็นอนาล็อก
ไมโครคอนโทรลเลอร์ทำงานเฉพาะกับค่าดิจิทัล แต่ในโลกแห่งความเป็นจริงเราต้องจัดการกับสัญญาณอนาล็อก นั่นเป็นเหตุผลว่าทำไม ADC (ตัวแปลงอนาล็อกเป็นดิจิตอล) จึงมีการแปลงค่าอนาล็อกในโลกแห่งความเป็นจริงให้อยู่ในรูปแบบดิจิตอลเพื่อให้ไมโครคอนโทรลเลอร์สามารถประมวลผลสัญญาณได้ แต่ถ้าเราต้องการสัญญาณอนาล็อกจากค่าดิจิทัลดังนั้นDAC (Digital to Analog Converter)จึงมาที่นี่
DAC สามารถใช้กับแอพพลิเคชั่นมากมาย เช่นการควบคุมมอเตอร์, การควบคุมความสว่างของไฟ LED, เครื่องขยายเสียง, ตัวเข้ารหัสวิดีโอ, ระบบการเก็บข้อมูลเป็นต้น
เราได้เชื่อมต่อโมดูล MCP4725 DAC กับ Arduino และ STM32 แล้ว วันนี้เราจะใช้ MCP4725 DAC IC ตัวเดียวกันเพื่อออกแบบตัว แปลงดิจิตอลเป็นอนาล็อกโดยใช้ Raspberry Pi สันนิษฐานว่าคุณได้ติดตั้งระบบปฏิบัติการล่าสุดบน Raspberry PI ของคุณแล้วและสามารถเข้าถึงได้ผ่าน SSH หากไม่เป็นเช่นนั้นให้ทำตามบทแนะนำการเริ่มต้นใช้งาน Raspberry Pi ก่อนดำเนินการต่อ ที่นี่เราจะใช้ Rasbian ยืดติดตั้งบน Raspberry Pi 3
ส่วนประกอบที่จำเป็น
- Raspberry Pi 3 B + (ติดตั้ง Raspbian OS)
- MCP4725 DAC IC
- จอ LCD 16x2
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
MCP4725 DAC Module (ตัวแปลงดิจิตอลเป็นอนาล็อก)
MCP4725 IC เป็น โมดูลตัวแปลงสัญญาณดิจิตอลเป็นอนาล็อก 12 บิต ซึ่งใช้ในการสร้างแรงดันไฟฟ้าแบบอะนาล็อกเอาต์พุตจาก (0 ถึง 5V) และควบคุมโดยใช้การสื่อสาร I2C นอกจากนี้ยังมาพร้อมกับ EEPROM หน่วยความจำแบบไม่ลบเลือนบนบอร์ด
IC นี้มีความละเอียด 12 บิต ซึ่งหมายความว่าเราใช้ (0 ถึง 4096) เป็นอินพุตเพื่อให้เอาต์พุตแรงดันไฟฟ้าเทียบกับแรงดันอ้างอิง แรงดันอ้างอิงสูงสุดคือ 5V
สูตรคำนวณแรงดันขาออก
แรงดัน O / P = (แรงดันอ้างอิง / ความละเอียด) x ค่าดิจิตอล
ตัวอย่างเช่น ถ้าเราใช้ 5V เป็นแรงดันอ้างอิงและสมมติว่าค่าดิจิทัลคือ 2048 ดังนั้นในการคำนวณเอาต์พุต DAC
O / P แรงดันไฟฟ้า = (5/4096) x 2048 = 2.5V
Pinout ของ MCP4725
ด้านล่างนี้เป็นภาพของ MCP4725 พร้อมระบุชื่อพินอย่างชัดเจน
หมุดของ MCP4725 |
ใช้ |
ออก |
เอาต์พุตแรงดันอนาล็อก |
GND |
GND สำหรับเอาต์พุต |
SCL |
สายนาฬิกาอนุกรม I2C |
SDA |
สายข้อมูลอนุกรม I2C |
VCC |
แรงดันอ้างอิงอินพุต 5V หรือ 3.3V |
GND |
GND สำหรับอินพุต |
IC นี้สามารถควบคุมได้โดยใช้การสื่อสาร I2C ซึ่งต้องใช้สาย SCL และ SDA สองสายเท่านั้น ตามค่าเริ่มต้นที่อยู่ I2C สำหรับ MCP4725 คือ 0x60 ตอนนี้เรารู้เกี่ยวกับการสื่อสาร I2C ใน Raspberry pi แล้ว
I2C พินใน Raspberry Pi
ในการใช้ MCP4725 กับ Raspberry Pi สิ่งแรกที่ต้องทำคือการรู้พินพอร์ต Raspberry Pi I2C และการกำหนดค่าพอร์ต I2C ใน Raspberry pi
ด้านล่างนี้คือ Pin Diagram ของ Raspberry Pi 3 Model B + และหมุด I2C GPIO2 (SDA) และ GPIO3 (SCL)ใช้ในบทช่วยสอนนี้
การกำหนดค่า I2C ใน Raspberry Pi
ตามค่าเริ่มต้น I2C ถูกปิดใช้งานใน Raspberry Pi ก่อนอื่นต้องเปิดใช้งาน เพื่อเปิดใช้งาน I2C ใน Raspberry Pi
1. ไปที่เทอร์มินัลแล้วพิมพ์sudo raspi-config
2. ตอนนี้ Raspberry Pi Software Configuration Tool ปรากฏขึ้น
3. เลือกตัวเลือกการเชื่อมต่อจากนั้นเปิดใช้งาน I2C
4. หลังจากเปิดใช้งาน I2C รีบูต Pi
การสแกน I2C Address ของ MCP4725 โดยใช้ Raspberry Pi
ตอนนี้เพื่อเริ่มการสื่อสารกับ MCP4725 IC Raspberry Pi ต้องทราบที่อยู่ I2C ในการค้นหาที่อยู่ก่อนอื่นให้เชื่อมต่อพิน SDA และ SCL ของ MCP4725 กับพิน SDA และ SCL ของ Raspberry Pi เชื่อมต่อพิน + 5V และ GND ด้วย
ตอนนี้เปิดเทอร์มินัลแล้วพิมพ์คำสั่งด้านล่างเพื่อทราบที่อยู่ของอุปกรณ์ I2C ที่เชื่อมต่อ
sudo i2cdetect –y 1หรือsudo i2cdetect –y 0
หลังจากการค้นหาที่อยู่ I2C ตอนนี้ถึงเวลาที่จะติดตั้งห้องสมุดที่จำเป็นสำหรับการใช้MCP4725 กับราสเบอร์รี่ Pi
การติดตั้ง MCP4725 Adafruit library ลงใน Raspberry Pi
ในการใช้บอร์ด MCP4725 DAC กับบัส I2C ของ Raspberry Piจะใช้ไลบรารี Adafruit MCP4725 ในการดาวน์โหลดและติดตั้งไลบรารีให้ทำตามขั้นตอนเหล่านี้:
1. ตรวจสอบให้แน่ใจว่า Raspberry Pi เชื่อมต่อกับอินเทอร์เน็ตที่ใช้งานได้
2. จากนั้นเปิดเทอร์มินัลและเรียกใช้บรรทัดต่อไปนี้ทีละบรรทัด
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 ติดตั้ง
3. หลังจากติดตั้งสำเร็จตอนนี้คุณสามารถนำเข้าไลบรารี Adafruit MCP4725 ในสคริปต์ python ใดก็ได้โดยใช้บรรทัด
นำเข้า Adafruit_MCP4725
การติดตั้งไลบรารีจอแสดงผล Adafruit LCD
โครงการนี้ใช้ LCD เพื่อแสดงค่า DAC และแรงดันไฟฟ้าแบบอะนาล็อกเพื่อดาวน์โหลดและติดตั้งไลบรารี LCD ใน Raspberry Pi ให้ทำตามขั้นตอนต่อไปนี้:
1. เปิดหน้าต่างเทอร์มินัลและเรียกใช้บรรทัดต่อไปนี้ทีละบรรทัด
apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py ติดตั้ง
2. หลังจากติดตั้งไลบรารี LCD ตอนนี้ Adafruit_python_CharLCD สามารถใช้จากสคริปต์ python ใดก็ได้โดยใช้บรรทัดต่อไปนี้
นำเข้า Adafruit_CharLCD เป็น LCD
ตอนนี้ Raspberry Pi พร้อมที่จะเขียนโค้ดสำหรับตัวแปลงดิจิตอลเป็นอนาล็อกแล้วลองเชื่อมต่อวงจรดังแสดงในรูปด้านล่าง
แผนภาพวงจรและการเชื่อมต่อ
แผนภาพวงจรสำหรับการใช้DAC IC MCP4725 กับ Raspberry Piมีดังต่อไปนี้:
การเชื่อมต่อวงจรระหว่าง (16x2) LCD และ Raspberry Pi
LCD |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5V |
V0 |
จากโพเทนชิออมิเตอร์สำหรับการควบคุมคอนทราสต์ |
อาร์เอส |
GPIO25 |
RW |
GND |
จ |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO 22 |
ก |
+ 5V |
เค |
GND |
การเชื่อมต่อวงจรระหว่าง MCP4725 และ Raspberry Pi
MCP4725 |
Raspberry Pi 3 B + |
มัลติมิเตอร์ |
GND |
GND |
Negative Probe |
VCC |
+ 5V |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
ออก |
- |
โพรบบวก |
การตั้งค่าเสร็จสมบูรณ์จะมีลักษณะดังนี้:
การเขียนโปรแกรม Raspberry Pi สำหรับการแปลงดิจิตอลเป็นอนาล็อก
รหัส Python ที่สมบูรณ์สำหรับ Raspberry Pi มีให้ในตอนท้ายของบทช่วยสอนนี้ เพียงอัปโหลดลงใน raspberry pi โดยใช้ไคลเอนต์ SSH เช่น Putty หรือไคลเอนต์ FTP เช่น FileZilla หรือคุณสามารถเขียนโปรแกรมลงในราสเบอร์รี่ pi โดยตรงโดยเชื่อมต่อจอภาพเข้ากับมัน เรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม raspberry Pi ที่นี่
ในโปรแกรมนี้ค่าดิจิตอล 0-4096 จะถูกส่งจาก Raspberry Pi ไปยัง MCP4725 ผ่านบัส I2C เพื่อสร้างแรงดันเอาต์พุตแบบอะนาล็อกที่ 0 ถึง 5V ซึ่งสามารถตรวจสอบได้ด้วยมัลติมิเตอร์ ทั้งค่าดิจิตอลและอนาล็อกจะแสดงบนจอ LCD 16x2 ในโปรแกรมของเราค่าดิจิทัลจะถูกส่งโดยเพิ่มขึ้น 150 โดยใช้ สำหรับ ลูป (0,150,300,450 … 4050) มาดูรายละเอียดโปรแกรมกัน
ก่อนอื่นให้รวมไลบรารีที่จำเป็นทั้งหมด ที่นี่มีการใช้ LCD, MCP4725 และไลบรารีเวลา
นำเข้า Adafruit_CharLCD เป็น การนำเข้า LCD เวลานำเข้าAdafruit_MCP4725
ถัดไปกำหนดพิน LCD พร้อมกับหมายเลข ของแถวและคอลัมน์ เรารู้ว่า LCD 16X2 มี 2 แถว 16 คอลัมน์ เรียนรู้เพิ่มเติมเกี่ยวกับการเชื่อมต่อ LCD กับ Raspberry Pi ที่นี่
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # กำหนดคอลัมน์ LCD และขนาดแถวสำหรับ LCD 16x2 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)
ถัดไปแสดงข้อความต้อนรับบน LCD เป็นเวลาห้าวินาที
lcd.message ('Circuit Digest') time.sleep (2.0) lcd.message ('\ nDAC โดยใช้ Rpi') time.sleep (5.0) lcd.clear ()
ในบรรทัดถัดไปอินสแตนซ์ DAC ถูกสร้างขึ้นด้วยที่อยู่ I2C ของ MCP4725 DAC IC บอร์ดของฉันมีที่อยู่ 0x60 ให้เปลี่ยนตามบอร์ดของคุณ
dac = Adafruit_MCP4725.MCP4725 (ที่อยู่ = 0x60)
ถัดไป a for loop ใช้ภายใน ขณะที่ loop เพื่อเปลี่ยนค่าดิจิทัล x ที่ส่งไปยัง MCP4725 ผ่าน I2C bus สำหรับ ช่วงห่วงคือ (0,4095,150) ค่า x แตกต่างกันไปตั้งแต่ 0 ถึง 4050 โดยเพิ่มขึ้น 150
ในขณะที่ True: สำหรับ x ในช่วง (0,4097,150):
ค่าดิจิทัลจะถูกส่งไปยัง MCP4725 โดยใช้บรรทัดต่อไปนี้
dac.set_voltage (x)
ขึ้นอยู่กับค่าดิจิทัลค่าอนาล็อกจะคำนวณโดยใช้สูตรโดยที่ 5 คือแรงดันอ้างอิงและ x คือค่าดิจิทัล
แรงดันไฟฟ้า = x / 4096.0 * 5.0
จากนั้นค่าดิจิตอลและค่าอนาล็อกจะปรากฏบนจอ LCD โดยมีการหน่วงเวลา 2 วินาทีโดยใช้บรรทัดต่อไปนี้
lcd.cursor_pos = (0,0) lcd.message ("ค่า DAC:" + str (x)) lcd.message ("\ nAnalogVolt:%.2f"% แรงดันไฟฟ้า) time.sleep (2)
ที่นี่ค่าดิจิตอลจะแสดงในแถวแรกและค่าอนาล็อกในแถวที่สองของจอ LCD นอกจากนี้มัลติมิเตอร์ยังเชื่อมต่อกับหมุดเอาต์พุต MCP4725 เพื่อตรวจสอบแรงดันไฟฟ้าแบบอะนาล็อก
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิต ได้รับด้านล่าง