Raspberry Pi - це плата на основі процесора ARM, розроблена для інженерів-електронників та любителів. PI - одна з найбільш надійних платформ для розробки проектів, що існують зараз. Завдяки вищій швидкості процесора та 1 ГБ оперативної пам'яті, PI можна використовувати для багатьох важливих проектів, таких як обробка зображень та Інтернет речей.
Для виконання будь-якого з важливих проектів потрібно розуміти основні функції PI. У цих підручниках ми розглянемо всі основні функціональні можливості Raspberry Pi. У кожному підручнику ми обговоримо одну з функцій PI. До кінця цієї серії підручників Raspberry Pi ви зможете самостійно виконувати гучні проекти. Пройдіть нижче підручники:
- Початок роботи з Raspberry Pi
- Конфігурація Raspberry Pi
- Світлодіод блимає
- Інтерфейс кнопки Raspberry Pi
- Покоління ШІМ Raspberry Pi
- Керування двигуном постійного струму за допомогою Raspberry Pi
- Управління кроковим двигуном з Raspberry Pi
- Реєстр зсуву зв’язку з Raspberry Pi
У цьому підручнику ми підключимо мікросхему АЦП (аналого-цифрове перетворення) до Raspberry Pi. Ми знаємо всі параметри аналога, тобто вони постійно змінюються з часом. Скажімо, для прикладу температури приміщення температура в приміщенні постійно змінюється з часом. Ця температура забезпечується десятковими числами. Але в цифровому світі немає десяткових чисел, тому нам потрібно перетворити аналогове значення в цифрове. Цей процес перетворення виконується методом АЦП. Дізнайтеся більше про ADC тут: Вступ до ADC0804
ADC0804 та Raspberry 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.5v. Отже, щоразу, коли ADC0804 представляє логіку '1', ми бачимо + 2,5 В на контакті PI GPIO замість + 5 В.
Дізнайтеся більше про GPIO-шпильки Raspberry Pi тут і перегляньте наші попередні підручники.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi, крім того, що нам потрібно:
- З'єднувальні штифти
- Резистор 220 Ом або 1 КОм (17 штук)
- Горщик 10 тис
- Конденсатор 0,1 мкФ (2 штуки)
- ADC0804 IC
- Хлібна дошка
Пояснення схеми:
Він працює на напрузі живлення + 5 В і може вимірювати змінний діапазон напруги в діапазоні 0-5 В.
Ці сполуки для сполучення з ADC0804 малина PI, показані на схемі вище.
У АЦП завжди багато шуму, цей шум може сильно вплинути на продуктивність, тому ми використовуємо конденсатор 0,1 мкФ для фільтрації шуму. Без цього буде багато коливань на виході.
Мікросхема працює на годинниковому генераторі RC (Resistor-Capacitor). Як показано на схемі, С2 і R20 утворюють годинник. Тут важливо пам’ятати, що конденсатор С2 можна змінити на нижче значення для вищої швидкості перетворення АЦП. Однак із більшою швидкістю буде зменшуватися точність. Отже, якщо програма вимагає більш високої точності, виберіть конденсатор з більшим значенням, а для більшої швидкості виберіть конденсатор з меншим значенням.
Пояснення програмування:
Як тільки все буде підключено згідно з принциповою схемою, ми можемо увімкнути 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:
Подальше пояснення Програми подано у Розділі коду нижче.
Робоча:
Після написання програми та її виконання ви побачите на екрані «0». '0' означає 0 вольт на вході.
Якщо ми відрегулюємо 10K банк, підключений до мікросхеми, ми побачимо зміну значень на екрані. Значення на екрані постійно прокручуються, це цифрові значення, зчитувані PI.
Скажімо, якщо ми дійдемо до горщика до середньої точки, у нас буде + 2,5 В на вході ADC0804. Отже, ми бачимо 128 на екрані, як показано нижче.
Для аналогового значення + 5 В ми отримаємо 255.
Отже, варіюючи бак, ми змінюємо напругу від 0 до + 5 В на вході ADC0804. За допомогою цього PI зчитують значення від 0-255. Значення друкуються на екрані.
Отже, ми зв’язали ADC0804 з Raspberry Pi.