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

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

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 4471
  • Спасибо получено: 1537
Не совсем понял.
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
  • Сообщений: 156
  • Спасибо получено: 4
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
  • Сообщений: 4471
  • Спасибо получено: 1537
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
  • Сообщений: 156
  • Спасибо получено: 4
В Proteus работает как надо,
прошу разъяснение по программированию, например со значениями перечисленных выше.
Спасибо
pert
--

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 4471
  • Спасибо получено: 1537
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
  • Сообщений: 156
  • Спасибо получено: 4
Спасибо,
понимаю, таким образом вставим диапазон.
Ну мне нужно так же вставить независимо гистерезис, в какую ячейку?
--

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

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

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

  • pert
  • pert аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 156
  • Спасибо получено: 4
Моя идея была такая что я программно вписываю независимо диапазон и гистерезис
Например, я хочу диапазон 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
  • Сообщений: 4471
  • Спасибо получено: 1537
Правильно ли я понимаю, что Вы хотите обойтись без резисторов 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
  • Сообщений: 156
  • Спасибо получено: 4
Да, это то, что я думал.
Но, возможно я плохо сформулировал задание.
Спасибо pert
--

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 4471
  • Спасибо получено: 1537
Тогда вот так попробуйте. Только не получается прописать установку отрицательных температур, поэтому диапазон искусственно смещен в положительную сторону.
Пример. Измеритель настроен на диапазон -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
  • Сообщений: 156
  • Спасибо получено: 4
большое спасибо Soir,
попробую на печатной плате.
pert
--

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

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

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

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

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

  • pert
  • pert аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 156
  • Спасибо получено: 4
это просто аналог термостат для нагрева или охлаждения
Режим отопления 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
  • Сообщений: 4471
  • Спасибо получено: 1537
pert пишет:
пример:
надо будет диапазон потенциометра RV2 20-60 градусов...
Это мне понятно. Мне непонятно как привязать эти 20-60 градусов к калибровке датчика. В калибровке задаются два напряжения, программа не знает, какое напряжение какой температуре в градусах соответствует. Поэтому работает зная, что есть минимальное напряжение и максимальное. А какая это температура - не знает.
Для того, чтобы программа могла однозначно определять, что минимальному напряжению соответствует, например, температура -10 град, а максимальному +60 град, нужно это каким-то образом указать. Или дополнительные настройки добавлять в EEPROM, или один раз жестко записать в программу. Жестко записано было в первой версии, когда Вы четко указали соответствие напряжения температуре датчика. Потом Вы привели целый набор данных по соответствию температуры напряжению датчика и все цифры стали условными.
Не знаю, удалось ли мне объяснить суть вопроса. Если кратко, то программе недостаточно данных.

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

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

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

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

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 4471
  • Спасибо получено: 1537
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
  • Сообщений: 156
  • Спасибо получено: 4
так это хорошо,
полностью соответствует!!! :cheer:
большое спасибо Вам Soir, за терпение со мной
pert
--

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

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

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

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