Ардуино для начинающих

Урок 9. Как получить данные с аналоговых датчиков

Продолжаем наш курс "Ардуино для начинающих" и в очередном уроке мы мы продолжим изучать работу с вводами и выводами Ардуино и в частности как работать с аналоговыми датчиками.

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

Но Arduino не может измерить сопротивление. Она может только измерять напряжение. Так как же Arduino может получать информацию от аналоговых датчиков?

Для этого используется делитель напряжения. Если вы знаете что такое ток, напряжение и сопротивление, то информация ниже вам будет понятна. Для тех же, кто совершенно ничего не понимает мы скоро запускаем курс "Электроника для начинающих", где пройдем все основы электричества.

Но вернемся к теме урока и посмотрим на схему нашего делителя напряжения:

Выходное напряжение может быть установлено на любое значение между 0 вольт и входным напряжением путем изменения значений резисторов R1 и R2.

Точное выходное напряжение можно найти по этой формуле:

Если входное напряжение составляет 5 вольт, а R1 и R2 имеют одинаковое сопротивление, выходное напряжение будет составлять 1/2 от входного напряжения или 2,5 вольт:

Если R1 имеет очень высокое сопротивление по сравнению с R2, выходное напряжение будет близко к 0 вольт:

Говоря простыми словами - если правый резистор на схем выше имеет небольшое значение, то току легче проходить через него сразу на выход, т.к. через высокое сопротивление слева на схеме проходить очень трудно.

Таким образом, если R2 имеет очень высокое сопротивление по сравнению с R1, выходное напряжение будет близко к входному напряжению в 5 В:

Если R1 или R2 заменить аналоговым датчиком, выходное напряжение будет увеличиваться или уменьшаться в зависимости от сопротивления датчика.

Например, подключите фоторезистор и делитель напряжения к Arduino следующим образом:

Выход делителя напряжения подключен к выводу Arduino A0.

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

Сначала мы объявим переменную для хранения номера контакта photoresistorPin и установим его равным контакту A0:

Затем мы инициализируем последовательный монитор в функции void setup():

В разделе void loop() мы объявляем переменную для хранения показаний напряжения (light) и устанавливаем ее равной функции analogRead():

Функция analogRead() сообщает Arduino прочитать напряжение аналогового вывода и преобразовать его в число от 0 до 1023.

Номер пина (или переменная, которая содержит номер пина) идет в скобках.

Поскольку показание напряжения хранится в переменной light, мы можем показать их на последовательном мониторе с помощью Serial.println():

Функция Serial.println() может выводить текст, переменные и даже выходные данные функций. Чтобы вывести текст, поместите кавычки вокруг текста, который вы хотите отобразить:

Serial.println("Этот текст будет отображаться на последовательном мониторе");

Чтобы вывести переменные, просто используйте имя переменной:

Serial.println(sensorReading);

Чтобы вывести выходные данные функции, поместите функцию в круглые скобки:

Serial.println(digitalRead (13));

Функция delay() в строке 10 (см.выше) в приведенном выше коде заставляет Arduino делать паузу на 100 миллисекунд, чтобы замедлить вывод и облегчить чтение.

Как только код загружен, вы должны увидеть такие показания, которые выводятся на последовательный монитор:

Эти числа будут увеличиваться или уменьшаться от 0 до 1023 в зависимости от сопротивления фоторезистора. Фоторезисторы имеют низкое сопротивление при ярком освещении. Это низкое сопротивление увеличивает напряжение на выводе A0, что приводит к увеличению значений на последовательном мониторе.

Фоторезисторы имеют высокое сопротивление в темноте, что снижает напряжение на выводе A0 и снижает показания на последовательном мониторе. Фоторезисторы отлично подходят для управления освещением. Например, вы можете использовать их, чтобы включить лампу, когда стемнеет. Для управления лампой с помощью фоторезистора используйте переменную освещения в теле условного оператора if:

Когда показание напряжения, сохраненное в переменной light, падает ниже 400, оператор if будет выполнен и relayPin будет установлен в состояние ВЫСОКОГО напряжения.

Со временем предстоит изучить еще много информации об аналоговых датчиках, но именно с этой информации следует начинать знакомство с ними.

В следующем уроке мы обобщим всю информацию и наконец-то сделаем первый проект в котором поработаем полноценно с Ардуино и светодиодами.