- ADC0804 и Raspberry Pi:
- Необходимые компоненты:
- Описание схемы:
- Объяснение программирования:
- За работой:
Raspberry Pi - это плата на базе процессора с архитектурой ARM, разработанная для инженеров-электронщиков и любителей. PI сейчас является одной из самых надежных платформ для разработки проектов. Благодаря более высокой скорости процессора и 1 ГБ оперативной памяти PI может использоваться для многих крупных проектов, таких как обработка изображений и Интернет вещей.
Для выполнения любого из громких проектов необходимо понимать основные функции PI. В этих уроках мы рассмотрим все основные функции Raspberry Pi. В каждом туториале мы обсудим одну из функций PI. К концу этой серии руководств по Raspberry Pi вы сможете самостоятельно выполнять громкие проекты. Пройдите следующие руководства:
- Начало работы с Raspberry Pi
- Конфигурация Raspberry Pi
- Светодиод мигает
- Интерфейс кнопок Raspberry Pi
- Поколение Raspberry Pi PWM
- Управление двигателем постоянного тока с помощью Raspberry Pi
- Управление шаговым двигателем с Raspberry Pi
- Взаимодействие с регистром сдвига с Raspberry Pi
В этом руководстве мы подключим микросхему АЦП (аналого-цифровое преобразование) к Raspberry Pi. Мы знаем все параметры аналога, значит они постоянно меняются во времени. Скажем, например, температура в комнате, комнатная температура непрерывно изменяется со временем. Эта температура представлена десятичными числами. Но в цифровом мире нет десятичных чисел, поэтому нам нужно преобразовать аналоговое значение в цифровое значение. Этот процесс преобразования выполняется методом АЦП. Узнайте больше об АЦП здесь: Введение в ADC0804
ADC0804 и Raspberry Pi:
Нормальные контроллеры имеют каналы АЦП, но для PI не предусмотрены внутренние каналы АЦП. Итак, если мы хотим связать какие-либо аналоговые датчики, нам понадобится блок преобразования АЦП. Итак, для этого мы собираемся использовать интерфейс ADC0804 с Raspberry Pi.
ADC0804 - это микросхема, предназначенная для преобразования аналогового сигнала в 8-битные цифровые данные. Эта микросхема - одна из популярных серий АЦП. Это 8-битная единица преобразования, поэтому у нас есть значения от 0 до 255. При максимальном измерительном напряжении 5 В у нас будет изменение на каждые 19,5 мВ. Ниже представлена распиновка ADC0804:
Теперь еще одна важная вещь: ADC0804 работает при 5 В и поэтому выдает логический сигнал 5 В. В 8-контактном выходе (представляющем 8 бит) каждый контакт обеспечивает выход + 5 В для представления логической «1». Таким образом, проблема в том, что логика PI имеет + 3,3 В, поэтому вы не можете подать логику + 5 В на вывод + 3,3 В GPIO PI. Если вы подадите +5 В на любой вывод GPIO PI, плата будет повреждена.
Поэтому для понижения логического уровня с + 5В мы будем использовать схему делителя напряжения. Мы уже обсуждали схему делителя напряжения, предварительно рассмотрев ее для дальнейшего разъяснения. Мы будем использовать два резистора, чтобы разделить логику +5 В на логику 2 * 2,5 В. Так что после деления мы передадим на PI логику +2,5В. Таким образом, всякий раз, когда ADC0804 представляет логическую «1», мы будем видеть + 2,5 В на выводе PI GPIO вместо + 5 В.
Узнайте больше о выводах GPIO Raspberry Pi здесь и просмотрите наши предыдущие руководства.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi, кроме того, что нам нужно:
- Соединительные штифты
- Резистор 220 Ом или 1 кОм (17 шт.)
- Горшок 10K
- Конденсатор 0,1 мкФ (2 шт.)
- ADC0804 IC
- Хлебная доска
Описание схемы:
Он работает при напряжении питания +5 В и может измерять переменный диапазон напряжения в диапазоне 0-5 В.
Эти соединения для сопряжения с ADC0804 малина PI, показаны на схеме выше.
У АЦП всегда много шума, этот шум может сильно повлиять на производительность, поэтому мы используем конденсатор 0,1 мкФ для фильтрации шума. Без этого на выходе будет много колебаний.
Чип работает от тактовой частоты генератора RC (резистор-конденсатор). Как показано на принципиальной схеме, C2 и R20 образуют часы. Здесь важно помнить, что конденсатор C2 можно заменить на более низкое значение для более высокой скорости преобразования АЦП. Однако с увеличением скорости точность будет снижаться. Поэтому, если приложение требует более высокой точности, выберите конденсатор с более высоким значением, а для более высокой скорости выберите конденсатор с более низким значением.
Объяснение программирования:
Как только все будет подключено в соответствии с принципиальной схемой, мы можем включить PI, чтобы написать программу в PYHTON.
Мы поговорим о нескольких командах, которые мы собираемся использовать в программе PYHTON, Мы собираемся импортировать файл GPIO из библиотеки, функция ниже позволяет нам программировать контакты GPIO PI. Мы также переименовали «GPIO» в «IO», поэтому в программе всякий раз, когда мы хотим обратиться к контактам GPIO, мы будем использовать слово «IO».
импортировать RPi.GPIO как IO
Иногда, когда контакты GPIO, которые мы пытаемся использовать, могут выполнять другие функции. В этом случае мы будем получать предупреждения при выполнении программы. Команда ниже указывает PI игнорировать предупреждения и продолжить выполнение программы.
IO.setwarnings (Ложь)
Мы можем ссылаться на контакты GPIO PI, либо по номеру контакта на плате, либо по номеру их функции. Как и «PIN 29» на плате, это «GPIO5». Итак, мы говорим здесь, что будем обозначать булавку цифрой 29 или 5.
IO.setmode (IO.BCM)
Мы устанавливаем 8 контактов в качестве входных контактов. На этих выводах мы обнаружим 8 бит данных АЦП.
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)
Если условие в фигурных скобках истинно, инструкции внутри цикла будут выполнены один раз. Таким образом, если на выводе 19 GPIO будет высокий уровень, то операторы внутри цикла IF будут выполнены один раз. Если на выводе 19 GPIO нет высокого уровня, то операторы внутри цикла IF выполняться не будут.
если (IO.input (19) == True):
Команда ниже используется как бесконечный цикл, с этой командой операторы внутри этого цикла будут выполняться непрерывно.
Пока 1:
Дальнейшее объяснение программы дано в разделе кода ниже.
За работой:
После написания программы и ее выполнения вы увидите «0» на экране. «0» означает 0 вольт на входе.
Если мы настроим потенциометр 10K, подключенный к чипу, мы увидим изменение значений на экране. Значения на экране непрерывно прокручиваются, это цифровые значения, считываемые PI.
Скажем, если мы доведем потенциометр до средней точки, у нас будет +2,5 В на входе ADC0804. Итак, мы видим 128 на экране, как показано ниже.
Для аналогового значения +5 В у нас будет 255.
Итак, изменяя потенциометр, мы изменяем напряжение на входе ADC0804 от 0 до + 5В. С помощью этого PI считывает значения от 0 до 255. Значения напечатаны на экране.
Итак, у нас есть интерфейс ADC0804 с Raspberry Pi.