Введение
В настоящее время встроенные компьютерные системы получают все большее распространение из-за их высокого качества и надежности, а так же простоты обработки информации.
Микроконтроллеры являются ядром многих современных устройств и приборов, в том числе и бытовых. Главной особенностью микроконтроллеров является то, что с их помощью легче и зачастую гораздо дешевле реализовать различные схемы.
Одними из самых популярных микроконтроллеров на сегодняшний день являются микроконтроллеры фирмы Atmel. Они основаны на новой RISC-архитектуре, которая была разработана с использованием достижений полупроводниковой микроэлектроники и возможностей программного обеспечения 1990-х годов. Созданные в результате микроконтроллеры имеют самое высокое соотношение производительность/потребление энергии, доступное на рынке 8-разрядных микроконтроллеров.
Языки программирования высокого уровня быстро становятся стандартным методом программирования для встроенных микроконтроллеров из-за уменьшения времени разработки и упрощенной поддержки сопровождения. Архитектура микроконтроллеров фирмы Atmel была разработана совместно с экспертами языка Си, чтобы гарантировать, что аппаратные средства и программное обеспечивают получение высокоэффективного кода.
В данном курсовом проекте разрабатывается устройство управления системой измерения веса, построенном на микроконтроллере ATmega16 фирмы Atmel.
1. Анализ поставленной задачи
Система измерения веса построена на весовом индикаторе WE2108, который является измерительным усилителем для подключения 4х датчиков веса. Сигнал датчиков веса усиливается и преобразуется прибором в цифровую форму и отображается на встроенном дисплее. Управление системой в целом осуществляется микроконтроллером ATmega16, который принимает от WE2108 сигнал превышения заданного уровня срабатывания и выдает соответствующие сигналы управления задвижками бункера и транспортером.
Структурная схема системы приведена на рисунке 1.1.
Рисунок 1.1 - Структурная схема системы
Работа системы заключается в следующем: в бункере находится груз (например, песок), который необходимо отсыпать дозированными порциями. Тележка заезжает на платформу, на которой установлены весовые датчики. Прибор WE2108 позволяет задать функцию тарирования, при выполнении которой запоминается текущее значение массы тележки и это значение вычитается из последующих значений веса. Т.е., если платформа с весовыми датчиками нагружена только пустой тележкой, то прибор показывает нулевое значение. При нажатии кнопки Пуск микроконтроллер ATmega16 выдает сигнал включения транспортера, а после выдержки времени в 5 секунд на открытие бункера. Тележка начинает наполняться грузом. Как только вес тележки с грузом достигнет заданного, WE2108 выдает сигнал о превышении установленного веса. ATmega16 получает этот сигнал, закрывает бункер и после выдержки времени в 5 секунд останавливает транспортер.
Предложенный для решения задачи микроконтроллер ATmega16 обладает следующими характеристиками:
• напряжение питания+5 V
• размер памяти программ 16 К
• размер EEPROM512 В
• размер внутренней SRAM1 К
• порты ввода/вывода4x8 bit
• четыре таймера счетчика
• программируемый последовательный УСАПП
Этих свойств микроконтроллера вполне достаточно для обеспечения управления задвижками бункера и временем работы транспортера.
2. Проектирование принципиальной схемы устройства
2.1 Схема включения микроконтроллера
Микроконтроллер AVR типа ATmega16 имеет напряжение питания +5 V, которое подводится к выводу VCC. Так как питание всего нашего устройства +10 V, то питание к микроконтроллеру должно подводится через понижающий импульсный стабилизатор. Кроме этого, микроконтроллер имеет еще два вывода для питания порта А (или АЦП), один из которых (AVCC) должен быть подключен к напряжению питания даже если порт А не используется. Если используется АЦП, то это питание должно подключатся через фильтр низких частот. Второй вывод (AREF) используется для подачи напряжения смещения на АЦП.
В нашем устройстве АЦП не используется, поэтому к выводам VCC и AVCC можно подключить предварительно стабилизированное питание +5 V от стабилизатора, а вывод AREF подключить к общей шине земли.
Рис.2.1 – Условное обозначение ATmega16
2.2 Формирование тактовых импульсов
Тактовые импульсы для работы микроконтроллера можно формировать с помощью либо встроенного генератора импульсов, либо подключая внешний генератор. Внешний генератор в данном случае не является приемлемым выбором, так как для получения импульсов заданной частоты для него нужна отдельная схема деления. Внутренний генератор, хотя и обладает меньшей стабильностью, по сравнению с внешним генератором (но стабильность можно повысить, подключив кварцевый резонатор), имеет встроенный делитель тактовой частоты. Предварительный делитель позволяет делить тактовую частоту на 8, 64, 256 и 1024. Выбор коэффициента деления тактовой частоты задается битами CS02, CS01, CS00 регистра управления т/сч0 TCCR0 или битами CS12, CS11, CS10 регистра управления т/сч1. Для данной схемы выбран коэффициент деления 1024, обеспечивающий максимальную задержку.
2.3 Схема сброса
Схема сброса должна формировать импульс логического нуля для подачи его на инверсный вывод сброса микроконтроллера RESET. Это импульс должен формироваться, например, при нажатии на кнопку сброса устройства или при переключении ключа.
Для такой схемы подходит включение транзистора, показанное на рисунке 2.2. Когда ключ открыт, транзистор находится в закрытом состоянии и на вход RESETAVR поступает сигнал логической единицы. Когда ключ замыкается, транзистор открывается и на вход сброса устройства поступает сигнал логического нуля.
Рис. 2.3 – Схема формирования импульса сброса
2.4 Схема стабилизатора напряжения
В качестве стабилизатора напряжения в нашем устройстве используется импульсный понижающий стабилизатор LM2574, который обладает следующими характеристиками:
• входное напряжение - до 60 V (для HV версий)
• выходное напряжение - 3.3 V, 5 V, 12 V, 15V
• выходной ток - 0.5 А
Схема включения стабилизатора для преобразования +10 V - +5 V приведена на рисунке 2.4.
Рис. 2.4 - Схема включения стабилизатора напряжения LM2574
2.5 Входные и выходные устройства
Входными устройствами в данном проекте являются весовой индикатор WE2108, который имеет вывод превышения заданного уровня срабатывания и датчики положения заслонки бункера (открыт/закрыт). На выводе превышения заданного уровня срабатывания формируется уровень лог. 0, когда превышен заданный вес, предварительно занесенный в память прибора WE2108.
Весовой индикатор WE2108 является измерительным усилителем для подключения 4х датчиков веса. Сигнал датчиков веса усиливается и преобразуется прибором в цифровую форму и отображается на встроенном дисплее. WE2108 является полностью самостоятельным устройством со встроенным микропроцессором и позволяет выполнять широкий спектр задач связанных с измерением веса. Допустимое напряжение питания для прибора составляет от +10В до +35В постоянного тока.
Выходные устройства – сигналы управления задвижками бункера и транспортером выдаваемые через порты микроконтроллера ATmega16. Также предусмотрена индикация количества отгрузок на 4х разрядном 7-ми сегментном индикаторе.
3. Разработка программного обеспечения микроконтроллера
3.1 Разработка алгоритма программы
Программа должна выполнять следующие функции:
• обработка нажатия кнопки Пуск;
• управление заслонками бункера и работой транспортера;
• обработку сигнала превышения заданного веса;
• выдачу количества отгрузок на 4х разрядный 7-ми сегментный индикатор.
Выполнение этих операций происходит по следующему алгоритму:
Рис. 3.1 – Алгоритм программы.
3.2 Проектирование функций микроконтроллера
Процедура инициализации микроконтроллера должна состоять из процедур или операторов инициализации всех узлов самого микроконтроллера и всех периферийных устройств, и установить все начальные значения для их регистров..
Порт А работает на вывод данных, а порт С работает на прием сигналов. Поэтому при их настройке необходимо в соответствующие биты регистров DDRx, которые управляют направлением передачи данных, записать значение 0 или 1, тем самым, настроив их выводы на прием или передачу данных.
3.2.1 Инициализация таймера/счетчика0
8-разрядный таймер/счетчик может получать импульсы тактовой частоты – СК с предварительного делителя (СК/8, СК/64, СК/8256, СК/1024), импульсы с внешнего вывода или быть остановлен соответствующими установками регистра TCCR0. Флаг переполнения таймера находится в регистре TIFR. Разрешение и запрещение прерываний от таймера управляется регистром TIMSK.
SREG – регистр состояния
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
I | T | H | S | V | N | Z | C |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Рис 3.2 - регистр состояния SREG
I – общее разрешение прерываний, 1 – разрешено.
Т – хранение копируемого бита.
Н – флаг половинного переноса.
S – бит знака.
V – флаг переполнения дополнения до двух.
N – флаг отрицательного результата.
Z – флаг нулевого результата.
C – флаг переноса.
TCCR0 - данный регистр служит для управления частотой и источником тактовых импульсов таймера (см. таблицу)