5.1 Микроконтроллер ATmega8
В нашей курсовой работе мы выбрали микроконтроллер ATmega8 (Рис.13). Он сочетает в себе функциональность, компактность и сравнительно не высокую цену. Такие качества дали широчайшее распространение ATmega8 среди профессиональных и любительских конструкций. Микроконтроллер имеет широкий набор модулей, и может быть использован в большом количестве устройств.
Микроконтроллер ATmega8 выполнен по технологии CMOS, основан на AVR-архитектуре RISC.
Сердцем микроконтроллеров AVR является 8-битное микропроцессорное ядро или центральное процессорное устройство (ЦПУ). Основой этого блока служит арифметико-логическое устройство (АЛУ). По системному тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд (Program Counter - PC) выбирается очередная команда и выполняется АЛУ. АЛУ подключено к регистрам общего назначения РОН (General Purpose Registers - GPR). Регистров общего назначения всего 32, они имеют байтовый формат, то есть каждый из них состоит из восьми бит. РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера. Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров.
В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных (оперативная память и EEPROM) также расположена в своем адресном пространстве.
Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-ти битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера - от 1 до 256 КБайт. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации. Гарантированное число циклов перезаписи Flash-памяти у микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов.
Память данных разделена на три части: регистровая память, оперативная память (ОЗУ - оперативное запоминающее устройство или RAM) и энергонезависимая память (EEPROM).
Технические параметры микроконтроллера ATmega8:
· 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением
· 32 восьмиразрядных рабочих регистра общего назначения
· 8 Кбайт внутрисистемной программируемой Flash памяти (Обеспечивает 10000 циклов стирания/записи)
· 512 байт EEPROM (Обеспечивает 100000 циклов стирания/записи)
· 1 Кбайт встроенной SRAM
· Два 8-разрядных Таймера/Счетчика
· 16-разрядный Таймер/Счетчик
· 23 порта ввода/вывода
· Таймер реального времени с независимым генератором
· 6 каналов 10-разрядного АЦП
· Последовательный интерфейс SPI (ведущий/ведомый)
· Встроенный аналоговый компаратор
· Внутренние и внешние источники прерываний
· Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
· Напряжение питания 4.5 - 5.5В
· Тактовая частота 0-16 МГц
Рис.13 МК ATmega8
У данного микроконтроллера 23 порта ввода/вывода объединены в 3 группы ( Порт В, Порт С, Порт D).
Описание выводов микроконтроллера ATmega8:
Таблица 2
Питание
№ |
Название |
Тип |
Описание |
|
7 |
VCC |
Вход |
напряжение питания от +4.5 до +5.5 В |
|
8,22 |
GND |
Вход |
Общий (земля) |
|
20 |
AVСС |
Вход |
напряжение питания + 5 В для модуля АЦП |
|
21 |
AREF |
Вход |
вход опорного напряжения для АЦП |
Таблица 3
Порт B
№ |
Название |
Тип |
Описание |
|
14 |
PB0 |
Вход/Выход |
цифровой порт РВ0 |
|
15 |
PB1 |
Вход/Выход |
цифровой порт РВ1 |
|
16 |
PB2 |
Вход/Выход |
цифровой порт PB2 |
|
17 |
PB3 |
Вход/Выход |
цифровой порт РВЗ |
Таблица 4
Порт C
№ |
Название |
Тип |
Описание |
|
2 |
PC0 |
Вход/Выход |
цифровой порт РС0 |
Таблица 5
Порт D
№ |
Название |
Тип |
Описание |
|
2 |
PD0 |
Вход/Выход |
цифровой порт PD0 |
|
3 |
PD1 |
Вход/Выход |
цифровой порт PD1 |
|
4 |
PD2 |
Вход/Выход |
цифровой порт PD2 |
|
5 |
PD3 |
Вход/Выход |
цифровой порт PD3 |
|
6 |
PD4 |
Вход/Выход |
цифровой порт PD4 |
|
11 |
PD5 |
Вход/Выход |
цифровой порт PD5 |
|
12 |
PD6 |
Вход/Выход |
цифровой порт PD6 |
5.2 Встроенный АЦП МК ATmega8
В микроконтроллере Atmega8 существует 10 битный АЦП. 10 бит означает, что входное напряжение будет разбито на 210 равных частей. МК будет оперировать числами от минимального - 0 до максимального - 1023. Минимальное будет соответствовать - 0 В, а максимальное - 5 В. Значит шаг измерения составляет 5/1023=0.0049, т.е. 4.9мВ. Напряжение на одном из входов измеряется относительно опорного напряжения. Измеренное напряжение преобразуется в 10-битное число и сохраняется в регистрах ADCL и ADCH. Первый из них хранит старшие биты результата измерения, а второй младшие. В процессе измерения микроконтроллер может работать в двух режимах, в режиме однократного преобразования и в режиме непрерывного преобразования. Как следует из названия режимов, непрерывное преобразование происходит постоянно не зависимо от нашего участия, а в режиме однократного мы сами задаем, когда нам нужно измерить напряжение.
Основные регистры, отвечающие за настройку АЦП микроконтроллера.
В МК ATmega8 номер вывода, подключенного к входу АЦП, задается с помощью регистра ADMUX - регистр мультиплексора АЦП. Рассмотрим, какие биты за что отвечают в этом регистре.
Рис. 14 Биты ADMUX
Таблица 6
Номер |
Название |
Функция |
|
7 |
REFS1 |
выбор опорного напряжения |
|
6 |
REFS0 |
выбор опорного напряжения |
|
5 |
ADLAR |
способ записи значения в ADCL и ADCH |
|
4 |
- |
||
3 |
MUX3 |
бит выбора аналогового канала |
|
2 |
MUX2 |
бит выбора аналогового канала |
|
1 |
MUX1 |
бит выбора аналогового канала |
|
0 |
MUX0 |
бит выбора аналогового канала |
Биты REFS1 и REFS0
00 - источник Aref;
01 - AVcc c внешним конденсатором на Aref;
10 - Резерв;
11 - внутренний 2.56 В источник, c внешним конденсатором на Aref.
Бит ADLAR
При помощи этого бита мы выбираем способ записи измеренного нами значения в регистры ADCL и ADCH.
ADLAR = 0 Таблица 7
ADLAR = 1 Таблица 8
При ADLAR = 0 в ADCH записываются два старших бита (2 MSB), а остальные в ADCL. А при ADLAR = 1 в ADCH записываются 8 старших битов (8 MSB), а два младших (2 LSB) в ADCL. Это удобно, если для точности измерений достаточно 8-ми старших бит преобразования.
Биты MUX
При помощи этого бита мы выбираем нужный нам канал АЦП.
Таблица 9
MUX0: MUX3 |
Аналоговый вход |
|
0000 |
ADC0 |
|
0001 |
ADC1 |
|
0010 |
ADC2 |
|
0011 |
ADC3 |
|
0100 |
ADC4 |
|
0101 |
ADC5 |
|
0110 |
ADC6 |
|
0111 |
ADC7 |
Если необходимо проверить несколько каналов, то можно изменить соответствующие биты в регистре ADMUX и канал сменится сразу же по окончании текущего преобразования. То есть в режиме непрерывного преобразования можно легко произвести сканирование нужных каналов. Меняя номер канала во время преобразования - следующее преобразование начнется на новом канале.
Регистр ADCSR - регистр контроля и состояния АЦП. В МК ATmega8 он называется ADCSRA.
Рис. 15- Регистр ADCSRA
Таблица 10
Номер |
Название |
Функция |
|
7 |
ADEN |
разрешение АЦП ( 0 - АЦП выключен, 1 - АЦП включен) |
|
6 |
ADSC |
запуск однократного преобразования (0 - преобразование закончено, 1 - старт преобразования)> |
|
5 |
ADFR |
режим работы АЦП (0 - однократное, 1 - непрерывное) |
|
4 |
ADIF |
флаг преобразования АЦП (выставляется в 1, если преобразование завершено) |
|
3 |
ADIE |
разрешение прерывания от АЦП (0 - запрещено,1 - разрешено) |
|
2 |
ADPS2 |
тактовая частота АЦП |
|
1 |
ADPS1 |
тактовая частота АЦП |
|
0 |
ADPS0 |
тактовая частота АЦП |
Биты ADPS- Выбор тактовой частоты АЦП
Таблица 11
ADPS0 |
ADPS1 |
ADPS2 |
Значение частоты АЦП |
|
0 |
0 |
0 |
Частота АЦП = такту микроконтроллера |
|
0 |
0 |
1 |
Частота АЦП = такту микроконтроллера / 2 |
|
0 |
1 |
0 |
Частота АЦП = такту микроконтроллера / 4 |
|
0 |
1 |
1 |
Частота АЦП = такту микроконтроллера / 8 |
|
1 |
0 |
0 |
Частота АЦП = такту микроконтроллера / 16 |
|
1 |
0 |
1 |
Частота АЦП = такту микроконтроллера / 32 |
|
1 |
1 |
0 |
Частота АЦП = такту микроконтроллера / 64 |
|
1 |
1 |
1 |
Частота АЦП = такту микроконтроллера / 128 |
Микроконтроллер является основным управляющим звеном всей схемы. От его параметров и записанных в него программ зависит качество работы всей схемы.
С выхода схемы на операционном усилителе сигнал попадает на АЦП микроконтроллера, для этого используется порт PC0 (аналоговый вход). АЦП представляется полученные результаты в двоичном коде и записывает в память микроконтроллера.
Микроконтроллер работает в режиме непрерывного преобразования, то есть будет периодически измерять значение сигнала. Выбираем тактовую частоту работы микроконтроллера 4 МГц, так как в нашем курсовом проекте не требуется максимальной вычислительной способности ATmega8. Для более точного измерения частота должны быть менее 200 кГц, только при этом условии будет достигнута 10-ти битная точность измерения, следовательно, чтобы получить необходимое значение, необходимо установить предделитель частоты для АЦП на 32:
Через микроконтроллер осуществляется также вывод значений на семисегментный индикатор.
6. Семисегментный индикатор
Семисегментные индикаторы широко применяются в цифровой технике: в бытовых приборах, измерительной технике, в промышленных устройствах. По сравнению с жидкокристаллическими индикаторами светодиодные имеют свои преимущества, это контрастность отображения информации, малое потребление энергии. Семисегментный индикатор представляет собой матрицу из семи светодиодов, размещенных таким образом, чтобы зажигая их в разных сочетаниях, можно было бы отобразить любую десятичную цифру, а также специальные символы. Кроме этого индикатор дополняется еще одним сегментом, который предназначен для отображения десятичной точки.
Принято каждый сегмент индикатора обозначать латинской буквой: a, b, c, d, e, f, g. Точка обозначается буквой h.
Каждый цифровой разряд индикатора представляет собой группу светодиодов, соединённых собой одним из выводов (катодом, либо анодом).
Рис.16 Схемы индикаторов с общим анодом(OA) и катодом (OK)
В нашей курсовой работе, мы будем использовать схему с общим анодом.
Обозначение сегментов индикатора:
Рис.17 Сегменты индикатора
В данном проекте используется три семисегментных индикатора АЛС335А1.
Технические характеристики:
Таблица 12
Материал |
GaAs |
|
Цвет свечения |
Зеленый |
|
Длина волны, нм |
560-570 |
|
При токе Iпр., мА |
20 |
|
Количество сегментов |
7 |
|
Количество разрядов |
1 |
|
Схема включения. |
общ.анод |
|
Высота знака, мм |
12 |
|
Максимальное прямое напряжение, В |
3.5 |
|
Максимальное обратное напряжение, В |
5 |
|
Максимальный прямой ток, мА |
25 |
|
Максимальный импульсный прямой ток, мА |
200 |
|
Рабочая температура, єС |
-60…70 |
Для отображения цифровых данных одного семисегментного индикатора недостаточно. Поэтому к микроконтроллеру подключается сразу несколько индикаторов - в нашем случае три. Однако, из-за отсутствия достаточного количества выводов у микроконтроллера применяется специальные методы - динамическая индикация. Режим динамической индикации применяется для построения многоразрядных индикаторов. При таком режиме разряды индикатора работают не одновременно, а по очереди. Переключение разрядов происходит с большой скоростью (50 Гц), из-за этого человеческий глаз не замечает, что индикаторы работают по очереди. Для того, чтобы человек воспринимал это переключение потребуется частота обновления не больше 20 Гц. Так как у светодиодов очень малая инерционность, сменяющиеся разряды сливаются в одно изображение. В этом режиме в каждый момент времени работает только один разряд, включаются по очереди, начиная с первого заканчивая последним, затем все начинается сначала.
Микроконтроллер ATmega8 располагает 8-разрядным таймером-счетчиком, который можно использовать для задания частоты обновления разрядов индикатора.
Выставим предделитель частоты таймера-счетчика на 64. Так как тактовая частота работы микроконтроллера 4 МГц, то таймер-счетчик будет увеличиваться на единицу каждые 16 мкс.
Переполнение таймера-счетчика будет возникать:
Тогда частота обновления равна 245 Гц. Этого достаточно чтобы человек не воспринимал смену разрядов.
Вывод значений на семисегментный индикатор
В памяти микроконтроллера хранятся значения сигнала термопары в двоичном коде. Двоичный код преобразуется в десятичный программно, а потом преобразуется в двоичный код семисегментного индикатора (Таблица 13).
Преобразование кода Таблица 13
Цифра |
Сегмент |
|||||||
G |
F |
E |
D |
C |
B |
A |
||
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
|
2 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
|
3 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|
4 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
|
5 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
|
6 |
1 |
1 |
1 |
1 |
Содержание
Похожие материалы
|