- Потрібні компоненти
- ЦАП-модуль MCP4725 (цифро-аналоговий перетворювач)
- I2C шпильки в Raspberry Pi
- Встановлення бібліотеки MCP4725 Adafruit у Raspberry Pi
- Встановлення бібліотеки РК-дисплеїв Adafruit
- Схема та з'єднання
- Програмування Raspberry Pi для цифрового в аналогове перетворення
Мікроконтролери працюють лише з цифровими значеннями, але в реальному світі нам доводиться мати справу з аналоговими сигналами. Ось чому ADC (аналого-цифрові перетворювачі) існує для перетворення реальних аналогових значень у цифрову форму, щоб мікроконтролери могли обробляти сигнали. Але що, якщо нам потрібні аналогові сигнали від цифрових значень, отже, ось ЦАП (цифро-аналоговий перетворювач).
ЦАП може використовуватися в багатьох додатках, таких як управління двигуном, регулювання яскравості світлодіодних ламп, підсилювач звуку, відеокодери, системи збору даних тощо.
Ми вже з'єднали модуль ЦАП MCP4725 з Arduino та STM32. Сьогодні ми використаємо ту саму мікросхему ЦАП MCP4725 для розробки цифрово- аналогового перетворювача за допомогою Raspberry Pi. Передбачається, що ви вже встановили останню ОС на своєму Raspberry PI і маєте доступ до неї через SSH. Якщо ні, дотримуйтесь підручника Початок роботи з Raspberry Pi, перш ніж продовжувати. Тут ми використовуємо Rasbian Stretch, встановлений на Raspberry Pi 3.
Потрібні компоненти
- Raspberry Pi 3 B + (із встановленою ОС Raspbian)
- MCP4725 ЦАП ІС
- РК-дисплей 16x2
- Макет
- Підключення проводів
ЦАП-модуль MCP4725 (цифро-аналоговий перетворювач)
MCP4725 IC - це 12-бітний цифрово -аналоговий модуль перетворювача, який використовується для генерування вихідних аналогових напруг від (0 до 5 В) і управляється за допомогою зв'язку I2C. Він також має вбудовану енергонезалежну пам'ять EEPROM.
Ця ІС має 12-бітну роздільну здатність. Це означає, що ми використовуємо (від 0 до 4096) як вхід для забезпечення вихідної напруги відносно опорної напруги. Максимальна опорна напруга - 5 В.
Формула для розрахунку вихідної напруги
Напруга O / P = (опорна напруга / роздільна здатність) x цифрове значення
Наприклад, якщо ми використовуємо 5 В як еталонну напругу і припустимо, що цифрове значення дорівнює 2048. Отже, для розрахунку вихідного сигналу ЦАП.
Напруга O / P = (5/4096) x 2048 = 2,5 В
Розтискач MCP4725
Внизу наведено зображення MCP4725 з чітко вказаними назвами контактів.
Шпильки MCP4725 |
Використовуйте |
ВИХІД |
Виводи аналогової напруги |
GND |
GND для виходу |
SCL |
Лінія послідовного годинника I2C |
SDA |
Лінія послідовних даних I2C |
VCC |
Вхідна опорна напруга 5 В або 3,3 В |
GND |
GND для введення |
Цим ІС можна управляти за допомогою зв'язку I2C, яка вимагає лише двох проводів SCL і SDA. За замовчуванням адреса I2C для MCP4725 - 0x60. Тепер ми знаємо про зв'язок I2C у Raspberry pi.
I2C шпильки в Raspberry Pi
Для того, щоб використовувати MCP4725 з Raspberry Pi, перше, що потрібно зробити, це знати шпильки портів Raspberry Pi I2C та налаштувати порт I2C у Raspberry pi.
Нижче наведена схема контактів 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.
3. Виберіть Параметри взаємодії, а потім увімкніть I2C.
4. Після увімкнення I2C перезавантажте Pi.
Сканування I2C-адреси MCP4725 за допомогою Raspberry Pi
Тепер, щоб розпочати зв’язок із мікросхемою MCP4725, Raspberry Pi повинен знати свою адресу I2C. Щоб знайти адресу, спочатку підключіть вивід SDA та SCL MCP4725 до виводу SDA та SCL Raspberry Pi. Також підключіть штирі + 5 В і GND.
Тепер відкрийте термінал і введіть команду нижче, щоб знати адресу підключеного пристрою I2C, sudo i2cdetect –y 1 або sudo i2cdetect –y 0
Після пошуку адреси I2C настав час встановити необхідні бібліотеки для використання MCP4725 з Raspberry Pi.
Встановлення бібліотеки MCP4725 Adafruit у Raspberry Pi
Для використання плати ЦАП MCP4725 з шиною 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 install
3. Після успішної інсталяції тепер бібліотеку Adafruit MCP4725 можна імпортувати в будь-який сценарій python, використовуючи рядок
Імпортуйте Adafruit_MCP4725
Встановлення бібліотеки РК-дисплеїв Adafruit
У цьому проекті використовується РК-дисплей для відображення ЦАП та аналогових значень напруги, тому для завантаження та встановлення РК-бібліотеки в 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 install
2. Після встановлення РК-бібліотеки тепер Adafruit_python_CharLCD можна використовувати з будь-якого сценарію python, використовуючи наступний рядок
імпортувати Adafruit_CharLCD як РК
Тепер Raspberry Pi готовий кодувати цифровий в аналоговий перетворювач, тому давайте підключимо схему, як показано на малюнку нижче.
Схема та з'єднання
Схема для використання ЦАП IC MCP4725 з Raspberry Pi наведена нижче:
Схема з'єднань між (16x2) РК-дисплеєм та Raspberry Pi
РК-дисплей |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5В |
V0 |
Від потенціометра для контролю контрастності |
RS |
GPIO25 |
RW |
GND |
Е |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO22 |
A |
+ 5В |
К |
GND |
Схема з'єднань між MCP4725 та Raspberry Pi
MCP4725 |
Raspberry Pi 3 B + |
Мультиметр |
GND |
GND |
Негативний зонд |
VCC |
+ 5В |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
ВИХІД |
- |
Позитивний зонд |
Повне налаштування буде виглядати так:
Програмування Raspberry Pi для цифрового в аналогове перетворення
Повний код Python для Raspberry Pi наведено в кінці цього посібника. Просто завантажте його в Raspberry Pi, використовуючи будь-який SSH-клієнт, наприклад Putty, або будь-який FTP-клієнт, такий як FileZilla, або ви можете безпосередньо написати програму в Raspberry Pi, підключивши до нього монітор. Дізнайтеся більше про програмування Raspberry Pi тут.
У цій програмі цифрове значення 0-4096 надсилається з Raspberry Pi на MCP4725 через шину I2C для отримання аналогової вихідної напруги від 0 до 5 В, яку можна перевірити за допомогою мультиметра. Як цифрові, так і аналогові значення відображаються на РК-дисплеї 16x2. У нашій програмі цифрове значення надсилається із збільшенням на 150 із використанням циклу for (0,150,300,450… 4050). Давайте розглянемо програму в деталях.
Спочатку включіть усі необхідні бібліотеки. Тут використовуються РК, MCP4725 і бібліотека часу.
імпортувати Adafruit_CharLCD як РК- імпорт Adafruit_MCP4725 час імпорту
Далі визначте штифти РК-дисплея разом з номером. рядка та стовпців. Ми знаємо, що РК-дисплей 16X2 має 2 рядки та 16 стовпців. Дізнайтеся більше про взаємодію РК із Raspberry Pi тут.
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # Визначте розмір РК-стовпця та рядка для РК-дисплея 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.message ('Circuit Digest') time.sleep (2.0) lcd.message ('\ nDAC використовуючи Rpi') time.sleep (5.0) lcd.clear ()
У наступному рядку створюється екземпляр ЦАП із адресою I2C мікросхеми ЦАП MCP4725. Моя дошка має адресу 0x60, змініть її відповідно до вашої дошки.
dac = Adafruit_MCP4725.MCP4725 (адреса = 0x60)
Вперед для циклу використовується всередині під час циклу для зміни цифрового значення х, який надсилається на MCP4725 через шину I2C. Діапазон циклу for дорівнює (0,4095,150). Значення x варіюються від 0 до 4050 із збільшенням на 150.
while True: для x в діапазоні (0,4097,150):
Цифрове значення надсилається на MCP4725 за допомогою наступного рядка
dac.set_voltage (x)
Залежно від цифрового значення аналогове значення обчислюється за формулою, де 5 - опорна напруга, а x - цифрове значення.
напруга = x / 4096,0 * 5,0
Потім цифрове значення та аналогове значення відображаються на РК-дисплеї із затримкою 2 секунди, використовуючи наступні рядки
lcd.cursor_pos = (0,0) lcd.message ("Значення ЦАП:" + str (x)) lcd.message ("\ nAlog AnalogVolt:%.2f"% напруги) time.sleep (2)
Тут цифрове значення відображається в першому рядку, а аналогове значення - у другому рядку РК-дисплея. Мультиметр також підключений до вихідних штифтів MCP4725 для перевірки аналогової напруги.
Повний код із демонстраційним відео наведено нижче.