Трехканальный термометр на ds18b20

Однажды мне пришлось изготовить трехканальный термометр на ds18b20. Не могу не поделиться с нуждающимися.... Правда, справедливости ради, стоит отметить, что прошивка была написана за одну ночь, поэтому не очень читабельна.... Зато устройство работает - это ведь главное :).

Для изготовления нам понадобиться:

микроконтроллер atmega8 - 1 шт.

датчики ds18b20 - 3 шт. (так запланировано, можно й меньше, прошивка будет работать);

трехрозрядные сегментные дисплеи - 3 шт.

разьемы:

bh-16 ("мама", "папа") - 1 шт.

bh-10("мама", "папа") - 1 шт.

конденсатор 10 мкф - 1 шт.

конденсатор 10 нф - 1 шт.

резистор ~470 Ом - 7 шт.

резистор 4.7 Ом - 1 шт.

разъем для подключения питания - 1 шт.

Вроде все. На печатке предусмотрено место для кварца, но он не используется, все тактируется внутреним генератором на частоте 8 Mhz.

term

В архиве найдете разводку в Sprint Layout. Там же скомпилирована прошивка, а также исходники аод Code VisionAVR (вдруг понадобиться =) ).

Для подключения термодатчиков используется разем bh-10 (9 контактов задействовано), для подключения сегментных индикаторов - bh-16. В принципе, можно все напрямую подпаять, но я так сделал для удобства. Схема подключения:

bh-10:

ds18b20 1: 1 - VCC, 2 - GND, 3 - DQ

ds18b20 2: 4 - VCC, 5 - GND, 6 - DQ

ds18b20 3: 7 - VCC, 8 - GND, 9 - DQ

bh - 16:

A - 4, B - 6, C - 8, D - 10, E - 12, F - 16, G - 14

Катоды: знаки (1 розряд) :

1 - 15, 2 - 13, 3 - 11

Цифры:

1_2 (первый индикатор, 2 розряд) - 9 (9 pin bh-16),

1_3 - 7, 2_2 - 5, 2_3 - 3, 3_2 - 1, 3_3 - 2

Вобщем, получился термометр, диапазон измерений(-55, 100) градусов.

При включении издает приветствие или сообщение об ошибке (если не подключен ни один датчик), устройство расчитано так, чтобы индикаторы находились рядом и - для возможности вывода сообщений. Предусмотрено вывод сообщения о высокой/низкой температуре. Используется динамическая индикация.

Исходники: Term