Терморегулятор на микроконтроллере PIC16F84 датчикe DS18B20
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
nvz, спасибо большое, но я уже разобрался. Правда версия 7.5, но я думаю это не страшно.
Запустил симуляцию, вроде пока все нормально, и подача напряжения на клапан и сигнал отклонения. А вот с выходным сигналом на симистор мне немного непонятно. Допустим устанавливаем температуру 40 градусов, гистерезис 0,1, автоматический режим включен, время стабилизации 1 минута. На датчике 39град. и прибавляю по 0,1 до 40град. Управляющий сигнал на симистор идет. Жду минуту - подается напряжение на клапан. Тут все хорошо.
На датчике ставлю 40,1град. При этом напряжение на клапан пропадает, следует семь раз пиии... (тут тоже все ok) и при пекращении пищания пропадает управляющий сигнал симистора, а так быть не должно.
После того как прошла минута (время стабилизации 1 минута), открывается клапан, а упр. сигн. на симистор с этого момента должен запомниться и оставаться неизменным независимо от изменений температуры на даттчике. Т.е. звуковая сигнализация просто оповещает что произошло отклонение температуры, а мощность на нагрузке при этих отклонениях должна остаться неизменной до тех пор пока в меню не установим новую температуру стабилизации.
Запустил симуляцию, вроде пока все нормально, и подача напряжения на клапан и сигнал отклонения. А вот с выходным сигналом на симистор мне немного непонятно. Допустим устанавливаем температуру 40 градусов, гистерезис 0,1, автоматический режим включен, время стабилизации 1 минута. На датчике 39град. и прибавляю по 0,1 до 40град. Управляющий сигнал на симистор идет. Жду минуту - подается напряжение на клапан. Тут все хорошо.
На датчике ставлю 40,1град. При этом напряжение на клапан пропадает, следует семь раз пиии... (тут тоже все ok) и при пекращении пищания пропадает управляющий сигнал симистора, а так быть не должно.
После того как прошла минута (время стабилизации 1 минута), открывается клапан, а упр. сигн. на симистор с этого момента должен запомниться и оставаться неизменным независимо от изменений температуры на даттчике. Т.е. звуковая сигнализация просто оповещает что произошло отклонение температуры, а мощность на нагрузке при этих отклонениях должна остаться неизменной до тех пор пока в меню не установим новую температуру стабилизации.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):...при пекращении пищания пропадает управляющий сигнал симистора, а так быть не должно...
Управляющий сигнал симистора не пропадает. Система регулирования пытается восстановить заданную температуру, а судя по всему, у Вас в режиме стабилизации мощность была минимальная, следующая ступень это 0. Если Вы будете имитировать отклонение в сторону понижения температуры, то мощность будет возрастать, пока температура не вернется в норму. Или если мощность была, скажем 50%, то программа по заданному алгоритму начала б ступенчато уменьшать выходную мощность, в конечном итоге, если температура не понизится, до 0.
Pavel84 писал(а):После того как прошла минута (время стабилизации 1 минута), открывается клапан, а упр. сигн. на симистор с этого момента должен запомниться и оставаться неизменным независимо от изменений температуры на даттчике. Т.е. звуковая сигнализация просто оповещает что произошло отклонение температуры, а мощность на нагрузке при этих отклонениях должна остаться неизменной до тех пор пока в меню не установим новую температуру стабилизации.
Задачу я понял. Вы уверены, что так будет правильно? Ведь если мощность останется на прежнем уровне, а температура на росте (причины могут быть как технологические, так и технические: электрические, механические, КИПиА), то ее рост сможет остановить только оператор. Что я думаю, не есть совсем хорошо.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Ведь если мощность останется на прежнем уровне, а температура на росте (причины могут быть как технологические, так и технические: электрические, механические, КИПиА), то ее рост сможет остановить только оператор. Что я думаю, не есть совсем хорошо.
Вы рассуждаете правильно, но как показала практика, температура пара кипящей жидкости не растет выше температуры кипения той самой жидкости. Например если кипятить воду, то как не повышай мощность тена, температура пара будет всеравно 100гр. На температуру кипения может повлиять атмосферное давление. А об изменении температуры кипения, следовательно температуры пара нам сообщит звуковой сигнал, ну и клапан закроется.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Возможен случай: засорился выход парогазовой смеси, давление в аппарате начинает расти, растет и температура кипения. Мощность не меняется, оператор спит. Давление продолжает расти... Это не Чернобыль, это из личного опыта самогоноварения.
Сделаю, как Вам хочется. Только подумаю как.
Сделаю, как Вам хочется. Только подумаю как.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Soir писал(а):...Только подумаю как.
Предлагаю, на мой взгляд логичный, вариант (кстати и производственных процессах так делают). Программой предусмотрен ручной режим. При выходе из режима стабилизации устройство переходит в ручной режим. Затем оператору надо будет выставить температуру и снова включить автоматический режим.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Интересно! Т. е. после перехода в ручной режим мощность на нагрузке останется неизменной, независимо от изменений температуры. Я Вас правильно понимаю? Чтож, можно попробовать. Сегодня вечер вроде посвободней, займусь сборкой на макетке, чтобы уже начать хоть что-нибудь пробовать.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):...Т. е. после перехода в ручной режим мощность на нагрузке останется неизменной, независимо от изменений температуры. Я Вас правильно понимаю?
Правильно.
Предлагаю такой алгоритм:
При достижении стабилизации, управление переводится в ручной режим P_0n. Мощность фиксируется на достигнутом уровне. При этом ручная регулировка разрешена. После выхода температуры за пределы стабилизации клапан закрывается, включается сигнализация. Оператор вводит новые значения температуры, гистерезиса и др., если надо, и устанавливает автоматический режим A_0n. Начинается новый цикл.
Во вложении прошивка. Проверяйте. В разрабоке одновременно четыре проекта, в голове каша, путаюсь.
- Вложения
-
- Termometr.zip
- (4.38 КБ) 209 скачиваний
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Вот это помоему то что нужно
Запустил в Proteus, вроде все устраивает. При первой возможности буду на практике пробовать, потом отпишусь.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Собрал все на макете и сразу вылезло пара неприятных моментов.
При таком включении датчика (как у Вас на схеме) на индикаторах постоянно высвечивается 127,9. При обрыве датчика как положено - Err1. Подключил +5В на VCC, DQ через 4,7 кОм на +5В, GND на массу, т.е. по трем проводам - стал показывать температуру. Но на крайнем индикаторе (десятые градусов) светится цифра 8 и каждую секунду на короткое время проскакивает "реальная" цифра, видимо как раз в момент замера температуры. Причем тоже самое происходит и в момент ввода температуры и гистерезиса (t и d). При вводе остальных параметров вроде нормально. Не может ли это быть из-за того что схема собрана на макетке? 4 МГц всетаки.
И еще, при включении бывает на индикаторах выскакивает 0,8 (два крайних индикатора), кнопки не действуют. Выключишь - включишь, нормально: Soir, температура.
Что скажете?
При таком включении датчика (как у Вас на схеме) на индикаторах постоянно высвечивается 127,9. При обрыве датчика как положено - Err1. Подключил +5В на VCC, DQ через 4,7 кОм на +5В, GND на массу, т.е. по трем проводам - стал показывать температуру. Но на крайнем индикаторе (десятые градусов) светится цифра 8 и каждую секунду на короткое время проскакивает "реальная" цифра, видимо как раз в момент замера температуры. Причем тоже самое происходит и в момент ввода температуры и гистерезиса (t и d). При вводе остальных параметров вроде нормально. Не может ли это быть из-за того что схема собрана на макетке? 4 МГц всетаки.
И еще, при включении бывает на индикаторах выскакивает 0,8 (два крайних индикатора), кнопки не действуют. Выключишь - включишь, нормально: Soir, температура.
Что скажете?
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):...Что скажете?
Тоже проверял на макете только PIC16F628A - все работало. Сейчас макет разобран, понадобился индикатор и PIC16F876A у меня нет. Конечно, может быть и из-за того, что собрано на макете. Это касается кварца и его конденсаторов. Их надо как можно ближе к МК, а общий провод к МК отдельный. Может по питанию конденсатор нужен возле МК... Попробуйте другой кварц. Работа устройства сильно зависит от него. И проверьте правильность работы формирователя импульсов сетевого напряжения. При сбоях в его работе возможны сбои и в индикации.
Я выкладывал прошивку с выходом звуковой сигнализации постоянного напряжения, кажется версия 2.4. Попробуйте ее. Она ближе всего к проверенной мной в железе (на макете и с PIC16F628A). В 2.5, кроме алгоритма, есть еще некоторые принципиальные изменения, которые могли повлиять на стабильность работы.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Мерцания крайнего индикатора победил. У меня стояли четыре параллельно соединенных индикатора, а чтобы на макетке меньше проводов было воткнул от какого-то DVD-шника и нормально все стало. Иногда мерцания появляются, думаю из-за особенностей сборки на макете. Проверил прошивки версий 2.4 , 2.5 и крайнюю (с автоматическим переходом в ручной режим), все рабочие. Но при включении, как писал выше, бывает на индикаторе выскакивает 0.8 или 0.9, или 2.7 (на всех трех прошивках). Пробовал по питанию МК добавить конденсатор 100мкф - вобще не запускается, только высвечивается одно из вышеперечисленных значений; 0,1мкф - без изменений; когда убираю конденсатор 100мкф (С2 по схеме) - нормально все, никаких глюков. Странно, но помоему конденсаторы по питанию никогда не мешали. А может тоже из-за сборки на макете.
Формирователь импульсов сетевого напряжения проверить не могу по причине отсутствия осциллографа, но по крайней мере когда его отключаю есть сообщение об ошибке - Err0.
Симистор пока еще не подключал. На днях должны привезти МОС3021.
С гистерезисом мне немного не понятно. К примеру ставим t 25.5гр, гистерезис 0,3гр. При 25.2гр. срабатывет сигнализация, закрывается клапан - это нормально. А вот в плюс по другому - сигн. срабатывает и закрывается клапан уже при 25.6гр. Можно ли сделать так чтобы в обе стороны одинаково работало?, т.е 25.5 - это середина и если плюс/минус 0.3гр то срабатывает сигнализация и клапан.
И еще, можно ли увеличить частоту генератора для "пищалки"? А то что-то между хрипом и писком получается.
Формирователь импульсов сетевого напряжения проверить не могу по причине отсутствия осциллографа, но по крайней мере когда его отключаю есть сообщение об ошибке - Err0.
Симистор пока еще не подключал. На днях должны привезти МОС3021.
С гистерезисом мне немного не понятно. К примеру ставим t 25.5гр, гистерезис 0,3гр. При 25.2гр. срабатывет сигнализация, закрывается клапан - это нормально. А вот в плюс по другому - сигн. срабатывает и закрывается клапан уже при 25.6гр. Можно ли сделать так чтобы в обе стороны одинаково работало?, т.е 25.5 - это середина и если плюс/минус 0.3гр то срабатывает сигнализация и клапан.
И еще, можно ли увеличить частоту генератора для "пищалки"? А то что-то между хрипом и писком получается.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):Проверил прошивки версий 2.4 , 2.5 и крайнюю (с автоматическим переходом в ручной режим), все рабочие. Но при включении, как писал выше, бывает на индикаторе выскакивает 0.8 или 0.9, или 2.7 (на всех трех прошивках). Пробовал по питанию МК добавить конденсатор 100мкф - вобще не запускается, только высвечивается одно из вышеперечисленных значений; 0,1мкф - без изменений; когда убираю конденсатор 100мкф (С2 по схеме) - нормально все, никаких глюков. Странно, но помоему конденсаторы по питанию никогда не мешали. А может тоже из-за сборки на макете.
Возможно у Вас проблемы с источником питания +5V. У меня (проверено) датчик без сбоев работал по двухпроводной линии длинной ~6м.
Попробуйте уменьшить резистор с +5V на выход датчика (вместо 4,7 кОм установите 2 кОм).
Pavel84 писал(а):Формирователь импульсов сетевого напряжения проверить не могу по причине отсутствия осциллографа, но по крайней мере когда его отключаю есть сообщение об ошибке - Err0.
Значит работает. Правильно или нет будет ясно после подключения нагрузки.
Pavel84 писал(а):С гистерезисом мне немного не понятно. К примеру ставим t 25.5гр, гистерезис 0,3гр. При 25.2гр. срабатывет сигнализация, закрывается клапан - это нормально. А вот в плюс по другому - сигн. срабатывает и закрывается клапан уже при 25.6гр. Можно ли сделать так чтобы в обе стороны одинаково работало?, т.е 25.5 - это середина и если плюс/минус 0.3гр то срабатывает сигнализация и клапан.
Гистерезис так и делал, в одну сторону. Поменяю, когда основные испытания пройдут успешно.
Pavel84 писал(а):И еще, можно ли увеличить частоту генератора для "пищалки"? А то что-то между хрипом и писком получается.
500 Гц, нормальная частота, хрипов вызывать не должна... Хрипы это в железе или Proteus'е?
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
500 Гц, нормальная частота, хрипов вызывать не должна... Хрипы это в железе или Proteus'е?
Я имел ввиду не конкретные хрипы при звучании, а малую частоту тональности сигнала. Мне кажется 1000Гц в самый раз будет. Просто не хочется терять время пока мне привезут МОС3021, чтобы с нагрузкой пробовать и устранить некоторые мелочи. Ну да ладно, можно и потом, если Вам так удобней.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):500 Гц, нормальная частота, хрипов вызывать не должна... Хрипы это в железе или Proteus'е?
Я имел ввиду не конкретные хрипы при звучании, а малую частоту тональности сигнала. Мне кажется 1000Гц в самый раз будет. Просто не хочется терять время пока мне привезут МОС3021, чтобы с нагрузкой пробовать и устранить некоторые мелочи. Ну да ладно, можно и потом, если Вам так удобней.
Увеличил частоту до 1 кГц.
Pavel84 писал(а):Можно ли сделать так чтобы в обе стороны одинаково работало?...
Сделал, проверьте.
- Вложения
-
- Termometr.zip
- (4.4 КБ) 177 скачиваний
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Сделал, проверьте.
Ух, ну и неделя была. Проверил крайнюю выложенную Вами прошивку, пока только в Proteus. Гистерезис работает теперь в обе стороны от заданной температуры, но есть небольшой момент.
Задаю температуру 40гр., гистерезис 0,1. Срабатывание клапана происходит только при 40,2 (39,8)гр.
При заданном гистерезисе 0,2, срабатывание только при 40,3 (39,7)гр. и т.д. Т.е. получается срабатывание происходит на "гистерезис +(-)0,1гр"
Или программно невозможно сделать чтобы срабатывание происходило именно при отклонении на заданный гистерезис?
Увеличил частоту до 1 кГц.
На макете пока возможности проверить небыло, но думаю нормально будет.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):Задаю температуру 40гр., гистерезис 0,1. Срабатывание клапана происходит только при 40,2 (39,8)гр.
При заданном гистерезисе 0,2, срабатывание только при 40,3 (39,7)гр. и т.д. Т.е. получается срабатывание происходит на "гистерезис +(-)0,1гр"
Так было задумано. Если Вам хочется по-другому, пожалуйста, это не сложно.
- Вложения
-
- Termometr.zip
- (4.39 КБ) 222 скачивания
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Попробовал на макете. Теперь вроде то что я хотел. Теперь жду МОС3021 когда привезут. Не хочу без гальванической развязки все это дело пробовать. А то ведь может и током шваркнуть 
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Пока крутил туда-сюда макетную плату во время многочисленных проверок, пришла мне в голову еще одна мысль. Неплохо было бы добавить светодиодную индикацию "клапан открыт" и "автоматический режим включен". Ну с клапаном все понятно, а вот с автоматическим режимом ... Конечно можно смотреть включен авт. режим или ручной через кнопку MODE, но это немного неудобно, а так глянул на светодиод и сразу все понятно. Можно ли это сделать, ну скажем на 15 или 16 выводе?
Уже и спрашивать неудобно
, надоел наверное уже
И кстати, заменил как Вы советовали резистор с +5V на выход датчика на 2кОм, стало по двухпроводной линии работать, что не может не радовать.
Уже и спрашивать неудобно
И кстати, заменил как Вы советовали резистор с +5V на выход датчика на 2кОм, стало по двухпроводной линии работать, что не может не радовать.
Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Pavel84 писал(а):...Неплохо было бы добавить светодиодную индикацию "клапан открыт" и "автоматический режим включен"...
Добавил на 15-ый вывод светодиод "автоматический режим включен".
- Вложения
-
- Termometr.zip
- (26.16 КБ) 192 скачивания