Перейти к содержимому

Сколько аналоговых входов у ардуино atmega328

  • автор:

Arduino.ru

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

Таким образом, при необходимости применения дополнительных портов ввода/вывода имеется возможность сконфигурировать неиспользуемые аналоговые входы.

Цоколевка

Выводы Arduino, соответствующие аналоговым входам, имеют номера от 14 до 19. Это относится только к выводам Arduino, а не к физическим номерам выводов микроконтроллера Atmega. Аналоговые входы могут использоваться как цифровые выводы портов ввода/вывода. Например, код программы для установки вывода 0 аналогового входа на порт вывода со значением HIGH:

pinMode(14, OUTPUT);
digitalWrite(14, HIGH);

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

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

digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0

пока вывод работает как порт ввода.

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

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

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

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

Ардуино для начинающих. Урок 8. Аналоговые входы

Подключение фоторезистора к Arduino

Как видите, схема очень проста. Обратите на стягивающий резистор на 10 кОм. Зачем он нужен и какой номинал лучше выбрать мы говорили на прошлом уроке. Теперь давайте напишем простой скетч, который будет выводить в COM порт значения с аналогово входа.

int sensePin = 0; // Пин к которому подключен фоторезистор void setup() < analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна. Serial.begin(9600); // Открываем порт на скорости 9600 бод. >void loop() < Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт delay(500); // задержка для того что бы значений было не слишком много >

Как видите в скетче нет ничего сложного. Команда analogReferense() не обязательна. Я добавил ее просто для демонстрации.

Давайте сделаем что то более интересное. Например ночник с автоматическим включением, если яркость освещения падает ниже определенного уровня. Для этого нам необходимо добавить в нашу схему светодиод через резистор на 150 Ом. Его мы подключаем к контакту 9 на Ардуино. Теперь наша схема выглядит так:

схема ночника на ардуино

Так же немного доработаем наш скетч.

int sensePin = 0; // Пин к которому подключен фоторезистор int ledPin = 9; // Пин к которому подключен светодиод void setup() < pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом >void loop() < int val = analogRead(sensePin); // Считываем значение с фоторезистора if(val < 800) digitalWrite(ledPin, HIGH); //включаем светодиод если значение меньше 800 else digitalWrite(ledPin, LOW); // если нет то выключаем светодиод >

Я убрал из скетча все лишнее. По комментариям в коде вы легко разберетесь что к чему. Если какая то конструкция вам не понятно вы можете посмотреть справочник языка программирования ардуино.

Теперь мы можем использовать ШИМ, что бы яркость свечения светодиода изменялась в зависимости от освещения. Для этого нем не надо менять схему. Мы внесем небольшие изменения в код и все будет работать.

int sensePin = 0; // Пин к которому подключен фоторезистор int ledPin = 9; // Пин к которому подключен светодиод void setup() < pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом >void loop() < int val = analogRead(sensePin); // Считываем значение с фоторезистора val = constrain(val, 750, 900); // эта функция обрезает все значения вне заданного диапазона int ledLevel = map(val, 750, 900, 255, 0); // отражаем значения с фоторезистора на значения от 255 до 0 analogWrite(ledPin, ledLevel); >

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

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

1 комментарий
  1. Влад 2021-01-18 18:20:05

Arduino.ru

Arduino Uno контроллер построен на ATmega328 (техническое описание, pdf). Платформа имеет 14 цифровых вход/выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо подать питание при помощи адаптера AC/DC или батареи.

В отличие от всех предыдущих плат, использовавших FTDI USB микроконтроллер для связи по USB, новый Ардуино Uno использует микроконтроллер ATmega8U2 (техническое описание, pdf).

«Uno» переводится как один с итальянского и разработчики тем самым намекают на грядущий выход Arduino 1.0. Новая плата стала флагманом линейки плат Ардуино. Для сравнения с предыдущими версиями можно обратиться к полному списку плат Arduino.

Характеристики

Микроконтроллер
Рабочее напряжение
Входное напряжение (рекомендуемое)
Входное напряжение (предельное)
Цифровые Входы/Выходы
14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы
Постоянный ток через вход/выход
Постоянный ток для вывода 3.3 В
Флеш-память
32 Кб (ATmega328) из которых 0.5 Кб используются для загрузчика
2 Кб (ATmega328)
1 Кб (ATmega328)
Тактовая частота

Схема и исходные данные
Питание

Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.

Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи подключаются к выводам Gnd и Vin разъема питания.

Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.

  • VIN. Вход используется для подачи питания от внешнего источника (в отсутствие 5 В от разъема USB или другого регулируемого источника питания). Подача напряжения питания происходит через данный вывод.
  • 5V. Регулируемый источник напряжения, используемый для питания микроконтроллера и компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или от разъема USB, или другого регулируемого источника напряжения 5 В.
  • 3V3. Напряжение на выводе 3.3 В генерируемое встроенным регулятором на плате. Максимальное потребление тока 50 мА.
  • GND. Выводы заземления.
Память

Микроконтроллер ATmega328 располагает 32 кБ флэш памяти, из которых 0.5 кБ используется для хранения загрузчика, а также 2 кБ ОЗУ (SRAM) и 1 Кб EEPROM.(которая читается и записывается с помощью библиотеки EEPROM).

Входы и Выходы

Каждый из 14 цифровых выводов Uno может настроен как вход или выход, используя функции pinMode(), digitalWrite(), и digitalRead(), . Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

  • Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2 USB-to-TTL.
  • Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
  • ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI.
  • LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.

На платформе Uno установлены 6 аналоговых входов (обозначенных как A0 .. A5), каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством вывода AREF и функции analogReference(). Некоторые выводы имеют дополнительные функции:

  • I2C: 4 (SDA) и 5 (SCL). Посредством выводов осуществляется связь I2C (TWI), для создания которой используется библиотека Wire.

Дополнительная пара выводов платформы:

  • AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
  • Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.

Обратите внимание на соединение между выводами Arduino и портами ATmega328.

Связь

На платформе Arduino Uno установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega328 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). Установленная на плате микросхема ATmega8U2 направляет данный интерфейс через USB, программы на стороне компьютера «общаются» с платой через виртуальный COM порт. Прошивка ATmega8U2 использует стандартные драйвера USB COM, никаких стороних драйверов не требуется, но на Windows для подключения потребуется файл ArduinoUNO.inf. Мониторинг последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через микросхему FTDI или USB подключение (но не при использовании последовательной передачи через выводы 0 и 1).

Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Uno.

ATmega328 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C.

Программирование

Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Uno» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.

Микроконтроллер ATmega328 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

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

Автоматическая (программная) перезагрузка

Uno разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой Arduino на компьютере, а не нажатием кнопки на платформе. Одна из линий DTR микросхемы ATmega8U2, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеру ATmega328 через 100 нФ конденсатор. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка Uno происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

На Uno имеется возможность отключить линию автоматической перезагрузки разрывом соответствующей линии. Контакты микросхем с обоих концов линии могут быть соединены с целью восстановления. Линия маркирована «RESET-EN». Отключить автоматическую перезагрузку также возможно подключив резистор 110 Ом между источником 5 В и данной линией.

Токовая защита разъема USB

В Arduino Uno встроен самовостанавливающийся предохранитель (автомат), защищающий порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает дополнительный барьер. Предохранитель срабатыват при прохождении тока более 500 мА через USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.

Физические характеристики

Длина и ширина печатной платы Uno составляют 6.9 и 5.3 см соответственно. Разъем USB и силовой разъем выходят за границы данных размеров. Четыре отверстия в плате позволяют закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя между другими выводами оно составляет 0,25 см.

Arduino Uno входы

Микроконтроллер ATmega328(datasheet ATmega328p). Для начала работы, надо подключить Arduino к компьютеру кабелем USB, или подать питание 6 — 20 Вольт. На плате 14 цифровых входов/выходов и 6 аналоговых входов. Для работы с USB используется микроконтроллер ATmega8U2(datasheet ATmega8U2).

Arduino UNO

Характеристики

Входное напряжение (рекомендуемое)

Входное напряжение (предельное)

14 (6 из которых могут использоваться как выходы ШИМ)

Постоянный ток через вход/выход

Постоянный ток для вывода 3.3 В

32 Кб (ATmega328) из которых 0.5 Кб используются для загрузчика

Платформа Arduino Uno имеет:

14 цифровых(digital I/O) вход/выходов
6 из которых могут использоваться как выходы ШИМ они обозначены знаком ~

Цифровые входы/выходы

Цифровые выходы работают в диапазоне от 0 до 5 Вольт, могут выдавать 0(LOW) или 1(HIGH).
Максимальный ток не должен превышать 40 мА, а общий ток контактов должен быть не более 200 мА.

Выходы которые можно использовать как ШИМ — это 3, 5, 6, 9, 10, 11 Про ШИМ подробно описано в Arduino Nano шим

0 (RX) и 1 (TX) используются для приёма (RX) и передачи (TX) данных TTL

2 и 3 — Внешнее прерывание

4 (SDA) и 5 (SCL) — Осуществляет связь I2C (TWI), Для работы с I2C (TWI) необходимо установить библиотеку Wire

10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) — для связи SPI. Для работы с SPI необходимо установить библиотеку SPI

13 — Встроенный светодиод, подключенный к цифровому выводу 13

AREF — Опорное напряжение для аналоговых входов

6 аналоговых(analog I/O) входов и питание

Цифровые входы/выходы

Аналоговые входы: A0-A5
Каждый разрешением 10 бит (может принять до 1024 значений). Работают в диапазоне от 0 до 5 Вольт(можно изменить диапазон выводом AREF).

Выводы питания:
VIN — Сюда подаётся питания от внешнего источника 6-20 Вольт, если вы будете питать плату не от разъёма USB.
5V — Можно запитать плату от источника напряжения 5 Вольт.
3,3V — С этого вывода можно снять напряжение 3,3 Вольт. Максимальное потребление тока 50 мА.
GND — Выводы заземления(«-» источника питания).

Разъем питания 6-20 Вольт и разъем USB

Разъём питания и USB

На разъём питания подаётся напряжение от источника питания 6-20 Вольт.

Разъём USB используется для связи с компьютером и для питания платы.

разъем ICSP

Разъём ICSP

ICSP — Контакты для программирования микроконтроллера (внутрисхемное программирование), не используя загрузчик.

Дополнительную информацию можно прочитать

Arduino Nano Pro Mini Uno Mega Сравнение Ардуино NANO — UNO — MEGA — Pro Mini
Arduino Nano описание Описание разных версий плат
Arduino Nano cnc shield Для удобства работы. Беспаечная сборка.
Arduino Nano datasheet Набор документации

Дополнительные файлы

Лучшие видео на YouTube

Изучаем Ардуино с нуля

Последнее из блога

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

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

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

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

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

Значение Датчиков Arduino в Проектах. Arduino, безусловно, стала неотъемлемой частью электронных проектов, благодаря своей доступности и простоте использования. Однако истинная сила Arduino раскрывается при использовании датчиков.

Разнообразие Датчиков Arduino и их Функциональность.Arduino, как платформа для создания электронных проектов, обрела огромную популярность благодаря своей простоте и гибкости. Однако, чтобы в полной мере раскрыть потенциал Arduino, необходимо понимание работы различных типов датчиков. В этой статье мы исследуем разнообразие датчиков Arduino, их функциональность и области применения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://narkolog.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-knd.ru/