Аналоговые входы описание портов



 

Аналоговые входы (Рисунок 2). Описание портов, работающих как аналоговые входы, платформы Arduino (Atmega8, Atmega168, Atmega328, или Atmega1280).Аналого-цифровой преобразователь Микроконтроллеры Atmega, используемые в Arduino, содержат шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 бит, что позволяет на выходе получать значения от 0 до 1023. Основным применением аналоговых входов большинства платформ Arduino является чтение аналоговых датчиком, но в тоже время они имеют функциональность вводов/выводов широкого применения (GPIO) (то же, что и цифровые порты ввода/вывода 0 - 13). Таким образом, при необходимости применения дополнительных портов ввода/вывода имеется возможность сконфигурировать неиспользуемые аналоговые входы.

 

Цоколевка выводы Arduino

 

Цоколевка (Рисунок 2.1) выводы Arduino, соответствующие аналоговым входам, имеют номера от 14 до 19. Это относится только к выводам Arduino, а не к физическим номерам выводов микроконтроллера Atmega. Аналоговые входы могут использоваться как цифровые выводы портов ввода/вывода. Например, код программы для установки вывода 0 аналогового входа на порт вывода со значением HIGH: 1)pinMode(14,OUTPUT); )digitalWrite(14, HIGH);

Рисунок 2.1 – Цоколевка

 

 

Подтягивающие резисторы

 

Подтягивающие резисторы выводы аналоговые входов имеют подтягивающие резисторы работающие как на цифровых выводах. Включение резисторов производится командой digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0 пока вывод работает как порт ввода. Подключение резистора повлияет на величину сообщаемую функцией analogRead() при использовании некоторых датчиков. Большинство пользователей использует подтягивающий резистор при применении вывода аналогового входа в его цифровом режиме.

 

Подробности и предостережения

 

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

 

Широтно-импульсная модуляция

 

Широтно-импульсная модуляция Широтно-Импульсная модуляция, сокращенно ШИМ (англ. PWM). Пример использования аналогового выхода (ШИМ) для управления светодиодом доступен из меню File->Sketchbook->Examples->Analog программы Arduino. Широтно-Импульсная модуляция, или ШИМ, это операция получения изменяющегося аналогового значения посредством цифровых устройств. Устройства используются для получения прямоугольных импульсов - сигнала, который постоянно переключается между максимальным и минимальным значениями. Данный сигнал моделирует напряжение между максимальным значением (5 В) и минимальным (0 В), изменяя при этом длительность времени включения 5 В относительно включения 0 В. Длительность включения максимального значения называется шириной импульса. Для получения различных аналоговых величин изменяется ширина импульса. При достаточно быстрой смене периодов включения-выключения можно подавать постоянный сигнал между 0 и 5 В на светодиод, тем самым управляя яркостью его свечения. На графике зеленые линии отмечают постоянные временные периоды. Длительность периода обратно пропорциональна частоте ШИМ. Т.е. если частота ШИМ составляет 500 Гц, то зеленые линии будут отмечать интервалы длительностью в 2 миллисекунды каждый. Вызов функции analogWrite <#"justify">.4 Память в Arduino В микроконтроллере ATmega168, используемом на платформах Arduino, существует три вида памяти: 1) Флеш-память: используется для хранения скетчей. ) ОЗУ (Статическая оперативная память с произвольным доступом): используется для хранения и работы переменных. ) EEPROM (энергонезависимая память): используется для хранения постоянной информации. Флеш-память и EEPROM являются энергонезависимыми видами памяти (данные сохраняются при отключении питания). ОЗУ является энергозависимой памятью. Микроконтроллер ATmega168 имеет: 1)16 Кб флеш-памяти (2 Кб используется для хранения загрузчика) )1024 байта ОЗУ 3)512 байт EEPROM Необходимо обратить внимание на малый объем ОЗУ, т.к. большое число строк в скетче может полностью ее израсходовать. Например, следующая объявление: char message[] = "I support the Cape Wind project."; занимает 32 байта из общего объема ОЗУ (каждый знак занимает один байт). При наличии большого объема текста или таблиц для вывода на дисплей возможно полностью использовать допустимые 1024 байта ОЗУ. При отсутствии свободного места в ОЗУ могут произойти сбои программы, например, она может записаться, но не работать. Для определения данного состояния требуется превратить в комментарии или укоротить строки скетча (без изменения кода). Если после этого программа работает корректно, то на ее выполнение был затрачен весь объем ОЗУ. Существует несколько путей решения данной проблемы: При работе скетча с программой на компьютере можно перебросить часть данных или расчетов на компьютер для снижения нагрузки на Arduino. При наличии таблиц поиска или других больших массивов можно использовать минимальный тип данных для хранения значений. Например, тип данных занимает два байта, а byte - только один (но может хранить небольшой диапазон значений). Неизменяемые строки и данные во время работы скетча можно хранить во флеш-памяти. Для этого необходимо использовать ключ PROGMEM. Для использования EEPROM обратитесь к библиотеке EEPROM.

 


Дата добавления: 2018-11-24; просмотров: 315; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!