logo
Измеритель температуры в диапазоне до 400К

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