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

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

Сообщение Zhuk72 »

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

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

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

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

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

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

Сообщение Zhuk72 »

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

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

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

Сообщение Zhuk72 »

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

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

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


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

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

Сообщение urry »

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

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

Сообщение Zhuk72 »

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

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

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

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

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

Сообщение Zhuk72 »

Но ведь это не согласуется с даташитом. Вот кусок из него:
ScreenShot002.jpg
(110.97 КБ) 445 скачиваний
Там явно указано, что при целом значении нулевой бит = 0, при дробном - 1. Для любой "полярности" температур.
Каждый имеет право на свое личное ошибочное мнение.

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

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

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

Сообщение Zhuk72 »

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

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

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

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

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

Сообщение Zhuk72 »

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

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

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

Сообщение DeBest »

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

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

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

Сообщение Zhuk72 »

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

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

Сообщение DeBest »

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

Сообщение Zhuk72 »

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

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

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

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

Сообщение Zhuk72 »

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

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

Сообщение DeBest »

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

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