понедельник, 7 декабря 2009 г.

Digital Thermometer























Цифровой термометр на контроллере Arduino сдлеать самому достаточно просто. Нужно лишь купить в ближайшем магазине радиодеталей:


  1. цифровой сенсор DS1820 фирмы Dallas,

  2. HD44780-совместимый ЖК дисплей

  3. переменный резистор на 10КОм

  4. резистор на 4.7КОм

  5. регистр сдвига с защелкой 74HC595

  6. немного проводов и мозгов...)

Температурный сенсор управляется по одному проводу, подключеннуму к центральному выводу, также к нему подведен pull-up резистор 4.7К (т.е. подключенный к +5В, это так называемое паразитное питание). 2 других вывода заведены на общий земляной провод. В Arduino обменом данными и расчетом температуры датчика занимается библиотека Dallas Temperature library http://milesburton.com/wiki/index.php?title=Dallas_Temperature_Control_Library.
ЖК дисплей работает в режиме 4bit mode. К тому же, данные и управление на него поступает через сдвиговый регистр 74HC595, т.о. для управления нужно всего 3 провода и 3 цифровых порта на Arduino. LCD3Wire library http://www.arduino.cc/playground/Code/LCD3wires сделает за вас всю работу.
Переменный резистор нужен для того чтобы корректировать яркость и контраст изображения на ЖК дисплее. Кутите его отверткой...
Фото-диод на картинках здесь не задействован.
PCB разведена во Fritzing sketch по ссылке ниже. Я не особо обременял себя электрической схемой, поэтому в нее лучше не смотреть, зато разводка сделана в принципе приемлимо. Однако сама палта сейчас в процессе изготовления, так что следите за обновлениями, а лучше подпишитесь на RSS моего блога. Также на Breadboard есть пара резисторов зашунтированных проводом на землю, это только для удобства разводки платы, вместо них припаиваются перемычки.
Плата выполнена в виде шильда для Arduino Decimila/Duemilanova.


3 комментария:

  1. Ваш код в скетче работает, но мне бы хотелось выводить кириллические символы, для этого использовалась ранее библиотека LiquidCrystalRus, как же сейчас мне быть?

    ОтветитьУдалить
    Ответы
    1. Надо делать таблицу перекодировки под ваш дисплей (через progmem).

      Удалить
    2. Добавил библиотеку в пост, вроде рабочая, я уже решал как-то вашу проблему...

      Удалить