РадиоКот :: zCombo – комбинированный прибор на МК Zilog.
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

zCombo – комбинированный прибор на МК Zilog.

Автор: edmarch
Опубликовано 22.08.2013
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2013!"

 

    Поздравляю Кота с очередным конкурсом, а также хочу сказать спасибо вообще radiokot.ru и сообществу за удобоваримую подачу материалов и неоднократную скорую радиотехническую помощь.

     Изначальное предназначение устройства – отображение температуры в духовке газ. плиты, такой, еще советской, с отказавшим где-то 20 лет назад штатным отображателем температуры. В последствии этого показалось как-то мало и функционал был наращен таймером для временного контроля приготовления блюд, а также термостатом для вытягивания лишних ароматов и температур из кухни при помощи, например вытяжки или простого вентилятора вытяжки.

    Также дабы устройство не доставало разноцветными огоньками, основное время оно проводит в состоянии с погашенными индикаторами. Ещё одни часы мне на кухне были не нужны, хватало настенных и “микроволновочных”,поэтому часы не реализовал.

    Ну и конечно,3 кнопки и переменник, вполне простой интерфейс. Можно вообще ничего не нажимать, при достижении духовки 35 градусов индикация температуры включается автоматически. Это порадовало старшее поколение.

     Сердцем устройства является микроконтроллер Z8F0830 фирмы Zilog. Семейство МК называется “Z8 Encore! F0830 Series”. Документация здесь.

    Если вкратце, то это 8 килобайт нормальной перепрограммируемой флэш памяти,256 байт RAM,64 байт ОЗУ. Есть АЦП, вроде того, что стоит в AVR-ках, то есть 10 бит разрешения, один источник опорного(2.0 В) и мультиплексируемый вход на порты C и B. Простое короче АЦП. Процессор eZ8 разгоняется до 10 МИПС,при тактировании 20 МГц. Простая система прерываний, один RC-генератор,называемый IPO, с частотой 5.52960 МГц. МК стартует именно на этом генераторе, далее программной последовательностью нужно переходить на кварцевое тактирование. При сбое кварца тактирование переключается на IPO ,возможно прерывание.

    Разработка происходила в фирменной среде “ZDS2 Z8Encore! 5.0.0” абсолютно бесплатной, на Си. https://www.zilog.com/index.php?option=com_product&task=iframe. Сейчас Zilog оформил скачивание через свой магазин, так что надо просто найти софт и купить его за 0 денег. Ссылка придёт на почту.

    У Zilog есть библиотеки стандартной перифирии,примеры программ:

https://zilog.com/download/z8encore/appnotes/Install_Z8_Encore!_Applications_Library_1.2.0.exe

https://zilog.com/download/z8encore/appnotes/Install_Z8_Encore!_Sample_Code%20_Library_1.0.0.exe

   Они доустанавливаются отдельно и сильно упрощают жизнь. Старший брат Z8F0830,тоже "Encore!" - F1680,располагает уже привычным цифро-интерфейсным фаршем(SPI,UART,I2C...).Есть и 16-битные "ZNEO Z16F". Это так, к слову.

   Особо хочется отметить как в среде ZDS2 происходит прошивка/отладка. Для сборки программатора/отладчика понадобится конвертер уровней типа max3232 или  USB-COM преобразователь + диод шоткии и резистор. RX/TX объединяются и подаются на ногу DBG. Я использовал для отладки модуль на TUSB3410. Вот отладчик-программатор:

    Есть у Z0830 и фьюз-биты. Их конфигурируют прямо в тексте программы. Далее они часть прошивки(как в микрочиповской среде). Хэлп к IDE хороший + есть примеры,и в том числе как их запрограммировать.

     Порты у Zilog представляются 4 регистрами: регистр входных данных, выходных данных и регистры контроля и адреса. Через 2 последних расшариваются регистры направления порта,pull-up порта, альтернативных функций и другие, всего ещё 8, некоторые довольно диковинные по сравнению с AVR. Есть особый порт на который светодиоды можно подключать без резисторов, а ток задавать программно(3 mA,7 mA, 13 mA и 20 mA). Называются они Direct LED drive. Подтяжка к VCC возможна на любом порте, есть доступ к отдельным битам. Пин RESET можно вообще перевести в GPIO, он не участвует в программировании/отладке. Вобщем порты не похожи ни на АВРовские, ни на PICовские.

   Итак…

    Индикатор по сути 4 разрядный,значёк градуса, между 3 и 5 индикаторами зацеплен вместо десятичной точки последнего, через дополнительный резистор на 300 Ом. Индикаторы ставил какие были, они с ОА. Ввиду наличия только одного таймера 0, на него и переложено обслуживание индикатора и мелких флагов.

    Все кнопки в устройстве работают до истечения 3 секундного прогресс бара на последнем индикаторе. После отобразится новое состояние функции кнопки.

    Измерение температуры печки осуществлено на термопаре от китайского тестера и программно ограничено примерно 530-ю градусами Цельсия. Как уже упоминалось, при повышении температуры в духовке выше 35 градусов начинается отображение температуры. Схема усилителя термопары на LM358 довольно распостранённая. Подгонка возможна подстроечником в цепи обратной связи ОУ.

    Если удерживать кнопку SOUND,до истечения 3 секундного прогресс бара на 4 индикаторе,то включится функция пропикивания температур печки. При пересечении границы 99-100 градусов, буззер пикнет 1 раз. При пересечении 199-200 – пикнет 2 раза. И так далее. Повторное удерживание SOUND отключит пиканье, подтвердив это кратковременной надпись OFF.

     Кнопка T_KOMN запускает 10 секундное отображение температуры комнаты. Измерение реализовано на нетривиальном ШИМ-термометре фирмы Analog Devices TMP06. Сразу после включения с вывода OUT термометра начинает поступать ШИМ сигнал с временными характеристиками :

Сразу распаял его на миниборде:

      Если вывод CONV IN датчика оставить неподключенным, при 25 градусах сигнал равен лог.1=34 ms и лог.0=65 ms. Датчик подключен в режиме постоянного преобразования. Также есть режимы “одно преобразование”(one shot) и “Цепочка”(daisy chain).В последнем режиме датчики соединяются в цепочку, первому из них подают запрос и ШИМы температур всех датчиков в цепочке по порядку “приходят” в МК. Подсчёт длительностей ШИМ программный, с корректировкой числа срабатываний таймера 0, поэтому миганий индикатора при подсчёте длительностей нет. Также есть программное усреднение результатов. Датчик способен измерять от -40 до +150. Отрицательные температуры отображать будет корректно (в кухне это конечно не нужно,но всё же:) ), проверено в холодильнике при -20. При монтаже датчик был оттянут на высоту где-то 1 метр от устройства.

      Порог термостата задаётся резистором FAN_ON_LEVEL. С ним была куча проблем, и в итоге он выставляет порог от 16 до 39 градусов, его показания оцифровывает АЦП. Для устранения нестабильности введена программная нечувствительность и усреднение. При настройке порога этим резистором ,происходит индикация выставляемого порога(где-то 3 секунды), в любом из режимов работы. Если выкинуть резистор на 27КОм диапазон регулировки расширится вниз до 0 градусов.

      Последним элементом термостата является схема с оптосимистором MOC3061 и симистором BT139-600,включающая непосредственно нагрузку(вентилятор, вытяжку).При достижении температуры комнаты порога включения нагрузка включится. Гистерезис на выключение сделал 3 градуса.

     И последнее, кухонный таймер. Он управляется 1-ой кнопкой(одноимённой),при её нажатии опять прогрессбар, после надпись “Set” и при дальнейшем удержании происходит инкремент показаний по 1-ой минуте до 10-ти минут, дальше по 5 минут до 30 минут. Далее по 10 минут до 6 часов(360). После чего обнуление и всё сначала. Если оставить минуты на нуле – таймер не включится. При отпускании кнопки через 5 секунд устройство пикнет и начнёт отсчёт. Для сброса отсчёта, да, да опять кнопка таймер, до появления надписи “OFF”.

     После прихода времени срабатывания по таймеру zCombo пищит буззером (вытащенным из дайал-ап модема), до тех пор пока не привлечёт внимание. Вечно пищит. Отбой писка – любой кнопкой (держать 1-3 секунд), можно и кнопкой “TIMER”. Внимание, буззер без генератора, а потому на соответствующей ноге около килогерца. Чтобы пищал "попротивнее" резисторы последовательно не ставил.

    При обучении на месте домашним понравилось, на практике всё оказалось просто. Ну, в общем, таймер одной кнопкой.

    Корпус устройства от китайского(ну а какого ж) RF модулятора.

    Вот и всё, спасибо за ознакомление с моим домашним термометростроением. Хочу отметить действительно положительные эмоции от общения с МК фирмы Zilog (учитывая, что я вообще-то пишу под AVR) ,быстрый старт. Также рад, что удалось впихнуть что-то отличное от DS18x20, хотя он конечно же хорош.

ФОТО УСТРОЙСТВА:

 

Appnotes и документация на Z8F0830 : тут

Даташит на термометр: тут


Файлы:
Архив RAR


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

2 0 0