Начнем с алгоритма работы нашей программы!

1. Подключим в схеме переменный резистор к ESP32.

2. Настроим АЦП ESP32, для измерения напряжения на ножке D4.

3. Задаем ослабление входного напряжения..

4. В бесконечном цикле считываем данные на ножке D4 с помощью функции read в диапазоне (0-4095).

5. Выводим измеренное напряжение в терминал, с задержкой в 300ms.

Перейдем к написанию программы и рисованию электрической схемы!

И так схема у нас есть, на ней обозначены микроконтроллер, ножки gnd и питания 3,3В, пин D4 - к которым подключен переменный резистор номиналом 10кОм.

Практически к каждому материалу есть видеоролик на  YouTube  и  RUTUBE каналах, теорию можно прочитать в статье, а как работает устройство в железе, посмотреть в видеоролике!

 

Вернемся к программе.

Переменный резистор у нас подключен к порту D4 и ножкам питания 3.3В, gnd, настроим в программе ножки порта D4 на измерение АЦП, допишем в программе voltmetr = ADC(Pin(4)) - переменная voltmetr равна значению полученному на ножке D4 ,voltmetr.atten(ADC.ATTN_11DB - чтобы считать напряжение выше опорного, применим входное ослабление с помощью аргумента atten  из документации Vref = (150mv-2450mv). С настройкой портов закончили, далее чтобы наша программа работала добавим в нее модуль import machine, который содержит необходимые функции, для работы платы, строкой from machine import Pin, ADC укажем чтобы нам постоянно не повторять machine в коде, а также модуль, который служит нам для формирования задержек  import time.

Давайте немного поговорим о строчке кода опорного напряжения, откуда мы ее взяли.

ClassADC(pin*atten), MicroPython предлагает нам на выбор несколько вариантов ослабления входного напряжения, зависит от задачи в программе:

  • ADC.ATTN_0DB: No attenuation (100mV - 950mV)

  • ADC.ATTN_2_5DB: 2.5dB attenuation (100mV - 1250mV)

  • ADC.ATTN_6DB: 6dB attenuation (150mV - 1750mV)

  • ADC.ATTN_11DB: 11dB attenuation (150mV - 2450mV) 

Так как, мы измеряем диапазон напряжения от 0-3,3В, поэтому выбираем максимально возможный вариант, описанный выше.

В бесконечном цикле while True, считываем данные на ножке D4 с помощью функции read в диапазоне (0-4095) - для 12-битного разрешения и выводим измеренное напряжение в терминал, с задержкой в 300ms.

Исходный код программы Скачать архив

 

Понравился проект? Не забудь поделиться им с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube и RUTUBE !

  • СПАСИБО ЗА ПРОСМОТР.
  • С уважением.
  • Электроника и Робототехника!