Page 1 of 1

Программатор для DS1821 плюс термостат без индикатора

Posted: 18 Dec 2016 17:28
by propell_ant
Требования к устройству - работа через USB, уровень сложности сборки и настройки - для начинающих.
За основу взят программатор USBASP (я покупал тут)
usbasp.jpg
с прошивкой от проекта usbtemp
Этот программатор сделан так, что его легко перепрошить - замыкается J2, а в колодку втыкается стандартный 10-ти контактный шлейф AVR ISP
10-pin_ISP_Connector_standard.jpg
10-pin_ISP_Connector_standard.jpg (40.96 KiB) Viewed 4166 times
Правда для этого нужен другой программатор, но, надеюсь, он у вас в хозяйстве найдется.

Итак, для работы вам понадобится:
1. Купить или спаять USBASP
2. Прошить его прошивкой usbtemp_firmware_v_2_0.hex, фьюзы как на кактинке
фьюзы
фьюзы
fuses-usbasp-factory.PNG (2.91 KiB) Viewed 4166 times
3. Подтянуть ногу 7 (SCK) к питанию резистором 4.7к
4. Подключить датчик DS1821 (см. распиновку разъема AVR ISP)-
GND- 10(GND)
DQ - 7 (SCK)
VDD- 9 (MISO)
5. Воткнуть всё в сборе в компьютер
6. Он попросит драйвер - дать ему драйвер из папки USBavr-driver
7. После установки драйвера можо запускать утилиту usbtemp_v2_0.exe, например
8. usbtemp_v2_0.exe write821_temps 32 30
9. usbtemp_v2_0.exe read1821_th
напишет th = 32
10.usbtemp_v2_0.exe read1821_tl
напишет tl = 30

Утилита понимает такие команды:
usbtemp_v2_0.exe read1821_th - читает из датчика верхний порог температуры
usbtemp_v2_0.exe read1821_tl - читает из датчика нижний порог температуры
usbtemp_v2_0.exe read1821_status - читает из датчика регистр настроек
usbtemp_v2_0.exe write1821_temps <dec_th> <dec_tl> - пишет в датчик пороги температуры
usbtemp_v2_0.exe write1821_status <hex_status> - пишет в датчик регистр настроек
usbtemp_v2_0.exe toggle1821 - дает команду датчику на смену режима работы (термостат - 1-wire датчик и обратно)

Режим термостата
Устройство умеет работать и с датчиками DS18B(S)20, собственно для этих датчиков проект Usbtemp изначально и предназначался. Несколько датчиков (максимум 6) опрашиваются каждые 10 секунд. Утилита, кстати, умеет запрашивать температуру у каждого из датчиков (usbtemp_v2_0.exe temp <sensorID>, список датчиков можно получить командой usbtemp_v2_0.exe sensors).
Так вот, я добавил в само устройство пороги срабатывания, которые устанавливаются отдельной командой usbtemp_v2_0.exe write_thermostat <dec_th> <dec_tl>, а на контакт 1 (MOSI) выведен сигнал на включение нагревателя. После очередного опроса показаний датчиков (раз в 10 секунд) устройство проверяет, не вышли ли показания из заданных границ, если какая-либо температура выше верхнего предела - подается сигнал на выключение нагревателя, если какая-либо температура ниже нижнего предела - подается сигнал на включение нагревателя (как в термостате у Хардлока). Тут, естественно, может возникнуть ситуация, когда значения температуры с разных датчиков оказались "по разные стороны" от настроенных порогов, в таком случае нагреватель отключается.
Настроеные пороги срабатывания сохраняются в EEPROM и применяются при запуске устройства.
Интересно, что после сохранения настроек, устройство может работать термостатом и без подключения к компьютеру - достаточно воткнуть его в USB зарядку, или подав питание 5V через колодку ISP программирования на контакты 4-GND и 2-VCC (джампер J1 должен быть накинут в положение 5V).

Re: Программатор для DS1821 плюс термостат без индикатора

Posted: 19 Dec 2016 22:10
by propell_ant
Зарезервировано