-
Таймер обратного отсчета на ретро-процессоре AT89C2051
-
AT89C2051
Внезапно понадобился таймер, для включения на короткое время УФ лампы. Под рукой как раз оказался AT89C2051 после экспериментов с термометром. В результате получился вот такой таймер:
Принципиальная схема
Таймер умеет считать назад до нуля. Начальное время выставляется от 1 минуты до 99 часов 59 минут. Есть звуковая индикация окончания обратного отсчета. По окончании отсчета нагрузка включается или, наоборот, отключается в зависимости от режима, выбранного при начальной установке.
Таймер очень удобно использовать при засветке ультрафиолетом плат с фоторезистом. Или, например, обеззараживании помещений УФ лампой.
Еще один планируемый вариант использования - включение стиральной машины ночью, когда электричество более дешёвое. В этом случае, симистор надо ставить на радиатор или заменять выходную цепь на мощное реле.
Прошивка в варианте "C" может быть использована как кухонный таймер. В ней выставляется только время (часы и минуты). Сигнал окончания всегда включен, звучит 1 минуту, выход управления нагрузкой имеет высокий уровень во время обратного отсчета.
Принципиальная схема в формате Splan7: (доступно зарегистрированным пользователям)
Печатная плата
Печатная плата изготовлена по лазерно-утюжной технологии.
Печатная плата в формате Sprint Layout: (доступно зарегистрированным пользователям)
Прошивка "A"
Прошивка с установкой часов-минут. Версия A-1.0: (доступно зарегистрированным пользователям)
Прошивка "B"
Прошивка с установкой часов-минут-секунд. Версия B-1.1: (доступно зарегистрированным пользователям)
Прошивка "B" проверена только в протеусе, требуется проверка в железе!
Прошивка "C"
Прошивка "кухонный таймер" с установкой часов-минут. Версия C-1.0: (доступно зарегистрированным пользователям)
Прошивка "C" проверена только в протеусе, требуется проверка в железе!
Файл для Протеуса
По просьбам трудящихся:
DSN файл для протеуса для проверки работоспособности прошивки: (доступно зарегистрированным пользователям)
Коллега mcm777 пишет в комментариях, что успешно повторил конструкцию, заменив микроконтроллер AT89C2051 на AT89C51.
Я продублирую тут его замечания по адаптации схемы под AT89C51:
Программируются они по разному, C51 нужно указывать адрес, а C2051 содержит счетчик адреса....
По подключению - индикатор нужно подключать к тем же портам, но у C51 они выдают меньший ток (около 10mA). При использовании современных китайских индикаторов яркость получается достаточной, резисторы R6-R13 можно увеличить до 1кОм чтоб не перегружать порты.
Вывод 31(EA - переключает с внешней памяти программ на внутреннюю) необходимо подтянуть резистором 4,7-10 кОм к +5 Вольт (40 нога C51). 20 нога - общий.
Выводы AT89C51 (DIP-40):
- 40 - +5В;
- 20 - Общий;
- 31 - EA (подтянуть резистором 4,7-10 кОм к +5В);
- 9 - Reset (аналогично как C2051);
- 18,19 - кварц;
- 10,11 - P3.0, P3.1 (кнопки);
- 12 - P3.2 (на R4);
- 13 - P3.3 (на Horn1);
- 1 - P1.0 (Ind - 10);
- 2 - P1.1 (Ind - 5);
- 3 - P1.2 (Ind - 11);
- 4 - P1.3 (Ind - 7);
- 5 - P1.4 (Ind - 4);
- 6 - P1.5 (Ind - 2);
- 7 - P1.6 (Ind - 1);
- 8 - P1.7 (Ind - 3);
- 14 - P3.4 (Ind - 12);
- 15 - P3.5 (Ind - 9);
- 17 - P3.7 (Ind - 8);
У индикаторов 6-й вывод может отсутствовать, но он как бы есть)) т.е. посчитан..
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
ОБСУЖДЕНИЯ
Для включения на короткое время УФ лампы очень желательно изменить диапазон, т.е.начальное время должно выставлятся от 1 секунды до 99 минут 59 секунд.
Большая просьба к автору, если он сюда заглядывает,сделать вариант прошивки с шагом 1сек. Мне ,например,нужна выдержка 1 мин.15сек.
Большая просьба к автору, если он сюда заглядывает,сделать вариант прошивки с шагом 1сек. Мне ,например,нужна выдержка 1 мин.15сек.
Такую прошивку сделать можно, но до Нового года нет свободного времени. Как сделаю - выложу.
Спасибо, если нужно,могу протестировать.
Сделал прошивку с установкой секунд. Проверил только в симуляторе, проверяйте в железе.
К сожалению в прошивке "Версия B-1.0" информация на индикаторы выводится нечитабельная (ни цифры ни символы),т.е. что то выставлять и переключать можно, но что оно значит ??? можно только догадыватся.
Вот видео работы http://my-files.ru/vsjcve
Вопрос к автору.Понимаю что не хватает свободного времени, но может есть возможность модифицировать версию "А": вместо часов сделать минуты, а вместо минут секунды( т.е. ускорить отсчет времени в 60 раз), даже символ "h" можно не менять. Будет лимит до 99 минут 60 сек.
Если адаптировать схему под прошивку,то нужно поменять местами сегменты индикатора, по крайней мере в установке часов прокатит, а дальше уже смотреть что получится из этого.
Правильное соединение процессора с индикатором для прошивки B:
P1.0 - E
P1.1 - D
P1.2 - A
P1.3 - DP
P1.4 - F
P1.5 - C
P1.6 - G
P1.7 - B
Видимо в какой-то момент поменял в программе и симуляторе, а на сайте в схеме забыл поправить. Приношу извинения, попозже исправлю схему.
Спасибо. При такой разводке всё корректно отображается и работает в "железе". Но иногда возникает маленький нюанс при установке секунд связанный или с некорректным запуском контроллера или,возможно,с наводками.Он заключается в том, что установка секунд начинается со случайного числа и тогда возле цифры установки десятков секунд может появлятся точка или вообще какой то случайный символ на месте десятков. Отсчет в таком случае доходит до 99 сек и дальше до нуля.Если цифры с точкой "прощелкать" и остановится на цифре без точки - то отсчет проходит корректно.
Заменил прошивку на B-1.1
Теперь с секундами должен быть порядок.
И схему заменил.
Теперь всё отлично. Еще раз спасибо за труд.
Принципиальную схему в формате Splan7 я не могу скачать.Вместо загрузки открываются крякобразы: "SPLAN70‰W@�������������
Íîâûé ëèñò��������������������)��¤���
���r��k��...и т.д...."
Попробуйте ссылку "сохранить как"
<Попробуйте ссылку "сохранить как"> Спасибо, скачалось.
Немного модифицировал и проверил в работе схему для управления УФ светодиодной матрицей (для засветки фоторезиста).
Можно применить только один MOSFET, но тогда необходимо изменять прошивку, а это уже
допонительнаянагрузка для автоора.
Как я понимаю, вопрос в полярности управляющенго сигнала?
Скорее не в полярности а в необходимости инвертировать уровни на выходе Р3.2 МК (в случае управления нагрузкой одним мосфетом). Сейчас при "1" нагрузка выключена , а при "0" включается. Поэтому пришлось использовать для инверсии дополнительный Р-канальный мосфет(без него прожектор работает "наоборот").
p.s. Можно и с этой прошивкой управлять только одним мосфетом, но при условии использования питания 12В с изолированным от GND минусом (как вариант, я исппользовал два отдельные БП на 5В и 12В).
Насколько я помню, после выставления секунд идет выбор рабочего уровня на выходе P3.2. Так что можно управлять нагрузкой либо высоким, либо низким уровнем, как пожелаете.
Цитата: < ...после выставления секунд идет выбор рабочего уровня на выходе P3.2. Так что можно управлять нагрузкой либо высоким, либо низким уровнем, как пожелаете.>
Все именно так и есть...но сразу с момента подачи питания и все время ,пока я эти параметры вибираю и выставляю на выходе Р3.2 сохраняется высокий уровень , соответственно светодиодная матрица будет светится .
<...светодиодная матрица будет светится > если управлять по схеме только с одним мосфетом.
Да, верно, это я не учёл
Есть одна мысль на эту тему, если появится время - сделаю.
А так было б проще, и с MOC3061 можно подружить.
У вас есть программа в Proteus? если она есть у вас отправте на koipo95@bk.ru .Мне просто нужно посмотреть, работает ли устройство!
К сожалению для протеуса ничего не осталось, хотя вроде был файл. Давно дело было. У меня это устройство с прошивкой "А" сейчас на ходу, на прошлой неделе фоторезист засвечивал. Если что-то интересует подробнее, например управление - могу выложить видео.
Только я уже переделал силовую часть, там вместо симистора стоит твердотельное реле. А микроконтроллер, обвязку и прошивку не трогал.
Пожалуйста, присылайте мне, если найдете Proteus!
Пожалуйста, присылайте мне, если найдете Proteus!
Для этого таймера файла нет. Есть файл для гругого похожего проекта:
https://www.linker.ru/article/prostoy-termometr-na-processore-at89c2051.htm
Надо только чуть-чуть поправить, убрать термометр, добавить кнопки. Сможете?
Да смогу.
Отправляйте пожалуста.
Отправил
У вас есть код в ассемблере. Схема не работает у меня.Я отправлю проекты в Proteus.
Вы на русский переводите с другого языка? Я не до конца понимаю, что вы хотите. Проверить Ваш проект в Proteus?
Зачем вы превратили ZIP архивы в JPG? Не даёт прицепить в комменты .zip?
Я смогу проверить Ваш проект вечером или завтра утром
Большое спасибо заранее!
Я не смог открыть Ваши протеусовские файлы, у меня старый протеус. Посмотрите, здесь в конце статьи я добавил свой файл для протеуса. В нём прекрасно работают обе прошивки, можете попробовать у себя запустить.
Извините меня за то, что беспокоию вас, но у меня не работает проект в Proteus. Вы не знаете, это из-за версии Proteus? Какой протеум вы используете?
У меня 7.7 SP2
Вы же не забываете в протеусе в свойствах микроконтроллера указать где лежит файл прошивкой?
Иначе протеус будет искать и не находить прошивку там, где она лежала у меня. У Вас она наверняка лежит на диске в другом месте.
Проект не работает у меня.
Покажите скриншот с открытыми свойствами процессора.
Кварц в симуляции не нужен, и так работает.
Если хотите эффективной помощи, дайте доступ через Тимвьюер, я посмотрю, в чём может быть проблема. Если надумаете - пришлите логин, пароль и удобное время на почту root собака linker.ru
Собрал на AT89C51 - почему-то не горит один сегмент, на P1.7. Может быть отличается вывод в этот порт?
Именно на AT89C51,а не на AT89C2051?
Да, на AT89C51. Заработало, видимо в безпаечной монтажке контакт пропал...
Напишите, если были какие-то тонкости. Это интересная информация про C51, для тех, у кого с программированием C2051 сложности. Или они одинаково программируются?
В какой среде пишете для MCS-51? Можете скинуть ее мне на почту? mcm777собакаYandex.ru Лежат несколько камней, надо что-нибудь сделать))
Пишу без всякой среды в обычном текстовом редакторе. Компилирую с c51asm, который подключен а протеусе и прямо оттуда сам вызывается перед запуском на симуляцию, если исходник поменялся.
Страницы