Электронный термометр

Автор artko, 08-12-2015, 17:28:00

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

Валентин2

#75
Доброго всем дня. В теме уже поднимался вопрос об изменении гистерезиса, но развития  не получил.  У меня вопрос к artko: если в коде {
    ds1820_startconversion();
    krn_sleep(KRN_FREQ);  // ждем одну секунду
    ds_temp = ds1820_readtemp();
    ds_temp = (ds_temp * 10)/16;
    if (*eeTempMode == TEMP_MODE_ON_IF_LOWER)
    {
      if (ds_temp <= *eeTemp1)
        RELAY_ON;
      else
        RELAY_OFF;
    }
    if (*eeTempMode == TEMP_MODE_ON_OVER)
    {
      if (ds_temp >= *eeTemp1)
        RELAY_ON;
      else
        RELAY_OFF;
    }
    krn_sleep(KRN_FREQ);
  }
заменить на {
    ds1820_startconversion();
    krn_sleep(KRN_FREQ);  // ждем одну секунду
    ds_temp = ds1820_readtemp();
    ds_temp = (ds_temp * 10)/16;
    if (*eeTempMode == TEMP_MODE_ON_IF_LOWER)
    {
      if (ds_temp <= *eeTemp1)
        RELAY_ON;
      else
        RELAY_OFF;
    }
    if (*eeTempMode == TEMP_MODE_ON_OVER)
    {
      if (ds_temp >= *eeTemp1)
        RELAY_ON;
     if (ds_temp <= (*eeTemp1 - 2))
        RELAY_OFF;
    }
    krn_sleep(KRN_FREQ);
  }
я получу гистерезис в -2 градуса С?  Т.е. при достижении заданной температуры реле должно включиться, а после охлаждения и снижения температуры на два градуса ниже заданной реле выключится . Буду благодарен, если подскажете, т.к. в программировании  ноль .

artkoTopic starter

Температура там в десятых долях градуса учитывается. Т.е. если написать
  if (ds_temp >= *eeTemp1)
        RELAY_ON;
     if (ds_temp <= (*eeTemp1 - 20))
        RELAY_OFF;

то, по идее, должен получится как раз желаемый результат.

Валентин2

Спасибо за ответ. Прийдет программатор, прошью, посмотрим.

Валентин2

Пришел программатор. Подключил и попробовал залить для начала не модифицированную прошивку.  Ругается "Cut Version and Revision of device: 1.2
Error : The device is protected"
По вышеприведенным советам попробовал сначала считать прошивку - все равно ругается
"> Reading  PROGRAM MEMORY area...
Cut Version and Revision of device: 1.2
Error : The device is protected
Operation aborted
Error : < PROGRAM MEMORY reading failed.
Error : < Operation aborted.
> Reading  PROGRAM MEMORY area...
Cut Version and Revision of device: 1.2
Error : The device is protected
Operation aborted
Error : < PROGRAM MEMORY reading failed.
Error : < Operation aborted."
Причем на вкладке option byte менял Ride Out Protection  и в OFF и в ON.
Пробовал как с внешним питанием +12в так и с питанием от программатора. Т.к. резистор перепаял  и ко входу ничего не подключено , на индикаторах в исходном горит LLL. после неудачных попыток считывания/программирования - индикатор гаснет.  Не подскажете, куда "копать" ? или чип заблокирован намертво?

artkoTopic starter

подключить программатор. включить программу. на закладке option byte нажать write page.
т.е. надо _записать_ опции без защиты. программа предупредит, насколько помню, что все пропадет.

после - можно будет уже читать/писать.

т.е. разблокировка идет через запись байта настроек, НЕ делая предварительной попытки что-либо прочитать из контроллера.

Валентин2

Спасибо, что очень оперативно отвечаете на вопросы в этой теме . В моем случае на вкладке OPTIONS BYTE  нет " write page". Поставил " Read Out Protection"   в "OFF" и попробовал записать  только эту вкладку. получилось. после этого записал "все вкладки"  - пошло нормально . Подключил датчик - показывает правильно . Спасибо вам за помощь и поддержку.  Измененную прошивку буду "заливать" и пробовать завтра.

Delta

Цитата: Валентин2 від 16-06-2016, 22:51:03Спасибо,
Валентин2, это для "спасибо" ;)
Хочеш набратися досвіду – купи граблі!
Обходячи чужі граблі, Ви втрачаєте дорогоцінний досвід!

Валентин2

Сегодня поработал с изменением прошивки. Открыл ваш исходный проект в IAR 1.40.1 . в main.c изменил на
if (*eeTempMode == TEMP_MODE_ON_OVER)
    {
      if (ds_temp >= *eeTemp1)
        RELAY_ON;
      if (ds_temp <= (*eeTemp1 - 20))
        RELAY_OFF;
    }
и сохранил его. Удалил "родной " thermo.hex. В IAR выбрал Project -> Make . Получил обновленный thermo.hex. Его уже записал стандартным способом . Прошивка залилась нормально . Получил работоспособное устройство  с гистерезисом в одном из режимов -2 градуса. Благодарен форуму и лично artko за помощь.

artkoTopic starter

Цитата: Валентин2 від 16-06-2016, 22:51:03В моем случае на вкладке OPTIONS BYTE  нет " write page".

write page -  в менюшке :) ну или иконка на тулбаре.

Цитата: Валентин2 від 17-06-2016, 08:05:59Прошивка залилась нормально . Получил работоспособное устройство  с гистерезисом в одном из режимов -2 градуса.

ну и отлично, значит цель достигнута.

Rtehnik

Доброго времени!
Перепрошил термостат, заменил резистор, перерезал дорожку и запаял перемычку, припаял ds18b20.
В результате имею следующее:
При включении отображается корректная температура, при нажатии на кнопку "меню" появляются кракозябры, если ещё раз нажать меню то высвечиваются три нуля.
Прикрепил ссылки на яндекс диск с видео, и фото с отпаяным дисплеем.
Возможно ли как-то оживить мою версию термостата?
https://yadi.sk/i/HFktos7MsmKF9
https://yadi.sk/i/MpEQW0PWsmKKM





artkoTopic starter

C1, C2 - убрать. R2 - заменить. При такой модификации дорожку резать не нужно.
А вот по поводу пропавших сегментов - столкнулся с тем, что индикаторы очень уязвимы эти почему-то. Два разных термостата снимал - оба раза дисплей дох с выпаданием произвольных сегментов.
Решил заменой дисплея.. Ну, не помешает проверить тщательно пайку везде.

http://voron.ua/catalog/023599
вот такой индикатор подходит один в один. чуть подогнуть ноги только.

Посмотрел видео.. странный эффект. Пока версий не имею, почему так.

Rtehnik

Забыл добавить что два термостата ведут себя одинаково. Если откатить прошивку на родную, то всё приходит в норму, кроме точности естественно  :(

Rtehnik

Разобрался. Дело в моей криворукости, не на те кнопочки нажимал при прошивке. Похоже только часть программы записывалась.
Заработало. Спасибо за прошивку!


Delta

Цитата: Костя від 11-09-2016, 10:15:39Можно ли подружить с ds-кой данный девайс
А смысл?
2 погрешность измерения температуры: ± 5 ° C
4 показывает точность 0.1 градуса. ну это нормально
.точность управления: 1 ° C а это никуда не годиться >:(
Хочеш набратися досвіду – купи граблі!
Обходячи чужі граблі, Ви втрачаєте дорогоцінний досвід!

SMF spam blocked by CleanTalk