- ADC0804 и Raspberry Pi:
- Необходими компоненти:
- Обяснение на веригата:
- Обяснение на програмирането:
- Работа:
Raspberry Pi е ARM архитектура базирана на процесор платка, предназначена за електронни инженери и любители. PI е една от най-надеждните платформи за разработване на проекти в момента. С по-висока скорост на процесора и 1 GB RAM, PI може да се използва за много високопрофилни проекти като Обработка на изображения и Интернет на нещата.
За да направите някой от високопрофилните проекти, трябва да разберете основните функции на PI. В тези уроци ще разгледаме всички основни функционалности на Raspberry Pi. Във всеки урок ще обсъдим една от функциите на PI. До края на тази серия с уроци за Raspberry Pi ще можете сами да правите проекти с висок профил. Преминете през уроци по-долу:
- Първи стъпки с Raspberry Pi
- Конфигурация на Raspberry Pi
- LED мигащ
- Интерфейс на бутон Raspberry Pi
- Raspberry Pi PWM поколение
- Управление на DC мотор с помощта на Raspberry Pi
- Управление на стъпков двигател с Raspberry Pi
- Взаимодействие с Shift регистър с Raspberry Pi
В този урок ще свържем ADC (Analog to Digital Conversion) чип към Raspberry Pi. Ние знаем всички параметри на аналоговите, което означава, че те се променят непрекъснато във времето. Да кажем за примерна температура на помещението, стайната температура варира с времето непрекъснато. Тази температура е снабдена с десетични числа. Но в цифровия свят няма десетични числа, така че трябва да преобразуваме аналоговата стойност в цифрова стойност. Този процес на преобразуване се извършва по ADC техника. Научете повече за ADC тук: Въведение в ADC0804
ADC0804 и Raspberry Pi:
Нормалните контролери имат ADC канали, но за PI не са предвидени вътрешно ADC канали. Така че, ако искаме да свържем аналогови сензори, имаме нужда от преобразувател ADC. Така че за тази цел ще преминем към интерфейс ADC0804 с Raspberry Pi.
ADC0804 е чип, предназначен за преобразуване на аналогов сигнал в 8-битови цифрови данни. Този чип е една от популярните серии ADC. Това е 8-битова единица за преобразуване, така че имаме стойности или от 0 до 255 стойности. С измервателно напрежение от максимум 5V, ще имаме промяна на всеки 19,5mV. По-долу е Pinout на ADC0804:
Сега друго важно нещо тук е, че ADC0804 работи при 5V и така осигурява изход в 5V логически сигнал. В 8-пинов изход (представляващ 8 бита), всеки пин осигурява + 5V изход за представяне на логика'1 '. Така че проблемът е, че PI логиката е от + 3.3v, така че не можете да дадете + 5V логика на + 3.3V GPIO пина на PI. Ако дадете + 5V на който и да е GPIO пин на PI, платката се поврежда.
Така че, за да намалим логическото ниво от + 5V, ще използваме верига на делителя на напрежението. По-рано обсъждахме верига за разделител на напрежение, за да я разгледаме за допълнителни пояснения. Това, което ще направим, е, че използваме два резистора, за да разделим логиката + 5V на логика 2 * 2.5V. Така че след разделяне ще дадем + 2.5v логика на PI. Така че, когато логиката „1“ е представена от ADC0804, ние ще видим + 2.5V на PI GPIO Pin вместо + 5V.
Научете повече за GPIO Pins на Raspberry Pi тук и преминете през предишните ни уроци.
Необходими компоненти:
Тук използваме Raspberry Pi 2 Model B с Raspbian Jessie OS. Всички основни хардуерни и софтуерни изисквания са обсъдени преди това, можете да ги потърсите във въведението на Raspberry Pi, различно от това, от което се нуждаем:
- Свързващи щифтове
- 220Ω или 1KΩ резистор (17 броя)
- 10K пот
- 0.1µF кондензатор (2 броя)
- ADC0804 IC
- Дъска за хляб
Обяснение на веригата:
Работи при захранващо напрежение от + 5v и може да измерва променлив диапазон на напрежението в диапазона 0-5V.
На връзки за взаимодействие ADC0804 на малина PI, са показани в електрическата схема по-горе.
ADC винаги има много шум, този шум може значително да повлияе на производителността, затова използваме 0.1uF кондензатор за филтриране на шума. Без това ще има много колебания в изхода.
Чипът работи на RC (Resistor-Capacitor) генератор часовник. Както е показано на електрическата схема, C2 и R20 образуват часовник. Важното нещо, което трябва да запомните, е, че кондензаторът C2 може да бъде променен на по-ниска стойност за по-висока скорост на преобразуване ADC. Но с по-висока скорост ще има намаляване на точността. Така че, ако приложението изисква по-висока точност, изберете кондензатор с по-висока стойност и за по-висока скорост изберете кондензатор с по-ниска стойност.
Обяснение на програмирането:
След като всичко е свързано според схемата, можем да включим PI, за да напишем програмата в PYHTON.
Ще говорим за няколко команди, които ще използваме в програмата PYHTON, Ще импортираме GPIO файл от библиотеката, функцията по-долу ни позволява да програмираме GPIO пинове на PI. Преименуваме също „GPIO“ на „IO“, така че в програмата, когато искаме да се позовем на GPIO щифтове, ще използваме думата „IO“.
импортирайте RPi.GPIO като IO
Понякога, когато GPIO щифтовете, които се опитваме да използваме, може да изпълняват някои други функции. В този случай ще получим предупреждения, докато изпълняваме програмата. Командата по-долу казва на PI да игнорира предупрежденията и да продължи с програмата.
IO.setwarnings (False)
Можем да отнесем GPIO пиновете на PI, или чрез пинов номер на борда, или чрез номера на тяхната функция. Подобно на „ПИН 29“ на платката е „GPIO5“. Така че ние казваме тук, или ще представим щифта тук с '29' или '5'.
IO.setmode (IO.BCM)
Задаваме 8 пина като входни щифтове. Ще открием 8 битови ADC данни от тези щифтове.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
В случай, че условието в скобите е вярно, изразите вътре в цикъла ще бъдат изпълнени веднъж. Така че, ако GPIO щифтът 19 върви високо, тогава операторите вътре в контура IF ще бъдат изпълнени веднъж. Ако GPIO щифтът 19 не отиде високо, тогава инструкциите вътре в контура IF няма да бъдат изпълнени.
if (IO.input (19) == True):
Командата отдолу се използва като цикъл завинаги, с тази команда операторите вътре в този цикъл ще се изпълняват непрекъснато.
Докато 1:
Допълнително обяснение на програмата е дадено в раздела за кодове по-долу.
Работа:
След като напишете програмата и я изпълните, ще видите „0“ на екрана. „0“ означава 0 волта на входа.
Ако коригираме 10K пота, свързан към чипа, ще видим промяната в стойностите на екрана. Стойностите на екрана продължават да се превъртат непрекъснато, това са цифровите стойности, прочетени от PI.
Да кажем, че ако стигнем пота до средната точка, имаме + 2.5V на входа ADC0804. Така виждаме 128 на екрана, както е показано по-долу.
За аналогова стойност + 5V ще имаме 255.
Така че, като променяме пота, променяме напрежението от 0 до + 5V на входа ADC0804. С този PI четете стойности от 0-255. Стойностите се отпечатват на екрана.
Така че имаме взаимодействие ADC0804 с Raspberry Pi.