КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Raspberry Pi Pico: подключаем потенциометр и работаем с АЦП





Общие сведения

В этом уроке мы научимся использовать Аналого-цифровой преобразователь (АЦП) Rasbperry Pi Pico и будем управлять яркостью светодиода при помощи потенциометра.

Для этого урока нам понадобится:

Для работы данных примеров в Pi Pico необходимо загрузить прошивку MicroPython и установить Thonny IDE, о том как это сделать можно прочитать в этой статье https://lesson.iarduino.ru/page/pi-pico-python-ide

Подключение

Подключим Trema-модуль Светодиод согласно таблице

Вывод модуля Вывод Pi Pico
Vcc 3V3(OUT)
GND GND
S GP15

Подключим Trema-модуль Потенциометр согласно таблице

Вывод модуля Вывод Pi Pico
Vcc ADC_VREF
GND AGND
S GP26

Читаем показания АЦП

Если подключить крайние выводы практически любого потенциометра к напряжению питания (один к GND, второй к VCC), то на среднем выводе (ползунок потенциометра) можно считать любое напряжение от GND до VCC. Это происходит за счёт того, что конструкция потенциометра представляет собой делитель напряжения и в любом положении ползунка эквивалентен двум резисторам включённым между рельсами питания.

Напряжения на ползунке потенциометра, конечно, можно использовать для того чтобы питать что-то, чему нужно определённое напряжение, но ток будет очень ограничен сопротивлением и рейтингом мощности самого потенциометра (для таких целей лучше использовать реостат). В мире цифровых технологий гораздо удобнее преобразовать напряжение в число и потом использовать это число, чтобы контролировать что-либо либо, например ШИМ на силовом ключе или источнике постоянного тока. Для преобразования напряжения в число и используется АЦП.

Подключим АЦП, введём в оболочке следующую строку

>>> from machine import ADC

Мы импортировали всё, что необходимо для работы с АЦП Rasbperry Pi Pico. Далее создадим объект АЦП и укажем к какому выводу подключен ползунок потенциометра

>>> pot = ADC("GP26")

Теперь, вызвав метод read_u16() мы можем узнать какое где находится ползунок в пределах от 0 до 65535

>>> pot.read_u16()

33544

>>>

Для упрощения понимания мы можем преобразовать это число в проценты:

>>> value = pot.read_u16()
>>> percent = int(value / 65535 * 100)
>>> print("{} %".format(percent))

Аналоговый диммер

Попробуем использовать эти данные для управления яркостью светодиода при помощи ШИМ.

При вращении ручки потенциометра светодиод будет менять свою яркость.

# Подключаем АЦП, Выводы и ШИМ
from machine import ADC, Pin, PWM
# Подключаем функцию сна в миллисекундах и называем её
from time import sleep_ms as delay

# Создаём объект потенциометра
pot = ADC("GP26")

# Создаём объект светодиода
led = PWM(Pin("GP15", Pin.OUT))
# Устанавливаем частоту
led.freq(1000)
# Запускаем ШИМ
led.init()

# Бесконечный цикл
while True:

    # Читаем положение ползунка
    value = pot.read_u16()
    # Устанавливаем ШИМ на светодиоде
    led.duty_u16(value)
    # Ждём 100 миллисекунд
    delay(100)

Ссылки




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями