Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты для пожертвований указаны здесь.

Arduino:Примеры/ReadAnalogVoltage

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2202 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.

Считывание напряжения, проходящего через аналоговый контакт [1]

Данный пример показывает, как считывать данные с аналогового входа на 0-вом контакте Arduino, конвертировать их в напряжение при помощи функции analogRead(), а затем отображать в меню Serial Monitor («Мониторинг последовательной передачи данных»).

Необходимое оборудование

  • Плата Arduino;
  • Переменный резистор (вроде потенциометра);

Цепь

AnalogReadSerial BB.png

Соедините потенциометр и Arduino при помощи трех проводов. Первый пойдет от «земли» на Arduino к одному из крайних выходных контактов на потенциометре. Второй – от 5-вольтовго контакта на Arduino ко второму крайнему выходу на потенциометре. Третий – от 0-го аналогового входного контакта на Arduino к центральному (среднему) контакту потенциометра. Поворачивая ручку потенциометра, вы меняете уровень сопротивления какой-либо из сторон движка, подсоединенного к центральному контакту потенциометра. Это, в свою очередь, меняет напряжение на центральном контакте потенциометра. Когда уровень сопротивления между центральным и боковым (тем, что подключен к 5-вольтовому контакту на Arduino) контактами приближается к 0 Ом (а сопротивление с другой стороны, соответственно, – к 10 кОм), значение напряжения у центрального контакта приближается к 5 вольтам. Если сделать все наоборот (повернуть ручку потенциометра к другому крайнему контакту), напряжение у центрального контакта потенциометра приблизится к 0 вольт. Таким образом, это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное. В плату Arduino уже встроен аналогово-цифровой преобразователь (АЦП), который считывает меняющееся напряжение и преобразовывает его в цифры от 0 до 1023. Если ручку потенциометра повернуть в одном направлении, на него не будет подано ни одного вольта, а входное значение будет равно 0. Но если ручку потенциометра повернуть в противоположном направлении, на контакт будет подано 5 вольт, а входное значение будет равно 1023. Тут пригодится функция analogRead(), которая будет считывать уровень напряжения, подаваемого на входной контакт, и присваивать ему цифру от 0 до 1023.

Схема

AnalogReadSerial sch.png

Код

Перво-наперво нужно при помощи функции setup() запустить последовательную передачу данных между платой Arduino и вашим компьютером со скоростью 9600 бит в секунду:

Serial.begin(9600);

Далее перемещаемся к секции главного цикла. Вам нужно задать переменную, которая будет сохранять значение сопротивления (варьирующегося от 0 до 1023; идеальный тип данных для этого случая – int), идущего от вашего потенциометра:

int sensorValue = analogRead(A0);

Чтобы поток с цифрами от 0 до 1023 соответствовал напряжению, которое считывается на контакте, вам нужно создать еще одну, «плавающую» переменную (float), а вместе с ней – формулу. Чтобы создать диапазон цифр от 0.0 до 5.0, поделите 5.0 на 1023.0, а затем умножьте это на sensorValue.

float voltage= sensorValue * (5.0 / 1023.0);

И, наконец, вам нужно вывести эту информацию в меню Serial Monitor. Это можно сделать при помощи команды Serial.println() в последней строчке программы:

Serial.println(voltage)

Теперь, когда вы откроете окно Serial Monitor в среде разработки Arduino (нажав на кнопку, находящуюся справа от кнопки Upload вверху программы), то увидите непрерывный поток цифр, варьирующихся от 0.0 до 5.0. Если повернуть ручку потенциометра, цифры в этом потоке изменятся, отображая уровень напряжения, подаваемого на 0-ой аналоговый входной контакт Arduino.

  1. /*
  2.   Считывание напряжения, проходящего через аналоговый контакт
  3.   Считывает данные с 0-го входного контакта, конвертирует их в напряжение, а затем отображает результат в меню Serial Monitor.
  4.   Подсоединяем центральный контакт потенциометра к 0-му контакту, боковые контакты потенциометра – к «земле» и 5-вольтовому контакту.
  5.  
  6.  Данный пример кода не защищен авторским правом.
  7.  */
  8.  
  9. // эта функция запускается один раз – при рестарте:
  10. void setup() {
  11.   // инициализируем последовательную передачу данных со скоростью 9600 бит в секунду:
  12.   Serial.begin(9600);
  13. }
  14.  
  15. // этот цикл, запустившись, будет повторятся снова и снова:
  16. void loop() {
  17.   // считываем входную информацию на 0-ом аналоговом контакте:
  18.   int sensorValue = analogRead(A0);
  19.   // конвертируем информацию, считанную на 0-ом аналоговом контакте (цифры в диапазоне от 0 до 1023), в напряжение (цифры в диапазоне от 0.0 до 5.0 вольт):
  20.   float voltage = sensorValue * (5.0 / 1023.0);
  21.   // отображаем считанные и преобразованные данные:
  22.   Serial.println(voltage);
  23. }

См.также

  1. setup()‎
  2. loop()
  3. analogRead()
  4. int
  5. Serial
  6. float
  7. BareMinimum
  8. Blink
  9. DigitalReadSerial
  10. AnalogReadSerial
  11. Fade
  12. ReadAnalogVoltage

Внешние ссылки

  1. Arduino - ReadAnalogVoltage