Прошу помощи в программировании Pic16f630 - термореле
Прошу помощи в программировании Pic16f630 - термореле
Всем здравствуйте!
Прошу помочь в создании термореле на микроконтроллере - задача сделать включение и отключение нагревателя в подвале по температуре 3 градуса вкл и 4 градуса выкл. Датчик температуры ds18b20. Сам написал программу на си и на асм для pic16f630, не работает. Написал программку для ардуино - работает, но иногда выскакивают неадекватные значения температуры - почему - хз (сейчас все устройство стоит - более-менее работает). Схема на мощном тиристоре - тут все ок, не работает именно микроконтроллер. Версию на си прикладываю. Версию на асм приложу завтра.
Делал давно, решил возобновить - разобраться - вот верные файлы:
асм си
Прошу помочь в создании термореле на микроконтроллере - задача сделать включение и отключение нагревателя в подвале по температуре 3 градуса вкл и 4 градуса выкл. Датчик температуры ds18b20. Сам написал программу на си и на асм для pic16f630, не работает. Написал программку для ардуино - работает, но иногда выскакивают неадекватные значения температуры - почему - хз (сейчас все устройство стоит - более-менее работает). Схема на мощном тиристоре - тут все ок, не работает именно микроконтроллер. Версию на си прикладываю. Версию на асм приложу завтра.
Делал давно, решил возобновить - разобраться - вот верные файлы:
асм си
- Реклама
Re: Прошу помощи в программировании Pic16f630 - термореле
Посмотри вот этот древний проектик (сделано в МПЛАБ 8.92, ассемблер)
схемки (не помню уже какая под что) от него
Может чего прояснится...

Или вот тут еще более подходящий вариант с частичным обсуждением (проект trm629):
начало
https://radiokot.ru/forum/viewtopic.php ... 8#p2565968
и далее
https://radiokot.ru/forum/viewtopic.php ... 6#p2566836
https://radiokot.ru/forum/viewtopic.php ... 2#p2593182
https://radiokot.ru/forum/viewtopic.php ... 2#p2593202
https://radiokot.ru/forum/viewtopic.php ... 6#p2607506
.......

Или вот тут еще более подходящий вариант с частичным обсуждением (проект trm629):
начало
https://radiokot.ru/forum/viewtopic.php ... 8#p2565968
и далее
https://radiokot.ru/forum/viewtopic.php ... 6#p2566836
https://radiokot.ru/forum/viewtopic.php ... 2#p2593182
https://radiokot.ru/forum/viewtopic.php ... 2#p2593202
https://radiokot.ru/forum/viewtopic.php ... 6#p2607506
.......
Re: Прошу помощи в программировании Pic16f630 - термореле
Если так , то выкладывай свой проект в МПЛАБ. За СИ не скажу , а вот АСМ скопирован у кого то. ( может у Карабельникова). Почему нет ни одного коментария ? Программа на АСМ только общается (может быть) с датчиком и больше ни чего. Что в ней должно работать?Сам написал программу на си и на асм для pic16f630, не работает
Студент ???
Re: Прошу помощи в программировании Pic16f630 - термореле
Скорее "начинающий самоделкин" с начальным опытом адуринки.
Только вот ПИК от АВР солидно отличается.
Посему опыт, полученный при работе с ардуино не сильно поможет.
(Другое дело от ассемблера с АВР/ПИК к ардуиновому Си - это получше).

Только вот ПИК от АВР солидно отличается.
Посему опыт, полученный при работе с ардуино не сильно поможет.
(Другое дело от ассемблера с АВР/ПИК к ардуиновому Си - это получше).
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Прошу помощи в программировании Pic16f630 - термореле
[uquote="profradio",url="/forum/viewtopic.php?p=3931805#p3931805"]Сам написал программу на си и на асм для pic16f630, не работает.[/uquote]
там и там:
наверное надо:
заменить на
там и там:
Код: Выделить всё
komanda18b20 = 0x44; //44 измерение t
OneWireWriteByte();
__delay_us(750);
one_wire_inic();
komanda18b20 = 0xCC; // СС команды от МК
Код: Выделить всё
movlw H'44'
call One_Wire_Write_Byte
call delay_750us
call One_Wire_Init
movlw H'CC'
call One_Wire_Write_Byte Код: Выделить всё
__delay_us(750);Код: Выделить всё
__delay_ms(750);- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Прошу помощи в программировании Pic16f630 - термореле
Этих термостатов в интернете - пруд пруди. И с исходниками, и без, и всяких разных модификаций, ...
Но нет же, нужно изобретать очередной велосипед с костылями
Но нет же, нужно изобретать очередной велосипед с костылями
Re: Прошу помощи в программировании Pic16f630 - термореле
Каждый имеет право на собственную разработку (пусть и не всегда удачную и/или совершенную).
Или для учебы/закрепления пройденного материала или для собственного удовольствия.
То, что подобного материала в избытке - наоборот позволяет выбрать лучшие решения для компоновки конкретного проекта.

Или для учебы/закрепления пройденного материала или для собственного удовольствия.
То, что подобного материала в избытке - наоборот позволяет выбрать лучшие решения для компоновки конкретного проекта.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Прошу помощи в программировании Pic16f630 - термореле
[uquote="BOB51",url="/forum/viewtopic.php?p=3933310#p3933310"]Каждый имеет право на собственную разработку[/uquote]Я не про разработку говорю, а про кучу примеров на любых языках.
Разрабатывать, конечно же, лучше самому. Но грешить на программу, примеров которой тьма в интернете, и идти на форум с просьбой помочь в ней разобраться - извращенство.
Ищем примеры, смотрим, сравниваем, ищем ошибки, поправляем, .... Или чукча - не читатель ?
Ну или ТС - тупо лентяй, "сделайте всё за меня, а я буду заниматься своими делами" ...
Разрабатывать, конечно же, лучше самому. Но грешить на программу, примеров которой тьма в интернете, и идти на форум с просьбой помочь в ней разобраться - извращенство.
Ищем примеры, смотрим, сравниваем, ищем ошибки, поправляем, .... Или чукча - не читатель ?
Ну или ТС - тупо лентяй, "сделайте всё за меня, а я буду заниматься своими делами" ...
Re: Прошу помощи в программировании Pic16f630 - термореле
Согласен с тем, что вопросы задавать надо "чуток основательнее" их подготовив.
Мне вот без схемки, сопровождающей задачу не слишком удобно...
Подождемс реакции вопрошавшего...

Мне вот без схемки, сопровождающей задачу не слишком удобно...
Подождемс реакции вопрошавшего...
Re: Прошу помощи в программировании Pic16f630 - термореле
Ребята, благодарю за ответы! Я не студент - просто как-то затронула тема программирования МК - втянулся, посмотрел, почитал, поизучал асм, сделал термометр в квартиру на pic16f676 c динамическим индикатором, потом купил ардуинок - поизучал си - понял, что си облегчает жизнь, особенно на ардуинках:) Ну в общем не специалист - так, поверхностно нахватался:) Занимаюсь ради интереса.
Про выложенный код асм - да, вспомнил - я начал писать программу, но столкнулся с трудностью - как сделать условие больше >CONST< меньше на асм и не дописал - решил делать на си - но не заработало и я бросил. Замечание про "__delay_us(750); заменить на Код: __delay_ms(750);" верно, но по факту работает и с задержной в 750 микросекунд.
Я тут тоже времени не терял - нашел у себя в закромах МК PIC16F628A и решил для него писать код на асм - т.к. на асм меньше вероятность допустить неявных ошибок.
На сегодня код такой - Это проект в MPLAB v3.65
Комментарии, написанные на кириллице превращаются в знаки вопроса - теперь стараюсь писать на латинице.
Пока код примитивный - считывание двухбайтного числа с DS18B20 - затем отбрасывание полубайтов знака и дробной части и склейка с переворотом восьмибитного значения с левым битом знака и проверка на наличие знака минус - это вкл, далее проверка 6,5,4,3 бита на наличие 1 - это выкл.
Проверяю в протеусе - пока работает так: когда температура ниже нуля - 5-я нога порта В включает нагрузку/нагреватель (высокий уровень), а когда температура выше 8 градусов - выключает (гистерезис такой в 8 градусов).
Но мне нужно вкл 4 градуса выкл 6 градусов.
Для этого написал такой кусок кода:
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;SUBWF T4,0 ;vichitanie is W-4=?
;BTFSC STATUS,2 ; 0?
;goto VKL ; esli 0 to vkl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VKL ;bil zaim to vkl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VKL ;bil zaim to vkl
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;ADDWF T6,0 ;slozenie temp i 6
;BTFSC STATUS,2 ; 0?
;goto VIKL ; esli 0 to vikl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VIKL ;bil zaim to vikl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VIKL ;bil zaim to vikl
Где T4 = b'00000100'
А Т6 = 255 - 6 = 249 b'11111001'
Но этот код пока не работает - вот разбираюсь, почему.
Файл в протеусе: По поводу схемы - вот схема в SL-out И схема принципа подключения нагрузки: Про уже готовые проекты - можно взять готовый или проще купить в радиомагазине готовое устройство - для меня дело в интересе - хочу сделать максимально простую схему без дисплеев, индикаторов, кнопок и другого усложнения - значение температуры срабатывания зашивается и хранится в самом МК.
Про выложенный код асм - да, вспомнил - я начал писать программу, но столкнулся с трудностью - как сделать условие больше >CONST< меньше на асм и не дописал - решил делать на си - но не заработало и я бросил. Замечание про "__delay_us(750); заменить на Код: __delay_ms(750);" верно, но по факту работает и с задержной в 750 микросекунд.
Я тут тоже времени не терял - нашел у себя в закромах МК PIC16F628A и решил для него писать код на асм - т.к. на асм меньше вероятность допустить неявных ошибок.
На сегодня код такой - Это проект в MPLAB v3.65
Комментарии, написанные на кириллице превращаются в знаки вопроса - теперь стараюсь писать на латинице.
Пока код примитивный - считывание двухбайтного числа с DS18B20 - затем отбрасывание полубайтов знака и дробной части и склейка с переворотом восьмибитного значения с левым битом знака и проверка на наличие знака минус - это вкл, далее проверка 6,5,4,3 бита на наличие 1 - это выкл.
Проверяю в протеусе - пока работает так: когда температура ниже нуля - 5-я нога порта В включает нагрузку/нагреватель (высокий уровень), а когда температура выше 8 градусов - выключает (гистерезис такой в 8 градусов).
Но мне нужно вкл 4 градуса выкл 6 градусов.
Для этого написал такой кусок кода:
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;SUBWF T4,0 ;vichitanie is W-4=?
;BTFSC STATUS,2 ; 0?
;goto VKL ; esli 0 to vkl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VKL ;bil zaim to vkl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VKL ;bil zaim to vkl
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;ADDWF T6,0 ;slozenie temp i 6
;BTFSC STATUS,2 ; 0?
;goto VIKL ; esli 0 to vikl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VIKL ;bil zaim to vikl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VIKL ;bil zaim to vikl
Где T4 = b'00000100'
А Т6 = 255 - 6 = 249 b'11111001'
Но этот код пока не работает - вот разбираюсь, почему.
Файл в протеусе: По поводу схемы - вот схема в SL-out И схема принципа подключения нагрузки: Про уже готовые проекты - можно взять готовый или проще купить в радиомагазине готовое устройство - для меня дело в интересе - хочу сделать максимально простую схему без дисплеев, индикаторов, кнопок и другого усложнения - значение температуры срабатывания зашивается и хранится в самом МК.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Прошу помощи в программировании Pic16f630 - термореле
для примера - там и црц есть:без дисплеев, индикаторов, кнопок
https://radiokot.ru/forum/viewtopic.php ... 2#p3380962
з.ы. там же __delay_ms(800);
Re: Прошу помощи в программировании Pic16f630 - термореле
...но по факту работает и с задержной в 750 микросекунд.
Не по факту, а в протеусе. Он не симулирует многих реальных требований, включая задержки на преобразование.Проверяю в протеусе
Очень сомнительное утверждение )на асм меньше вероятность допустить неявных ошибок.
Re: Прошу помощи в программировании Pic16f630 - термореле
LIST p=16F628A
__CONFIG b'11111100011000'
#define _XTAL_FREQ 40000000 ;это зачем
PCL equ 02h
TRISA equ 85h
TRISB equ 06h
PORTA equ 05h
PORTB equ 86h
STATUS equ 03h
Не следует переписывать регистры ОН, нужно подключать файл - include p16f628A.inc
STATUS,5 - нужно применять однозначные имена флагов C,Z,RP и т.д.
Почему MPLAB v3.65 ? Его уже и скачать негде.
Что за набор файлов в папке проекта? Чем он запускается ?
PORTDQ equ PORTA
TRISDQ equ TRISA
Зачем эта двойная кодировка ?
T4 equ b'00000100'; 0x04
T6 equ b'11111001'; 0xF9
Это что ?
Пока не наведёте порядок в тексте программы, ни чего не заработает. И не надо свистеть что прогу писал сам. То что написал сам , оно и не работает.
__CONFIG b'11111100011000'
#define _XTAL_FREQ 40000000 ;это зачем
PCL equ 02h
TRISA equ 85h
TRISB equ 06h
PORTA equ 05h
PORTB equ 86h
STATUS equ 03h
Не следует переписывать регистры ОН, нужно подключать файл - include p16f628A.inc
STATUS,5 - нужно применять однозначные имена флагов C,Z,RP и т.д.
Почему MPLAB v3.65 ? Его уже и скачать негде.
Что за набор файлов в папке проекта? Чем он запускается ?
PORTDQ equ PORTA
TRISDQ equ TRISA
Зачем эта двойная кодировка ?
T4 equ b'00000100'; 0x04
T6 equ b'11111001'; 0xF9
Это что ?
Пока не наведёте порядок в тексте программы, ни чего не заработает. И не надо свистеть что прогу писал сам. То что написал сам , оно и не работает.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Прошу помощи в программировании Pic16f630 - термореле
Это проект MPLAB Xotest писал(а):Что за набор файлов в папке проекта? Чем он запускается ?
Re: Прошу помощи в программировании Pic16f630 - термореле
ТС пишет
Даже здесь без внимания написано.Это проект в MPLAB v3.65
Re: Прошу помощи в программировании Pic16f630 - термореле
Это некоторая разница мплаб Х (там свой порядок нумерации версий) и старый-добрый мплаб 8.92 на котором большая часть старых проектов выполнена.
На старых ПК с ХР уже мплаб Х поставить весьма затруднительно...
Просто сейчас начинающие уже ориентируются на современную базу (не ведая совершенно о существовании более старого)...

Пы.Сы.
При работе с минусовыми значениями нельзя просто отбрасывать дробную часть.
Необходимо сначала В ПОЛНОМ ФОРМАТЕ, полученном при преобразовании, перевести значение в положительную величину("дополнение до 2х"), а уж только затем заниматься "обрезанием".

На старых ПК с ХР уже мплаб Х поставить весьма затруднительно...
Просто сейчас начинающие уже ориентируются на современную базу (не ведая совершенно о существовании более старого)...
Пы.Сы.
При работе с минусовыми значениями нельзя просто отбрасывать дробную часть.
Необходимо сначала В ПОЛНОМ ФОРМАТЕ, полученном при преобразовании, перевести значение в положительную величину("дополнение до 2х"), а уж только затем заниматься "обрезанием".
Последний раз редактировалось BOB51 Ср дек 02, 2020 10:38:12, всего редактировалось 1 раз.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Прошу помощи в программировании Pic16f630 - термореле
В чём невнимательность ? Забыл символ "X" написать ?otest писал(а): Даже здесь без внимания написано
Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB
Re: Прошу помощи в программировании Pic16f630 - термореле
У микрочипа на сайте после обжорства атмелем вообще лазить... тяжковато...

Re: Прошу помощи в программировании Pic16f630 - термореле
Именно так. Будто вам неизвестно , что 1 символ приведёт к краху всей программы.Забыл символ "X" написать
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Прошу помощи в программировании Pic16f630 - термореле
Ну, мы сейчас не о программе глаголим. Зачем делать подобные сравнения ?
Обвинять человека в невнимательности лишь потому, что он MPLAB X назвал MPLAB'ом - не красиво.
MPLAB X - это и есть MPLAB. И будет им всегда. Не вижу ничего в этом оскорбительного в адрес Микрочипа.
Тем более :[uquote="Аlex",url="/forum/viewtopic.php?p=3934473#p3934473"]Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB[/uquote]
Обвинять человека в невнимательности лишь потому, что он MPLAB X назвал MPLAB'ом - не красиво.
MPLAB X - это и есть MPLAB. И будет им всегда. Не вижу ничего в этом оскорбительного в адрес Микрочипа.
Тем более :[uquote="Аlex",url="/forum/viewtopic.php?p=3934473#p3934473"]Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB[/uquote]


