РадиоКот :: Термометр с большими индикаторами
Например TDA7294

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

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

Термометр с большими индикаторами

Автор: В.Бирюков, не указан
Опубликовано 17.06.2011
Создано при помощи КотоРед.

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

Термометр собран на микроконтроллере PIC16F628, датчике ds18b20 или ds18s20 и четырех индикаторах с общим анодом Kingbright SA10-21GWA (индикаторы, разумеется, можно применить и другие. Потребуется только пересчитать сопротивление резисторов R9-R16). Вся обработка: считывание температуры и вывод на индикаторы выполняет программа микроконтроллера.

Для управления катодами индикаторов применены ключи VT1-VT8. Их логика работы проста: при подаче лог.1 на выход PortB микроконтроллера соответствующий транзистор открывается и через него течет ток на светодиод через ограничительные резисторы R9-R16. Следует обратить внимание на то, что катоды не подключены "поимённо". Например, коллектор транзистора VT1 подключен к сегменту "G" первого индикатора, но к сегменту "B" второго. Это сделано по причине удобства разводки печатной платы и компенсируется программной обработкой. Единственный сегмент, который не может быть таким образом "чередован" - это вывод десятичной точки, потому что падение напрядение на этом светодиоде, как правило, меньше и номинал токоограничивающего резистора отличается от номинала для остальных сегментов.

Управление анодами требует более сложных ключей - состоящих из двух транзисторов. Рассмотрим для примера ключ первого разряда. Он собран на транзисторах VT9, VT13. Транзистор VT9 задаёт базовый ток для транзистора VT13. Как это происходит. При подаче положительного потенциала на базу транзистора VT9 начинает течь ток. Ток ограничен резистором R17 и без коллекторной нагрузки напряжения распределяются следующим образом: 0.6 вольт падает на эмиттерном переходе, а остальное на резисторе. Но когда транзистор откроется и потечет коллекторный ток, а потечет он через эмиттер тоже, этот ток создаст на резистроре R17 падение напряжения, и тогда наше соотношение нарушится - на эмиттерном переходе напряжение упадёт ниже 0.6 вольт и транзистор начнет закрываться, за счет чего упадет коллекторный ток, следовательно упадет ток через эмиттер, из-за чего уменьшится падение на резисторе R17, которое вызовет увеличение напряжения на эмиттерном переходе... Вообще-то, просто установится равновесное состояние, не позволяющее коллекторному току превысить некую величину. Эта величина и задается резистором R17. Как эта величина расчитывается? Исходя из вышеприведенного описания, получается так, что равновесие наступает, когда коллекторный ток создает на R17 падение напряжения на 0.6 вольт ниже чем напряжение управления. Т.е. выбранный номинал рассчитан для тока: напр. лог.1 4.3вольт - 0.6 = 3.7 вольт падает на резисторе. Далее по закону ома I=U/R получаем 3.7/1.3=2.8 мА. Этот ток потечет через переход база-эмиттер транзистора VT13 и откроет его. Резистор R18 нужен для того, чтобы не дать отрыться транзистору VT13 из-за токов утечек.

Эта схема ключей выгодно отличается от более "классических" меньшим числом элементов (в классической 3 резистора, а здесь только 2 на разряд), но более требовательна к точности их номиналов. В этой схеме можно еще уменьшить число элементов! Так как применена динамическая индикация со сканированием по разрядам, то ключи работают по-очереди, и, в каждый конкретный момент открыт один ключ. Следовательно, ток через эмиттерный резистор (R17, R25-R27) в каждый момент времени течет только через один из них. Таким образом вместо четырех можно поставить только один, соединив эмиттеры транзисторов VT9-VT12 вместе. (Поначалу так и планировалось - это заметно по нумерации компонентов, но ради облегчения разводки пришлось пожертвовать этой копеечной экономией).

Питание микроконтроллера осуществляется через линейный стабилизатор 78L05 и диод D1. Диод, если не предполагается в процессе эксплуатации менять прошивку микроконтроллера, можно заменить перемычкой.

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

Вся связь с внешним миром производится через разъём X1. Питание 12 вольт подается на контакты +12 и GND, а к контактам GND, 1-wire и Vcc подключаются выводы датчика ds18s20 Gnd, DQ и Vdd, соответственно.

В приложении даны файлы схемы и печатной платы в формате EagleCAD. Плата проектировалась односторонняя. Дорожки синего цвета выполняются проволочными перемычками под индикаторами с обратной стороны. Все остальные детали SMD типа устанавливаются со стороны печатных проводников (красного цвета, если вы используете настройки Eagle по умолчанию). Разумеется, платы можно подкорректировать под другие индикаторы и детали.

Несколько слов об алгоритме работы программы микроконтроллера. При подаче питания микроконтроллер выводит тестовое сообщение состоящее из четырех дефисов и проводит проверку наличия устройств на шине 1-wire. Сначала посылается команда чтения сериального номера устройства, если устройство найдено, то происходит работа с ним. Если ответ будет с ошибкой, то проводится полное сканирование линии и будет выведено количество найденных устройств (не больше 10 - далее сканирование прерывается). Это допускает наличие на линии нескольких 1-wire устройств, но программа будет работать только с "первым попавшимся" устройством с известным программе кодом семейства.

В процессе работы могут выдаваться диагностические сообщения:

  • nopr - Нет питания датчика (вероятно оборван вывод Vdd)
  • npr- - Нет "presence pulse" - (вероятно оборвался вывод DQ)
  • npr_ - Линия удерживается в лог.0 (вероятно короткое замыкание на массу)
  • crc  - Ошибка контрольной суммы - произошел сбой и полученные данные не достоверны, потому и не выводятся.

Ошибка "npr-" не появится если линия оборвана изначально - просто будет сообщение, что устройств не найдено. Ошибка "crc" может возникать, если изначально найденный датчик отключен, но присутствуют другие устройства. Программа не переключится на другой датчик без сброса.

Опрос датчика производится с интервалом, приблизительно, 8 секунд.



 


Файлы:
Схема и ПП в формате Eagle.
Прошивка МК с исходником


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




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

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

16 2 0
5 1 0