
- •Реферат
- •Содержание
- •Вступление
- •6 Аппаратных команд умножения (для семейства mega);
- •32 Регистра общего назначения (аккумулятора);
- •Краткое описание микроконтроллера
- •32 X 8 универсальных регистров общего назначения
- •256 Байт внутрисистемно-программируемого эсппзу с износостойкостью 100 тыс. Циклов записи/стирания
- •256Байт внутреннего статического озу
- •4 Несимметричных канала
- •2 Дифференциальных канала с программируемым усилением (1x, 20x)
- •Xtal1 – вход инвертирующего усилителя генератора и вход внешнего тактового сигнала.
- •Xtal2 – вход инвертирующего усилителя генератора.
- •Особенности использования микроконтроллера
- •1. В дш на светодиод вы находите (или измеряете на "живом" светодиоде) падение напряжения на нем при токе через него 15 мА - пусть это будет 2 вольта.
- •3. Суммируете эти напряжения и вычитаете из напряжения питания мк:
- •Программатор
- •Разработка отладочного модуля
- •Программы и инструменты
- •Void main() // главная ф-ия
- •Выводы и рекомендации
- •Список используемой литературы
- •Интернет источники
- •Дополнительные источники
- •Datasheets на микроконтроллеры
- •Application Notes на микроконтроллеры
- •Помощник help в компиляторе CodeVisionAvr
1. В дш на светодиод вы находите (или измеряете на "живом" светодиоде) падение напряжения на нем при токе через него 15 мА - пусть это будет 2 вольта.
2. По графику I/O Pin Sink Current vs Output Voltage (Vcc=5V)в технической документации на микроконтроллер находите что при токе 15 мА на ножке будет какое-то напряжение – пусть это будет примерно 0.3 вольт.
3. Суммируете эти напряжения и вычитаете из напряжения питания мк:
5 - (2 + 0.3) = 2.7 вольт - это напряжение которое должно падать на искомом резисторе при токе 15 мА
4. Чтоб найти номинал этого резистора - по закону Ома нужно разделить падение напряжения на ток его вызывающий: 2.7 / 0.015 = 180 Ом
Выбираем ближайший стандартный номинал резистора - 180 Ом.
При выводе на ножку "1" по графику I/O Pin Source Current vs Output Voltage (Vcc=5V)
Чтоб рассчитать значение сопротивления, которое гарантирует не превышение какого-то тока через ножку, нужно соответсвующее напряжение по графику поделить на значение тока, которое мы не хотим, чтоб было выше
Нужно стремится к разумному уменьшению емкостей того, что подключено к выходам МК. Если же емкость уменьшить не возможно - например, ножка МК управляет затвором мощного полевого транзистора (затвор это по сути конденсатор) то нужно поставить между ними резистор хотя бы на 100 Ом.
Если вам нужно получить ток превышающий 20 мА Вы можете объединить несколько ножек МК вместе - лучше через токо-уравнивающие резисторы 20-33 Ом
А можно применить какие либо внешние буферные микросхемы с более высоким выходным током, например счетверенный Операционный Усилитель (ОУ) AD8534 обеспечивает выходной ток до 250 мА
Особенности при построении схемы:
Сигнал сброса RESET - при "0" на этой ножке МК останавливает выполнение программы, содержимое регистров МК становится начальным .
После появления на этой ножке "1" и наличии питания МК - выполнение программы начнется с начала, как после включения питания МК
Рис. простейшая схема Рис.Схема подключения
цепи сброса супервайзера питания
Питание аналоговой части МК, АЦП (входы ADC_x ) ножка AVCC - ее нужно соединить с выводом VCC питания МК даже если вы не предполагаете использовать АЦП.
Опорное напряжение для АЦП (входы ADC_x ) ножка AREF - напряжение на ней должно быть от 2 вольт до напряжения питания МК. Напряжение на входах АЦП равное или превышающее AREF будет оцифровываться в код 1023 (давать результат АЦП равный 1023. Всегда желательно заземлять эту ножку конденсатором на 0.1 мкФ. Вы можете использовать внутренний источник опорного напряжения на 2,56 вольт.
Ножки для подключения кварца или керамического резонатора XTAL1 XTAL2.
Для работы МК необходим ритм или тактирование.
Нужен некоторый периодический сигнал в соответствии с которым МК сможет шагать по заложенной в него программе, кроме того тактовый сигнал нужен для работы периферии МК.
Рис. подключение кварцевого Рис. Подключение внешнего
резонатора к микроконтроллеру источника тактовых импульсов
Выводы XTAL1 и XTAL2 являются входом и выходом инвертирующего усилителя, на котором можно собрать генератор тактовых импульсов. Можно использовать как кварцевые, так и керамические резонаторы. Схема требует дополнительно два конденсатора емкостью от 22 до 33 пФ, чтобы облегчить запуск тактового генератора. Если нужно использовать внешний тактовый сигнал, он подается на вывод XTAL1, а вывод XTAL2 при этом остается неподключенным.
При реализации приложений, не требующих высокой временной точности, можно использовать внешний RC-генератор. При этом RC-цепочка подключается к выходу XTAL1 (или CLOCK), как показано на рисунке .
Частота тактового сигнала определяется значением сопротивления R и емкости С. Рекомендуется использовать резистор с сопротивлением 3,3…100 кОм и конденсатор емкостью не менее 20 пФ. Значения R и С для «типовых» частот приведены в табл.
Рис. Подключение внешней RC-цепочки
Табл.
Параметры внешней RC-цепочки для «типовых» частот
Питание микроконтроллера можно использовать как от батареек, так и от сети переменного тока 220 В. Целесообразность и оправданность использования того или иного источника питания зависит полностью от выбора разработчика. При использовании питания от сети можно использовать как блок питания в готовом исполнении, так и смастерить его самому, применив в конструкции стабилизаторы напряжения. Питание можно получать так же и от линий портов. Например, порт LPT выдает на свои линии напряжение 5 В.
Независимо от источника питания как можно ближе к выводам питания микроконтроллера следует подсоединить керамический (еще лучше – танталовый) конденсатор емкостью 0,01…0,1 мкФ – для подавления помех по цепи питания.
Управление светодиодами – самое простое, что может встретиться при изготовлении схем на микроконтроллерах. Как известно, светодиоды потребляют достаточно маленький ток – в зависимости от типа светодиода этот ток может составлять от 3 до 20 мА. Рабочее напряжение светодиодов составляет примерно от 1,5 до 4 В.
Так как ток, который микроконтроллеры семейства AVR могут отдавать при напряжении «логический ноль» на выходной линии, может достигать 20 мА, можно управлять светодиодом просто подключив его к выходной линии порта последовательно с ограничивающим ток резистором. Второй вывод этой цепочки следует подсоединить к положительной линии питания.
Для того чтоб светодиод стал светиться, нужно сформировать на втором выводе цепочки со светодиодом напряжение низкого уровня «0». Говоря проще для того чтоб зажечь светодиод, надо записать в выходной порт значение «0». Чтоб погасить – записать «1».
Рис. Подключение светодиода к микроконтроллеру
Таким же образом можно подсоединить и большее количество светодиодов – вплоть до того, что ко всем линиям портов ввода/вывода. Однако следует иметь ввиду очень важный факт – хотя каждый выход микроконтроллера может управлять нагрузкой до 20 мА, общий потребляемый ток от всех линий портов ввода/вывода не должен превысить определенного значения. В зависимости от типа корпуса микроконтроллера и числа его линий портов ввода/вывода его величина может быть различной. Точно это значение можно узнать в фирменной документации на микроконтроллер.
Аналогично можно управлять оптронами, ведь по-существу, они представляют собой размещенные в одном корпусе напротив друг друга светодиод и фоточувствительный элемент – фоторезистор, фототранзистор, и т.д. Например, используя оптопару со встроенным фотосимистором можно управлять высоковольтной нагрузкой. При этом достигаются такие важные цели, как гальваническая развязка высоковольтных цепей и схемы управления, отсутствие искрового промежутка.
Управление реле
Для питания обмотки реле требуется ток, превышающий 20 мА, поэтому напрямую подключить к микроконтроллеру его нельзя. Для управления реле, можно применять простейший усилитель – транзисторный ключ. Ниже на Рис. показан пример схемы с реле. Обратите внимание на наличие диода, подключенного параллельно обмотке реле – он нужен для защиты схемы от ЭДС самоиндукции, появляющейся в процессе коммутации обмотки.
Совершенно аналогично можно включить не реле, а какую-либо другую нагрузку, например, лампу накаливания и т.д.
В случае, если необходимо управлять большим числом реле, или других мощных нагрузок, удобно применять микросхемы ULN2003 или ULN2803. Эти микросхемы содержат соответственно, 7 и 8 транзисторных ключей на составных транзисторах (схема Дарлингтона). Они позволяют управлять нагрузкой до 500 мА при напряжении до 50 В. При этом входы этих микросхем можно подключать непосредственно к линиям портов ввода/вывода микроконтроллера. Внутри микросхем уже имеется встроенный защитный диод, который можно подключать или отключать, осуществляя внешние соединения.
Рис. Подключение реле к микроконтроллеру
Ниже на Рис. показан пример схемы с использованием микросхемы ULN2003.
Рис. Подключение ULN2003 к микроконтроллеру
Для включения нагрузки следует сформировать на соответствующем выводе микроконтроллера уровень «1». При этом ток, потребляемый от вывода порта микроконтроллера, не превышает допустимый, в то же время, как осуществляется управление достаточно мощной нагрузкой.
Управление светодиодными цифровыми индикаторами
Так как все светодиодные цифровые индикаторы, по-существу, представляют собой набор светодиодов специальной формы, расположенные так, чтобы при зажигании различных их комбинаций, получались цифры, управление ими принципиально не отличается от управления отдельными светодиодами. На Рис., что следует далее изображен пример схемы управления семисегментным светодиодным индикатором.
Рис. Подключение семисегментного светодиодного индикатора к микроконтроллеру
Легко увидеть, что если потребуется управлять большим числом индикаторов, количества выводов портов ввода/вывода будет недостаточно. Для преодоления этого препятствия применяется динамическая индикация.
На Рис. ниже показан пример схемы динамической индикации. Идея, лежащая в основе работы этой схемы очень проста – человеческий глаз достаточно инерционен, поэтому можно зажигать не все индикаторы одновременно, а только один из них, потом через короткое время другой и так далее. Так как переключение индикаторов происходит достаточно быстро, человеку кажется, что все индикаторы горят.
Рис. схема динамической индикации
Кнопки переключатели
Проверять состояние кнопок или выключателей достаточно просто. Достаточно подсоединить, например, кнопку одним выводом к общему проводу, а другим – ко входной линии порта ввода/вывода, настроенной для работы в режиме чтения. Также эта линия должна быть соединена через резистор сопротивлением примерно 4,7…100 кОм с проводом «+» питания. При большем сопротивлении меньше суммарный ток потребления.
При разомкнутых контактах, на соответствующем выводе микроконтроллера будет «1», при замыкании контактов – «0».
Все механические выключатели имеют недостаток – при работе с ними наблюдается так называемый дребезг контактов, при котором при нажатии на кнопку происходит много замыканий и размыканий контактов из-за того, что они как правило, пружинят. Длительность периода дребезга зависит от качества контактов и обычно составляет от 10 до 100 мс. Бороться с этим эффектом проще программным способом. На Рис. показаны графики иллюстрирующие дребезг контактов, и приведена простейшая схема с кнопкой.
Рис. Явление «дребезг контактов»
Рис. Подключение кнопки к микроконтроллеру
Для управления большего числа кнопок управления используют матричную схему соединения клавиатуры. Пример подобной схемы изображен на Рис.
Рис. Использование матричной клавиатуры
Порт в МК - это 8 (либо меньше) ножек или линий ввода-вывода (выводов МК или IO или I-O или I/O) имеющие индивидуальные номера от 0 до 7 и общую букву A, B, C, D, ... отличающую этот порт от других.
Пример:
Порт_B имеет (как и другие порты МК) минимум 3 сопоставленных ему регистра :
DDRB - значение битов в этом регистре определяет чем будет ножка этого порта с номером этого бита - начальное (при включении МК или после сброса) значение "0" - ножка вход если сделать бит = "1" (говорят: установить бит англ. set bit ) эта ножка станет выходом. Сделать бит = "0" - говорят: сбросить или очистить бит англ. clear bit
PINB - биты этого регистра показывают чем ("1" или "0") считает МК напряжение на ножке порта с номером этого бита. (этот регистр можно только читать, записывать в него что либо бесполезно). Правила по которым МК определяет логический уровень на ножках описаны выше.
PORTB - бит этого регистра нужно сделать "1" или "0" что бы на ножке порта с номером этого бита появился "1" или "0". При этом такой же бит регистра DDRB должен быть "1" - т.е. ножка должна быть выходом. Если она сконфигурирована как вход (т.е. её бит в регистре DDRB очищен или равен нулю) - то если очищен и соответствующий бит в регистре PORB ножка будет высокоимпедансным входом (Z-состояние) а если бит в регистре PORB установлен, т.е. равен "1" то включается "подтяжка" (pull-up) высокоимедансного входа к + питания МК через встроенный резистор примерно 40 КОм - ножку как бы соединяют таким резистором с питанием МК.
Для того чтобы не повредить (не пожечь) выводы МК - подключайте их через резисторы 200 - 330 Ом - такие резисторы допустимы в большинстве схем, но позволяют при замыкании элементов схемы на питание или землю не повредить МК повышенным током через замкнутую ножку.
Когда устройство будет отлажено, эти резисторы можно исключить,
а можно и оставить.
Не подключаемые (не используемые) в вашей схеме ножки МК рекомендуется сделать входами с подтяжкой - это не позволит ножке хаотично менять свое напряжение под действием внешних помех.
Такое беспорядочное изменение напряжения вызывает дополнительное потребление тока на внутренние переключения в МК и часто вызывает недоумение большим током потребления в спящем режиме работы МК.
Если в программе вы используете режимы пониженного энергопотребления, то сделайте неиспользуемые ножки IO входами и соедините их с GND.