- Thành phần bắt buộc
- Mô-đun DAC MCP4725 (Bộ chuyển đổi kỹ thuật số sang tương tự)
- Chân I2C trong Raspberry Pi
- Cài đặt thư viện MCP4725 Adafruit vào Raspberry Pi
- Cài đặt thư viện màn hình LCD Adafruit
- Sơ đồ mạch và kết nối
- Lập trình Raspberry Pi để chuyển đổi kỹ thuật số sang tương tự
Vi điều khiển chỉ hoạt động với các giá trị kỹ thuật số nhưng trong thế giới thực chúng ta phải xử lý tín hiệu Analog. Đó là lý do tại sao ADC (Analog to Digital Converters) ở đó để chuyển đổi các giá trị Analog trong thế giới thực sang dạng Digital để vi điều khiển có thể xử lý tín hiệu. Nhưng điều gì sẽ xảy ra nếu chúng ta cần tín hiệu Analog từ các giá trị kỹ thuật số, vì vậy ở đây có DAC (Digital to Analog Converter).
DAC có thể được sử dụng trong nhiều ứng dụng như điều khiển động cơ, điều khiển độ sáng đèn LED, bộ khuếch đại âm thanh, bộ mã hóa video, hệ thống thu thập dữ liệu, v.v.
Chúng tôi đã giao tiếp Mô-đun DAC MCP4725 với Arduino và STM32. Hôm nay chúng ta sẽ sử dụng cùng một IC DAC MCP4725 để thiết kế một bộ chuyển đổi Digital sang Analog sử dụng Raspberry Pi. Giả sử rằng bạn đã cài đặt hệ điều hành mới nhất trên Raspberry PI của mình và có quyền truy cập vào nó qua SSH. Nếu không, hãy làm theo hướng dẫn Bắt đầu với Raspberry Pi trước khi tiếp tục. Ở đây chúng tôi đang sử dụng Rasbian Stretch được cài đặt trên Raspberry Pi 3.
Thành phần bắt buộc
- Raspberry Pi 3 B + (Đã cài đặt hệ điều hành Raspbian)
- IC DAC MCP4725
- Màn hình LCD 16x2
- Breadboard
- Kết nối dây
Mô-đun DAC MCP4725 (Bộ chuyển đổi kỹ thuật số sang tương tự)
MCP4725 IC là một Mô-đun chuyển đổi kỹ thuật số sang tương tự 12 bit được sử dụng để tạo ra điện áp tương tự đầu ra từ (0 đến 5V) và nó được điều khiển bằng cách sử dụng giao tiếp I2C. Nó cũng đi kèm với bộ nhớ không biến đổi EEPROM trên bo mạch.
IC này có độ phân giải 12-Bit. Điều này có nghĩa là chúng tôi sử dụng (0 đến 4096) làm đầu vào để cung cấp đầu ra điện áp liên quan đến điện áp tham chiếu. Điện áp tham chiếu tối đa là 5V.
Công thức tính điện áp đầu ra
Điện áp O / P = (Điện áp / Độ phân giải tham chiếu) x Giá trị kỹ thuật số
Ví dụ, nếu chúng ta sử dụng 5V làm điện áp tham chiếu và giả sử rằng giá trị kỹ thuật số là 2048. Vì vậy, để tính toán đầu ra DAC.
Điện áp O / P = (5/4096) x 2048 = 2,5V
Sơ đồ chân của MCP4725
Dưới đây là hình ảnh của MCP4725 có ghi rõ tên pin.
Các chân của MCP4725 |
Sử dụng |
NGOÀI |
Đầu ra điện áp tương tự |
GND |
GND cho đầu ra |
SCL |
Dòng đồng hồ nối tiếp I2C |
SDA |
Dòng dữ liệu nối tiếp I2C |
VCC |
Điện áp tham chiếu đầu vào 5V hoặc 3.3V |
GND |
GND cho đầu vào |
IC này có thể được điều khiển bằng giao tiếp I2C chỉ cần hai dây SCL và SDA. Theo mặc định, địa chỉ I2C cho MCP4725 là 0x60. Bây giờ chúng ta đã biết về giao tiếp I2C trong Raspberry pi.
Chân I2C trong Raspberry Pi
Để sử dụng MCP4725 với Raspberry Pi, điều đầu tiên cần làm là biết các chân cổng I2C của Raspberry Pi và cấu hình cổng I2C trong Raspberry pi.
Dưới đây là Sơ đồ chân của Raspberry Pi 3 Model B + và các chân I2C GPIO2 (SDA) và GPIO3 (SCL) được sử dụng trong hướng dẫn này.
Cấu hình I2C trong Raspberry Pi
Theo mặc định, I2C bị tắt trong Raspberry Pi. Vì vậy, đầu tiên nó phải được kích hoạt. Để bật I2C trong Raspberry Pi
1. Vào terminal và gõ sudo raspi-config.
2. Bây giờ Công cụ cấu hình phần mềm Raspberry Pi xuất hiện.
3. Chọn Tùy chọn giao diện và sau đó bật I2C.
4. Sau khi bật I2C khởi động lại Pi.
Quét địa chỉ I2C của MCP4725 bằng Raspberry Pi
Bây giờ để bắt đầu giao tiếp với IC MCP4725, Raspberry Pi phải biết địa chỉ I2C của nó. Để tìm địa chỉ, trước tiên hãy kết nối chân SDA và SCL của MCP4725 với chân SDA và SCL của Raspberry Pi. Đồng thời kết nối các chân + 5V và GND.
Bây giờ hãy mở terminal và gõ lệnh dưới đây để biết địa chỉ của thiết bị I2C được kết nối, sudo i2cdetect –y 1 hoặc sudo i2cdetect –y 0
Sau khi tìm thấy địa chỉ I2C, bây giờ đã đến lúc cài đặt các thư viện cần thiết để sử dụng MCP4725 với Raspberry Pi.
Cài đặt thư viện MCP4725 Adafruit vào Raspberry Pi
Để sử dụng bo mạch DAC MCP4725 với bus I2C của Raspberry Pi, một thư viện Adafruit MCP4725 được sử dụng. Để tải xuống và cài đặt thư viện, hãy làm theo các bước sau:
1. Đảm bảo Raspberry Pi được kết nối với internet đang hoạt động.
2. Tiếp theo, mở một thiết bị đầu cuối và chạy lần lượt các dòng sau.
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. Sau khi cài đặt thành công, thư viện Adafruit MCP4725 có thể được nhập vào bất kỳ tập lệnh python nào bằng cách sử dụng dòng
Nhập Adafruit_MCP4725
Cài đặt thư viện màn hình LCD Adafruit
Một màn hình LCD được sử dụng trong dự án này để hiển thị giá trị điện áp DAC và tương tự, vì vậy để tải xuống và cài đặt thư viện LCD trong Raspberry Pi, hãy làm theo các bước sau:
1. Mở cửa sổ dòng lệnh và chạy lần lượt các dòng sau.
apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install
2. Sau khi cài đặt thư viện LCD, Adafruit_python_CharLCD có thể được sử dụng từ bất kỳ tập lệnh python nào bằng cách sử dụng dòng sau
nhập Adafruit_CharLCD dưới dạng LCD
Bây giờ Raspberry Pi đã sẵn sàng để viết mã cho bộ chuyển đổi Digital sang Analog nên chúng ta hãy kết nối mạch điện như trong hình bên dưới.
Sơ đồ mạch và kết nối
Sơ đồ mạch sử dụng IC DAC MCP4725 với Raspberry Pi được đưa ra dưới đây:
Kết nối mạch giữa (16x2) LCD và Raspberry Pi
LCD |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5V |
V0 |
Từ chiết áp để kiểm soát độ tương phản |
RS |
GPIO25 |
RW |
GND |
E |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO22 |
A |
+ 5V |
K |
GND |
Kết nối mạch giữa MCP4725 và Raspberry Pi
MCP4725 |
Raspberry Pi 3 B + |
Đồng hồ vạn năng |
GND |
GND |
Đầu dò âm tính |
VCC |
+ 5V |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
NGOÀI |
- |
Thăm dò tích cực |
Thiết lập hoàn chỉnh sẽ giống như sau:
Lập trình Raspberry Pi để chuyển đổi kỹ thuật số sang tương tự
Mã Python hoàn chỉnh cho Raspberry Pi được đưa ra ở cuối hướng dẫn này. Chỉ cần tải nó lên raspberry pi bằng bất kỳ ứng dụng SSH nào như Putty hoặc bất kỳ ứng dụng FTP nào như FileZilla hoặc bạn có thể viết trực tiếp chương trình vào raspberry pi bằng cách kết nối màn hình với nó. Tìm hiểu thêm về lập trình raspberry Pi tại đây.
Trong chương trình này, một giá trị kỹ thuật số 0-4096 được gửi từ Raspberry Pi đến MCP4725 thông qua bus I2C để tạo ra điện áp đầu ra tương tự từ 0 đến 5V có thể được xác minh bằng đồng hồ vạn năng. Cả giá trị kỹ thuật số và tương tự đều được hiển thị trên màn hình LCD 16x2. Trong chương trình của chúng tôi, giá trị kỹ thuật số được gửi với gia số 150 bằng vòng lặp for (0,150,300,450… 4050). Cùng xem chi tiết chương trình nhé.
Đầu tiên bao gồm tất cả các thư viện cần thiết. Ở đây LCD, MCP4725 và thư viện thời gian được sử dụng.
nhập Adafruit_CharLCD dưới dạng nhập LCD Thời gian nhập Adafruit_MCP4725
Tiếp theo xác định các chân LCD cùng với các chân không. hàng và cột. Chúng ta biết rằng LCD 16X2 có 2 hàng và 16 cột. Tìm hiểu thêm về giao diện LCD với Raspberry Pi tại đây.
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # Xác định kích thước hàng và cột LCD cho 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)
Tiếp theo, hiển thị một số thông báo chào mừng trên màn hình LCD trong năm giây.
lcd.message ('Circuit Digest') time.sleep (2.0) lcd.message ('\ nDAC sử dụng Rpi') time.sleep (5.0) lcd.clear ()
Trong dòng tiếp theo, một phiên bản DAC được tạo với địa chỉ I2C của IC DAC MCP4725. Board của mình có địa chỉ là 0x60, thay đổi tùy theo board của bạn.
dac = Adafruit_MCP4725.MCP4725 (địa chỉ = 0x60)
Tiếp theo, vòng lặp for được sử dụng bên trong vòng lặp while để thay đổi giá trị số x được gửi đến MCP4725 thông qua bus I2C. Các cho vòng lặp Phạm vi đó là (0,4095,150). Các giá trị x thay đổi từ 0 đến 4050 với gia số là 150.
trong khi Đúng: cho x trong phạm vi (0,4097,150):
Giá trị kỹ thuật số được gửi đến MCP4725 bằng dòng sau
dac.set_voltage (x)
Tùy thuộc vào giá trị kỹ thuật số, giá trị tương tự được tính bằng công thức trong đó 5 là điện áp tham chiếu và x là giá trị kỹ thuật số.
điện áp = x / 4096.0 * 5.0
Sau đó, giá trị Digital & giá trị Analog được hiển thị trên màn hình LCD với độ trễ 2 giây bằng các dòng sau
lcd.cursor_pos = (0,0) lcd.message ("Giá trị DAC:" + str (x)) lcd.message ("\ nAnalogVolt:%.2f"% áp) time.sleep (2)
Ở đây giá trị Kỹ thuật số được hiển thị ở hàng đầu tiên và giá trị tương tự ở hàng thứ hai của màn hình LCD. Đồng hồ vạn năng cũng được kết nối với Chân đầu ra MCP4725 để xác minh điện áp tương tự.
Mã hoàn chỉnh với video minh họa được đưa ra bên dưới.