- Необходими компоненти
- Модул ADC / DAC на PCF8591
- I2C щифтове в Raspberry Pi
- Интерфейс PCF8591 ADC / DAC модул с Raspberry Pi
- Python програма за аналогово-цифрово преобразуване (ADC)
Аналогово-цифровото преобразуване е много важна задача във вградената електроника, тъй като повечето сензори осигуряват изход като аналогови стойности и за да ги подадат в микроконтролер, който разбира само двоични стойности, трябва да ги преобразуваме в цифрови стойности. За да могат да обработват аналоговите данни, микроконтролерите се нуждаят от Analog to Digital Converter.
Някои микроконтролери имат вграден ADC като Arduino, MSP430, PIC16F877A, но някои микроконтролери не разполагат с него като 8051, Raspberry Pi и т.н. По-долу можете да намерите различни примери за ADC с различни микроконтролери:
- Как да използвам ADC в Arduino Uno?
- Raspberry Pi ADC Урок
- Връзка ADC0808 с 8051 микроконтролер
- 0-25V цифров волтметър с помощта на AVR микроконтролер
- Как да използвам ADC в STM32F103C8
- Как да използвам ADC в MSP430G2
- Как да използвам ADC в ARM7 LPC2148
- Използване на ADC модул на PIC микроконтролер с MPLAB и XC8
В този урок ще научим как да свързваме модула ADC / DAC на PCF8591 с Raspberry Pi.
Необходими компоненти
- Малина-пи
- PCF8591 ADC модул
- 100K пот
- Джъмперни кабели
Предполага се, че имате Raspberry Pi с инсталирана най-новата Raspbian OS и знаете как да SSH в Pi с помощта на терминален софтуер като замазка. Ако сте нов в Raspberry Pi, следвайте тази статия, за да започнете с Raspberry Pi. И все пак, ако се сблъскате с някакъв проблем, има тонове уроци за Raspberry Pi, които могат да ви помогнат.
Модул ADC / DAC на PCF8591
PCF8591 е 8-битов аналогово-цифров или 8-битов цифрово-аналогов преобразуващ модул, което означава, че всеки щифт може да чете аналогови стойности до 256. Той също така има LDR и термисторна схема, предоставени на платката. Този модул има четири аналогови входа и един аналогов изход. Работи на I 2 C комуникация, така че има SCL и SDA щифтове за сериен часовник и сериен адрес за данни. Изисква захранващо напрежение 2,5-6V и има нисък ток в режим на готовност. Също така можем да манипулираме входното напрежение чрез регулиране на копчето на потенциометъра на модула. На дъската има и три джъмпера. J4 е свързан за избор на верига за достъп на термистора, J5 е свързан за избор на верига за достъп на LDR / фоторезистори J6 е свързан за избор на регулируема верига за достъп до напрежение. На борда има два светодиода D1 и D2- D1 показва интензитета на изходното напрежение, а D2 показва интензивността на захранващото напрежение. Колкото по-високо е изходното или захранващото напрежение, толкова по-голяма е интензивността на LED D1 или D2. Можете също така да тествате тези светодиоди, като използвате потенциометър на VCC или на AOUT щифт.
I2C щифтове в Raspberry Pi
За да използвате PCF8591 с Raspberry Pi, първото нещо, което трябва да направите, е да знаете пиновете на порта I2C на Raspberry Pi и да конфигурирате I2C порта в Raspberry pi.
По-долу е ПИН диаграмата на Raspberry Pi 3 Модел B + и I2C щифтове GPIO2 (SDA) и GPIO3 (SCL) са използвани в този урок.
Конфигуриране на I2C в Raspberry Pi
По подразбиране I2C е деактивиран в Raspberry Pi. Така че първо трябва да се активира. За да активирате I2C в Raspberry Pi
1. Отидете до терминала и напишете sudo raspi-config.
2. Сега се появява инструментът за конфигуриране на софтуер Raspberry Pi.
3. Изберете Interfacing options и след това активирайте I2C.
4. След като активирате I2C, рестартирайте Pi.
Сканиране на I2C адрес на PCF8591 с помощта на Raspberry Pi
Сега, за да започне комуникация с PCF8591 IC, Raspberry Pi трябва да знае своя I2C адрес. За да намерите адреса, първо свържете SDA и SCL щифта на PCF8591 към SDA и SCL щифта на Raspberry Pi. Също така свържете щифтовете + 5V и GND.
Сега отворете терминала и напишете командата по-долу, за да знаете адреса на свързаното I2C устройство, sudo i2cdetect –y 1 или sudo i2cdetect –y 0
След като намери адреса на I2C, сега е време да изгради веригата и да инсталира необходимите библиотеки за използване на PCF8591 с Raspberry Pi.
Интерфейс PCF8591 ADC / DAC модул с Raspberry Pi
Схемата за свързване на PCF8591 с Raspberry Pi е проста. В този пример за свързване ще прочетем аналоговите стойности от всеки от аналоговите щифтове и ще го покажем на терминала Raspberry Pi. Можем да променим стойностите, като използваме 100K пот.
Свържете VCC и GND към GPIO2 и GPIO на Raspberry Pi. След това свържете SDA и SCL съответно към GPIO3 и GPIO5. Накрая свържете 100K пот с AIN0. Можете също така да добавите 16x2 LCD за показване на ADC стойности, вместо да го показвате на терминала. Научете повече за свързването на 16x2 LCD с Raspberry Pi тук.
Python програма за аналогово-цифрово преобразуване (ADC)
В пълна програма и работен видеото е дадена в края на този урок.
Първо, импортирайте библиотеката smbus за комуникация на шина I 2 C и библиотека за време, за да осигурите време за заспиване между печатането на стойността.
внос SMBus време внос
Сега дефинирайте някои променливи. Първата променлива съдържа адреса на I 2 C шината, а втората променлива съдържа адреса на първия аналогов входен щифт.
адрес = 0x48 A0 = 0x40
След това направихме обект на функцията SMBus (1) на библиотеката smbus
автобус = smbus.SMBus (1)
Сега, докато първият ред казва на IC да направи аналоговото измерване на първия аналогов входен щифт. Вторият ред съхранява адреса, прочетен на аналогов щифт, в променлива стойност . Накрая отпечатайте стойността.
докато True: bus.write_byte (адрес, A0) стойност = bus.read_byte (адрес) print (стойност) time.sleep (0.1)
Сега най-накрая запишете кода на python в някакъв файл с разширение.py и стартирайте кода в малинов Pi терминал, като използвате командата по-долу ”
python filename.py
Преди да стартирате кода, уверете се, че сте активирали комуникацията I 2 C и всички щифтове са свързани, както е показано на диаграмата, в противен случай той ще покаже грешки. Аналоговите стойности трябва да започнат да се показват на терминала, както е показано по-долу. Регулирайте копчето на пота и ще видите постепенна промяна в стойностите. Научете повече за стартирането на програмата в
Пълният код на python и видео е даден по-долу.