- ADC0804 и Raspberry Pi:
- Датчик температуры LM35:
- Необходимые компоненты:
- Схема и рабочее объяснение:
- Объяснение программирования:
Мы в основном рассмотрели все основные компоненты, взаимодействующие с Raspberry Pi, в нашей серии учебных пособий по Raspberry Pi. Мы рассмотрели все учебные пособия простым и подробным образом, так что любой, независимо от того, работал ли он с Raspberry Pi или нет, мог легко извлечь уроки из этой серии. И после прохождения всех руководств вы сможете создавать несколько проектов высокого уровня с помощью Raspberry Pi.
Итак, здесь мы разрабатываем первое приложение на основе предыдущих руководств. Первое базовое приложение - это прибор для чтения комнатной температуры от Raspberry Pi. И вы можете следить за показаниями на компьютере.
Как обсуждалось в предыдущих руководствах, в Raspberry Pi нет внутренних каналов АЦП. Итак, если мы хотим связать какие-либо аналоговые датчики, нам понадобится блок преобразования АЦП. И в одном из наших руководств мы используем интерфейс ADC0804 для Raspberry Pi для считывания аналогового значения. Так что пройдите через это, прежде чем строить термометр комнатной температуры.
ADC0804 и Raspberry Pi:
ADC0804 - это микросхема, предназначенная для преобразования аналогового сигнала в 8-битные цифровые данные. Эта микросхема - одна из популярных серий АЦП. Это 8-битная единица преобразования, поэтому у нас есть значения от 0 до 255. Разрешение этого чипа изменяется на основе опорного напряжения мы выбираем, мы будем говорить больше об этом позже. Ниже представлена распиновка 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 В.
Датчик температуры LM35:
Теперь для считывания температуры в помещении нам понадобится датчик. Здесь мы собираемся использовать датчик температуры LM35. Температура обычно измеряется в градусах Цельсия или Фаренгейта. Датчик «LM35» обеспечивает выходной сигнал в градусах Цельсия.
Как показано на рисунке, LM35 представляет собой устройство, подобное трехконтактному транзистору. Штифты пронумерованы как, PIN1 = Vcc - питание (подключен к + 5В)
PIN2 = сигнал или выход (подключен к микросхеме АЦП)
PIN3 = Земля (подключена к земле)
Этот датчик обеспечивает переменное напряжение на выходе в зависимости от температуры. С каждым повышением температуры на +1 градус по Цельсию на выходном контакте будет повышаться напряжение на + 10 мВ. Таким образом, если температура составляет 0 ° C, выход датчика будет 0 В, если температура 10 ° C, выход датчика будет + 100 мВ, если температура 25 ° C, выход датчика будет + 250 мВ.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi, кроме того, что нам нужно:
- Соединительные штифты
- Резистор 1КОм (17 шт.)
- Горшок 10K
- Конденсатор 0,1 мкФ
- Конденсатор 100 мкФ
- Конденсатор 1000 мкФ
- ADC0804 IC
- Датчик температуры LM35
- Хлебная доска
Схема и рабочее объяснение:
Подключения, которые выполняются для подключения Raspberry к ADC0804 и LM35, показаны на схеме ниже.
На выходе LM35 много колебаний напряжения; поэтому для сглаживания выхода используется конденсатор емкостью 100 мкФ, как показано на рисунке.
У АЦП всегда много шума, этот шум может сильно повлиять на производительность, поэтому мы используем конденсатор 0,1 мкФ для фильтрации шума. Без этого на выходе будет много колебаний.
Чип работает от тактовой частоты генератора RC (резистор-конденсатор). Как показано на принципиальной схеме , C2 и R20 образуют часы. Здесь важно помнить, что конденсатор C2 можно заменить на более низкое значение для более высокой скорости преобразования АЦП. Однако с увеличением скорости точность будет снижаться. Поэтому, если приложение требует более высокой точности, выберите конденсатор с более высоким значением, а для более высокой скорости выберите конденсатор с более низким значением.
Как говорилось ранее, LM35 обеспечивает + 10 мВ на каждый градус по Цельсию. Максимальная температура, которую может измерить LM35, составляет 150 градусов по Цельсию. Таким образом, на выходной клемме LM35 у нас будет максимум 1,5 В. Но опорное напряжение по умолчанию ADC0804 составляет + 5V. Таким образом, если мы используем это эталонное значение, разрешение вывода будет низким, поскольку мы будем использовать максимум (5 / 1,5) 34% диапазона цифрового вывода.
К счастью, ADC0804 имеет регулируемый вывод Vref (PIN9), как показано на его схеме выводов выше. Поэтому мы установим Vref микросхемы на + 2В. Чтобы установить Vref + 2V, нам нужно обеспечить напряжение + 1V (VREF / 2) на PIN9. Здесь мы используем потенциометр 10 кОм, чтобы отрегулировать напряжение на контакте 9 до +1 В. Используйте вольтметр, чтобы получить точное напряжение.
Ранее мы использовали датчик температуры LM35 для измерения температуры в помещении с помощью Arduino и микроконтроллера AVR. Также проверьте измерение влажности и температуры с помощью Arduino
Объяснение программирования:
Как только все будет подключено в соответствии с принципиальной схемой, мы можем включить 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:
Дальнейшее объяснение кода приведено в разделе кода ниже.
После написания программы пора ее выполнять. Перед выполнением программы давайте обсудим, что происходит в цепи, в виде сводки. Первый датчик LM35 определяет температуру в помещении и выдает аналоговое напряжение на своем выходе. Это переменное напряжение представляет температуру линейно с + 10 мВ на ºC. Этот сигнал подается на микросхему ADC0804, которая преобразует аналоговое значение в цифровое значение с 255/200 = 1,275 отсчета на 10 мВ или 1,275 отсчета на 1 градус. Этот счетчик принимает PI GPIO. Программа преобразует счетчик в значение температуры и отображает его на экране. Типичная температура, считываемая PI, показана ниже.
Отсюда и этот монитор температуры Raspberry Pi.