Статья 5. Ардуино – Работа с аналоговыми входами.

Цифровые входы и выходы – это хорошо. Но подавляющее количество экспериментов по физике мы будем проводить с аналоговыми входами. Что такое аналоговый сигнал Вы наверняка знаете. Мы об этом говорили в предыдущей статье. Это непрерывно изменяющийся во времени сигнал, показывающий, как изменяется непрерывно та или иная величина. На наше счастье в «Arduino» целых 6 аналоговых входов.

Что такое аналоговый вход? Это контакт в микроЭВМ «Arduino», на который вместе с GND (земля, общий контакт) можно подавать напряжение от 0 до 5 Вольт. В десятиразрядном аналого-цифровом преобразователе, который имеется в «Arduino» это сигнал превращается в цифровой. Цена деления при этом равна 4.9 мВ, а точность  при таком делении равна   0,1 %. Такой результат легко можно получить, прочитав специальную литературу по АЦП.

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

Но сначала вспомним электрические цепи и элементы электрических цепей.

1. Электрическая цепь.

В нашей жизни мы настолько привыкли к различным электрическим приборам, что порой не задумываемся – как они работают. А в принципе все они устроены одинаково – и карманный фонарик и мобильный телефон, и компьютер и т. д.

Каждое электрическое устройство состоит из источника электрического тока – батареи или аккумулятора, самого устройства и выключателя.

Начнем с источника тока. Первым в мире источником тока была батарея Алессандро Вольта, изобретенная им в 1800 году. Подсказал идею источника электрического тока его друг - биолог Луиджи Гальвани. С тех пор подобные источники тока называются гальваническими.

НЕ нашли? Не то? Что вы ищете?

Элемент Вольта представлял сосуд с раствором серной кислоты, в который были опущены 2 электрода – цинковый и медный ( рис.1.).

Цинковый электрод растворялся в растворе кислоты, и положительные ионы цинка уходили в раствор. В цинке был избыток электронов, поэтому он заряжался отрицательно, а раствор положительно. Так как медь практически не растворялась в

Рис.1. растворе, то она тоже была заряжена также как раствор - положительно. Таким образом, на медном электроде был +, а на цинковом -.

Если на одном электроде был +, а на другом -, то говорят, что на этих электродах есть электрическое напряжение. Оно тем больше, чем сильнее заряжены электроды. Если электроды источника тока замкнуть проводником R, то по нему начнут двигаться электроны от цинкового электрода к медному. Такое движение называется электрическим током. Правда, исторически сложилось так, что электрический ток в электрической цепи течет от + к -.

На рисунке 2 Алессандро Вольта

Рис.2. демонстрирует свое устройство императору Франции Наполеону.

Напряжение на зажимах источника тока измеряют в Вольтах (В).

Источник тока, изобретенный А. Вольта назывался химическим. В настоящее время к химическим источникам тока относятся круглые ( рис.3) и плоские ( рис.4) батареи и аккумуляторы для мобильников, компьютеров, автомобилей и т. д.

Рис.3. Рис.4.

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

Рис 5. Аналоговый вольтметр. Рис.6 Цифровой вольтметр.

Вольтметры могут быть стрелочными ( рис 5.) и цифровыми ( рис.6). Запомните! Вольтметр всегда подключается параллельно нагрузке ( Рис. 7). У каждого вольтметра есть плюс и минус!!!!!!

Если Вы при подключении их к измеряемому прибору перепутаете, то вольтметр можно испортить. Круглые батарейки ( не зависимо от размеров?) дают напряжение U = 1,5 В, плоские – U = 4,5 В, батареи типа «Крона» - U = 9 В, а

Рис 7. круглые аккумуляторы типа АА – U = 1,2 В.

С источником тока мы разобрались. Теперь подключим к источнику тока проводник. Так как на одном конце проводника +, а на другом-, то по проводнику потечет ток от = к --.Так как электрический ток это поток движущихся электронов, то они при движении будут сталкиваться с ионами, находящимися в узлах кристаллической решетки. Вследствие этого движение электронов замедлится и ток уменьшится. Величину тока, или, как принято говорить, силу тока измеряют специальные приборы – амперметры ( миллиамперметры, микроамперметры и килоамперметры ). Единицами силы тока являются А ( Ампер), мА (миллиАмпер, мкА ( микроАмермер) и кА ( килоАмпер).

Рис 8. Аналоговый амперметр. Рис.9 Цифровой амперметр.

Амперметры могут быть стрелочными ( рис 8.) и цифровыми ( рис.9). Запомните! Амперметр подключается последовательно нагрузке ( Рис. 10). У каждого амперметра есть плюс и минус!!!!!! Если Вы при подключении их к измеряемому прибору перепутаете, то амперметр можно испортить.

Рис. 10.

Прибор, в котором при движении электронов вследствие столкновения их с ионами кристаллической решетки, уменьшается электрический ток, называется резистором. Свойство уменьшать электрический ток в цепи называется сопротивлением. Обозначается резистор буквой R, а его сопротивление измеряется в Ом, кОм, Мом. На рисунке Рис.11.

он обозначается в виде прямоугольника с буквой R ( рис 11).

Резисторы имеют два параметра – величину сопротивления резистора и рассеиваемую мощность. Величина сопротивления определяется по формуле R = ρ L/S. В этой формуле L –длина проводника, S – площадь поперечного сечения, а ρ – удельное сопротивление проводника, зависящее от строения кристаллической решетки проводника.

На рис. 12 вы видите внутреннее устройство резисторов. Видно, что они сделаны из разных материалов, у них разные длины и площади поперечных сечений, следовательно, сопротивления у них разные. Кроме

Рис.12. того, у верхнего резистора размеры большие, следовательно, тепла в окружающую среду оно отдаст больше, поэтому у него больше тепловая мощность рассеивания.

Промышленность выпускает очень большое количество резисторов на различные размеры сопротивлений и мощность рассеивания ( см. рис 13.).

Красные и зеленые резисторы отечественные, остальные ( с цветными полосками) зарубежные.

Рис.13.

На отечественных резисторах их сопротивление написано прямо на корпусе.

100 – 100 Ом, 0,51 к – 510 Ом, 1 к – 1000 Ом, 3к2 – 3,3 кОм, 1 М – 1 Мом, 2М4 – 2,4 МОм.

Рис. 14.

На зарубежных резисторах используется цветная маркировка значений сопротивлений ( рис.14).

В зависимости от мощности рассеяния

( рис.15). резисторы обозначаются количеством и ориентацией нарисованных полосок.

Рис. 15.

Резисторы можно соединять последовательно, параллельно и смешанно.

Рис. 16.

На рисунке 16 изображены законы последовательного и параллельного соединения резисторов.

Типов резисторов существует достаточно много. Постепенно мы рассмотрим многие из них.

Рис. 17. Рис 18.

Вот перед Вами знакомый школьный реостат. Слева его схема ( рис. 17) и внешний вид ( рис. 18).

Рис. 19. Рис. 20. Рис. 21.

А это – потенциометр. Слева его схема ( рис. 19), устройство ( рис.20) и внешний вид ( рис. 18).

При работе с «Arduino» мы будем использовать и реостаты и потенциометры, но начнем с потенциометра.

2. Аналоговый ввод – потенциометр.

Итак, немного воспоминаний. У «Arduino» есть цифровые и аналоговые входы. С цифровыми мы немного разобрались, теперь перейдем к аналоговым. Напоминаю, что аналоговые входы работают только на вход. На них можно подавать напряжение от 0 до 5 В. В АЦП «Arduino» это аналоговое напряжение превращается в цифровой сигнал и идет далее на обработку. У «Arduino» UNO – 6 аналоговых входов а у «Arduino» MEGA – 16 аналоговых входов.

Будем работать с аналоговым вводом А0. Для этого используем потенциометр R. Величина R может находиться в пределах 10k – 100k. Крайние выводы потенциометра подключаются к источнику тока, так как показано на рис. 22.

От среднего и нижнего выводов потенциометра напряжение будет подаваться на входы А0 и GND. В качестве источника тока удобнее всего пользоваться плоской

Рис. 22. батареей на 4,5 В.

Теперь напишем скетч ( программу) для аналогового входа А0. Скетч очень похожий для скетчей цифровых датчиков, поэтом трудностей у Вас не должно возникнуть.

Скетч potenziometr.

Сначала надо подключить аналоговый вход А0.

int potPin = 0; // подключим аналоговый порт 0, вход целочисленный - переменная int целочисленная

В цикле установки, также как и цифровых датчиков, надо установить последовательное соединение на скорости 9600 бит за секунду между вашим Arduino и ПК с помощью следующей команды: Serial. begin(9600);

void setup()

{

Serial. begin(9600); // открываем Serial соединение, оно нужно для приема и передачи

}

В основном цикле кода вам нужно инициализировать переменную для хранения значения преобразования (значения будут изменятся от 0 до 1023, потому лучше всего выбрать тип данных int : int val = analogRead(A0), val - переменная, считываемая с аналогового порта Ардуино

void loop()

{

int val = analogRead(potPin); // считываем 10 битное значение переменной val 4 значения измеряемой величины

Для вывода значений val на экран вам нужно воспользоваться функцией Serial. println():
Serial. println(val, ), как и у цифровых датчиков.

Serial. println(val); // передаем значение величины val на внешние устройства, в нашем случае на с Serial. println Serial. println ерийный монитор

Задержка вывода :

delay(50);

}

Если убрать лишние комментарии, то получится простой следующий скетч :

int potPin = 0; // подключим аналоговый порт 0, вход целочисленный

void setup()

{

Serial. begin(9600); // открываем Serial соединение, оно нужно для приема и передачи

}

void loop()

{

int val = analogRead(potPin); // считываем 10 битное значение измеряемой величины

Serial. println(val); // выводим значение величины от 0 до 1023.

delay(50);

}

Этот скетч можно скопировать в буфер, вставить в программу «Arduino» и он будет работать. Как?

·  В начале эксперимента к входам А0 и GND выход потенциометра не подключен

Введем скетч в Ардуино и запустим его. Чтобы посмотреть работу скетча надо включить Serial Monitor. В окне Serial Monitor будут бежать произвольные числа от 0 до 1023. Дело в то, что на вход аналогового порта А0 мы ничего не подали и поэтому на его входе появляются случайные значения.

·  Соединим А0 с GND. В окне Serial Monitor появится 0 !. И это правильно, потому что напряжение на входе Р0 действительно 0 В.

·  Подадим на вход А0 и GND напряжение с потенциометра. При вращении оси потенциометра показания в окне Serial Monitor будут изменяться от 0 до 1023. как уже говорилось ранее в Ардуино 10 разрядный АЦП и значении 0 соответствует 0 В, а значению 1023 – 5 В.

Но ведь мы с потенциометра подавали напряжение от 0 до 5 ( 4,5) В. Как же получить такие значения? Оказывается, все решается очень просто.

2. Компьютерный аналоговый вольтметр. Измерение напряжения.

Мы уже говорили о том, что на аналоговый вход можно подавать напряжение от 0 до 5 В. Таким образом, мы имеем практически готовый вольтметр для измерения напряжения от 0 до 5 В с точностью 4,9 мВ. А работа с потенциометром только подтвердила это. Схема такого вольтметра достаточно проста

( рис.23). Необходимо подключить к аналоговому входу А0 ( или А1 –А5) и к GND ( земле) напряжение от 0 до 5 В.

Рис. 23.

К аналоговому входу А0 подключается + напряжения, а к GND – минус напряжения обычной плоской батареи. Прошу не путать полярность напряжения!

Эту схему можно поместить в отдельную небольшую коробочку и с помощью специального разъема, подключать к плате «Arduino». Это и будет Ваш первый вольтметр на "Arduino".

Скетч Voltmetr 5 V;

Скетч для «Arduino» изменится совсем немного.

int potPin = 0; // подключим аналоговый порт 0

float vv; // новая строка вводим новую вещественную переменную vv, она нужна для того чтобы на серийный монитор выводить дробные значения напряжения

void setup()

{

Serial. begin(9600); // открываем Serial соединение, оно нужно для приема и передачи

}

void loop()

{

int val = map(analogRead(potPin), 0, 1023, 0, 300);

// map преобразует 10 битное значение в 8 битное vv=val; // преобразуем целочисленную переменную val в вещественную vv

Serial. println(vv/60); // чтобы вывести напряжение в пределах 0 - 5 В делим на 60

delay(50);

}

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

Напряжение выводится 4,4 В.

Рис.24 Рис.25

На рис.24 представлена оболочка программы Ардуино с загруженным скетчем Voltmetr 5V. На рис.25 представлен скриншот серийного монитора при измерении напряжения от плоской батареи.

Но если Вы захотите сделать настоящий вольтметр для «Arduino» с различными пределами измерений, то нужна более серьезная схема.

Один из вариантов таких схем представлен на рис. 26. Данный вольтметр рассчитан для измерения постоянных напряжений от 0 до 30 В. Так как аналоговый вход «Arduino» рассчитан на максимальное напряжение до 5 В, то для измерения напряжения до 30 В необходимо поставить делитель напряжения. Делитель напряжения состоит из двух резисторов R1 и R3. Он уменьшает подаваемое напряжение. Но так как подобрать резисторы с точными значениями очень сложно, то параллельно резистору R3 включен подстроечный резистор R2, который позволяет подаваемое напряжение точно разделить на 6. Тогда при подаче на вход напряжения в 30 В, на выходе будет напряжение в 5 В.

Чтобы случайно не подать на вход «Arduino» напряжение более 5 В, к нему подключен стабилитрон на 5,1 В. Стабилитрон работает так : пока на нем напряжение будет меньше 5,1 В, то он пропускает это напряжение. Если напряжение, подаваемое на стабилитрон будет больше 5,1 В, то он открывается, через него

Рис. 26 начинает течь ток и увеличивается падения напряжения на R1, а на стабилитроне так и остается 5,1 В. Конденсатор С1 служит для сглаживания пульсаций измеряемого напряжения.

Изменяя сопротивление R2 мы точно делим напряжение, подаваемое на вход в 6 раз.

Скетч для данного вольтметра очень похож на предыдущий.

Скетч Voltmetr 30 V;

int potPin = 0; // подключим аналоговый порт 0

float vv;

void setup()

{

Serial. begin(9600); // открываем Serial соединение, оно нужно для приема и передачи

}

void loop()

{

int val = map(analogRead(potPin), 0, 1023, 0, 60);

// map преобразует 10 битное значение в 8 битное

vv=val;

Serial. println(vv/12);

delay(500);

}

Прошу не забывать фигурные скобки в скетче, иначе он не будет работать.

Изменяя сопротивления в делителе напряжения можно получить вольтметр для любого пределе измерения от 5 В до 1000 В. Для каждого измерения можно сделать переключатель и тоже поместить в отдельную коробочку.

Теперь нам надо сделать настоящий вольтметр с выводом информации на экран компьютера или видеомонитора.

Сделать это можно с помощью любого языка программирования. На страницах Интернета очень хорошо описана связка языков программирования «Arduino» +

«Processing». Но мне кажется, что учителю физики гораздо ближе язык PascalABC NET, который изучается на уроках информатики в большинстве школ нашей страны. Поэтому рассказывать о выводе на экран измеряемых физических величин я буду, основываясь на языке PascalABC NET, .

В связи с этим к следующему занятию я прошу Вас скачать из Интернета две бесплатные программы : PascalABC NET и приложение к операционной системе Windows( ХP, 7, 8 ) Microsoft. NET 4 ( или 5). Введя эти программы и подключив к ним "Arduino", мы с Вами выведем на экран компьютера или на экран видеопроектора значения измеряемого напряжения.

Практическая работа № 1.

Потенциометр.

Оборудование :

1.  Оборудование : микроЭВМ «Arduino», потенциометр, провод USB, компьютер с установленным скетчем.

2.  Собрать схему ( рис.27). Компилировать и загрузить скетч.

3.  Включить Seral Monitor.

4.  Изменяя положение движка потенциометра наблюдать за изменением информации на экране.

5. Подключите потенциометр к

другому пину (А1 –А16), и

изменив скетч, проделать пункты 2 – 4.

Рис.27.

Практическая работа № 2.

Вольтметр 0 – 5 В.

Оборудование :

1.  Оборудование : микроЭВМ «Arduino», потенциометр, провод USB, компьютер с установленным скетчем.

2.  Собрать схему. Компилировать и загрузить скетч.

3.  Включить Seral Monitor.

4.  Подключив к входу А0 измерить напряжение источника тока.

5.  Проверить точность измерений с помощью вольтметра.

6. Изменив скетч, проделать пункты 2 –5.