Схемы на atmega32 своими руками

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024


Таймеры помимо прерывания по переполнению, могут работать в режиме захвата значения, это означает что по пришествии импульса на ногу ICP значение счетчика копируется в регистр хранеия Input Capture, затем взяв это значение и проведя несложные манипуляции, можно узнать период изменяющегося сигнала или его частоту. Для примера использую atmega32 и выведу показания на ЖКИ дисплей. Вывод ICP в atmega32 находится на 20 ноге (PortD.6), туда и будет заводиться сигнал.


В продолжение к предыдущей статье о работе с дисплеем от Nokia3310 в Bascom-AVR выкладываю доработанную библиотеку с поддержкой кириллических символов.


Когда телефоны были большими, а экранчики в них маленькие, протоколы общения между ними были очень просты. Учитывая цену на них сейчас, использовать такие дисплеи в своих проектах одно удовольствие. Например, дисплей от Nokia 3310 достался мне за 55 руб.

Это монохромный дисплей разрешением 48х84 пикселя и вместимостью 6 строк текста по 14 символов в каждой строке, работой заправляет контроллер PCD8544 поддерживающий последовательный интерфейс связи.


Попробовал собрать простенькое устройство отображения уровня аудиосигнала (VU-meter). В проекте задействованы ATMega32 и ЖКИ индикатор 16х2 подключенный по 4-х битной шине. Само устройство по большому счету выполняет роль двух канального вольтметра, только вывод информации организован не в линейной зависимости, а в логарифмической. Это связано с нашей анатомической особенностью восприятия звука.



Для измерения температуры в бытовых целях хорошо подходят цифровые датчики DS18B20. Эти датчики способны измерять температуру в пределах от -55 до 125 °C, с заявленной точностью от производителя в 0,5 °C. Для большинства гражданских нужд такой диапазон и такая точность измерения вполне приемлема (какую-нибудь систему термоконтроля собрать или еще чего). Поэтому решил попрактиковаться с этим датчиком, обязательно пригодится.



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

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

Механический энкодер внешне очень похож на переменый резистор, такой же трехногий и с крутилкой. Но в отличии от переменника, энкодер не имеет фиксаторов угла поворота, тоесть его можно крутить сколько угодно.


Аналогово-Цифровой Преобразователь служит для преобразования аналогового сигнала на входе в цифровую форму, понятную для МК. Практически во всех современных микроконтроллерах от AVR имеется 10 битный АЦП, позволяющий оцифровывать аналоговый сигнал с дискретностью 1024 значений. Этого достаточно чтобы, например, делать замеры напряжений (в разумных пределах), снимать показания с различных датчиков, таких как фотодиод и термопара, делать анализаторы спектра и многое другое.


Когда нужно подключить большое количество светодиодов, а тратить драгоценные пины микроконтроллера совсем не хочется (или чаще всего такого количества ног просто напросто нет), на помощь могут придти микросхемы-дешифраторы. Например дешифратор 74HC154 (наш аналог ИД3), который выставляет определенный выход в активное состояние в зависимости от 4х битного числа на входе.

Представляем интересное устройство из серии МК Atmega8 + LCD от Nokia 3310. Это графический анализатор напряжения, выполненный на основе микроконтроллера ATMEGA8A и его внутреннего преобразователя. Это что-то вроде цифрового осциллографа, однако до полноценного осциллографа он не дотягивает, в основном из-за частотных ограничений преобразователя, а также самого контроллера. АтМега работает с внешним кварцем 16 МГц. Устройство должно было быть просто карманным диагностическим прибором. Оно служит в качестве осциллографа, но также может служить вольтметром с графической визуализацией формы напряжения.

Принципиальная схема на Atmega8

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

Вначале планировалось переключать делитель напряжения с коэффициентами 1/25, 1/12,5, 1/5 и 1/1, но не нашлось достаточно места в коде для автоматического переключения делителей, поэтому остался один – 1:12,5, и таким образом диапазон измерения составляет от 0 до 62 В. Использование одного делителя стоило потери разрешения измерения до ≈0,06 В. Из-за пределов частоты в 10 бит разрешение сэмплов показало правильную индикацию времени примерно до 2 кГц.

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

Функции анализатора

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

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

Временная шкала изменяется с помощью правой и левой клавиш, а кнопка OK используется для остановки измерения и отображения стабилизированного сигнала на ЖК-дисплее. После повторного нажатия клавиши ОК устройство возвращается к динамической визуализации. Вы также можете нажать в режиме остановленного измерения правую или левую клавишу, после чего появится курсор, который можно установить с помощью этих клавиш. После нажатия OK появляется второй курсор, при установке второго курсора в нижней части экрана отображается время от одного курсора до следующего (для расчета времени импульса, времени нарастания / спада и так далее). Отмечая весь период между курсорами и нажимая ОК внизу, преобразованное значение времени появляется в частоте, а следующее нажатие клавиши OK вызывает возврат к динамической визуализации.

Конструкция прибора

Программа написана на языке C, Atmega в корпусе TQFP-32, плата выполнена с термопереносом, компоненты SMD спаяны вручную, аккумуляторная батарея 9 В стабилизирована на 5 В, потребляемый ток около 10 мА.

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

Этот дисплей имеет 6 строк по 84 байта, то есть разрешение составляет 48×84 пикселей. В качестве рабочего поля использовано поле пикселей 40X84, последняя строка 6X84 осталась для отображения значения. Ширина 84 пикселя означает, что 84 сэмпла достаточно для отображения формы сигнала на ЖК-дисплее. Сэмплы записываются в массив в цикле который ничего не делает, кроме как сохраняет на максимальной частоте, какой преобразователь будет перетаскивать сэмплы в массив. После заполнения массива программа всплывает в цикле рисования пикселей, значение Х является следующим адресом одномерного массива, в котором хранятся выборки, адрес У равен 39 измеренному значению, умноженному на 10 и на коэффициент вертикальной шкалы.

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

Испытания вольтметра

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

  • 1,00 В – +0,05 В
  • 5,00 В – +0,12 В
  • 9,00 В – +0,22 В
  • 30,00 В – +1,3 В

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

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

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

Принципиальная схема на Atmega32

ГРАФИЧЕСКИЙ АНАЛИЗАТОР НАПРЯЖЕНИЯ

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

m1284 breakout schematic

Мой вариант печатной платы под AtMEGA 16/32/644/1284 (TQFP-44 0.8mm).
Оригинал разводился еще в древнем Eagle 5.6.0.
Было интересно, получится ли провести экспорт в KiCad 5.xx.
И да — все прошло на удивление гладко, герберы успешно сгенерированы, и приняты на производство PCBWAY.

Схема

m1284p breakout 3D top

KiCad 3D render top

m1284 breakout 3D bottom

KiCad 3D render bottom

m1284p breakout pinmap

Пинмап (нотация Sanguino)

Коротко об особенностях схемы:
Выведены кнопка (SW1/PC5) и светодиод (LED1/PC4).
External pull-up на UART RX0/RX1.
Резистивные делители под 3.3V-TTL на UART ТX0/ТX1.
SPI пины под 3 устройства тк. на них подключается:
Ethernet (Wiz5500/ENC28J60), Sd-Card, CAN MCP2515 и тд…
Диод на входе питания защита от переполюсовки,
небольшой радиатор на K142EH5/xx7805 может греться довольно сильно,
при подключении Ethernet ENC28J60 (WIZ5500 потребляет значительно меньше
и стабилизатор почти не греется).

Отлично стыкуется с CP2102 — еще один переходник USB-COM.
При этом получается система со сдвоенным внешним/USB питанием, и возможностью загрузки(Optiboot например)/отладки кода через USB-Com.

PS.
Для Arduino-страждущих совместима с Sanguino или Mightycore (с этой не тестил).

продаётся раскрученный сайт недорого обращаться в личку


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

ТЕСТЕР ПОЛУПРОВОДНИКОВЫХ РАДИОЭЛЕМЕНТОВ НА МИКРОКОНТРОЛЛЕРЕ


Обычное управление лампами в квартире осущесствляется простыми выключателями: включил свет - выключил. Более продвинутые модели, что можно найти в продаже по цене около 5уе, могут плавно регулировать яркость света, но гораздо функциональнее использовать для управления светом лампочек микроконтроллер. Особенности DIMMER-а:

Схема подключения Диммераа


Предлагаю всем радиолюбителям для повторения схему проверенного ампервольтметра на микроконтроллере 16F676. Разрабатывалась она под блок питания, схема лабораторного БП показана в статье ниже. А/В-метр позволяет производить измерения напряжения от 0-50 вольт, амперы - от 0-10 ампер. Работает устройство прекрасно в течении уже довольно длительного времени.

ЛАБОРАТОРНЫЙ БП С ЦИФРОВЫМ АМПЕРВОЛЬТМЕТРОМ


Изготовление самодельной станции для паяния


Цифровая паяльная станция. Зачем она нужна и каковы её преимущества? Причин много: кому-то надоели отслоившиеся дорожки, кто-то подогревает паяльник зажигалкой или на газу, так как не может выпаять массивную деталь, у кого-то пробивает спираль на корпус и бьется током, кому-то нужно очень точно контролировать температуру жала паяльника, а кто просто хочет перейти на современную SMD элементную базу



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


Недавно успешно собрал зарядное устройство, и понадобился мне хороший малогабаритный индикатор вольт и тока заряда. Решил собрать самый простенький ампервольтметр на МК Attiny26 с LCD дисплеем WH08х02. Уменьшенная копия принципиальной электрической схемы ниже:

АМПЕРВОЛЬТМЕТР НА ATTYNY26


Вид собранного ESR метра

Настройка ESR

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


Понадобился мне тут термометр в инкубатор, а так как термостат у меня уже стоит, то буду делать только сам термометр

Паяем резисторы к индикатору led


вольтамперваттметр - детали

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

Виды и устройство микроконтроллеров AVR

AVR – это название популярного семейства микроконтроллеров, которое выпускает компания Atmel. Кроме АВР под этим брендом выпускаются микроконтроллеры и других архитектур, например, ARM и i8051.

Какими бывают AVR микроконтроллеры?

Микроконтроллеры AVR

Существует три вида микроконтроллеров:

Attiny – из названия видно, что младшее (tiny – юный, молодой, младший), в основном имеют от 8 пинов и более. Объём их памяти и функционал обычно скромнее, чем в следующем;

Atmega – более продвинутые микроконтроллеры, имеют большее количество памяти, выводов и различных функциональных узлов;

Микроконтроллеры Attiny

Самым мощным подсемейством микроконтроллеров является xMega – эти микроконтроллеры выпускаются в корпусах с огромным количеством пинов, от 44 до 100. Столько необходимо для проектов с большим количеством датчиков и исполнительных механизмов. Кроме того, увеличенный объем памяти и скорость работы позволяют получить высокое быстродействие.

Микроконтроллер Atmega

Для чего нужны и на что способны микроконтроллеры?

Микроконтроллеры применяются почти везде! Практически каждое устройство в 21 веке работает на микроконтроллере: измерительные приборы, инструменты, бытовая техника, часы, игрушки, музыкальные шкатулки и открытки, а также многое другое; одно лишь перечисление займет несколько страниц текста.

Разработчик может использовать аналоговый сигнал подовая его на вход микроконтроллера и манипулировать с данными о его значении. Эту работу выполняет аналогово-цифровой преобразователь (АЦП). Данная функция позволяет общаться пользователю с микроконтроллером, а также воспринимать различные параметры окружающего мира с помощью датчиков.

Микроконтроллер AVR на макетной плате

В распространенных AVR-микроконтроллерах, например, Atmega328, который на 2017 году является сердцем многих плат Arduino, но о них позже. Используется 8 канальный АЦП, с разрядностью 10 бит. Это значит вы сможете считать значение с 8 аналоговых датчиков. А к цифровым выводам подключаются цифровые датчики, что может быть очевидным. Однако цифровой сигнал может являться только 1 (единицей) или 0 (нулем), в то время как аналоговый может принимать бесконечное множество значений.

Цифровой и аналоговый сигналы

Пояснение:

Разрядность – это величина, которая характеризует качество, точность и чувствительность аналогового входа. Звучит не совсем понятно. Немного практики: 10 битный АЦП, записать аналоговую информацию с порта в 10 битах памяти, иначе говоря плавно изменяющийся цифровой сигнал микроконтроллером распознается как числовое значение от 0 до 1024.

12 битный АЦП видит тот же сигнал, но с более высокой точностью – в виде от 0 до 4096, а это значит, что измеренные значения входного сигнала будут в 4 раза точнее. Чтобы понять откуда взялись 1024 и 4096, просто возведите 2 в степени равную разрядности АЦП (2 в степени 10, для 10 разрядного и т.д.)

Чтобы управлять мощностью нагрузки к вашему распоряжению есть ШИМ-каналы, их можно задействовать, например, для регулировки яркости, температуры, или оборотов двигателя. В том же 328 контроллере их 6.

В общем структура AVR микроконтроллера изображена на схеме:

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

АЛУ – арифметико-логическое устройство. Нужно для выполнения вычислении.

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

Прерывания – что-то вроде события которое возникает по внутренним или внешним воздействиям на микроконтроллер – переполнение таймера, внешнее прерывание с пина МК и т.д.

JTAG – интерфейс для внутрисхемного программирования без снятия микроконтроллера с платы.

Flash, ОЗУ, EEPROM – виды памяти – программ, временных рабочих данных, долгосрочного хранения независимая от подачи питания к микроконтроллеру соответственно порядку в названиях.

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

A/D (Analog/Digital) – АЦП, его назначение мы уже описали ранее.

WatchDogTime (Сторожевой таймер) – независимый от микроконтроллера и даже его тактового генератора RC-генератор, который отсчитывает определенный промежуток времени и формирует сигнал сброса МК, если тот работал, и пробуждения – если тот был в режиме сна (энергосбережния). Его работу можно запретить, установив бит WDTE в 0.

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

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Что нужно чтобы начать изучение микроконтроллеров?

Для начала нужно приобрести сам микроконтроллер. В роли первого микроконтроллера может быть любой Attiny2313, Attiny85, Atmega328 и другие. Лучше выбирать ту модель, которая описана в уроках, по которым вы будете заниматься.

Attiny2313

Следующее что Вам нужно – программатор. Он нужен для загрузки прошивки в память МК, самым дешевым и популярным считается USBASP.

Программатор

Немногим дороже, но не менее распространенный программатор AVRISP MKII, который можно сделать своими руками – из обычной платы Arduino

Программатор AVRISP MKII

Другой вариант – прошивать их через USB-UART переходник, который обычно делается на одном из преобразователей: FT232RL, CH340, PL2303 и CP2102.

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

Микроконтроллер AVR с аппаратной поддержкой USB

Интересно: Bootloader – это обычная программа для микроконтроллера, только с необычной задачей – после его запуска (подключения к питания) он ожидает какое-то время, что в него могут загрузить прошивку. Преимуществом такого метода – можно прошить любым USB-UART переходником, а они очень дешевы. Недостаток – долго загружается прошивка.

Для работы UART (RS-232) интерфейса в микроконтроллерах AVR выделен целый регистр UDR (UART data register). UCSRA (настройки битов приемопередатчика RX, TX), UCSRB и UCSRС – набор регистров отвечающие за настройки интерфейса в целом.

В чем можно писать программы?

Кроме программатора для написания и загрузки программы нужно IDE – среда для разработки. Можно конечно же писать код в блокноте, пропускать через компиляторы и т.д. Зачем это нужно, когда есть отличные готовые варианты. Пожалуй, один из наиболее сильных – это IAR, однако он платный.

Официальным IDE от Atmel является AVR Studio, которая на 6 версии была переименована в Atmel studio. Она поддерживает все микроконтроллеры AVR (8, 32, xMega), автоматически определяет команды и помогает ввести, подсвечивает правильный синтаксис и многое другое. С её же помощью можно прошивать МК.

Смотрите также подробные обучающие видеокурсы по программированию микроконтроллеров для начинающих Максима Селиванова: Программирование и создание устройств на микроконтроллерах AVR.

Программирование микроконтроллера

Самый простой способ изучить AVR

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

Arduino UNO

Несколько фактов:

своим собственным – wiring;

стандартная среда для разработки – Arduino IDE;

Эксперименты с Arduino UNO

Выводы

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

Читайте также: