- ADC0804 та Raspberry Pi:
- Датчик температури LM35:
- Необхідні компоненти:
- Схема та робоче пояснення:
- Пояснення програмування:
Ми в основному розглянули всі базові компоненти, що взаємодіють з Raspberry Pi, у нашій навчальній серії Raspberry Pi. Ми розглянули всі навчальні посібники просто і детально, щоб кожен, незалежно від того, працював він з Raspberry Pi чи ні, міг легко навчитися з цієї серії. А пройшовши всі навчальні посібники, ви зможете створити кілька проектів високого рівня за допомогою Raspberry Pi.
Отже, тут ми розробляємо перший додаток на основі попередніх навчальних посібників. Першим основним додатком є температура в читальній кімнаті від Raspberry Pi. І ви можете контролювати показання на комп’ютері.
Як обговорювалося в попередніх навчальних посібниках, у Raspberry Pi немає каналів ADC, які надаються внутрішньо. Отже, якщо ми хочемо взаємодіяти з будь-якими аналоговими датчиками, нам потрібен блок перетворення АЦП. І в одному з наших посібників ми підключили мікросхему 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.5v. Отже, щоразу, коли ADC0804 представляє логіку '1', ми бачимо + 2,5 В на контакті PI GPIO замість + 5 В.
Датчик температури LM35:
Тепер для зчитування температури кімнати нам потрібен датчик. Тут ми будемо використовувати датчик температури LM35. Температура зазвичай вимірюється в градусах Цельсія або Фаренгейта. Датчик “LM35” забезпечує вихід в градусах за Цельсієм.
Як показано на малюнку, LM35 - це триполюсний транзисторний пристрій. Шпильки нумеруються як, PIN1 = Vcc - живлення (підключений до + 5 В)
PIN2 = сигнал або вихід (підключений до мікросхеми АЦП)
PIN3 = земля (підключена до землі)
Цей датчик забезпечує змінну напругу на виході залежно від температури. На кожне підвищення температури +1 градуса буде вища напруга на + 10 мВ на вихідному штифті. Отже, якщо температура 0 ° С, вихід датчика буде 0 В, якщо температура 10 ° С, вихід датчика буде + 100 мВ, якщо температура 25 ° С, вихід датчика буде + 250 мВ.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi, крім того, що нам потрібно:
- З'єднувальні штифти
- Резистор 1 кОм (17 штук)
- Горщик 10 тис
- Конденсатор 0,1 мкФ
- Конденсатор 100мкФ
- Конденсатор 1000 мкФ
- ADC0804 IC
- Датчик температури LM35
- Хлібна дошка
Схема та робоче пояснення:
Підключення, які виконуються для підключення Raspberry до ADC0804 та LM35, показані на схемі нижче.
Вихід LM35 має багато коливань напруги; тому для згладжування виходу використовується конденсатор 100 мкФ, як показано на малюнку.
У АЦП завжди багато шуму, цей шум може сильно вплинути на продуктивність, тому ми використовуємо конденсатор 0,1 мкФ для фільтрації шуму. Без цього буде багато коливань на виході.
Мікросхема працює на годинниковому генераторі RC (Resistor-Capacitor). Як показано на схемі , С2 і R20 утворюють годинник. Тут важливо пам’ятати, що конденсатор С2 можна змінити на нижче значення для вищої швидкості перетворення АЦП. Однак із більшою швидкістю буде зменшуватися точність. Отже, якщо програма вимагає більш високої точності, виберіть конденсатор з більшим значенням, а для більшої швидкості виберіть конденсатор з меншим значенням.
Як вже говорилося раніше, LM35 забезпечує + 10 мВ на кожен градус. Максимальна температура, яку можна виміряти за допомогою LM35, становить 150 ° С. Отже, ми матимемо максимум 1,5 В на вихідному терміналі LM35. Але стандартна опорна напруга ADC0804 за замовчуванням становить + 5В. Отже, якщо ми використовуємо це контрольне значення, роздільна здатність виходу буде низькою, оскільки ми б використовували максимум (5 / 1,5) 34% діапазону цифрового виводу.
На щастя, ADC0804 має регульований штифт Vref (PIN9), як показано на його схемі контактів вище. Тож ми встановимо Vref мікросхеми на + 2В. Щоб встановити Vref + 2V, нам потрібно забезпечити напругу + 1V (VREF / 2) на PIN9. Тут ми використовуємо 10K горщик для регулювання напруги на PIN9 до + 1V. Використовуйте вольтметр, щоб отримати точну напругу.
Раніше ми використовували датчик температури LM35 для зчитування кімнатної температури за допомогою Arduino та мікроконтролера AVR. Також перевірте вимірювання вологості та температури за допомогою Arduino
Пояснення програмування:
Як тільки все буде підключено згідно з принциповою схемою, ми можемо увімкнути PI, щоб написати програму на PYHTON.
Ми поговоримо про декілька команд, які ми будемо використовувати в програмі PYHTON, Ми збираємось імпортувати файл GPIO з бібліотеки, функція нижче дозволяє програмувати GPIO штифти PI. Ми також перейменовуємо “GPIO” на “IO”, тому в програмі, коли ми хочемо посилатися на шпильки GPIO, ми будемо використовувати слово “IO”.
імпортувати RPi.GPIO як IO
Іноді, коли шпильки GPIO, які ми намагаємось використовувати, можуть виконувати деякі інші функції. У такому випадку ми отримаємо попередження під час виконання програми. Команда нижче вказує PI ігнорувати попередження та продовжувати роботу з програмою.
IO.setwarnings (False)
Ми можемо вказати шпильки GPIO PI або за номером контакту на борту, або за номером їх функції. Як і "PIN 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)
Якщо умова в фігурних дужках є істинним, оператори всередині циклу виконуються один раз. Отже, якщо штифт 19 GPIO піде високо, тоді оператори всередині циклу IF будуть виконуватися один раз. Якщо штифт 19 GPIO не йде високо, тоді оператори всередині циклу IF не будуть виконуватися.
if (IO.input (19) == True):
Команда нижче використовується як назавжди цикл, за допомогою цієї команди оператори всередині цього циклу будуть виконуватися постійно.
Поки 1:
Подальше пояснення коду наведено у розділі коду нижче.
Після написання програми настав час її виконати. Перш ніж виконувати програму, давайте поговоримо про те, що відбувається в ланцюзі, як Підсумок. Перший датчик LM35 виявляє кімнатну температуру та забезпечує аналогову напругу на її виході. Ця змінна напруга представляє температуру лінійно з + 10 мВ на ºC. Цей сигнал подається на мікросхему ADC0804, ця мікросхема перетворює аналогове значення в цифрове з 255/200 = 1,275 відліком на 10 мВ або 1,275 рахунком за 1 градус. Цей підрахунок приймається PI GPIO. Програма перетворює рахунок у значення температури і відображає його на екрані. Типова температура, зчитувана PI, показана нижче, Отже, ми цей монітор температури Raspberry Pi.