Эксперимент 14. Измерение напряжения

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

Подключение переменного резистора

На плате конструктора установлен переменный резистор. Переменный резистор состоит из полукруглой пластины, покрытой веществом, имеющим электрическое сопротивление, и скользящего контакта с ручкой. У переменного резистора три вывода — по концам пластины и скользящий контакт. Сопротивление меняется в зависимости от длины отрезка резистивной пластины от ее начала до скользящего контакта. Чем больше этот путь, тем выше сопротивление.

Рисунок 1. Переменный резистор. Внешний вид, устройство и условное обозначение

Переменный резистор можно представить как схему из двух резисторов

Делитель напряжения

С помощью переменного резистора будем получать аналоговый сигнал. Используем широко распространенную схему резисторного делителя напряжения. Резисторный делитель — это два последовательных участка цепи, называемых плечами, сумма напряжений на которых равна напряжению питания. Плечо между минусом питания и средней точкой называют нижним, а другое — верхним.

Резисторный делитель используется для деления напряжения. Например, если верхнее и нижнее плечи имеют одинаковые сопротивления, то напряжение на средней точке делителя равно половине напряжения питания. Такой делитель делит напряжение на 2.

Подключим нижнее плечо с земле, а верхнее к напряжению питания. Тогда при вращении ручки переменного резистора на его средней точки напряжение будет изменяться от 0 до напряжения питания (3,3в в нашем конструкторе). Подключим среднюю точку ко входу аналого- цифрового преобразователя и будем измерять напряжение на ней.

Схема эксперимента

Рисунок 2. Электрическая принципиальная схема эксперимента

Рисунок 3. Монтажная схема эксперимента

Программный код эксперимента

Exp14.py
  1. from machine import Pin
  2. import time
  3. _init()
  4.  
  5. adc = machine.ADC(0)
  6.  
  7. while True:
  8. value = adc.read()
  9. print(value)
  10. time.sleep(1)

в строке 5 мы объявляем объект АЦП, передавая в качестве параметра номер канала АЦП. В нашем микроконтроллере только один канал и он имеет номер 0.

  1. adc = machine.ADC(0)

В цикле просим АЦП оцифровать текущее напряжение на его входе и сообщить нам результат. Результатом является число в диапазоне от 0 до 1023.

  1. value = adc.read()

После чего выводим результат в консоль

  1. print(value)

Оператор print предназначен для печати в консоль.

Дополнительное задание

  • Если наш АЦП при напряжении 0 вольт возвращает результат 0, а при 3.3 вольт — 1023, то какой результат преобразования будет при напряжении 1.65? А если напряжение 1 вольт ровно?
  • Какое напряжение соответствует значению 785?