Оглавление
Общие сведения
В высокопроизводительном 8-разрядном AVR RISC микроконтроллере ATmega328PB реализована технология управления питанием picoPower. Он имеет 32 КБ Flash-памяти с поддержкой чтения во время записи, 1 КБ EEPROM и 2 КБ ОЗУ. Пользователю доступны 27 линий ввода/вывода общего назначения, 32 регистра общего назначения, пять таймеров/счетчиков с расширенным функционалом и гибкими настройками, внутренние и внешние прерывания, 8-канальный 10-разрядный АЦП, программируемый сторожевой таймер с отдельным генератором, последовательные интерфейсы USART, TWI и SPI. МК сохраняет полную работоспособность в широком диапазоне напряжений питания от 1.8 В до 5.5 В. Оценить функциональный состав МК можно по блок-схеме на Рисунке 1.
![]() |
|
Рисунок 1. | Блок-схема микроконтроллера ATmega328PB. |
Для поддержки разработчиков компания предлагает оценочный набор ATMEGA328PB-XMINI (серия Xplained Mini), который может использоваться не только для знакомства с возможностями микроконтроллера, но также для разработки и отладки собственных приложений. Выполненная в Arduino-совместимом форм-факторе оценочная плата упростит интеграцию ATmega328PB в пользовательские устройства.
Элементы платы
Микроконтроллер ATmega32U2
Микроконтроллер ATmega32U2 обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт. Прошивка микросхемы 32U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется.
Пины питания
- VIN: Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.
- 5V: На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллеров ATmega328 и ATmega32U2. Запитывать устройство через вывод не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
- 3.3V: 3,3 В от стабилизатора платы. Максимальный ток вывода — 50 мА.
- GND: Выводы земли.
- IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.
Порты ввода/вывода
-
Цифровые входы/выходы: пины –
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно. -
ШИМ: пины ,,,, и
Позволяют выводить 8-битные аналоговые значения в виде ШИМ-сигнала. -
АЦП: пины –
6 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит. -
TWI/I²C: пины и
Для общения с периферией по синхронному протоколу, через 2 провода. Для работы — используйте библиотеку . -
SPI: пины , , , .
Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку . -
UART: пины и
Эти выводы соединены с соответствующими выводами микроконтроллера ATmega16U2, выполняющей роль преобразователя USB-UART. Используется для коммуникации платы Arduino с компьютером или другими устройствами через класс .
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
RX и TX | Мигают при обмене данными между STEMtera в режиме Arduino и ПК. |
L | Светодиод вывода микроконтроллера ATmega328. При отправке значения светодиод включается, при отправке – выключается. |
ON | Индикатор питания на платформе. |
Параметры
Parameters / Models | ATMEGA328P-15AZ | ATMEGA328P-AN | ATMEGA328P-ANR | ATMEGA328P-AU | ATMEGA328P-AUR | ATMEGA328P-AURA0 | ATMEGA328P-MMH | ATMEGA328P-MMHR | ATMEGA328P-MMHRA0 | ATMEGA328P-MN | ATMEGA328P-MNR | ATMEGA328P-MU | ATMEGA328P-MUR | ATMEGA328P-PN | ATMEGA328P-PU |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
# of Comparators | 1 | 1 | |||||||||||||
ADC Input | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | ||
ADC with Computation | No | No | No | No | No | No | No | No | No | No | No | No | No | ||
ADCC with Computation | No | No | |||||||||||||
Angular Timer | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Архитектура | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 |
CPU | 8-bit AVR | 8-bit AVR | |||||||||||||
CPU Type | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | 8-bit AVR | ||
CRC | No | No | No | No | No | No | No | No | No | No | No | No | No | ||
CRC/Scan | No | No | |||||||||||||
Class B Hardware | No | No | No | No | No | No | No | No | No | No | No | No | No | ||
EEPROM / HEF | 1024 | 1024 | |||||||||||||
Emulated EEPROM in Flash | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 | ||
High Voltage Capable | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
I2C | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Internal Oscillator | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Internal Voltage Reference, Bandgap | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Lead Count | 32 | 32 | 32 | 32 | 32 | 28 | 28 | 32 | 32 | 32 | 32 | 28 | 28 | ||
Math Accelerator | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Max # PWM outputs, including complementary outputs | 6 | 6 | |||||||||||||
Max 16 Bit Digital Timers | 1 | 1 | |||||||||||||
Max 16-Bit Digital Timers | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
Max 8 Bit Digital Timers | 2 | 2 | |||||||||||||
Max 8-Bit Digital Timers | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | ||
Max A/D Resolution, bits | 10 | 10 | |||||||||||||
Max ADC Resolution, Bits | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | ||
Max CPU Speed, МГц | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | ||
Max PWM outputs, including complementary | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | ||
Max. CPU Speed MHz | 20 | 20 | |||||||||||||
Количество компараторов | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
Рабочий диапазон температур, °C | от -40 до +85 | от -40 до +85 | |||||||||||||
Operation Voltage Max, В | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | 5.5 | ||
Operation Voltage Max.(V) | 5.5 | 5.5 | |||||||||||||
Operation Voltage Min, В | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | ||
Operation Voltage Min.(V) | 1.8 | 1.8 | |||||||||||||
Package Width | 7x7x1mm | 7x7x1mm | 7x7x1mm | 7x7x1mm | 7x7x1mm | 4x4x1mm | 4x4x1mm | 5x5x1mm | 5x5x1mm | 5x5x1mm | 5x5x1mm | .300in | .300in | ||
Peripheral Pin Select, PPS | No | No | |||||||||||||
Peripheral Pin Select / Pin Muxing | No | No | No | No | No | No | No | No | No | No | No | No | No | ||
Pin count | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
Размер памяти программ, KB | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
RAM, bytes | 2048 | 2048 | |||||||||||||
SPI | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
SRAM, Bytes | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | ||
Temp Range Max | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | ||
Temp Range Min | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | -40 | ||
Temp. Range Max. | 85 | 85 | |||||||||||||
Temp. Range Min. | -40 | -40 | |||||||||||||
Total # of A/D channels | 8 | 8 | |||||||||||||
UART | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Windowed Watchdog Timer, WWDT | No | No | |||||||||||||
Zero Cross detect | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Описание обеспечения
Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6 – 20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.
Микросхема FTDI FT232RL получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI, при этом светодиоды RX и TX мигают только при наличие сигнала высокого уровня на выводах 0 и 1.
На Arduino Nano доступны следующие контакты для доступа к питанию:
- Vin : Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.
- 5V : На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
- 3.3V : 3,3 В от стабилизатора микросхемы FT232RL. Максимальный ток вывода — 50 мА.
- GND : земля.
- IOREF : Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.
Распиновка и схема платы arduino nano.
Память
Микроконтроллер ATmega328 имеет 32 КБ флеш-памяти для хранения кода программы, 2 КБ используется для хранения загрузчика. ATmega328 имеет 2 КБ ОЗУ и 1 КБ EEPROM.
Ввод / вывод
Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX) – Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
- Внешнее прерывание: 2 и 3 – Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11 – Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) – Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13 – Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит. На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference().
- I2C: 4 (SDA) и 5 (SCL) – Посредством выводов осуществляется связь I2C (TWI).
- AREF – Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset – Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Описание пинов и распиновка платы Arduino Nano
На рисунке показаны номера и назначения контактов Arduino Nano (вид со стороны, на которой расположен микроконтроллер Atmega328):
Каждый из 14 цифровых контактов Nano может быть настроен как вход или выход с помощью функций pinMode (), digitalWrite () и digitalRead (). Контакты работают при 5 В. Каждый вывод имеет подтягивающий резистор 20-50 кОм и может выдерживать до 40 мА. Некоторые пины имеют специальные функции:
- Последовательная шина: 0 (RX) и 1 (TX). Контакты используются для приема (RX) и передачи (TX) данных TTL. Эти контакты подключаются к соответствующим контактам последовательного чипа FTDI USB to TTL.
- Внешнее прерывание: 2 и 3. Эти выводы могут быть настроены на запуск прерывания по наименьшему значению, по нарастающему или спадающему фронту или при изменении значения. Подробнее см. Функцию attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10 и 11. Любой вывод обеспечивает 8-битный ШИМ с помощью функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Эти контакты используются для связи SPI, которая, хотя и поддерживается оборудованием, не включена в язык Arduino.
- Светодиод: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если вывод имеет высокий потенциал, светодиод горит.
Платформа Nano имеет 8 аналоговых входов, каждый с разрешением 10 бит (т. Е. Может принимать 1024 различных значения). Стандартно контакты имеют диапазон до 5 В относительно земли, однако верхний предел можно изменить с помощью функции analogReference (). Некоторые пины имеют дополнительные функции:
I2C: A4 (SDA) и A5 (SCL). Связь I2C (TWI) осуществляется через контакты. Для создания используется библиотека Wire.
Дополнительная пара штифтов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с analogReference().
- Сброс настроек. Низкий уровень сигнала на выводе перезапускает микроконтроллер. Обычно он используется для подключения кнопки сброса на плате расширения, которая предотвращает доступ к кнопке на самой плате Arduino.
Расшифровка цвета
– серый цвет – физический вывод микроконтроллера Atmega328;
– светло-серый цвет (PD0, PD1 и т д.) – номер порта микроконтроллера, доступный для программ на ассемблере;
– зеленый цвет (ADC0 и т д.) – номера аналоговых выводов;
– синий цвет – контакты портов UART и SPI.
Назначение и обозначения выводов
USB – это USB-порт, предназначенный для подключения ардуины к компьютеру через USB-кабель (требуется разъем USB Mini-B).
VIN – сюда можно подавать питание от внешнего блока питания 7-12 В (блок питания приобретается отдельно). Напряжение будет подаваться на стабилизатор и упадет до 5 В. Поэтому оптимально на этот вывод подать примерно 9 В.
5V – через этот вывод можно запитать плату и от источника питания 5 вольт, однако напряжение должно быть более-менее стабильным, так как оно подается напрямую на микроконтроллер (стабилизатор не задействован), а значит высокое напряжение может убить основной микроконтроллер.
На этот вывод будет зафиксировано напряжение 3,3–3,3 В, которое генерируется внутренним стабилизатором платы. Этот вывод необходим для подключения некоторых внешних устройств, которым для работы требуется 3,3 В, обычно всех типов ЖК-дисплеев. Однако максимальный выходной ток не должен превышать 50 мА.
GND – Земля (заземляющий контакт).
AREF – это опорное напряжение для аналоговых входов. Используется по мере необходимости (настраивается с помощью analogReference()).
IOREF – позволяет узнать рабочее напряжение микроконтроллера. Редко используемый. На китайских столах он полностью отсутствует.
Reset – сбросить микроконтроллер, подать низкий уровень на этот вход.
SDA, SCL – вывод интерфейса TWI / I2C.
D0… D13 – цифровые входы / выходы. На контакте D13 висит встроенный светодиод, который загорается, если на контакте D13 ВЫСОКИЙ.
0 (RX), 1 (TX) – вывод порта UART (последовательный порт).
A1… A5 – аналоговые входы (также могут использоваться как цифровые).
Внешний вид платы Arduino Nano с подписанными выводами
Здесь:
Светодиоды RX + TX – светодиоды – мигают, когда данные передаются через последовательный порт UART (контакты RX и TX).
Кнопка сброса – кнопка перезапуска микроконтроллера;
(другие номиналы см выше)
FTDI USB Chip – микросхема FTDI FT323RL, используемая для подключения Arduino к компьютеру через USB-кабель. Со стороны Arduino это последовательный интерфейс. Этот интерфейс будет доступен на компьютере как виртуальный COM-порт (драйверы для микросхемы FTDI, обычно входящие в состав Arduino IDE, должны быть установлены).
Будет интересно Самые популярные проекты на Arduino
Схематично это выглядит так:
Номер пина, название, тип и описание пинов:
Генератор тактовой частоты
Но самым важным для нас в настоящее время является блок «Oscillator Circuits/Clock Generation» (Схема генератора/Генератор тактовой частоты).
В программе часто возникает необходимость сделать временную задержку в ее выполнении — паузу. А точную паузу можно организовать только методом подсчета времени. Время считаем исходя из количества тактов генератора микроконтроллера.
Да и не лишним будет заранее просчитать: успеет ли МК выполнить тот или иной фрагмент программы за отведенное для этого время.
В даташите ищем соответствующую главу: «System Clock and Clock Options» (Тактовый генератор и его параметры). В ней видим раздел «Clock Sources» (Источники тактового сигнала), в котором имеется таблица с перечнем видов тактовых сигналов. В этом разделе указано, что данный МК имеет встроенный тактовый RC-генератор. В разделе «Default Clock Source» имеется указание о том, что МК продается уже настроенным для использования встроенного RC-генератора. При этом тактовая частота МК — 1 МГц.
Из раздела «Calibrated Internal RC Oscillator» (Калиброванный RC-генератор) узнаем, что встроенный RC-генератор имеет температурный дрейф в пределах 7,3 — 8,1 МГц. Может возникнуть вопрос: если частота встроенного тактового генератора 7,3 — 8,1 МГц, то как была получена частота 1 МГц? Дело в том, что тактовый сигнал попадает в схемы микроконтроллера через программируемый делитель частоты (Об это рассказано в разделе «System Clock Prescaler»).
В данном микроконтроллере он имеет несколько коэффициентов деления: 1, 2, 4 и 8. При выборе первого мы получим частоту самого тактового генератора, при включении последнего — в 8 раз меньше, т.е., 8/8=1 МГц. С учетом вышесказанного получаем, что тактовая частота данного МК при включенном делителе с коэффициентом 8 будет в пределах от 7,3/8 = 0,9125 МГц (9125 КГц) до 8,1/8 = 1,0125 МГц.
Обратите внимание на один ну очень важный факт: стабильность частоты дана при температуре МК 25 градусов по шкале Цельсия. Вспомним, что внутренний генератор выполнен по RC схеме
А емкость конденсатора очень зависит от температуры!
Подключение и настройка
STEMTera состоит из двух частей, каждая из которых управляется отдельным микроконтроллером.
- Первая построена на микроконтроллере ATmega328P и повторяет архитектуру Ардуино. Это означает полную совместимость с Arduino Shield’ами.
- Вторая базируется на микроконтроллере ATmega32U2, который служит для связи микроконтроллера ATmega328 с USB-портом компьютера.
В отличии от Arduino Uno, на STEMTera выведены пины микроконтроллера ATmega32U2, которыми можно управлять через Atmel Studio.
Рассмотрим более подробно оба варианта подключения.
Пример работы ATmega328
- Соедините STEMTera с компьютером по USB-кабелю. На плате должен загореться светодиод «ON».
-
Соберите на новоиспечённой макетной плате первый эксперимент из набора Матрёшка — маячок.
-
Для программирования платформы STEMTera в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino IDE. В диспетчере устройств платформа должна определиться как COM-порт с именем .
После загрузки примера, светодиод на пине и встроенный светодиод , начнут мигать раз в секунду. Это значит всё получилось и можно смело переходить к экспериментам на Arduino.
Пример работы ATmega32u2
Микроконтроллер ATmega32U2 при стандартной прошивке обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера.
Но в отличии от Arduino Uno, на STEMTera выведены пины микроконтроллера ATmega32U2.
После перепрошивки STEMTera не будет определяться как виртуальный в диспетчере устройств и микроконтроллер ATmega328 будет недоступен. Для восстановления доступа, прошейте ATme32U2 стандартной прошивкой.
Повторим эксперимент «маячок», но на этот раз мозгом устройства будет ATmega32U2.
Соедините STEMtera с компьютером по USB-кабелю. На плате должен загореться светодиод «ON».
Откройте «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)». Вы должны увидеть следующую картину:
Запустите плату STEMtera в режиме программирования Atmega32U2. Для этого с помощью провода «папа-папа» замкните пин с землёй.По истечению — секунд снимите провод «папа-папа»
Обратите внимание плата STEMtera определилась как устройство :
Повторите задание «маячок». Но светодиод вместо пина, подключите к пину .
Для работы STEMtera с микроконтроллером ATmega32U2 в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки микроконтроллеров семейства AVR — Atmel Studio.
Прошейте платформу примером приведённым ниже:blink
// подключаем необходимые библиотеки
#include
#define F_CPU 16000000
#include
#include
int main(void)
{
// порт B в режим выхода
DDRB = 0xFF;
// устанавливаем нули на выходе
PORTB = 0x00;
while (1)
{
// зажигаем светодиод
PORTB |= (1
Это значит всё получилось и можно дальше продолжать программировать более серьёзными программами.
OCM1C2 – модулятор выходов таймеров
Встроенный модулятор Output Compare Modulator (OCM) позволяет генерировать модулированные сигналы. Он использует выходы блоков сравнения (Output Compare Unit B) двух появившихся в ATmega328PB новых 16-разрядных таймеров/счетчиков Timer/Counter3 и Timer/Counter4, о которых было сказано выше. Когда работа модулятора разрешена, два выхода каналов сравнения образуют модулятор, где один канал служит источником несущей частоты, а другой – модулирующей, как это показано на Рисунке 3.
![]() |
|
Рисунок 3. | Блок-схема модулятора выходов таймеров. |
Выходы блоков сравнения Output Compare 3B и Output Compare 4B совместно используют один вывод порта PD2. Имея более высокий приоритет, выходы блоков сравнения (OC3B и OC4B) переопределяют конфигурацию вывода PD2, заданную битом PORTD2. Когда OC3B и OC4B разрешены одновременно, автоматически разрешается работа модулятора.
Монтаж компонентов
Одна из самых сложных задач проекта заключалась в монтаже элементов на печатную плате, поскольку достаточно большое их количество требовало различных методов пайки и соответствующего оборудования (Рисунок 6).
Рисунок 6. | Внешний вид печатной платы ИК-термометра. |
Для пайки элементов потребуются микроскоп или лупа, печь оплавления для пайки МК и микросхемы повышающего преобразователя, паяльник с тонким жалом
Ввиду наличия подложки следует обратить внимание на качество пайки микросхемы повышающего преобразователя
На плате вы заметите несколько сквозных отверстий под разъемы. Эти отверстия предназначены для подключения компонентов за пределами печатной платы: лазерного светодиода, OLED дисплея, разъема microUSB для зарядки, контактов отсека аккумулятора, а также сигналов интерфейса внутрисхемного программирования МК.
Программный код и программирование МК
В скетче Arduino используются библиотеки для работы с OLED экраном, отображения графических элементов и библиотека для ИК-датчика.
Для программирования микроконтроллера на плате предусмотрены контакты подключения внутрисхемного программатора, но можно в качестве программатора использовать другую плату Arduino Uno/Nano (Arduino as ISP; соответствующий скетч поставляется с Arduino IDE) [].
Изначально автор пытался использовать режим пониженного энергопотребления (sleep) МК в случае продолжительной работы, однако реализовать стабильную работу прибора с использованием режимов пониженного энергопотребления не удалось.
Точность измерения температуры зависит только от ИК-датчика и его состояния, поскольку калибруется он в заводских условиях. Зуммер срабатывает при превышении установленного порога температуры, значение которой задается в программе МК (установлено значение 120 °С).
Дополнительные порты ввода/вывода
В ATmega328PB добавлен дополнительный 4-битный порт ввода/вывода PORTE (Таблица 1). Две линии ввода/вывода PE2 (вывод 19) и PE3 (вывод 22) мультиплексированы с входами АЦП ADC6 и ADC7. Выводы 3 (GND в ATmega328) и 6 (VCC в ATmega328) заменены на линии ввода/вывода PE0 и PE1, соответственно, при этом PE0 выполняет альтернативную функцию выходного канала аналогового компаратора ACO.
Таблица 1. | Функциональные отличия портов ввода/вывода ATmega328PB |
||||||||||||||
|
ATmega328PB стал первым 8-разрядным МК семейства AVR с интегрированным контроллером сенсорного интерфейса QTouch (Peripheral Touch Controller, PTC), обрабатывающим сигналы емкостных сенсоров для определения касания. Как правило, внешние емкостные сенсоры формируются на печатной плате, а их электроды подключаются непосредственно к аналоговому интерфейсу PTC посредством мультиплексирования линий ввода/вывода в микроконтроллере. PTC поддерживает режимы работы как с определением собственной емкости сенсоров, так взаимной.
Первый режим обеспечивает возможность подключения к МК 24 сенсорных кнопок, второй – 144 кнопок. Отлично зарекомендовавшая себя технология QTouch и гибкость настроек контроллера позволяют использовать одновременно оба типа сенсоров, при этом для одного электрода требуется один вывод микроконтроллера. Аппаратная фильтрация, автоматическая калибровка и рекалибровка сенсоров, встроенные схемы компенсации паразитной емкости и регулировка чувствительности повышают надежность сенсорного интерфейса и исключают необходимость использования каких-либо внешних компонентов (Рисунок 2).
Рисунок 2. | Блок-схема контроллера QTouch в режиме определения собственной емкости сенсоров. |
Разработка и отладка сенсорного интерфейса для приложений на МК ATmega328PB поддерживается программной средой QTouch Composer с библиотекой QTouch Library, в которой можно создавать различные комбинации сенсорных кнопок, слайдеров, колес и датчиков приближения.