Схемы на атмега8 своими руками

Добавил пользователь Валентин П.
Обновлено: 10.09.2024

Мостовая схема на транзисторных ключах может применяться для коммутации (включения, отключения, реверса и т.д.) маломощного электродвигателя постоянного тока. Если в качестве ключей S1-S4 в схеме поставить оптопары то таким образом можно осуществить гальваническую развязку мостовой схемы и схемы управления если при этом мостовую схему и схему управления питать разными источниками. На рисунке 1 изображена схема управления электродвигателем микроконтроллером ATmega8 через оптопары и транзисторный мост:

Управление электродвигателем микроконтроллером ATmega8.

Рисунок 1 - Схема управления электродвигателем микроконтроллером ATmega8

Мост и система управления в схеме на рисунке 1 подключены к разным источникам с одинаковым напряжением 5В. Светодиоды VD1 -VD4 показывают какая пара транзисторов моста работает VT1 и VT4 или VT2 и VT3. В мостовой схеме из предыдущей статьи в цепях коллекторов транзисторов VT3 и VT4 были резисторы с сопротивлением 56 Ом, в этой схеме на рисунке 1 этих резисторов нет так как из за них уменьшается мощность передаваемая двигателю но резисторы в цепях коллекторов транзисторов VT1 и VT2 оставлены для ограничения тока. Ниже приведен исходный код программы на языке C++ для микроконтроллера:

Исходный код компилировался в среде WinAVR, hex файл прошивался в микроконтроллер с помощью программы ponyprog2000. В схеме на рисунке 1 транзистор какой либо оптопары должен открываться при подаче нуля в соответствующий порт но несмотря на это микроконтроллер работал как надо после прошивки в него приведенной программы.

Доработка схемы управления электродвигателем.

В схеме управления электродвигателем из предыдущей статьи используются четыре бита порта D микроконтроллера, количество используемых битов можно уменьшить что позволит управлять большим количеством двигателей, упростить программу и уменьшить занимаемый объем памяти в микроконтроллере. Если соединить последовательно диоды оптопар открывающих транзисторы на диагонали моста для каждой диагонали то подача сигнала с микроконтроллера на одну из последовательно соединенных пар диодов приведет к открытию транзисторов на одной из диагоналей. Таким образом можно использовать один бит порта для управления транзисторами на одной из диагоналей. Для управления электродвигателем можно использовать одну из схем на рисунке 1 или на рисунке 2.

Рисунок 1 - Схема управления электродвигателем микроконтроллером 1

Рисунок 2 - Схема управления электродвигателем микроконтроллером 2

По идее в первой схеме для открытия нужных транзисторов в соответствующий бит подается ноль, например для открытия транзисторов VT2 и VT3 в нулевой бит порта D (PD0) подается ноль следовательно напряжение на нем падает это приводит к тому что к диодам оптопар DD3 и DD5 прикладывается прямое напряжение в результате этого диоды оптопар светятся а их транзисторы открываются что приводит к открытию транзисторов VT2 и VT3. Во второй схеме открытие происходит при подаче единицы, например при подаче единицы в нулевой бит порта D открываются диоды оптопар DD3 и DD5.

Трансформаторный преобразователь напряжения

Транзисторный мост рассматриваемый, в предыдущих статьях, как схема для коммутации электродвигателя может использоваться как инвертор напряжения (преобразователь постоянного напряжения в переменное) если диагональные транзисторы включать поочерёдно с требуемой частотой. Используя трансформатор можно повысить или понизить это напряжение до требуемого уровня. Преобразованное напряжение можно выпрямить выпрямителем и получить преобразователь постоянного напряжения. Схема управления электродвигателем микроконтроллером дополнена транзисторами VT2, VT5, VT4, VT7 включенными как обратные диоды, в диагональ моста включена первичная обмотка повышающего напряжение трансформатора Т1. Схема представлена на рисунке 1.

Рисунок 1 - Схема преобразователя

Первичная обмотка w1 содержит около 21 витков алюминиевым проводом, вторичная w2 около 400 витков тонким медным проводом, сердечник использован от трансформатора строчной развёртки ТВС-110П3.

Напряжение на первичной обмотке составляло примерно 1.5 В.


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


Действующее напряжение трансформатор повышает примерно в 20 раз. Программа для управления электродвигателем микроконтроллером дополнена кодом для преобразователя напряжения. При нажатии на кнопку SB1 подключенную к четвёртому биту порта C срабатывает старый код который можно убрать. В коде для работы преобразователя напряжения, в отличии от кода для управления двигателем, используется функция _delay_us для создания задержки в микросекундах.

Ниже приведен исходный код программы на языке C++ для микроконтроллера:

int main( void ) // начало основой программы

DDRD = 0xff ; /* все выводы порта D сконфигурировать как выходы */

DDRC = 0x00 ; //выводы порта С сконфигурировать как входы

PORTC = 0xff ; // установить "1" на всех выводах порта C,

//включаем подтягивающие резисторы

while ( 1 ) // Бесконечный цикл

_delay_ms(250); // Ждем 250*8 мсек .

_delay_ms( 250 ); // Ждем 250*8 мсек .

_delay_ms( 250 ); // Ждем 250*8 мсек .

_delay_ms( 500 ); // Ждем 500*8 мсек .

_delay_us( 5 ); // Ждем 5*8 мксек .

_delay_us( 5 ); // Ждем 5*8 мксек .

> // закрывающая скобка основной программы

Исходный код компилировался в среде WinAVR, hex файл прошивался в микроконтроллер с помощью программы ponyprog2000

Удвоитель для преобразователя напряжения.

Удвоитель напряжения осуществляет выпрямление и увеличение, в два раза, переменного напряжения. На рисунке 1 представлен трансформаторный преобразователь напряжения дополненный удвоителем напряжения на элементах VD5, VD6, C1, C2 и конденсатором С3 на выходе.

Рисунок 1 - Трансформаторный преобразователь напряжения с удвоителем.

При каждом полупериоде переменного напряжения, на обмотке w2, заряжается либо конденсатор C1 либо конденсатор C2. Конденсатор C3 заряжается суммой напряжений на конденсаторах C1 и C2. Положительное напряжение будет на выводе конденсатора C3 подсоединенном к катоду диода VD5, отрицательное на выводе подсоединенном к аноду диода VD6. Схема на рисунке 1 представляет собой преобразователь постоянного напряжения так как преобразует постоянное напряжение питания в повышенное постоянное напряжения на выходе к которому может быть подключена нагрузка.

Постоянное напряжение на выходе составило примерно 80В:


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

Умножитель ун9/27-1.3 в преобразователе напряжения.

Если напряжение на вторичной обмотке большое и/или напряжение требуется увеличить до большей величины то удобнее использовать готовый умножитель например ун9/27-1.3 из старого телевизора. Схема приведена на рисунке 1:

Рисунок 1 - Преобразователь напряжения с умножителем ун9/27-1.3


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



На изображении ниже показана собранная схема преобразователя с умножителем.



Напряжение на выходе составило примерно 150 В.

Светодиодная мигалка на микроконтроллере ATmega8.

Использование микроконтроллеров существенно упрощает построение светодиодных мигалок. Светодиодная мигалка - это, наверное, одно из самых подходящих устройств для изготовления новичками в области построения схем на микроконтроллерах. Здесь приведен пример построения мигалки и исходный код для микроконтроллера ATmega8 на языке C++. Рассмотрим схему приведенную на рисунке:

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


int main(void)
DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */
DDRC = 0x00; //выводы порта С сконфигурировать как входы

PORTC = 0xff; // установить "1" на всех выводах порта C,
// включаем подтягивающие резисторы

int i=0; //для задержек
int j=0; //для смены битов порта D
int d=20; //для изменения периода миганий
int sw=0; //для изменения режимов миганий

while (1) // Бесконечный цикл
if (!(PINC & (1
sw++; //преключить режим миганий
if(sw>4)sw=0;
>
if (!(PINC & (1
d+=20; //увеличить период миганий
if(d>260)d=20;
>

switch(sw)
case 0:
DDRD |= 1 for(i=0;i DDRD &= ~(1 for(i=0;i j++;
if(j>3)j=0;
break;
case 1:
DDRD |= 1 for(i=0;i DDRD &= ~(1 for(i=0;i j--;
if(j break;
case 2:
DDRD &= ~(1 for(i=0;i DDRD |= 1 for(i=0;i j++;
if(j>3)j=0;
break;
case 3:
DDRD &= ~(1 for(i=0;i DDRD |= 1 for(i=0;i j--;
if(j break;
case 4:
DDRD=0xff;
for(i=0;i DDRD=0x00;
for(i=0;i break;
>
>

При каждой итерации цикла while проверяется нажатие кнопок. Если нажата кнопка SB1 то переменная sw инкрементируется. Если переменная sw равна нулю (это проверяет команда switch) то в нулевой бит порта D записывается единица, потом происходит задержка, после чего в этот бит записывается ноль, затем снова задержка, потом переменная j инкрементируется и, если кнопка SB1 не была нажата, то все повторяется для следующего бита и таким образом происходит "движение светодиода", когда переменная j становится больше трех, ей присваивается ноль и все повторяется. Если нажимается кнопка SB1 то sw увеличивается и если она была равна нулю то она становиться равной единице и тогда происходит тоже что и при sw равной нулю только j теперь не инкрементируется а декрементируется (за счёт этого "движение светодиода" происходит в другую сторону) а при становлении j меньше нуля ей присваивается 3 и всё повторяется. Если sw равно двум или трем то происходит тоже только "бегущий светодиод" инвертирован, потому что порядок записи нуля и единицы в биты портов изменен. Если sw равно четырем то мигают все светодиоды. Если нажата кнопка SB2 то переменная d увеличивается на 20 и т.о. увеличиваются все задержки, следовательно увеличивается период мигания светодиодов при всех режимах. Если d>260 то ей снова присваивается значение 20 и период миганий резко уменьшается (частота увеличивается).

Исходный код компилировался в hex файл программой WinAVR. hex файл записывался в микроконтроллер программой PonyProg

Счётчик на ATmega16.

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

Рисунок 1 - Счётчик на ATmega16

Резистор R1 и конденсатор C1 предназначены для сглаживания пульсаций напряжения возникающих в результате дребезга контактов при нажатии и отпускании кнопки SB1. Резистор R2 предназначен для ограничения вытекающего из микроконтроллера тока. На светодиоды VD1-VD8 должно выводиться двоичное число (светодиод горит это 1, светодиод не горит это 0).

В микроконтроллер записывалась программа:

ISR(INT0_vect)//вызывается при возникновении прерывания по фронту int0
i++;
if(i>0xff)
i=0x00;
>
PORTA=i;
>

int main(void) // начало основой программы
//конфигурация портов ввода/вывода
DDRA = 0xff;//0xff = 0b11111111 все выводы порта A сконфигурировать как выходы
DDRD = 0x00;//0x00 = 0b00000000 все выводы порта D сконфигурировать как входы
PORTD = 0xff;//включить подтягивающие резисторы на все выводы порта D
//инициализация прерывания
GICR |= 0x40;//0x40 = 0b01000000 разрешить прерывания на int0
MCUCR |= 0x3;//0x3 = 0b00000011 прерывания по фронту int0
sei();//разрешить все прерывания, cli()- запретить

while (1)//основной цикл


Для подсчёта количества импульсов используется прерывание по фронту импульса напряжения на выводе INT0 для этого в регистр MCUCR записано шестнадцатеричное число являющееся результатом операции логического сложения числа 0x3 (3 - само число 0x - приставка обозначающая то что это число шестнадцатеричное) и числа которое там до этой записи было, а там, скорее всего, был ноль по умолчанию. В MCUCR можно было бы записать это число в двоичном виде (т.е. логического сложения) так: MCUCR = 0b00000011, это было было бы проще и нагляднее но так не принято делать. Так как прерывание возникает при приходе фронта импульса (т.е. при переходе из низкого (0) уровня напряжения в высокое (1)) а нажатие кнопки делает ноль на выводе INT0 то прерывание будет возникать при отпускании кнопки и в момент подачи питания на микроконтроллер (но это на данном этапе не очень важно), при возникновении этого прерывания вызывается функция ISR с параметром INT0_vect и выполняется код в её теле. Для того чтобы прерывание возникало при нажатии на кнопку можно в регистр MCUCR записать число 0b00000010 вот так:


MCUCR = 0b00000010;
или в шестнадцатеричном виде:
MCUCR = 0x2;
для реакции на любое изменение (по фронту и по спаду):
MCUCR = 0x1;
Можно использовать вывод INT1, при этом будет вызываться ISR с параметром INT1_vect, в этом случае:

для реакции на любое изменение (по фронту и по спаду (нажатие и отпускание)):
MCUCR = 0x4;

по спаду (нажатие кнопки):
MCUCR = 0x8;

по фронту (отпускание кнопки):
MCUCR = 0xс;
Если записать MCUCR = 0x0; то INT0 и INT1 будут реагировать на низкий уровень напряжения.
При использовании INT2 (ISR вызывается с параметром INT2_vect)
по спаду:
MCUCSR = 0x0;
по фронту:
MCUCSR = 0x40;
Можно настроить прерывания и на INT0 и на INT1 например для обоих по фронту:
MCUCR = 0x0;
MCUCR |= 0x3;
MCUCR |= 0xc;

INT0 по спаду, INT1 по фронту и спаду:
MCUCR = 0x0;
MCUCR |= 0x2;
MCUCR |= 0x4;
Регистр GICR для разрешения внешних прерываний или их запрещения.
Разрешить на INT0:
GICR = 0x40;
Разрешить на INT1:
GICR = 0x80;

Разрешить на INT2:
GICR = 0x20;

hex файл создавался программой WinAVR, записывался в микроконтроллер он программой PonyProg через LPT порт и программатор на резисторах.


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

Система климат-контроля для автомобиля на ATtiny84


Устройство под названием Climatic II используется для автоматического управления системой вентиляции и кондиционирования воздуха автомобиля, оборудованного штатным кондиционером, таким образом реализуя систему автоматического климат-контроля. Кроме того, использование системы Climatic II позволяет исключить нагрузочные резисторы в системе приточного вентилятора, которые являются частым источником проблем в оригинальных контроллерах (из-за достаточно высокой потери мощности они часто выходят из строя).

  • автоматическое или ручное управление скоростью нагнетательного вентилятора и компрессора ручной системы кондиционирования воздуха;
  • максимальный ток исполнительных контактов реле REL: 1А;
  • максимальный ток нагнетательного вентилятора: 30 А (в зависимости от используемого радиатора);
  • напряжение питания: 10…15 В;
  • максимальный ток питания: 50 мА (включая ток реле REL).

Наручные часы на ATmega328 и АЛС314


Схема и плата данных часов специально разрабатывались под Советские индикаторы АЛС314. Чтобы создать плату с минимальными размерами(диаметр 32мм) был выбран микроконтроллер ATmega328p в корпусе QFN-32. Питание часов осуществляется от 3-х Вольтовой батареи CR2032. Ядро микроконтроллера работает на частоте 1 МГц. Для отсчета времени используется Таймер/Счетчик 2 в асинхронном режиме, который тактируется от кварца частотой 32768 Гц.

Регулятор мощности(Диммер) на ATtiny13


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

Полицейская мигалка на ATtiny10

Миниатюрная мигалка на базе микроконтроллера ATtiny10 подойдет для оснащения световыми эффектами радиоуправляемых моделей и летательных аппаратов.

Светодиодный кулон на матрице 8x8 и ATmega328


В сети есть несколько похожих проектов, где люди устанавливали микроконтроллер за светодиодной матрицей 5x7 точек. У всех них много общего: они просто показывают изображение или простую анимацию на дисплее путем включения или выключения определенных пикселей. Мне это показалось неинтересным, в действительности я хотел кулон, который мог бы реально сиять, поэтому я придумал схему и написал для него код. Кулон поддерживает 16 уровней яркости на пиксель и имеет размер дисплея 8x8. Используемый микроконтроллер - ATMega328p. В настоящее время используется не весь объем памяти, поэтому можно использовать ATmega88/168.

Таймер с счетчиком общего времени на ATtiny2313

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

В выключенном состоянии на дисплее отображаются поочередно "тире" во всех разрядах и общее время работы(в часах), максимально 9999. При переполнении счетчик общего времени автоматически будет считать с нулевого значения. Для принудительного обнуления счетчика общего времени необходимо выключить питание прибора, установить перемычку S2 и включить питание, на дисплее будут мигать нули во всех разрядах, затем нужно опять выключить питание, снять перемычку и включить питание прибора.

Часы с синхронизацией по NTP на ATmega328


Схема и программное обеспечение реализуют часы синхронизированные с NTP сервером, в качестве индикатора используются два классических светодиодных матричных дисплея HDLX2416, а для измерения температуры и влажности применен даичик DHT11.

Параметры, настраиваемые через Интернет, хранятся в EEPROM.

USB генератор-частотомер на ATmega88 и AD9833


Часто для настройки и тестирования аппаратуры появляется необходимость в точном генераторе функций. Кроме того полезно иметь под рукой частотомер в качестве простейшего(после вольтметра) анализатора сигнала. Сердцем генератора является отличная микросхема DDS(Direct Digital Synthesizer) от фирмы Analog Devices - AD9833.

Прелесть сей микросхемки в том, что она без "шума и пыли" может генерировать сигналы в полосе 0. 12.5МГц, 3-х форм с высокой точностью и шагом 0,1Гц. Также радует невысокая цена(порядка $2). Дальше все зависит от тех.задания. Можно выходной сигнал усилить/ослабить(например с помощью PGA вроде MCP6S21), сместить в "+" или "-". Вплоть до FM или еще какой-нибудь модуляции. Словом очень полезная эта AD9833. В моем случае достаточно было привести выходной сигнал по амплитуде к напряжению питания.

Часы на ATmega8


В хозяйстве давно пылилась плата от старых электронных весов, на ней были распаяны 6 семисегментных индикаторов и сдвиговые регистры 74HC595, я решил сделать из этой платы часы. Дополнительно сделал плату управления на микроконтроллере ATmega8 и написал программу, для точного хода использовал микросхему часов реального времени DS3231. Индикаторы и регистры питаются от напряжения 5 Вольт, ATmega8 и DS3231 от стабилизированного напряжения 3,3 Вольта. Датчик освещенности на фоторезисторе используется для автоматической регулировки яркости индикаторов.

Микроконтроллеры – отличная основа для большого количества устройств. По сути своей они напоминают компьютер: постоянная память; оперативная память; вычислительное ядро; тактовая частота.

Среди многих семейств и видов МК новички часто выбирают контроллеры AVR Atmega. Однако язык программирования может показаться сложным, поэтому преподаватель из Италии решил разработать простую и удобную плату для обучения.

Родилась Arduino ATmega8, на основе которой можно собрать очень удобное и простое устройство.

Arduino NG - вариант платы Arduino на микроконтроллере ATmega8

Arduino NG - вариант платы Arduino на микроконтроллере ATmega8

С этими платами от Ардуино вы получаете целый ряд преимуществ:

  • готовая разведенная печатная плата со всеми необходимыми компонентами и разъёмами;
  • микроконтроллеры Atmega;
  • возможность программировать без программаторов – через ЮСБ порт;
  • питание от любого источника 5-20 вольт;
  • простой язык программирования и возможность использования чистой C AVR без переделок платы и прошивки.

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

  • Частота ATmega8: 0-16 МГц
  • Напряжение ATmega8: 5 В
  • Частота ATmega8L: 0-8 МГц
  • Частоат ATmega8A: 0-16 МГц

В реальности почти все микроконтроллеры при рабочем напряжении в 5 вольт работают с частотой 16 мегагерц, если участвует внешний кварцевый резонатор. Если брать внутренний генератор, то частоты составят: 8, 4, 2 и 1 МГц.

Распиновка Arduino ATmega8

Ниже приводим распиновку атмега8, которую можно также найти на официальном сайте производителя:

Добавление устройств АТмега

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

Вносим следующие изменения в файл hardware/arduino/boards.txt:

Таким образом, если мы перейдем в меню Сервис -> Плата, то увидим устройства:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1 MHz int)
  • ATmega8 (no boot 8 MHz int)

Платы Arduino

Ардуино продаётся во множестве вариантов; главное, что объединяет платы, – это концепция готового изделия. Вам не нужно травить плату и паять все её компоненты, вы получаете готовое к работе изделие. Можно собирать любые устройства, не используя паяльник. Все соединения в базовом варианте выполняются с помощью макетной платы и перемычек.

Сердце платы – микроконтроллер семейства AVR. Изначально был применён микроконтроллер atmega8, но его возможности не безграничны, и плата подвергалась модернизации и изменениям. Стандартная плата, которая наиболее распространена у любителей – это плата версии UNO, существует много её вариаций, а её размеры сравнимы с кредитной карточкой.

Плата Arduino Nano – полный аналог большего собрата, но в гораздо меньших размерах, версия arduino atmega168 была самой популярной и недорогой, но её сменила другая модель – arduino atmega328, стоимость которой аналогична, а возможности больше.

Следующей важной деталью является печатная плата. Разведена и запаяна на заводе, позволяет избежать проблем с её созданием, травлением и пайкой. Качество платы зависит от производителя конкретного экземпляра, но, в основном, оно на высоком уровне. Питание платы осуществляется с помощью пары линейных стабилизаторов, типа L7805, или других LDO стабилизаторов напряжения.

Клеммная колодка – отличный способ сделать надёжное разъёмное соединение и быстро выполнить изменения в схеме прототипов ваших устройств. Для тех, кому не хватает стандартных разъёмов, есть более крупные и мощные платы, например, на atmega2560, у которой доступно полсотни портов для работы с периферией.


На фото изображена плата Arduino Mega 2560. На её основе можно собрать довольно сложного робота, систему умного дома или 3d-принтер на ардуино.

Не стоит думать, что младшие версии слабы, например, микроконтроллер atmega328, на котором построены модели Uno, nano, mini и другие, имеет вдвое больше памяти по сравнению с 168 моделью – 2 кб ОЗУ и 32 кб Flash памяти. Это позволяет записывать более сложные программы в память микроконтроллера.

Проекты на основе Arduino ATmega

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

Пример 1

Можно сделать тестер с 11 функциями на микроконтроллере atmega32.


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

  1. Прозвонка цепи с возможностью измерять падение напряжения на переходе диода.
  2. Омметр.
  3. Измеритель ёмкости.
  4. Измерение активного сопротивления конденсатора или ESR.
  5. Определение индуктивности.
  6. Возможность счёта импульсов.
  7. Измерение частоты – пригодится в диагностике, например, для проверки ШИМ источника питания.
  8. Генератор импульсов – тоже полезен в ремонте.
  9. Логический анализатор позволит просмотреть содержимое пачек цифровых сигналов.
  10. Тестер стабилитронов.

Пример 2

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


Пример 3

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


Для этого вам понадобится:

  1. Arduino uno или atmega
  2. Tft дисплей 5 дюйма.
  3. Небольшой набор обвязки.

Или его упрощенный аналог на плате Nano и дисплее от nokia 5110.

Такой осциллографический пробник станет полезным для автоэлектрика и мастера по ремонту радиоэлектронной аппаратуры.


Пример 4

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


На фото приведен пример реализации такой системы и ввода данных с клавиатуры.

Цветомузыка на микроконтроллере Arduino ATmega8

Для школьной дискотеки можно собрать ЦМУ на 6 каналов.

Транзисторы VT1-VT6 нужно подобрать с учетом мощности ваших светодиодов. Это силовые компоненты – они нужны, потому что мощности микроконтроллера не хватит, чтобы запустить мощные лампы или светодиоды.

Если вы хотите коммутировать сетевое напряжение и собрать цветомузыку на лампах накаливания, вместо них нужно установить симисторы и драйвер. Дополнить каждый канал ЦМУ вот такой конструкцией:


Ардуино своими руками

Atmega2560 – хоть и мощный и продвинутый контроллер, но проще и быстрее собрать первую плату на atmega8 или 168.


Левая часть схемы – это модуль связи по USB, иначе говоря, USB-UART/TTL конвертер. Его, вместе с обвязкой, можно выбросить из схемы, для экономии места, собрать на отдельной плате и подключать только для прошивки. Он нужен для преобразования уровней сигнала.

DA1 – это стабилизатор напряжения L7805. В качестве основы можно использовать целый ряд avr микросхем, которые вы найдете, например, серии, arduino atmega32 или собрать arduino atmega16. Для этого нужно использовать разные загрузчики, но для каждого из МК нужно найти свой.

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


Дабы не искать функции для работы с i2c на avr решил привести их к общему универсальному виду в codevision. Без использования библиотек и прочего хлама. Смотрим.

Часы, вольтметр и термометр для автомобиля на AtMega8 и LCD Nokia 1202(1208)

Часы, вольтметр и термометр для автомобиля на AtMega8 и LCD Nokia 1202(1208)

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

Изучаем микроконтроллеры AVR. АЦП, делаем вольтметр

Изучаем микроконтроллеры AVR. АЦП, делаем вольтметр

Изучаем микроконтроллеры AVR. Подключаем ЖКИ (HD44780)

Изучаем микроконтроллеры AVR. Подключаем ЖКИ (HD44780)

Программирование микроконтроллеров AVR. Тестер диодов

Программирование микроконтроллеров AVR. Тестер диодов

Изучаем микроконтроллеры AVR. Собираем схему

Изучаем микроконтроллеры AVR. Собираем схему

Изучаем микроконтроллеры AVR. Прошиваем и симулируем

Изучаем микроконтроллеры AVR. Прошиваем и симулируем


Учимся работать с программами Proteus, AVR CodeVision, Khazama. В общем сегодня прошиваем МК и симулируем схему.

Изучаем микроконтроллеры AVR. Первая программа

Изучаем микроконтроллеры AVR. Первая программа


С гордостью можем приступить к созданию первого проекта на микроконтроллере. В этой статье речь пойдёт о программной части, а именно о прошивке микроконтроллера ATmega8.

Изучаем микроконтроллеры AVR. Описание выводов

Изучаем микроконтроллеры AVR. Описание выводов


Продолжение обучалки про микроконтроллеры. Сегодня поговорим про назначение и описание выводов микроконтроллера ATmega8

Отличительные особенности
К числу особенностей микроконтроллеров AVR семейства Mega относятся:
• FLASH память программ объемом 8…128 Кбайт (число циклов
стирания/записи не менее 1000);
• оперативная память (статическое ОЗУ) объемом 1…4 Кбайт;
• память данных на основе ЭСППЗУ (EEPROM) объемом
512 байт…4 Кбайт (число циклов стирания/записи не менее
100000);
• возможность защиты от чтения и модификации памяти программ
и данных;
• возможность программирования непосредственно в системе че
рез последовательные интерфейсы SPI и JTAG;
• возможность самопрограммирования;
• возможность внутрисхемной отладки в соответствии со стандар
том IEEE 1149.1 (JTAG);
• различные способы синхронизации: встроенный RC генератор с
внутренней или внешней времязадающей RC цепочкой или с
внешним резонатором (пьезокерамическим или кварцевым);
внешний сигнал синхронизации;
• наличие нескольких режимов пониженного энергопотребления;
• наличие детектора снижения напряжения питания (brown out de
tector, BOD);
• возможность программного снижения частоты тактового генера
тора.

Характеристики процессора
Подавляющее большинство основных характеристик процессора мик
роконтроллеров семейства Mega такие же, что и у микроконтроллеров
других семейств — Classic и Tiny:
• полностью статическая архитектура; минимальная тактовая час
тота равна нулю;
• АЛУ подключено непосредственно к регистрам общего назначения;
• большинство команд выполняются за один машинный цикл;
• многоуровневая система прерываний; поддержка очереди прерываний.
В то же время процессор микроконтроллеров семейства Mega имеет ряд
характеристик, присущих именно этому семейству:
• наибольшее число источников прерываний (до 27 источников, из
них до 8 внешних);
• наличие программного стека во всех моделях семейства;
• наличие аппаратного умножителя.

Характеристики подсистемы ввода/вывода
Все характеристики подсистемы ввода/вывода микроконтроллеров
семействаMega такие же, как и у микроконтроллеров других семейств:
• программное конфигурирование и выбор портов ввода/вывода;
• выводы могут быть запрограммированы как входные или как вы
ходные независимо друг от друга;
• входные буферы с триггером Шмитта на всех выводах;
• возможность подключения ко всем входам внутренних подтяги
вающих резисторов (сопротивление резисторов составляет
35…120 кОм).
*Не во всех моделях.

Заявленные характеристики:
- Управляющее напряжение: 3-32V DC;
- Рабочее напряжение 24. 380V AC;
- Ток до 40A;
- Время отключения: <=10ms;
- Ток светодиода оптосимистора: <=2mA.

P.S. крайне нежелательно их использовать для управления емкостной или же индуктивной нагрузкой, особенно индуктивной, выбросы противоЭДС могут вывести штатный симистор из строя - как два пальца об асфальт.

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

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