Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Чтение аналоговых датчиков на Raspberry Pi без встроенного АЦП

У Raspberry Pi нет встроенных аналоговых входов, но это не мешает считывать аналоговые датчики. Комбинируя несколько резисторов и конденсатор, можно использовать простую технику ступенчатого отклика (step-response) для определения сопротивления — идеально для потенциометров, фоторезисторов, термисторов и других.

Основы

Этот подход, популяризированный туториалами Adafruit и адаптированный в Raspberry Pi Cookbook, измеряет время заряда конденсатора до порогового напряжения. GPIO-пины Raspberry Pi могут зафиксировать момент, когда напряжение превышает ~1,65 В, позволяя судить о сопротивлении подключенного переменного резистора.

Что понадобится

Код на Python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
# Назначение пинов
A_PIN = 18  # Управление разрядом/зарядом конденсатора
B_PIN = 23  # Детекция порогового напряжения

def discharge():
    GPIO.setup(A_PIN, GPIO.IN)
    GPIO.setup(B_PIN, GPIO.OUT)
    GPIO.output(B_PIN, False)
    time.sleep(0.005)

def charge_time():
    GPIO.setup(B_PIN, GPIO.IN)
    GPIO.setup(A_PIN, GPIO.OUT)
    count = 0
    GPIO.output(A_PIN, True)
    while not GPIO.input(B_PIN):
        count += 1
    return count

def analog_read():
    discharge()
    return charge_time()

try:
    while True:
        print(analog_read())
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()

Запуск скрипта дает вывод подобный:

$ sudo python pot_step.py
101
210
101
623
435
367
728
610
512
314
317
0

Показания колеблются примерно от 10 до 170 при вращении ручки потенциометра, отражая переменное сопротивление.

Как это работает

Метод основан на кривой заряда RC. Когда конденсатор подключен к переменному резистору, его напряжение растет экспоненциально. GPIO-пин фиксирует логическую единицу, как только напряжение на конденсаторе превышает входной порог (~1,65 В). Прошедшее время — подсчитанное в итерациях цикла — прямо коррелирует с сопротивлением: меньшее сопротивление означает быстрейший заряд, давая меньший счетчик.

Поскольку у Pi нет аналого-цифрового преобразователя, этот тайминговый метод обходит это ограничение, предлагая дешевый и надежный способ считывать широкий спектр аналоговых датчиков.

Производственный процесс

  1. Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
  2. Компактный breakout для DHT температуры и влажности на Raspberry Pi — ATtiny85 и DHT22/DHT11
  3. Как подключить однопроводный датчик температуры DS1820 к Raspberry Pi через GPIO
  4. Интеграция данных сенсоров в Raspberry Pi: практическое руководство
  5. Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство
  6. Измерение аналоговых датчиков на Raspberry Pi с одним GPIO-пином
  7. Raspberry Pi: логирование фоторезистора и система оповещений — низкопотребительный световой датчик на Python
  8. Создание IoT с Java ME 8 на Raspberry Pi: Часть 1 — интеграция GPIO-датчиков
  9. Чтение линейного Холловского датчика с Raspberry Pi: руководство по Java и особенности ADC0832
  10. Чтение нажатий кнопки через GPIO на Raspberry Pi: пошаговое руководство