Обогрев частного дома на PIC16F628A

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

C платой пока не торопитесь. Может какие-то ноги придется перебросить туда-сюда, т.к. мне не нравится, что одна нога дисплея висит на PGC ноге МК, и кнопки на RX-TX подвешены. В исходнике я их все назначил в начале, поэтому изменить распиновку можно будет легким движением руки.

Вот, примерно накидал конфиг для 876-го, включил I2C, окультурил исходник... Протеус все это понял, но температуру мерит неверно. Например 20 гр. видит как 32 (20h=32d), а 21 град. у него уже 40. Никогда я с датчиками температуры дел не имел, надо по шагам идти, а я уже засыпаю, глаза закрываются так, что хоть спички вставляй :)

Может кто из посвященных посмотрит, подправит...
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Аlex »

Zhuk72 писал(а):Протеус все это понял, но температуру мерит неверно. Например 20 гр. видит как 32 (20h=32d), а 21 град. у него уже 40.
Вы считываете только 1 байт, а второй проверяете на 0x00 или 0xFF для знака, это неверно. Нужно читать 2 первых байта, они и будут температурой, умноженной на 16, а старший бит старшего байта будет знаком температуры.
Вот примерчик на АСМе, гляньте.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Alex, тот код не мой. Я просто скопировал его с этой ссылки и слегка подкорректировал инициализацию портов с учетом другого МК, добавил конфиг-биты, ну и по мелочи кое-что.
Вполне возможно, что там была случайная или намеренная ошибка в коде. Я пока не разбирался.

Ваш пример посмотрю.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Надеюсь спустя почти 10 часов можно написать следующее сообщение, не нарушая пункт 2.2 :)

Причина неправильных показаний была в том, что в Протеусе стоял 18В20 вместо предусмотренного в схеме (и более не рекомендуемого к применению) 1820 без буквы. Достаточно в Протеусе сменить датчик на 18S20, как с температурой все встало на свои места.

Вот только непонятная у него логика, я о термостате. Если ставишь порог температуры 20 градусов, а температуру комнаты 25, ТЭН включается. При уменьшении температуры ниже пороговой - отключается. Надо либо бит порта инвертировать, либо транзистор сменить на обратный.


Дополнение.
Немного поторопился я.
Отрицательные температуры показывает неверно. Это первое и решаемое.
И второе непонятное: хотя в Протеусе выставил отрицательную температуру целую, в считанном байте в самом младшем разряде показывается 1. То ли глюк Протеуса, то ли к коде ошибка. Но т.к. с плюсовой температурой такого не происходит, то больше склоняюсь к первому.
Последний раз редактировалось AlekseyEnergo Пн апр 07, 2014 01:41:58, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение urry »

Код: Выделить всё

в считанном байте в самом младшем разряде показывается 1. То ли глюк Протеуса, то ли к коде ошибка

прот ни при чем .
данные выдаются не в обратном, а в дополнительном коде, насколько мне не изменяет склероз.
http://ru.wikipedia.org/wiki/%D0%94%D0% ... B%D0%B0%29
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Дело не в отрицательном значении как таковом, а в том, что по даташиту 0.5 градуса представляются 1 в нулевом бите младшего байта, в случае же целого значения там должен быть 0. Это одинаково и для положительной, и для отрицательной температуры.
А Прот при целом значении отрицательной температуры в нулевом бите показывает 1, а при дробном (-XX.5 C) - 0. Если температура положительна, то все точно по даташиту.

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

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Аlex »

Zhuk72 писал(а):А Прот при целом значении отрицательной температуры в нулевом бите показывает 1, а при дробном (-XX.5 C) - 0. Если температура положительна, то все точно по даташиту.
Всё правильно, так и должно быть. Этот бит будет инверсным при отрицательной температуре.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Но ведь это не согласуется с даташитом. Вот кусок из него:
ScreenShot002.jpg
(110.97 КБ) 444 скачивания


Там явно указано, что при целом значении нулевой бит = 0, при дробном - 1. Для любой "полярности" температур.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Аlex »

Для любой "полярности" температур.
Ну где же ? Посмотрите внимательнее.
Изображение
:)
Вложения
ScreenShot002.jpg
(123.53 КБ) 943 скачивания
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Неее, я про нулевой бит младшего байта :)
Тот я знаю, не о нем речь.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Аlex »

А, Вы про младший байт. Чот я тупанул ... :roll:
Ну да, он не должен инвертироваться при инверсии знака.

Сейчас перепроверил. Да, действительно, у DS18S20 есть такое. Хотя DS18B20 так себя не ведёт, всё согласно даташиту.
Чудеса... :roll:
Последний раз редактировалось AlekseyEnergo Пн апр 07, 2014 01:42:23, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Подредактировал.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Вот такой еще один предварительный вариант получился.
Исправил вывод на дисплей "-" температур, изменил конвертацию температуры, преобразование в 4 разряда (всё в конце asm файла), улучшил опрос кнопок (были глюкозы с ними), освободил ноги МК для RS232 и ICSP, ну и по мелочи кое-что.

Надо бы еще задействовать кнопку "-", но это в следующий раз будет.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
DeBest
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср дек 25, 2013 14:10:36
Откуда: Togliatti

Re: Обогрев частного дома на PIC16F628A

Сообщение DeBest »

Из схемы выпало второе реле, как управлять насосом? Или я тороплю события?
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

Re: Обогрев частного дома на PIC16F628A

Сообщение radio-kot »

Zhuk72 писал(а):Сразу советую сменить чип на другой
хотя бы pic16f887 dip40 а лучше AVR мега8 168 328 - ардуино совместимый.
Будете проходить мимо- проходите!
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

DeBest писал(а):Из схемы выпало второе реле, как управлять насосом? Или я тороплю события?

Насос должен включаться вместе с ТЭНом или циркуляция происходит постоянно при активной системе?
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
DeBest
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср дек 25, 2013 14:10:36
Откуда: Togliatti

Re: Обогрев частного дома на PIC16F628A

Сообщение DeBest »

Включаются они вместе, да. Но только при первом пуске или при совпадении цикла. Но потом, управление насосом переходит в работу согласно пользовательских уставок, соотношение стоим/работаем. Нужно это для поднятия КПД системы в целом, так как чем больше времени дать теплоносителю на остывание в регистрах батарей, тем меньше будет работы у ТЭНов. Ну и насосу нет нужды качать постоянно. Например: выставили работа 5 мин., остановка 10. Система отключила нагрев, набрав нужную температуру. Идёт голая прокачка, мы "выгоняем" температуру из теплоносителя, прокачивая его насосом. Нет нужды пропускать его трижды через регистры, проще остановить и пусть остывает сам. Как только датчик видит снижение ниже уставки - включается нагрев. Но ТЭНы не должны греть локально, поэтому как только они запущены, должен включаться и насос. В итоге опять набрана температура и нагрев можно убрать, а насос возвращается в свой собственный алгоритм работы.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Ну собственно у меня котел так и работает. Если отопление включено, циркуляционный насос гоняет воду постоянно, а поджиг газа включается при опускании температуры воды ниже порога.

Посмотрю потом куда можно вставить команду на включение насоса.

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

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Обогрев частного дома на PIC16F628A

Сообщение Zhuk72 »

Пока часы/таймер еще не готовы, включил насос на постоянной основе сразу после задания температуры. Включение производится высоким уровнем в отличии от ТЭНа, учтите это в исполнительной части. Если нужно, ТЭН тоже переведу на включение единицей. Или наоборот, насос нулем включу. Как вам удобнее.

Termostat.rar
(97.54 КБ) 185 скачиваний
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
DeBest
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Ср дек 25, 2013 14:10:36
Откуда: Togliatti

Re: Обогрев частного дома на PIC16F628A

Сообщение DeBest »

Похоже Zhuk72 не сможет продолжить проект... Кто возьмётся писать софт? Зима наступит внезапно :shock:
Ответить

Вернуться в «PIC»