- Các thành phần bắt buộc
- Mô-đun ADC / DAC PCF8591
- Chân I2C trong Raspberry Pi
- Giao tiếp PCF8591 ADC / DAC Module với Raspberry Pi
- Chương trình Python để chuyển đổi tương tự sang kỹ thuật số (ADC)
Chuyển đổi tương tự sang kỹ thuật số là một nhiệm vụ rất quan trọng trong điện tử nhúng, vì hầu hết các cảm biến cung cấp đầu ra dưới dạng giá trị tương tự và để đưa chúng vào bộ vi điều khiển chỉ hiểu các giá trị nhị phân, chúng ta phải chuyển đổi chúng thành giá trị kỹ thuật số. Vì vậy, để có thể xử lý dữ liệu tương tự, vi điều khiển cần Analog to Digital Converter.
Một số vi điều khiển có sẵn ADC như Arduino, MSP430, PIC16F877A nhưng một số vi điều khiển không có nó như 8051, Raspberry Pi, v.v. và chúng ta phải sử dụng một số IC chuyển đổi Analog sang số bên ngoài như ADC0804, ADC0808. Dưới đây, bạn có thể tìm thấy các ví dụ khác nhau về ADC với các bộ vi điều khiển khác nhau:
- Làm thế nào để sử dụng ADC trong Arduino Uno?
- Hướng dẫn sử dụng Raspberry Pi ADC
- Giao tiếp ADC0808 với Vi điều khiển 8051
- Vôn kế kỹ thuật số 0-25V sử dụng Vi điều khiển AVR
- Cách sử dụng ADC trong STM32F103C8
- Cách sử dụng ADC trong MSP430G2
- Cách sử dụng ADC trong ARM7 LPC2148
- Sử dụng Mô-đun ADC của Vi điều khiển PIC với MPLAB và XC8
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách giao tiếp mô-đun PCF8591 ADC / DAC với Raspberry Pi.
Các thành phần bắt buộc
- Raspberry-pi
- Mô-đun ADC PCF8591
- 100K nồi
- Cáp nhảy
Giả sử bạn đã cài đặt Raspberry Pi với hệ điều hành Raspbian mới nhất và bạn biết cách SSH vào Pi bằng phần mềm đầu cuối như putty. Nếu bạn chưa quen với Raspberry Pi thì hãy theo dõi bài viết này để bắt đầu với Raspberry Pi. Tuy nhiên, nếu bạn gặp bất kỳ vấn đề nào thì có rất nhiều Hướng dẫn về Raspberry Pi có thể giúp bạn.
Mô-đun ADC / DAC PCF8591
PCF8591 là một mô-đun chuyển đổi tương tự sang tín hiệu tương tự 8 bit hoặc kỹ thuật số 8 bit có nghĩa là mỗi chân có thể đọc các giá trị tương tự lên đến 256. Nó cũng có LDR và mạch điện trở nhiệt được cung cấp trên bo mạch. Mô-đun này có bốn đầu vào tương tự và một đầu ra tương tự. Nó hoạt động trên giao tiếp I 2 C, do đó có các chân SCL và SDA cho đồng hồ nối tiếp và địa chỉ dữ liệu nối tiếp. Nó yêu cầu điện áp cung cấp 2,5-6V và có dòng điện chờ thấp. Chúng ta cũng có thể thao tác với điện áp đầu vào bằng cách điều chỉnh núm chiết áp trên mô-đun. Ngoài ra còn có ba jumper trên bảng. J4 được kết nối để chọn mạch truy cập nhiệt điện trở, J5 được kết nối để chọn mạch truy cập điện trở LDR / photovà J6 được kết nối để chọn mạch truy cập điện áp điều chỉnh. Có hai đèn LED trên bảng D1 và D2- D1 cho biết cường độ điện áp đầu ra và D2 cho biết cường độ của điện áp cung cấp. Điện áp đầu ra hoặc nguồn cung cấp càng cao thì cường độ của LED D1 hoặc D2 càng cao. Bạn cũng có thể kiểm tra các đèn LED này bằng cách sử dụng chiết áp trên VCC hoặc trên chân AOUT.
Chân I2C trong Raspberry Pi
Để sử dụng PCF8591 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 PCF8591 bằng Raspberry Pi
Bây giờ để bắt đầu giao tiếp với IC PCF8591, 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 PCF8591 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 xây dựng mạch và cài đặt các thư viện cần thiết để sử dụng PCF8591 với Raspberry Pi.
Giao tiếp PCF8591 ADC / DAC Module với Raspberry Pi
Sơ đồ mạch cho Giao diện của PCF8591 với Raspberry Pi rất đơn giản. Trong ví dụ về giao diện này, chúng tôi sẽ đọc các giá trị tương tự từ bất kỳ chân tương tự nào và hiển thị nó trên thiết bị đầu cuối Raspberry Pi. Chúng tôi có thể thay đổi các giá trị bằng cách sử dụng nồi 100K.
Kết nối VCC và GND với GPIO2 và GPIO của Raspberry Pi. Tiếp theo, kết nối SDA và SCL với GPIO3 và GPIO5 tương ứng. Cuối cùng kết nối nồi 100K với AIN0. Bạn cũng có thể thêm LCD 16x2 để hiển thị các giá trị ADC thay vì hiển thị nó trên Terminal. Tìm hiểu thêm về giao diện LCD 16x2 với Raspberry Pi tại đây.
Chương trình Python để chuyển đổi tương tự sang kỹ thuật số (ADC)
Các chương trình và làm việc hoàn chỉnh đoạn video được đưa ra vào cuối của hướng dẫn này.
Đầu tiên, nhập thư viện smbus cho giao tiếp bus I 2 C và thư viện thời gian để cung cấp thời gian nghỉ giữa việc in giá trị.
nhập thời gian nhập smbus
Bây giờ hãy xác định một số biến. Biến đầu tiên chứa địa chỉ của bus I 2 C và biến thứ hai chứa địa chỉ của chân đầu vào tương tự đầu tiên.
địa chỉ = 0x48 A0 = 0x40
Tiếp theo, chúng ta đã tạo một đối tượng của hàm SMBus (1) của thư viện smbus
bus = smbus.SMBus (1)
Bây giờ, trong khi dòng đầu tiên yêu cầu IC thực hiện phép đo tương tự tại chân đầu vào tương tự đầu tiên. Dòng thứ hai lưu trữ địa chỉ được đọc ở chân analog trong một giá trị thay đổi. Cuối cùng là in giá trị.
while True: bus.write_byte (address, A0) value = bus.read_byte (address) print (value) time.sleep (0,1)
Bây giờ cuối cùng lưu mã python trong một số tệp với.py entension và chạy mã trong thiết bị đầu cuối raspberry Pi bằng cách sử dụng lệnh dưới đây ”
python filename.py
Trước khi chạy mã, hãy đảm bảo rằng bạn đã bật giao tiếp I 2 C và tất cả các chân được kết nối như thể hiện trong sơ đồ, nếu không nó sẽ hiển thị lỗi. Các giá trị tương tự phải bắt đầu hiển thị trên thiết bị đầu cuối như bên dưới. Điều chỉnh núm của nồi, và bạn sẽ thấy sự thay đổi dần dần của các giá trị. Tìm hiểu thêm về cách chạy chương trình trong
Toàn bộ mã python và Video được cung cấp bên dưới.