Электротехнический интернет-журнал Electrik.info

"Электрик Инфо" - онлайн журнал про электричество. Теория и практика. Обучающие статьи, примеры, технические решения, схемы, обзоры интересных электротехнических новинок. Уроки, книги, видео. Профессиональное обучение и развитие. Сайт для электриков и домашних мастеров, а также для всех, кто интересуется электротехникой, электроникой и автоматикой.
 

 

  • Неисправности светодиодных лент и методы их ремонта
  • Что такое заземление и заземляющее устройство, как оно работает и для чего предназначено
  • Основные причины срабатывания дифавтомата в электрическом щите
  • Как подключить электрический духовой шкаф и варочную поверхность (электроплиту)
  • 10 лучших технологий аккумуляторов, зарядки и хранения энергии будущего
  • Что такое гальванометр и где его используют
  • Почему гудит трансформатор, источники вибрации и шума, что такое магнитострикция
  • Электрик  

    Электрик Инфо » Схемы на микроконтроллерах » Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков
    Количество просмотров: 30948
    Комментарии к статье: 1


    Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков

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

    О датчиках

    Соответственно датчики делят на две группы:

    1. Цифровые.

    2. Аналоговые.

    Для считывания цифровых значений могут использоваться как цифровые, так и аналоговые входы микроконтроллера, в нашем случае авр на плате Arduino. Аналоговые же датчики должны подключаться через аналогово-цифровой преобразователь (АЦП). ATMEGA328, именно он установлен в большинстве плат АРДУИНО (подробнее об этом на сайте есть статья), содержит в своей схеме встроенный АЦП. На выбор доступно целых 6 аналоговых входов.

    Если вам этого не хватает, вы можете с помощью дополнительного внешнего АЦП подключить к цифровым входам, но это усложнит код и увеличит его объём, из-за добавления алгоритмов обработки и управление АЦП. Тема аналогово-цифровых преобразователей достаточно широка что можно сделать о них отдельную статью или цикл. Проще использовать плату с их большим количеством или мультиплексоры. Давайте рассмотрим, как подключить аналоговые датчики к Arduino.

    Подключение аналоговых датчиков к Arduino, считывание показаний датчиков

    Общая схема аналоговых датчиков и их подключения

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

    Общая схема аналоговых датчиков и их подключения

    Схема выше позволит считывать значения от 0 до 1023, благодаря тому, что всё напряжение падает на потенциометре. Здесь работает принцип делителя напряжения, в любом положении движка напряжение распределяется по поверхности резистивного слоя линейно или в логарифмическом масштабе (зависит от потенциометра) на вход попадает та часть напряжения, которая осталась между выводом ползунка (скользящего контакта) и землёй (gnd). На макетной плате такое соединение выглядит так:

    Схема подключения аналоговых датчиков

    Второй вариант подключен по схеме классического резистивного делителя, здесь напряжение в точке максимального сопротивления потенциометра зависит от сопротивления верхнего резистора (на рисунке R2).

    Классический резистивный делитель

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

    Схема и расчётные соотношения для определения значения напряжения на нижнем плече

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

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

    Простейшая схема подключения терморезистора

    Таким же образом можно подключить фотодиоды, фототранзисторы как датчик освещенности. Фотоэлектроника нашла применения в датчиках определяющих расстояние и наличие предмета, один из таких мы рассмотрим позже.

    Фоторезистор

    Рисунок показывает подключение фоторезистора к ардуино.

    Схема подключения фоторезистора к ардуино

    Программная часть

    Прежде чем рассказать о подключении конкретных датчиков, я решил рассмотреть программные средства для их обработки. Все аналоговые сигналы считываются с таких же портов с помощью команды analogRead(). Стоит отметить, что у Arduino UNO и других моделей на 168 и 328 атмеге 10-разрядный АЦП. Это значит, что микроконтроллер видит входной сигнал в виде числа от 0 до 1023 – итого 1024 значения. Если учесть, что напряжение питания 5 вольт, то чувствительность входа:

    5/1024=0.0048 В или 4.8 мВ

    То есть при значении 0 на входе, напряжение равно 0, а при значении 10 на входе – 48 мВ.

    В отдельных случаях для преобразования значений до нужного уровня (например для передачи в шим выход) 1024 делят на число, а в результате деления должно должен получится необходимый максимум. Более наглядно работает функция map(источник, нч, вч, внч, ввч), где:

    • нч – нижнее число до преобразования функцией;

    • вч – верхнее;

    • внч – нижнее число после обработки функцией (на выходе);

    • ввч – верхнее.

    Практическое применение для преобразования функцией входного значения для передачи в ШИМ (максимальное значение 255, для преобразования данных из ацп в выход шим 1024 делят на 4):

    Вариант 1 – деление.

    int x;

    x = analogRead(pot) / 4;

    // будет получено число от 0 до 1023

    // делим его на 4, получится целое число в от 0 до 255 analogWrite(led, x);

    Вариант 2 – функция MAP – открывает более широкие возможности, но об этом позже.

    void loop()

    { int val = analogRead(0);

    val = map(val, 0, 1023, 0, 255);

    analogWrite(led, val); }

    Или еще короче:

    analogWrite(led, map(val, 0, 1023, 0, 255))

    Далеко не у всех датчиков на выходе присутствует 5 Вольт, т.е. число 1024 не всегда удобно делить для получения тех же 256 для ШИМа (или любых других). Это может быть и 2 и 2.5 вольта и другие значения, когда максимумом сигнала будет, например 500.

    Популярные аналоговые датчики

    Общий вид датчика для ардуино и его подключение изображено ниже:

    Как подключить аналоговый датчик

    Обычно есть три выхода, может присутствовать четвертый – цифровой, но это особенности.

    Расшифровка обозначения выводов аналогового датчика:

    • G – минус питания, общая шина, земля. Может обозначаться как GND, «-»;

    • V – плюс питания. Может обозначаться как Vcc, Vtg, «+»;

    • S – выходной сигнал, возможные обозначения – Out, SGN, Vout, sign.

    Новички для освоения считывания значения датчиков выбирают проекты всевозможных термометров. Такие датчики бывают в цифровом исполнении, например DS18B20, и в аналоговом – это всевозможные микросхемы типа LM35, TMP35, TMP36 и другие. Вот пример модульного исполнения такого датчика на плате.

    Аналоговый датчик на TMP36

    Погрешность датчика от 0.5 до 2 градуса. Построен на микросхеме TMP36, как и её многие аналоги его выходные значения равняются 10 мВ/°С. При 0° выходной сигнал – 0 В, а дальше прибавляется по 10 мВ на 1 градус. То есть при 25.5 градусах напряжение – 0.255 В, возможно отклонение в пределах погрешности и собственного нагрева кристалла ИМС (до 0.1°С).

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

    Диапазоны изменения температуры и выходные напряжения датчиков

    Однако, для качественного термометра нельзя просто считать значения и вывести их на LCD индикатор или последовательный порт для связи с ПК, для стабильности выходного сигнала всей системы в целом нужно усреднять значения с датчиков, как аналоговых, так и цифровых в определенных пределах, при этом, не ухудшая их быстродействие и точность (всему есть предел). Это связано с наличием шумов, наводок, нестабильных контактов (для резистивных датчиков на основе потенциометра, см. неисправности датчика уровня воды или топлива в баке автомобиля).

    Коды для работы с большинством датчиков довольно объёмны, поэтому я их приводить все не буду, их легко найти в сети по запросу «название датчик + Arduino».

    Следующий датчик, который часто используют ардуинщики-роботостроители – это датчик линии. Он основан на фотоэлектронных приборах, типа фототранзисторов.

    Датчик линии

    С их помощью робот, который двигается по линии (используется на автоматизированных производствах для доставки деталей) определяет наличие белой или черной полосы. В правой части рисунка видно два прибора похожих на светодиоды. Один из них это и есть светодиод, может излучать в невидимом спектре, а второй – фототранзистор.

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

    Дополню смежным датчиком – датчик расстояния от фирмы Sharp, тоже используется в робототехнике, а также в условиях контроля положения предметов в пространстве (с соответствующей ТХ погрешностью).

    Датчик расстояния Sharp

    Работает на том же принципе. Библиотеки и примеры скетчей и проектов с ними в большом количестве есть на сайтах посвященных Arduino.

    Заключение

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

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

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

    Смотрите также у нас на сайте: Подключение внешних устройств к Arduino

    Алексей Бартош

    Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

    Записывайтесь в онлайн-университет от GeekBrains:

    Факультет Интернет вещей

    Обучение Интернет вещей и современные встраиваемые системы

    Вы сможете:

    • Изучить C, механизмы отладки и программирования микроконтроллеров;

    • Получить опыт работы с реальными проектами, в команде и самостоятельно;

    • Получить удостоверение и сертификат, подтверждающие полученные знания.

    Starter box для первых экспериментов в подарок!

    После прохождения курса в вашем портфолио будет: метостанция с функцией часов и встроенной игрой, распределенная сеть устройств, устройства регулирования температуры (ПИД-регулятор), устройство контроля влажности воздуха, система умного полива растений, устройство контроля протечки воды...

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

    Подробнее здесь: Интернет вещей и современные встраиваемые системы






    Поделитесь этой статьей с друзьями:

    Другие статьи с сайта Электрик Инфо:

  • Чем отличаются аналоговые и цифровые датчики
  • Измерение температуры и влажности на Arduino – подборка способов
  • Самые популярные датчики для Arduino
  • Введение в аналоговую электронику
  • Как устроен и работает датчик линии
  • Тензометрические датчики в системах автоматизации
  • Как происходит преобразование аналогового сигнала в цифровой
  • Подключение и программирование Ардуино для начинающих
  • Аналоговые датчики: применение, способы подключения к контроллеру
  • Особенности подключения устройств к Arduino
  • Категория: Схемы на микроконтроллерах

    Датчики, Аналоговая электроника, Измерительные мосты, Программирование Ардуино, Arduino для начинающих, Ардуино

      Комментарии:

    #1 написал: Олег | [цитировать]

    Arduino Uno содержит встроенный аналого-цифровой (АЦП) преобразователь с шестью каналами, который дает нам шесть аналоговых входных контактов. АЦП преобразует аналоговый сигнал в цифровое значение. В то время как цифровые выводы имеют два значения или выводы аналогового входа имеют значения от 0 до 1023 относительно эталонного значения Arduino. Arduino Uno имеет эталонное значение 5 В.

    Добавление комментария
    Имя:*
    Комментарий:

    Популярные статьи:

    Присоединяйтесь к нам в социальных сетях:

    ВКонтакте | Facebook | Одноклассники | Яндекс Дзен

     


    Популярные разделы сайта:

    Электрика дома  Электрообзоры  Энергосбережение
    Секреты электрика Источники света Делимся опытом
    Домашняя автоматика Электрика для начинающих
    Практическая электроника Электротехнические новинки

    Copyright © 2009-2021 Электрик Инфо - Electrik.info, Андрей Повный
    Вся информация на сайте предоставлена в ознакомительных и познавательных целях.
    За применение этой информации администрация сайта ответственности не несет.
    Перепечатка материалов сайта запрещена.

    Источник иллюстраций: авторские рисунки и фотографии, электрика на стоковых фото