-
Простой термометр на процессоре AT89C2051
-
AT89C2051
,
DS1820
,
DS18B20
Основное отличие данной конструкции от других многочисленных и замечательных термометров на всевозможных микропроцессорах - это спартанский минимум деталей, в том числе - отсутствие транзисторных ключей. Кроме того, термометр работает с двумя типами датчиков - DS1820 и DS18B20. Практика показывает, что один из первых вопросов в комментариях - "А нельзя ли это переделать на другой тип датчика?", сбор средств и поиски волонтёров. Поэтому было решено делать сразу под оба типа. Нужный тип датчика выбирается перемычкой. Термометр определяет и отсутствие или обрыв датчика температуры, высвечивая на дисплее 'Err'.
Температура отображается на трехразрядном светодиодном индикаторе с общим катодом. Диапазон измерений -55°C…+125°C. Точность измерения температуры - 0.5°C во всём диапазоне.
С индикацией младшего разряда (пол градуса) пришлось схитрить. В диапазоне -55°C…-10°C и больше +100°C температура помещается на индикаторе с точностью до 1°C в младшем разряде. Для индикации 0.5°C в этом диапазоне зажигается точка после младшего разряда. Например -37 это -37°C, а вот -37. означает -37.5°C, а 117. соответственно означает 117.5°C.
Отдельной проблемой оказалось программирование этого микропроцессора. Процессор с индексом 'C' поддерживает только параллельное программирование. Ни один из имеющихся в наличии программаторов этого не умел. Все схемы программаторов, найденные в интернете не вызвали особого энтузиазма. В этих тяжелых условиях, руководстуясь идеями Чучхе было решено самостоятельно делать программатор на коленке, в смысле, на макетке, прямо рядом с термометром, где случайно осталась воткнута Mega32 от какого-то предыдущего проекта. В итоге, это удалось успешно осуществить, и один из ближайших постов будет про этот программатор.
Принципиальная схема контроллера
Принципиальная схема в формате Splan7: (доступно зарегистрированным пользователям)
Перечень элементов
Обозначение | Номинал | Примечание |
---|---|---|
DD1 | AT89C2051 | |
U1 | DS1820/DS18B20 | |
7Seg1 | E30361 | |
C1 | 33pF | |
C2 | 33pF | |
C3 | 10uF | |
Cr1 | 12 MHz | |
R1 | 1k | |
R2 | 4k7 | |
R3 | 10k | |
R4 | 620 | |
R5 | 620 | |
R6 | 620 | |
R7 | 620 | |
R8 | 620 | |
R9 | 620 | |
R10 | 620 | |
R11 | 620 |
Прошивка
Версия v1.0 от 10.12.2012: (доступно зарегистрированным пользователям)
В налаживании данная конструкция не нуждается и начинает работать сразу после включения, в случае правильного монтажа исправных деталей и успешной прошивки микроконтроллера. Возможно только понадобится поставить или снять перемычку под нужный тип датчика температуры.
Задавайте интересующие Вас вопросы в комментах к материалу.
Успехов!
Даташиты
- Микропроцессор AT89C2051 скачать
- Система команд AT89C2051 скачать
- Датчик температуры DS18B20 скачать
- Датчик температуры DS1820 скачать
Продолжение следует...
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
ОБСУЖДЕНИЯ
Простая схемка, попробую собрать
Всё получилось на макетке, спасибо автору! Нет ли печатки?
К сожалению нету. Если кто-то сделает - шлите, размещу
Попробуем собрать.
Какой программатор используете?
Програматор SP200S
Покупной, видимо
Да покупной,но он недорогой(10-11$).Самому под USB сделать сложновато.
Интересно, что его можно купить или в Китае, или на Украине. При пересечении границы РФ он дорожает до 900 руб. И исчезает :)
Давно пользуюсь aliexpress ничего не пропало и не подорожало.
А не подскажете, где посмотреть список программируемых микросхем? Не нашел что-то.
http://www.aliexpress.com/item/New-Shop-Sale-USB-SP200S-Programmer-for-A...
Спасибо, попробую заказать. Жаль, что пики не программирует.
Для пиков самое лучшее PICKit2.
Я им и пользуюсь, собрал пару лет назад. Просто хотел один на всё.
Когда про программатор (или способ как вы прошили AT89C2051) напишите?
Если есть интерес - напишу. Но всё было сделано на макетной плате на Mega8 (понадобится программатор для меги). Шьющая программа на написана Java, интерфейса нет, только командная строка. Так что если есть желание повозиться, могу выложить всё. Если нет - наверное проще купить вот такой программатор, как выше обсуждался.
В итоге я выложу это, просто пока не было смысла спешить с этим.
У меня есть программаторы для ATMEGA, есть atmega8 atmega 16 atmega328 и макетки, и интересно использовать еще кучу at89c2051 которые просто валяются без дела. Выкладывайте :) или на почту пришлите, желание повозиться полно :) Спасибо
Да, хорошо, выложу, как будет свободное время.
Когда выложите материалы по программатору?
Выложил
Хотелось бы попробовать Ваш проект на Atmega8,поскольку есть программатор для него и сам контроллер.
Хотел собрать такой же, только у меня индикаторы с общим анодом, да и
хотел немного подкорректировать программу для вывода температуры без
десятых долей градуса и отдельный индикатор для плюса и минуса.
Не могли бы вы прислать исходник программы.
Боюсь что такой же с общим анодом не получится. Придется внешние ключи вешать.
А можно исходник--мне нуно чтоб по температуре 70С включался порт--как сигнализатор. или прошивку готовую если не трудно.
минусовую температуру не показывает
Заглянул в код - отрицательные температуры должен показывать.
Собрал на AT89C51 - работает! А вот в таймере почему-то не горит один сегмент, на P1.7.
Можно получить исходник?