Программа Сервисный Центр
0

Интеллектуальная система контроля температуры на базе микроконтроллера AVR. Часть 2 - Описание задач, выполняемых функциями в программе микроконтроллера, настройка и работа с системой.


Часть 1 – СхемаИсходный код программы микроконтроллера и файл прошивки можно скачать в секции загрузок ниже. В самом начале программного кода объявляются определения некоторых портов микроконтроллера, подключение ЖК индикатора, кнопок и адреса в EEPROM. Далее определяются глобальные переменные и прототипы функций.Рассмотрим задачи выполняемые функциями. Первая с именем setup_mcu() конфигурирует линии ввода/вывода микроконтроллера для общих задач, для управления ЖК индикатором и звуковым излучателем. Также в этой функции во флаги «c» и «h» записывается значение 0. Эти флаги устанавливаются каждый раз, когда система определяет ошибку или неисправность. Флаг «h» – неисправность узла нагревателя, «c» – неисправность узла охлаждения. Следующей после функции конфигурирования микроконтроллера следует функция scan_keys(), которая считывает состояние кнопок, генерирует специфический тональный сигнал для нажатой кнопки и возвращает код кнопки. Таким образом, отслеживание нажатия кнопок, устранение дребезга контактов, генерация звуковых тональных сигналов при нажатии кнопок сделаны универсальными во всей программе.Функция adc_avg() предназначена для работы с 64 выборками значений АЦП с канала, она вычисляет среднее значение, чтобы исключить шумы и повысить точность измерений. Возвращаемое функцией значение имеет тип беззнакового целого, т.к. АЦП работает с 10-битным разрешением. За ней следует функция temp_display(), отвечающая за вывод текущего значения температуры на экран ЖК индикатора.Функция Settings() является наиболее важной частью программы микроконтроллера. Она выполняет две задачи, точнее предоставляет для пользователя два меню: первое реализует запрос на сброс ошибок системы, второе позволяет пользователю установить верхнее и нижнее значения температуры, а также количество системных проходов, которое будет разрешено для установленной температуры, пока она не достигнет номинального значения. Каждый раз при превышении этих значений система будет сигнализировать об этом, и соответствующий узел управления нагревом или охлаждением будет активироваться. Таким образом, установка правильных значений гарантирует надежную работу системы и исключает ложные срабатывания.Функция inc_dec используется при работе пользователя в настройках системы, когда он изменяет значения температуры и количество системных проходов. Функция Display_common используется в общих целях управления индикатором и, по мере необходимости, в функции inc_dec. Следующая функция compare_temp() сравнивает значение текущей температуры с установленными значениями и отображает на ЖК индикаторе сообщение о том, что температура находится в установленных пределах или превысила их.Еще одной немаловажной подпрограммой является функция с именем controller_state. Именно здесь контроллер включает или выключает устройства управления температурой, а также генерирует сигнал тревоги в случае возникновения ошибки. В связке с этой функцией работает подпрограмма check_fault, где проверяются условия возникновения ошибок.Встроенная EEPROM микроконтроллера используется для хранения установленных значений температуры и других конфигурационных параметров, работа с ней организуется в функции read_memory. Последние три функции в программном коде: fault_messages()  указывает тип ошибки, включает соответствующий для ошибки светодиод и генерирует тревожный тональный сигал; settings_demanded() вызывает меню настройки; all_tasks() – совокупность всех функций, выполняемых в основном цикле программы.Работа с системойПосле запуска система настраивает периферию микроконтроллера и считывает сохраненные данные из EEPROM. Если в EEPROM содержатся некорректные данные (мусор), то устанавливаются параметры и значения по умолчанию. После чтения EEPROM система переходит в режим слежения за температурой и ожидает событий, связанных с превышением установленных пределов. На данном этапе на индикаторе отображается текущая температура и статус системы.Если пользователь хочет настроить параметры, то необходимо нажать кнопку «Setup» для входа в меню настроек. Настройка параметров проходит в три этапа: установка верхнего значения температуры (Рисунок 1), установка нижнего значения (Рисунок 2) и установка количества системных проходов до вывода сообщения об ошибке. Если, например, установить верхнее значение 40°С, нижнее 20°С, число системных проходов 45, а текущая температура постепенно растет от 30°С до 41°C, то система выдаст сообщение о выходе температуры за установленные пределы и активирует узел управления охлаждением. На экране ЖК индикатора появится сообщение о высокой температуре (Рисунок 3). Теперь, если температура начнет снижаться и достигнет значения между (40°С – (40°С – 20°С)/2)=30°С и 20°С за время 45 системных проходов узел охлаждения отключится и сообщение о высокой температуре исчезнет. Система вернется в нормальное состояние.Если же температура не уменьшится до значения в указанном выше диапазоне, то предполагается, что неисправен модуль охлаждения или же по другим причинам регистрируется перегрев или выделение слишком большого количества тепла, с которым не может справится охлаждение. В связи с этим выдается сообщение о неисправности узла охлаждения, и он отключается до тех пор, пока не будет сброшено сообщение об ошибке. По такому же сценарию система проходит при регистрации сигнала низкой температуры. Если фиксируется одновременная ошибка и нагревателя и охлаждения, то система переходит в состояние полной остановки, вывод из которого возможен по сбросу системы.
Интеллектуальная система контроля температуры на базе микроконтроллера AVR. Часть 2 - Описание задач, выполняемых функциями в программе микроконтроллера, настройка и работа с системой.
Рисунок 1.Настройка интеллектального контроллера температуры: установка верхнего значения температуры.
Интеллектуальная система контроля температуры на базе микроконтроллера AVR. Часть 2 - Описание задач, выполняемых функциями в программе микроконтроллера, настройка и работа с системой.
Рисунок 2.Настройка интеллектального контроллера температуры: установка нижнего значения температуры.
Интеллектуальная система контроля температуры на базе микроконтроллера AVR. Часть 2 - Описание задач, выполняемых функциями в программе микроконтроллера, настройка и работа с системой.
Рисунок 3.Интеллектуальный контроллер температуры: сообщение на ЖК индикаторе о превышении  установленного значения температуры.
ЗагрузкиИсходный код и HEX-файл прошивки - скачатьembedded-lab.com

Также рекомендуем:

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (1)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"