О терморегуляторе


Поводом для написания этой статьи послужило то, что у меня сломался терморегулятор в холодильнике. Я, конечно, обратился в ремонтную мастерскую, и как обычно это бывает, столкнулся с обычным явлением... Об этом можно долго писать и рассказывать, но я думаю это отдельная тема. В результате я стал искать другой путь и наткнулся на статью в журнале "Радио" №10 за 2003 год "Термометр с функцией таймера или управления термостатом" Автор, С.Коряков из города Шахты Ростовской области, описал довольно интересный аппарат. Занимаясь разработкой и эксплуатацией различного рода устройств на микроконтроллерах меня не могла не заинтересовать эта конструкция ещё и потому, что PIC16F84 я использую давно и совсем недавно услышал хвалебные отзывы о применении новых датчиков DS18B20. Я повторил предложенную Коряковым конструкцию. Я не проводил много опытов потому что схема заработала сразу и я поспешил поведать об этом всему свету. За что был награжден несколькими письмами с вопросами о работе данного устройства. Я решил не отвечать каждому персонально, а выложить свои соображения и результаты экспериментов на своём сайте.
Схема у меня проработала недолго просто потому,что я решил, что мне нужна несколько иная конструкция и как только она будет готова, я сразу же помещу её подробное описание. Но всё же я расскажу что мне понравилось и что меня не устроило.
Во-первых я сразу хочу обратить ваше внимание на то, как подключен индикатор. Автор в статье говорит, что можно использовать любой индикатор, но при этом молчит о том, что на схеме порядок подключения выводов порта В не совпадает с порядком цоколевки индикатора. (Своеобразный тест на внимательность).То есть RB0 на сегмент g, RB1 - на a и так далее. Возможно это продиктовано конструктивными особенностями. Может быть так было проще нарисовать печатную плату?
В принципе, конечно можно использовать любой индикатор, но я посоветовал бы несколько иную схему включения: Здесь
Поскольку я использовал готовую макетную плату, мне было проще внести коррективы в программу. При использовании КИПЦ22Б это выглядет так:
;*********************************************************************************
;Процедура преобразования десятичной цифры из WREG в код 7-ми сегментного индикатора

В оригинале :

После изменений :

DS7SEG ADDWF PCL, 1 DS7SEG ADDWF PCL, 1
RETLW B'01111110' ;0 RETLW B'01000000' ;0
RETLW B'00100100' ;1 RETLW B'01111001' ;1
RETLW B'01010111' ;2 RETLW B'00100100' ;2
RETLW B'01100111' ;3 RETLW B'00110000' ;3
RETLW B'00101101' ;4 RETLW B'00010010' ;4
RETLW B'01101011' ;5 RETLW B'00010010' ;5
RETLW B'01111011' ;6 RETLW B'00000010' ;6
RETLW B'00100110' ;7 RETLW B'01111000' ;7
RETLW B'01111111' ;8 RETLW B'00000000' ;8
RETLW B'01101111' ;9 RETLW B'00010000' ;9
RETLW B'00000000' ;пробел RETLW B'01111111' ;пробел
RETLW B'00000001' ;минус RETLW B'00111111' ;минус
;***********************************************************************************
И ещё у меня почему-то программа работала только при отключенных WDT и PWRT . интересно и то как работают кнопки установки температуры. После двух - трёх устоновок устройство не переключалось в режим измерения температуры. Было испробовано 3 чипа и в трех вариантах платы и результат был одинаков. Я считаю, что необходимо серьёзно покопаться в программе. А так как подробного описания программы нет, то, наверное лучше написать её заново.
Иван Сусанин - новый каталог Интернет ресурсов
Хостинг от uCoz