![]() |
![]() |
![]() |
![]() |
Общие сведения
В этом уроке мы научимся использовать Аналого-цифровой преобразователь (АЦП) 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)





Обсуждение