Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: аналоговый термостат

аналоговый термостат 06 янв 2016 11:29 #1

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Здравствуйте Soir в Новом годе 2016,
Я хотел бы попробовать простой аналоговый термостат, как показано на рисунке.
Диапазон настройки и гистерезис вводится во время программирования таким образом, я измеряю напряжение на датчике при минимальном значении (диапазон -10 градусов) например, 0.650 вольт и при максимальном значении (60 градусов) например, 3.850 вольт и это значение записывается в шестнадцатеричном коде v EEPROM.
затем диапазон регулировки триммера будет -10-60 градусов Аналогично поступает гистерезис.
один выход для прямого нагрева, второй выход для охлаждения.
Это может, таким образом, работать?
спасибо pert
Вложения:
Администратор запретил публиковать записи гостям.

аналоговый термостат 06 янв 2016 12:38 #2

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
Не совсем понял.
1. Микроконтроллер должен сравнивать напряжение датчика температуры с напряжением на резисторе RV2 и если больше включать нагрузку, если меньше на величину гистерезиса - выключать? Принцип компаратора? (Для инверсного выхода наоборот.)
2. Какой рабочий диапазон гистерезиса? Или просто вычитать измеренное напряжение резистора RV1 из напряжения RV2?
3. Каким образом записывать настройки в EEPROM? Нужна хотя бы одна кнопка, или при прошивке МК, тогда RV1 и RV2 не нужны, или отслеживать изменения напряжений с резисторов...? И какой смысл записывать, если все равно сравниваться будет с текущими напряжениями на резисторах?
Последнее редактирование: 06 янв 2016 12:40 от Soir.
Администратор запретил публиковать записи гостям.

аналоговый термостат 06 янв 2016 18:22 #3

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
1- да, так он должен работать
2- диапазон гистерезиса будет меняться, будет зависеть от диапазона термостата
3- настройки записываются при прошивке МК

Я думал так - Компаратор сравнивает напряжение от датчика с напряжением из RV2 и, соответственно, управляет выходом

например:
Я хочу диапазон термостата триммера RV2 -10 до 60 градусов, Я измеряю напряжение на датчике при -10 градусов затем при 60 градусах

Разница 70 градусов означает напряжение 3.85-0.65= 3.2вольт -- 3,2/70= 45милливольт на градус.
Если будет гистерезис 1-10 градусов будет триммер RV1 Сделать разницу 45 до 450милливольт, это нужно как-то написать в память когда фактически будет меняться RV1 0-5вольт

0 вольт RV1 будет представлять в памяти ячейку xxxx равно 45милливольт
5 вольт RV1 будет представлять в памяти ячейку xxxx равно 450милливольт
Подобным образом поступает в диапазоне температур:
Если будет диапазон -10 до 60 градусов будет записывать это:
0 вольт RV2 будет представлять в памяти ячейку xxxx равно 650милливольт
5 вольт RV1 будет представлять в памяти ячейку xxxx равно 3.850вольт
Возможно, мне удалось объяснить.

pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 08 янв 2016 20:31 #4

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
Возможно, мне удалось объяснить.
Не знаю... Пробуйте.

Значения в EEPROM (без запятых).
Минимальное напряжение записывается в ячейки 0x00 и 0x01. Значение ячейки 0x00 умножить на 256 и прибавить значение ячейки 0x01. Число не должно быть больше 500.
Максимальное напряжение записывается в ячейки 0x02 и 0x03. Значение ячейки 0x02 умножить на 256 и прибавить значение ячейки 0x03. Число не должно быть больше 500.
Если в EEPROM данные некорректные, тогда берутся по умолчанию: минимальное напряжение 65, максимальное 385.
Если непонятно - спрашивайте, распишу подробнее с примером.

Для напряжения установки вся шкала (0 - 5V) соответствует температуре от -10 до 60 град, для гистерезиса аналогично от 0 до 10 град.
Вложения:
Последнее редактирование: 17 янв 2016 15:20 от Soir. Причина: Обновление прошивки.
Администратор запретил публиковать записи гостям.

аналоговый термостат 09 янв 2016 10:13 #5

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
В Proteus работает как надо,
прошу разъяснение по программированию, например со значениями перечисленных выше.
Спасибо
pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 09 янв 2016 13:30 #6

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
прошу разъяснение по программированию, например со значениями перечисленных выше.
Для минимального напряжения 0,65V. Берем целое число 65 ([0x0041 в hex-формате). Программа сама поставит запятую в нужное место.
В ячейке с адресом 0x00 записываем 0x00. В ячейке 0x01 записываем 0x41.
Для максимального напряжения 3,85V, целое число 385 ([0x0181 в hex-формате).
В ячейке с адресом 0x02 записываем 0x01. В ячейке 0x03 записываем 0x81.
Вот, как это выглядит в IC-Prog:

Администратор запретил публиковать записи гостям.

аналоговый термостат 09 янв 2016 14:09 #7

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Спасибо,
понимаю, таким образом вставим диапазон.
Ну мне нужно так же вставить независимо гистерезис, в какую ячейку?
Администратор запретил публиковать записи гостям.

аналоговый термостат 09 янв 2016 16:45 #8

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
Ну мне нужно так же вставить независимо гистерезис, в какую ячейку?
Такой возможности в прошивке нет. Гистерезис задается только резистором - в нижнем положении 0 градусов, в верхнем 10 градусов.
Также устанавливается и задание для термостата. В нижнем положении резистора -10 градусов, в верхнем +60 градусов.
Через EEPROM только калибруется датчик температуры - задаются напряжения на датчике при -10 и +60 град.
Это так я понял Ваше описание. Если надо по-другому - описывайте как.
Администратор запретил публиковать записи гостям.

аналоговый термостат 10 янв 2016 10:22 #9

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Моя идея была такая что я программно вписываю независимо диапазон и гистерезис
Например, я хочу диапазон 20-60 градусов, гистерезис 0.5-5 градусов
Я хочу использовать датчик KTY 210 с источником постоянного тока 1миллиампер.
затем напряжения на датчике будет 1,922вольт на уровне 20 градусов a 2.597вольт на уровне 60 градусов. Разница 40 градусов означает напряжение 2,597-1.922,= 0.675вольт/40= 16 милливольт на градус затем бы RV1 имел влияние на компаратор 8-80 милливольт.
диапазон и гистерезис может быть решена аналогового, но я ето хотел обойти программно,что бы не было кропотливо устанавливать Rmax и Rmin
Это то, что я хотел, как-то входить при прошивке МК.

картина

---
Сообщения объединил. Нарушение Правил, раздел 5, п.8
Soir
Вложения:
Последнее редактирование: 10 янв 2016 10:48 от Soir. Причина: Нарушение правил.
Администратор запретил публиковать записи гостям.

аналоговый термостат 10 янв 2016 10:46 #10

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
Правильно ли я понимаю, что Вы хотите обойтись без резисторов Rmax и Rmin, включенных последовательно с резисторами RV1 и RV2? А вместо них нижний и верхний порог установки задавать при прошивке МК?
Например гистерезис, RV1:
0V прописать, что это 1 град, а 5V это 8 град.
А в другом случае:
0V прописать, что это 2 град, а 5V это 20 град.
Для RV2 аналогично?

Так, как сделано сейчас для измерительного входа, оставить? Или это не нужно?
Администратор запретил публиковать записи гостям.

аналоговый термостат 10 янв 2016 12:15 #11

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Да, это то, что я думал.
Но, возможно я плохо сформулировал задание.
Спасибо pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 12 янв 2016 22:46 #12

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
Тогда вот так попробуйте. Только не получается прописать установку отрицательных температур, поэтому диапазон искусственно смещен в положительную сторону.
Пример. Измеритель настроен на диапазон -10 - +60 град. RV2 на диапазон 0,0 - 100,0. Для того, чтобы термостат срабатывал при +60 град, RV2 следует установить в положение 70,0 град. Чтобы срабатывал при -10 град - в положение 0,0 град.

EEPROM теперь по-другому, смотрите скрин (в квадратных скобах номер ячейки).

минимум гистерезис = [0x00]*256 + [0x01] = 0*256 + 10 = 10. Это 1,0 градус.
максимум гистерезис = [0x02]*256 + [0x03] = 0*256 + 200 = 200. Это 10,0 градус.
Если минимум равен максимуму или максимум больше 20,0 - берутся значения по умолчанию (указаны в примере 1,0 и 20,0)

минимум задания температуры = [0x08]*256 + [0x09] = 0*256 + 0 = 0,0 град.
максимум задания температуры = [0x0A]*256 + [0x0B] = 3*256 + 232 = 100,0 град.
Если минимум равен максимуму или максимум больше 100,0 - берутся значения по умолчанию (указаны в примере 0,0 и 100,0)

напряжение на датчике при -10 град = [0x10]*256 + [0x11] = 0*256 + 65 = 0,65 Вольт
напряжение на датчике при 60 град = [0x12]*256 + [0x13] = 1*256 + 129 = 3,85 Вольт
Если минимум равен максимуму или максимум больше 5,00 - берутся значения по умолчанию (указаны в примере 0,65 и 3,85)

Установка получается сложной, но лучше ничего придумать не удается. Во-первых нет индикации, во-вторых возможности МК весьма скромные. Попробуйте и проверьте, я и сам запутался...
Вложения:
Администратор запретил публиковать записи гостям.

аналоговый термостат 13 янв 2016 18:53 #13

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
большое спасибо Soir,
попробую на печатной плате.
pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 17 янв 2016 13:40 #14

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
При проверке обнаружена ошибка
если напряжение от датчика вокруг 2,50вольт и напряжение RV2 в пределе 0-1вольт есть неисправное включение реле на обоих выходах
если напряжение RV2 более 1вольт это нормально.
Установка значения
Range 40-90 градусов
напряжения на датчике 40 градусов 2,51вольт
напряжения на датчике 90 градусов 3,52вольт
гистерезис 1-10 градусов
ток датчиком около 1,1миллиампер
в Proteus также видеть
спасибо Soir

---
Сообщения объединил. Нарушение Правил, раздел 5, п.8
Soir
Вложения:
Последнее редактирование: 17 янв 2016 14:43 от Soir. Причина: Нарушение правил.
Администратор запретил публиковать записи гостям.

аналоговый термостат 17 янв 2016 15:24 #15

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
напряжения на датчике 40 градусов 2,51вольт
напряжения на датчике 90 градусов 3,52вольт
Раньше Вы писали про -10 и +60 (диапазон 70 град). В программе расчет ориентирован на диапазон 70 град. Теперь получается 50 град. Это не принципиально и я уже убрал 70 град., но без такой привязки все настройки температуры становятся условными. Если Вы в EEPROM задаете 400-900, то это на самом деле не 40,0-90,0 град, а какие-то условные цифры, даже так сразу и не могу сказать, чему они соответствуют... Поэтому надо подбирать, можно в Proteus, если загрузить файл EEPROM с настройками.

Ошибку в неправильном срабатывании выхода исправил. Здесь же сразу уточню - программа работает только выше указанного нижнего порога напряжения. Если Вы нижний порог указали 2,51V (условный 0), то все что меньше, будет считаться 0.
Администратор запретил публиковать записи гостям.

аналоговый термостат 17 янв 2016 19:19 #16

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
диапазон -10 - 60 был примером а также напряжение 0,65 и 3,85вольт
в реальном режиме есть на датчике -10 градусов 1.65 вольт
0 градусов 1.80 вольт
60градусов 2.84 вольт
90градусов 3.50 вольт

На самом деле, я буду чаще всего использовать диапазоны -10-10, 15-35, 0-40, 20-60,40-90 градусов.
Администратор запретил публиковать записи гостям.

аналоговый термостат 19 янв 2016 17:45 #17

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Я не могу достигнуть разумного результата, запрограммированной внутреной температурой с фактической величиной температуры
Эсли у меня есть фиксированный диапазон напряжения датчика 0 градусов =1,80вольт и 100 градусов 3.71вольт. Это все будет то же самое.
возможно нижний и верхний порог установки RV2 задавать при прошивке МК не в градусах Цельсия ,но как напряжение?
указан наклон температура- напряжение датчика.
Вложения:
Последнее редактирование: 19 янв 2016 17:47 от pert.
Администратор запретил публиковать записи гостям.

аналоговый термостат 19 янв 2016 18:51 #18

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
Не понял ни описание проблемы, ни приведенного графика. Возможно не понимаю и как должно работать устройство.
Давайте еще раз, на конкретном примере опишите, как все должно работать, какие величины должны заноситься в память.
Администратор запретил публиковать записи гостям.

аналоговый термостат 20 янв 2016 12:55 #19

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
это просто аналог термостат для нагрева или охлаждения
Режим отопления out1- когда температура достигает Заданую температуру RV2 реле выключается
Режим охлаждение out2- когда температура достигает Заданую температуру RV2 реле включает
датчик питается от источника постоянного тока 1 миллиампер с температурной зависимости температура- напряжение в бывшей графике.
Диапазон температуры RV2 и гистерезис RV1 необходимо ввести программно при прошивке МК
Если надо будет диапазон 20-60 градусов потенциометра RV2 и это должно быть каким-то образом записывать в память, либо как температуру или напряжение, которое я измеряю на датчике, но так, что бы нижний порог установки потенциометра RV2 соответствовал температуре 20градусов и верхний порог установки потенциометра RV2 соответствовал температуре 60 градусов.
чаще всего буду использовать различные диапазоны -10-10, 15-35, 0-40, 20-60,40-90 градусов и т.д..
когда я выберу диапазон 20-60Я тогда написал либо 20-60 градусов
пример:
надо будет диапазон потенциометра RV2 20-60 градусов
напряжение на датчике - при 20град= 2,11 вольт
при 60град= 2.84 вольт
это надо ввести в память как нижний порог установки потенциометра RV2 и верхний порог установки потенциометра.

надо будет диапазон потенциометра RV2 40-90 градусов
напряжение на датчике - при 40град= 2,47 вольт
при 90град= 3,50 вольт
это надо аналогично ввести в память как нижний порог установки потенциометра RV2 и верхний порог установки потенциометра.

Спасибо за ваше терпение со мной
pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 20 янв 2016 15:19 #20

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
пример:
надо будет диапазон потенциометра RV2 20-60 градусов...
Это мне понятно. Мне непонятно как привязать эти 20-60 градусов к калибровке датчика. В калибровке задаются два напряжения, программа не знает, какое напряжение какой температуре в градусах соответствует. Поэтому работает зная, что есть минимальное напряжение и максимальное. А какая это температура - не знает.
Для того, чтобы программа могла однозначно определять, что минимальному напряжению соответствует, например, температура -10 град, а максимальному +60 град, нужно это каким-то образом указать. Или дополнительные настройки добавлять в EEPROM, или один раз жестко записать в программу. Жестко записано было в первой версии, когда Вы четко указали соответствие напряжения температуре датчика. Потом Вы привели целый набор данных по соответствию температуры напряжению датчика и все цифры стали условными.
Не знаю, удалось ли мне объяснить суть вопроса. Если кратко, то программе недостаточно данных.

Если датчик меняться не будет и если не будет меняться схема подключения датчика, номиналы резисторов в обвязке, то тогда можно задать характеристику датчика для всего рабочего диапазона.
Или записать в программе, что минимальное напряжение - это, к примеру -10 град, а максимальное это 60 град. Тогда при изменениях в схеме можно будет просто указывать напряжения для этих температур (так было в первом варианте).
Или сделать программу более гибкой - вносить данные: напряжение и соответствующая ему температура. Но здесь я не уверен, что хватит памяти МК.
Администратор запретил публиковать записи гостям.

аналоговый термостат 23 янв 2016 14:46 #21

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
Программа не нужна знать температуру в градусах, калибровка также не должна быть.
Термостат должен работать только с напряжением как компаратор, температуру я буду знать из напряжения.
Эсли будет нижний и верхний порог установки RV2 1,8-2,85вольт, так я знаю, что это диапазон 0-60градусов и после этого буду рисовать шкалу
Это то же самое с гистерезисом
в основном только мне нужно конвертировать
0-5вольт RV2 на нижний и верхний порог установки RANGE
0-5вольт RV1 на нижний и верхний порог установки HYSTERESIS
Администратор запретил публиковать записи гостям.

аналоговый термостат 24 янв 2016 09:06 #22

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
Программа не нужна знать температуру в градусах, калибровка также не должна быть.
Тогда вот так:
В ячейки EEPROM с адресами 0x00 и 0x01 записывается напряжение с датчика температуры, соответствующее нижнему положению ползунка резистора RV2. SetMin = [0x00]*256 + [0x01]. По умолчанию 200 (2,00V). Не может быть больше либо равным SetMax.

В ячейки EEPROM с адресами 0x02 и 0x03 записывается напряжение с датчика температуры, соответствующее верхнему положению ползунка резистора RV2. SetMax = [0x02]*256 + [0x03]. По умолчанию 400 (4,00V). Не может быть больше 500.

Измеренное напряжение на RV2 пересчитывается в диапазоне SetMin <-> SetMax по формуле:
Set = RV2*(SetMax-SetMin)/500 + SetMin. (Все значения берутся без запятых.)

В ячейку EEPROM с адресом 0x08 записывается напряжение, соответствующее верхнему положению ползунка резистора RV1. HistMax = [0x08]. По умолчанию 100 (1,00V). Не может быть больше 250.
Нижнее положение ползунка RV1 всегда соответствует 0 и отдельно не задается.
Hist = RV1*HistMax/500;

Если RV3 >= Set -> реле включается.
Если RV3 < Set-Hist -> реле выключается.

Если и сейчас я Вас не понял, тогда распишите правильный алгоритм вот в таком подробном виде, с формулами.
Вложения:
Последнее редактирование: 24 янв 2016 09:08 от Soir.
Администратор запретил публиковать записи гостям.

аналоговый термостат 24 янв 2016 17:46 #23

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
так это хорошо,
полностью соответствует!!! :cheer:
большое спасибо Вам Soir, за терпение со мной
pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 25 янв 2016 16:33 #24

  • pert
  • pert аватар
  • на форуме
  • I'm here long time
  • Сообщений: 142
  • Спасибо получено: 2
еще одна мелочь
Установить задержку выхода вокруг 2 секунды ,при включении питания ,прежде чем стабилизирует напряжение.
Проект можно заключить.
pert
Администратор запретил публиковать записи гостям.

аналоговый термостат 25 янв 2016 17:00 #25

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1413
pert пишет:
Установить задержку выхода вокруг 2 секунды ,при включении питания ,прежде чем стабилизирует напряжение.
pert
Добавил задержку при включении. Но при задержки оба выхода отключены, если надо по-другому - пишите.
Вложения:
Администратор запретил публиковать записи гостям.
Спасибо сказали: pert
Модераторы: wolf2000, Vakula, Айнцвайдрайченко