- Необхідні компоненти
- Модуль АЦП / ЦАП PCF8591
- I2C шпильки в Raspberry Pi
- Взаємозв'язок модуля АЦП / ЦАП PCF8591 з Raspberry Pi
- Програма Python для аналого-цифрового перетворення (АЦП)
Аналого-цифрове перетворення є дуже важливим завданням у вбудованій електроніці, оскільки більшість датчиків забезпечують вихід у вигляді аналогових значень, і щоб подати їх у мікроконтролер, який розуміє лише двійкові значення, ми повинні перетворити їх у цифрові значення. Для того, щоб мати можливість обробляти аналогові дані, мікроконтролерам потрібен перетворювач аналого-цифровий.
Деякі мікроконтролери мають вбудований АЦП, такі як Arduino, MSP430, PIC16F877A, але деякі мікроконтролери не мають таких, як 8051, Raspberry Pi тощо, і ми повинні використовувати деякі зовнішні мікросхеми аналого-цифрового перетворювача, такі як ADC0804, ADC0808. Нижче ви можете знайти різні приклади АЦП з різними мікроконтролерами:
- Як використовувати АЦП в Arduino Uno?
- Підручник з ADC Raspberry Pi
- Зв'язок ADC0808 з мікроконтролером 8051
- Цифровий вольтметр 0-25 В за допомогою мікроконтролера AVR
- Як користуватися АЦП в STM32F103C8
- Як користуватися АЦП в MSP430G2
- Як використовувати АЦП в ARM7 LPC2148
- Використання модуля АЦП мікроконтролера PIC з MPLAB та XC8
У цьому підручнику ми дізнаємося, як взаємодіяти модуль ADC / DAC PCF8591 з Raspberry Pi.
Необхідні компоненти
- Малина-пі
- Модуль АЦП PCF8591
- 100к горщик
- Кабелі-перемички
Передбачається, що у вас є Raspberry Pi з останньою ОС Raspbian, і ви знаєте, як SSH в Pi за допомогою термінального програмного забезпечення, такого як шпаклівка. Якщо ви новачок у Raspberry Pi, дотримуйтесь цієї статті, щоб розпочати роботу з Raspberry Pi. Однак якщо ви зіткнетеся з якоюсь проблемою, тоді є безліч підручників з Raspberry Pi, які можуть вам допомогти.
Модуль АЦП / ЦАП PCF8591
PCF8591 - це 8-бітний аналого-цифровий або 8-бітовий цифро-аналоговий модуль перетворювача, що означає, що кожен штифт може зчитувати аналогові значення до 256. Він також має LDR і схему терморезистора, що передбачені на платі. Цей модуль має чотири аналогових входи і один аналоговий вихід. Він працює на зв'язку I 2 C, тому є штирі SCL та SDA для послідовного годинника та адреси послідовних даних. Це вимагає напруги живлення 2,5-6 В і має низький струм очікування. Ми також можемо маніпулювати вхідною напругою, регулюючи ручку потенціометра на модулі. На дошці також є три перемички. J4 підключений для вибору схеми доступу термістора, J5 підключений для вибору схеми доступу LDR / фоторезистораі J6 підключений для вибору схеми доступу з регульованою напругою. На борту D1 та D2-D1 є два світлодіоди, індикація напруги вихідної напруги, а D2 інтенсивність напруги живлення. Чим вище вихідна або напруга живлення, тим вища інтенсивність світлодіодів D1 або D2. Ви також можете перевірити ці світлодіоди, використовуючи потенціометр на VCC або на штифті AOUT.
I2C шпильки в Raspberry Pi
Для того, щоб використовувати PCF8591 з Raspberry Pi, перше, що потрібно зробити, це знати шпильки портів I2C Raspberry Pi та налаштувати порт 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-адреси PCF8591 за допомогою Raspberry Pi
Тепер, щоб розпочати зв’язок з мікросхемою PCF8591, Raspberry Pi повинен знати свою адресу I2C. Щоб знайти адресу, спочатку підключіть вивід SDA та SCL PCF8591 до виводу SDA та SCL Raspberry Pi. Також підключіть штирі + 5 В і GND.
Тепер відкрийте термінал і введіть команду нижче, щоб знати адресу підключеного пристрою I2C, sudo i2cdetect –y 1 або sudo i2cdetect –y 0
Після пошуку адреси I2C настав час побудувати схему та встановити необхідні бібліотеки для використання PCF8591 з Raspberry Pi.
Взаємозв'язок модуля АЦП / ЦАП PCF8591 з Raspberry Pi
Принципова схема для взаємодії PCF8591 з Raspberry Pi проста. У цьому прикладі взаємодії ми прочитаємо аналогові значення з будь-якого з аналогових контактів і покажемо їх на терміналі Raspberry Pi. Ми можемо змінити значення, використовуючи банк 100K.
Підключіть VCC та GND до GPIO2 та GPIO Raspberry Pi. Далі підключіть SDA та SCL до GPIO3 та GPIO5 відповідно. Нарешті, підключіть 100K банк з AIN0. Ви також можете додати РК-дисплей 16x2 для відображення значень АЦП замість того, щоб показувати їх на терміналі. Дізнайтеся більше про взаємодію РК-дисплея 16x2 з Raspberry Pi тут.
Програма Python для аналого-цифрового перетворення (АЦП)
Повна програма і робота відео наводиться в кінці цього посібника.
По-перше, імпортуйте бібліотеку smbus для зв’язку з шиною I 2 C та бібліотеку часу, щоб дати час сну між друком значення.
імпорт smbus час імпорту - -
Тепер визначимо деякі змінні. Перша змінна містить адресу шини I 2 C, а друга змінна - адресу першого виводу аналогового входу.
адреса = 0x48 A0 = 0x40
Далі ми створили об’єкт функції SMBus (1) бібліотеки smbus
автобус = smbus.SMBus (1)
Тепер, поки перший рядок повідомляє мікросхему, щоб здійснити аналогове вимірювання на першому аналоговому вхідному штифті. Другий рядок зберігає адресу, прочитану на аналоговому виводі, у змінному значенні . Нарешті надрукуйте значення.
while True: bus.write_byte (address, A0) value = bus.read_byte (address) print (value) time.sleep (0.1)
Тепер нарешті збережіть код python у якомусь файлі з розширенням.py та запустіть код у Raspberry Pi терміналі, використовуючи команду нижче »
python filename.py
Перед запуском коду переконайтеся, що ви ввімкнули зв'язок I 2 C, і всі штирі підключені, як показано на схемі, інакше він буде відображати помилки. Аналогові значення повинні почати відображатися на терміналі, як показано нижче. Відрегулюйте ручку горщика, і ви побачите поступову зміну значень. Дізнайтеся більше про запуск програми в
Повний код python та відео подано нижче.