Терморегулятор на микроконтроллере PIC16Fxx и DS18B20
Я что-то не понял, это релейный регулятор или пропорциональный? Проверял на лампе , горит в полный накал,никакой регуляции мощности нет. В чём может быть проблема?
- Реклама
Это не проблема, а так задумано. Обычно нагреватели, в отличии от ламп, имеют достаточную инерционность нагрева и при большой мощности приличные токи включения. Поэтому для снижения помех фазовый способ управления симистором не применим (да и оптопара включает только при переходе через ноль). Пропорциональная регулировка осуществляется за счет соотношения времени включенного состояния к отключенному в течении 1 секунды с дискретностью 10. Таким образом мощность может быть 10% 20% и т.д. с количеством полных полупериодов в нагрузке соответственно 5, 10, 15 .... 50 (максимальная мощность). При испытаниях такой способ дал вполне удовлетворительные результаты.
Хатуль_мадан, я не говорил о фазовой регулировке нагревателя. Если мощность нагревателя регулируется количеством пропусков периодов, то лампа должна мигать, но она шпарит на полную мощность. При достижении установленной температуры происходит отключение. Гистерезис установлен. В общем работает как обычный позиционный регулятор.
Так если она не мигает в диапазоне гистерезиса, то значит не включен режим пропорционального регулирования, или задан нулевой гистерезис. Мигание будет, если температура уже достигла Tust-dT/2 или еще не превысила Tust+dT/2. При температуре менее Tust-dT/2 нагреватель включен всегда, при превышении Tust+dT/2 нагреватель всегда выключен, а при dT=0 можно догадаться, как будет вести себя схема 
По любому, лучше прочитать файлик описания к регулятору, или попробовать в протеусе поэкспериментировать (модели выкладывались)...
По любому, лучше прочитать файлик описания к регулятору, или попробовать в протеусе поэкспериментировать (модели выкладывались)...
лучше прочитать файлик описания к регулятору
читал.
в протеусе поэкспериментировать
В протеусе играл.
Гистерезис не нулевой, режим пропорционального регулирования включён.
читал.
в протеусе поэкспериментировать
В протеусе играл.
Гистерезис не нулевой, режим пропорционального регулирования включён.
- Реклама
Хатуль_мадан, вопрос решён. Было подозрение на микроконтроллер , при прошивке пришлось несколько раз перепрошивать, до этого его использовал во многих поделках. Заменил контроллер , всё работает. Чертовщина какая-то, ну да и ладно.
Теперь буду гонять на реальном объекте.
PS: Вот если бы взять этот регулятор и на его основе разработать ПИД-регулятор.....
Теперь буду гонять на реальном объекте.
PS: Вот если бы взять этот регулятор и на его основе разработать ПИД-регулятор.....
Уважаемый Хатуль_мадан
Повторил "в железе" Вашу конструкцию из первого сообщения данной темы. Схему немного перерисовал "под себя" и под имеющиеся компоненты (см. вложение). Прошивка Ваша, EEPROM не менял.
Заработало (на столе) сразу. Но есть несколько вопросиков:
- нечётко работают кнопки; в принципе один раз выставил и забыл, но как-то неуютно, что ли, нельзя ли подправить програмку?
- сегменты индикатора раз в секунду подмигивают (в момент измерения?); немного раздражает - нельзя никак убрать эти заметные мигания?
- при включении питания на 1 секунду включается нагрузка (пока стоит лампа - вспыхивает и гаснет); не будет ли проблем с компрессором холодильника?
- пару раз наблюдал срыв работы устройства - показания температуры начинали быстро мигать и уменьшаться до минус 55 градусов (минимальный уровень DS18B20?), регулировка не работала; поэтому решил убрать резистор 91ом из цепи питания DS18B20 - вроде пока "полёт нормальный"; правильно сделал и что-то ещё попробовать?
В остальном - всё (пока) работает как в Вашем кратком описании... Спасибо за полезную вещь (как раз сломался механический термостат в холодильнике - хочу заменить).
Повторил "в железе" Вашу конструкцию из первого сообщения данной темы. Схему немного перерисовал "под себя" и под имеющиеся компоненты (см. вложение). Прошивка Ваша, EEPROM не менял.
Заработало (на столе) сразу. Но есть несколько вопросиков:
- нечётко работают кнопки; в принципе один раз выставил и забыл, но как-то неуютно, что ли, нельзя ли подправить програмку?
- сегменты индикатора раз в секунду подмигивают (в момент измерения?); немного раздражает - нельзя никак убрать эти заметные мигания?
- при включении питания на 1 секунду включается нагрузка (пока стоит лампа - вспыхивает и гаснет); не будет ли проблем с компрессором холодильника?
- пару раз наблюдал срыв работы устройства - показания температуры начинали быстро мигать и уменьшаться до минус 55 градусов (минимальный уровень DS18B20?), регулировка не работала; поэтому решил убрать резистор 91ом из цепи питания DS18B20 - вроде пока "полёт нормальный"; правильно сделал и что-то ещё попробовать?
В остальном - всё (пока) работает как в Вашем кратком описании... Спасибо за полезную вещь (как раз сломался механический термостат в холодильнике - хочу заменить).
- Вложения
-
- Термостат холодильника.pdf
- (89.68 КБ) 700 скачиваний
В том же порядке:
1. Кнопки на моем регуляторе работают нормально, опрос в прерываниях инидкации, дребезга нет. Попробуйте проверить сами кнопки.
2. С подмигиванием боролся, но не победил. Динамическая индикация вызывается чаще, чем требуемое время опроса датчика, запрещаются прерывания, поэтому моргает.
3. Проблему при включении как-то не замечал, хотя возможно она и есть. Для холодильника уже выкладывал специальную доработанную прошивку.
4. Описанный срыв в работе ни разу не замечал, да он и невозможен. Датчик цифровой, поэтому показания или есть, или индикация ошибки, плавать до -55 температура не может. Скорее всего, так проявилась неисправность самого датчика. Регулятор только принимает из него преобразованную температуру и выводит на индикацию с контролем порогов срабатывания реле.
Если регулятор не универсальный, а только для холодильника, то лучше перепрошить МК спец. прошивкой с первой страницы. Там есть установки максимальных интервалов работы компрессора, паузы в работе и т.п.
PS(7.05.2013):
После фразы "пару раз наблюдал срыв работы устройства - показания температуры начинали быстро мигать и уменьшаться до минус 55 градусов (минимальный уровень DS18B20?), регулировка не работала" только сейчас понял возможную проблему. Раз индикатор начал мигать, значит включилась установка температуры, а т.к. она стала уменьшаться, то значит нажата (замкнута) кнопка минус, установленная температура падает до минимально возможного предела -55, при этом никакие регулировки не должны работать, пока не будут записаны новые установки. Выход (с записью в память) из этого режима только при отжатых (всех) кнопках более 5 сек.
Проверьте еще раз качество кнопок, или замените другой кнопку "-". Возможно она механически как-то застревает в корпусе, или утечки внутри ее, или др. проблема. Если случайно и бесконтрольно повторится такой случай, то появится возможность "загнать" установку температуры в самый минимум, потом она может сохранится в памяти, тогда терморегулятор не уследит за температурой со всеми вытекающими последствиями. Можно конечно попробовать опрашивать кнопки только в первые секунды после включения питания, потом блокировать опрос, но тогда тоже теряется некоторая универсальность. Сообщите результат, как проверите, может еще что подумаем...
Выходит резистор в цепи питания датчика не виноват
1. Кнопки на моем регуляторе работают нормально, опрос в прерываниях инидкации, дребезга нет. Попробуйте проверить сами кнопки.
2. С подмигиванием боролся, но не победил. Динамическая индикация вызывается чаще, чем требуемое время опроса датчика, запрещаются прерывания, поэтому моргает.
3. Проблему при включении как-то не замечал, хотя возможно она и есть. Для холодильника уже выкладывал специальную доработанную прошивку.
4. Описанный срыв в работе ни разу не замечал, да он и невозможен. Датчик цифровой, поэтому показания или есть, или индикация ошибки, плавать до -55 температура не может. Скорее всего, так проявилась неисправность самого датчика. Регулятор только принимает из него преобразованную температуру и выводит на индикацию с контролем порогов срабатывания реле.
Если регулятор не универсальный, а только для холодильника, то лучше перепрошить МК спец. прошивкой с первой страницы. Там есть установки максимальных интервалов работы компрессора, паузы в работе и т.п.
PS(7.05.2013):
После фразы "пару раз наблюдал срыв работы устройства - показания температуры начинали быстро мигать и уменьшаться до минус 55 градусов (минимальный уровень DS18B20?), регулировка не работала" только сейчас понял возможную проблему. Раз индикатор начал мигать, значит включилась установка температуры, а т.к. она стала уменьшаться, то значит нажата (замкнута) кнопка минус, установленная температура падает до минимально возможного предела -55, при этом никакие регулировки не должны работать, пока не будут записаны новые установки. Выход (с записью в память) из этого режима только при отжатых (всех) кнопках более 5 сек.
Проверьте еще раз качество кнопок, или замените другой кнопку "-". Возможно она механически как-то застревает в корпусе, или утечки внутри ее, или др. проблема. Если случайно и бесконтрольно повторится такой случай, то появится возможность "загнать" установку температуры в самый минимум, потом она может сохранится в памяти, тогда терморегулятор не уследит за температурой со всеми вытекающими последствиями. Можно конечно попробовать опрашивать кнопки только в первые секунды после включения питания, потом блокировать опрос, но тогда тоже теряется некоторая универсальность. Сообщите результат, как проверите, может еще что подумаем...
Выходит резистор в цепи питания датчика не виноват
Последний раз редактировалось Хатуль_мадан Вт май 07, 2013 11:11:12, всего редактировалось 1 раз.
Спасибо за ответ. Всё ясно. Прошивка использована именно специальная для холодильника. Все временные параметры (время паузы 2мин, время работы 36мин, время отдыха 18мин выдерживаются).
Вероятно, проблема с кнопками, проверю. Удачи!
Вероятно, проблема с кнопками, проверю. Удачи!
Lavr12
Если можно,выложите Ваш вариант платы.
Если можно,выложите Ваш вариант платы.
den2
Плату не рисовал. Сделал всё (как обычно) на печатной макетной плате.
Плату не рисовал. Сделал всё (как обычно) на печатной макетной плате.
- Сообщения: 49
- Зарегистрирован: Чт июл 05, 2012 21:15:32
Уважаемый автор!
Не могли бы подправить прошивку под PIC16F84, а то валяется их куча. Не хочется покупать специально PIC16F84A.
Не могли бы подправить прошивку под PIC16F84, а то валяется их куча. Не хочется покупать специально PIC16F84A.
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
Не надо покупать. Для этой схема оба подходят.
А есть в чем-то разница прошивок для PIC16F84 и PIC16F84A? Я думал они одинаковы. Отличаются, например, только PIC16F876 и PIC16F876A наличием/отсутствием компараторов.
- Сообщения: 49
- Зарегистрирован: Чт июл 05, 2012 21:15:32
Я не могу утверждать точно, но в MPLAB есть два файла P16F84.inc и P16F84A.inc.
Просмотрел сейчас эти файлы.
В файл PIC16F84A.inc добавлена вот эта строка:
;----- DEVID Equates --------------------------------------------------
_DEVID1 EQU H'2006'
Остальное все одинаково.
Просмотрел сейчас эти файлы.
В файл PIC16F84A.inc добавлена вот эта строка:
;----- DEVID Equates --------------------------------------------------
_DEVID1 EQU H'2006'
Остальное все одинаково.
- Сообщения: 49
- Зарегистрирован: Чт июл 05, 2012 21:15:32
Собрал регулятор, прошивка " DS18B20_LCD-OA_PIC16F84A.hex ", мк PIC16LF84, при включении по 2 сек., "25.0", "d 0.4", "ПOFF", "uOFF" и потом часто (примерно 0,5сек)моргает тоже самое. При отключенном датчике по 2 сек., "25.0", "d 0.4", "ПOFF", "uOFF", " ERR" и опять моргает. На кнопки никак не реагирует с датчиком и без.
Что может быть и в каком направлении рыть?
Что может быть и в каком направлении рыть?
- Сообщения: 49
- Зарегистрирован: Чт июл 05, 2012 21:15:32
Разобрался.
Когда писал про кнопки, проскочила мысль, а правильно я их запаял. Проверил, точно ошибся. Надо быть повнимательней.
Когда писал про кнопки, проскочила мысль, а правильно я их запаял. Проверил, точно ошибся. Надо быть повнимательней.
- Сообщения: 1
- Зарегистрирован: Пн мар 31, 2014 00:09:06
Всем марта и сметаны
а есть варианты на несколько точек контроля
а есть варианты на несколько точек контроля
- Сообщения: 53
- Зарегистрирован: Чт май 01, 2014 22:09:14
Здравствуйте! Ребят подскажите пожалуйста как настроить winpic800 (ну там фьюзы и всякая другая лабудень)!? Боюсь испортить микроконтроллер а описание программы очень скудные!
- Сообщения: 6
- Зарегистрирован: Пт авг 12, 2011 17:38:34
Приветствую уважаемое собрание.
Круговорот схем в природе:)
На forum.cxem.net/index.php?showtopic=100569&st=0 еще в 2012 году выложили схему терморегулятора на pic16f628 и 18b20. Как писал топик стартер, схема и прошивка из большой темы "Терморегулятор на микроконтроллере PIC16F84 датчикe DS18B20" Приводил ссылку, но что-то того сообщения уже не находит.
Описание работы.
1. Температура меряется 1 раз в секунду, выводится на индикатор. Формат отображения: десятки, единицы, десятые. Для температуры больше +99,9 оС сотни, десятки, единицы. Для температуры меньше -9,9 оС десятки, единицы.
2. Гистерезис односторонний. То есть если выставлена температура 40,0 оС, а гистерезис 5,0 оС, то в режиме нагреватель включится при 35,0 оС, а выключится при 40,0 оС.
3. Нажатием на кнопку MODE индикатор переводится по кругу на отображение: – текущая температура. – установленная температура выключения нагревателя, мигает точка во втором разряде; – гистерезис, мигает точка в младшем разряде; – текущая температура.
5. Кнопки PLUS/MINUS работают по короткому и длинному нажатию.(пошаговая или быстрая смена чисел)
6. Пределы установки температуры 0 ÷ +99,9 оС.
7. Пределы установки гистерезиса 0,1 ÷ 50,0 оС.
8. По истечении 6 сек от последнего нажатия на кнопки, индикатор переходит в режим отображения текущей температуры. Если были произведены какие-либо изменения, они запишутся в память.
9. При сбое в работе датчика нагрузка выключается.
В архиве всё необходимое.
Но вопрос в другом. Почему-то эта схема нормально работает только у топистартера. Правда, потом еще у пары человек заработала. У остальных же проблемы одинаковые -
все три кнопки работают как "mode"Но если кнопка "mode" работает так как, ей положено, то "+" работает как "mode" и "+" , а "-"- - как "mode" и "-". При этом меняются значения как выставленной температуры , так и гистерезиса....
Народ шил разными программаторами .
Собрал и я этот девайс (подкупил односторонним гистерезисом - если выставлено 30 градусов и гистерезис 2 - то нагреватель включит при 28, а выключит при 30).
Развел свою плату. Прошил контроллер PicKit2 -
Прошивал и внутрисхемно и отдельно пик - результат одинаковый.Кнопки работают криво. Что интересно - прошивка ,сразу же считанная с пика ,совсем не совпадает с прошиваемой. Вот зашил в DIP pic16F628A и тут же считал... В smd варианте считывается то же самое
Прикрепляю два файла - ter.zip - оригинальный файл из топика . И dip.zip сразу же после прошивки считано из пика...
Помогите, если кто может? В чем проблема? Почему у большинства неправильно работает?
Хотелось бычтобы зработало так как надо..
Заранее спасибо.
С уважением, Nick.
Круговорот схем в природе:)
На forum.cxem.net/index.php?showtopic=100569&st=0 еще в 2012 году выложили схему терморегулятора на pic16f628 и 18b20. Как писал топик стартер, схема и прошивка из большой темы "Терморегулятор на микроконтроллере PIC16F84 датчикe DS18B20" Приводил ссылку, но что-то того сообщения уже не находит.
Описание работы.
1. Температура меряется 1 раз в секунду, выводится на индикатор. Формат отображения: десятки, единицы, десятые. Для температуры больше +99,9 оС сотни, десятки, единицы. Для температуры меньше -9,9 оС десятки, единицы.
2. Гистерезис односторонний. То есть если выставлена температура 40,0 оС, а гистерезис 5,0 оС, то в режиме нагреватель включится при 35,0 оС, а выключится при 40,0 оС.
3. Нажатием на кнопку MODE индикатор переводится по кругу на отображение: – текущая температура. – установленная температура выключения нагревателя, мигает точка во втором разряде; – гистерезис, мигает точка в младшем разряде; – текущая температура.
5. Кнопки PLUS/MINUS работают по короткому и длинному нажатию.(пошаговая или быстрая смена чисел)
6. Пределы установки температуры 0 ÷ +99,9 оС.
7. Пределы установки гистерезиса 0,1 ÷ 50,0 оС.
8. По истечении 6 сек от последнего нажатия на кнопки, индикатор переходит в режим отображения текущей температуры. Если были произведены какие-либо изменения, они запишутся в память.
9. При сбое в работе датчика нагрузка выключается.
В архиве всё необходимое.
Но вопрос в другом. Почему-то эта схема нормально работает только у топистартера. Правда, потом еще у пары человек заработала. У остальных же проблемы одинаковые -
все три кнопки работают как "mode"Но если кнопка "mode" работает так как, ей положено, то "+" работает как "mode" и "+" , а "-"- - как "mode" и "-". При этом меняются значения как выставленной температуры , так и гистерезиса....
Народ шил разными программаторами .
Собрал и я этот девайс (подкупил односторонним гистерезисом - если выставлено 30 градусов и гистерезис 2 - то нагреватель включит при 28, а выключит при 30).
Развел свою плату. Прошил контроллер PicKit2 -
Прошивал и внутрисхемно и отдельно пик - результат одинаковый.Кнопки работают криво. Что интересно - прошивка ,сразу же считанная с пика ,совсем не совпадает с прошиваемой. Вот зашил в DIP pic16F628A и тут же считал... В smd варианте считывается то же самое
Прикрепляю два файла - ter.zip - оригинальный файл из топика . И dip.zip сразу же после прошивки считано из пика...
Помогите, если кто может? В чем проблема? Почему у большинства неправильно работает?
Хотелось бычтобы зработало так как надо..
Заранее спасибо.
С уважением, Nick.
- Вложения
-
- ter.zip
- оригинальный файл из топика
- (46.28 КБ) 406 скачиваний
-
- dip.zip
- сразу же после прошивки считано из пика...
- (12.03 КБ) 651 скачивание


