Страница 1 из 2

Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пт ноя 27, 2020 14:48:10
profradio
Всем здравствуйте!
Прошу помочь в создании термореле на микроконтроллере - задача сделать включение и отключение нагревателя в подвале по температуре 3 градуса вкл и 4 градуса выкл. Датчик температуры ds18b20. Сам написал программу на си и на асм для pic16f630, не работает. Написал программку для ардуино - работает, но иногда выскакивают неадекватные значения температуры - почему - хз (сейчас все устройство стоит - более-менее работает). Схема на мощном тиристоре - тут все ок, не работает именно микроконтроллер. Версию на си прикладываю. Версию на асм приложу завтра.
Делал давно, решил возобновить - разобраться - вот верные файлы:
асм
newpic_8b_general.asm
(4.25 КБ) 364 скачивания
си
ts1.c
(2.86 КБ) 368 скачиваний

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 11:24:13
BOB51
Посмотри вот этот древний проектик (сделано в МПЛАБ 8.92, ассемблер)
t_hed676.zip
(105.86 КБ) 361 скачивание
схемки (не помню уже какая под что) от него
demoterm.pdf
(135.64 КБ) 291 скачивание
demoterm_2.pdf
(119.94 КБ) 293 скачивания
Может чего прояснится...
:wink:
Или вот тут еще более подходящий вариант с частичным обсуждением (проект 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
.......
8)

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 12:08:03
otest
Сам написал программу на си и на асм для pic16f630, не работает
Если так , то выкладывай свой проект в МПЛАБ. За СИ не скажу , а вот АСМ скопирован у кого то. ( может у Карабельникова). Почему нет ни одного коментария ? Программа на АСМ только общается (может быть) с датчиком и больше ни чего. Что в ней должно работать?
Студент ???

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 12:56:20
BOB51
Скорее "начинающий самоделкин" с начальным опытом адуринки.
8)
Только вот ПИК от АВР солидно отличается.
Посему опыт, полученный при работе с ардуино не сильно поможет.
(Другое дело от ассемблера с АВР/ПИК к ардуиновому Си - это получше).
:tea:

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 13:37:12
oleg110592
[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);

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 15:22:30
Аlex
Этих термостатов в интернете - пруд пруди. И с исходниками, и без, и всяких разных модификаций, ...
Но нет же, нужно изобретать очередной велосипед с костылями :facepalm:

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 15:48:27
BOB51
Каждый имеет право на собственную разработку (пусть и не всегда удачную и/или совершенную).
Или для учебы/закрепления пройденного материала или для собственного удовольствия.
То, что подобного материала в избытке - наоборот позволяет выбрать лучшие решения для компоновки конкретного проекта.
:beer:

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 16:43:42
Аlex
[uquote="BOB51",url="/forum/viewtopic.php?p=3933310#p3933310"]Каждый имеет право на собственную разработку[/uquote]Я не про разработку говорю, а про кучу примеров на любых языках.
Разрабатывать, конечно же, лучше самому. Но грешить на программу, примеров которой тьма в интернете, и идти на форум с просьбой помочь в ней разобраться - извращенство.
Ищем примеры, смотрим, сравниваем, ищем ошибки, поправляем, .... Или чукча - не читатель ?
Ну или ТС - тупо лентяй, "сделайте всё за меня, а я буду заниматься своими делами" ...

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Пн ноя 30, 2020 20:16:43
BOB51
Согласен с тем, что вопросы задавать надо "чуток основательнее" их подготовив.
Мне вот без схемки, сопровождающей задачу не слишком удобно...
8)
Подождемс реакции вопрошавшего...
:roll:

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 06:23:19
profradio
Ребята, благодарю за ответы! Я не студент - просто как-то затронула тема программирования МК - втянулся, посмотрел, почитал, поизучал асм, сделал термометр в квартиру на pic16f676 c динамическим индикатором, потом купил ардуинок - поизучал си - понял, что си облегчает жизнь, особенно на ардуинках:) Ну в общем не специалист - так, поверхностно нахватался:) Занимаюсь ради интереса.
Про выложенный код асм - да, вспомнил - я начал писать программу, но столкнулся с трудностью - как сделать условие больше >CONST< меньше на асм и не дописал - решил делать на си - но не заработало и я бросил. Замечание про "__delay_us(750); заменить на Код: __delay_ms(750);" верно, но по факту работает и с задержной в 750 микросекунд.
Я тут тоже времени не терял - нашел у себя в закромах МК PIC16F628A и решил для него писать код на асм - т.к. на асм меньше вероятность допустить неявных ошибок.
На сегодня код такой -
Termostat-v21.X.rar
(23.81 КБ) 346 скачиваний
Это проект в 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'
Но этот код пока не работает - вот разбираюсь, почему.
Файл в протеусе:
proteus.rar
(13.51 КБ) 319 скачиваний
По поводу схемы - вот схема в SL-out
term.lay6
(72.77 КБ) 349 скачиваний
И схема принципа подключения нагрузки:
термореле.gif
(23 КБ) 275 скачиваний
Про уже готовые проекты - можно взять готовый или проще купить в радиомагазине готовое устройство - для меня дело в интересе - хочу сделать максимально простую схему без дисплеев, индикаторов, кнопок и другого усложнения - значение температуры срабатывания зашивается и хранится в самом МК.

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 09:29:31
oleg110592
без дисплеев, индикаторов, кнопок
для примера - там и црц есть:
https://radiokot.ru/forum/viewtopic.php ... 2#p3380962

з.ы. там же __delay_ms(800);

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 09:42:54
NStorm
но по факту работает и с задержной в 750 микросекунд.
...
Проверяю в протеусе
Не по факту, а в протеусе. Он не симулирует многих реальных требований, включая задержки на преобразование.
на асм меньше вероятность допустить неявных ошибок.
Очень сомнительное утверждение )

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 09:49:05
otest
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
Это что ?

Пока не наведёте порядок в тексте программы, ни чего не заработает. И не надо свистеть что прогу писал сам. То что написал сам , оно и не работает.

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 09:58:50
Аlex
otest писал(а):Что за набор файлов в папке проекта? Чем он запускается ?
Это проект MPLAB X :)

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 10:17:31
otest
ТС пишет
Это проект в MPLAB v3.65
Даже здесь без внимания написано.

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 10:33:30
BOB51
Это некоторая разница мплаб Х (там свой порядок нумерации версий) и старый-добрый мплаб 8.92 на котором большая часть старых проектов выполнена.
На старых ПК с ХР уже мплаб Х поставить весьма затруднительно...
Просто сейчас начинающие уже ориентируются на современную базу (не ведая совершенно о существовании более старого)...
:(
Пы.Сы.
При работе с минусовыми значениями нельзя просто отбрасывать дробную часть.
Необходимо сначала В ПОЛНОМ ФОРМАТЕ, полученном при преобразовании, перевести значение в положительную величину("дополнение до 2х"), а уж только затем заниматься "обрезанием".
8)

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 10:36:47
Аlex
otest писал(а): Даже здесь без внимания написано
В чём невнимательность ? Забыл символ "X" написать ? :)
Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB :)

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 10:39:36
BOB51
У микрочипа на сайте после обжорства атмелем вообще лазить... тяжковато...
:evil:

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 10:48:25
otest
Забыл символ "X" написать
Именно так. Будто вам неизвестно , что 1 символ приведёт к краху всей программы.

Re: Прошу помощи в программировании Pic16f630 - термореле

Добавлено: Ср дек 02, 2020 11:12:06
Аlex
Ну, мы сейчас не о программе глаголим. Зачем делать подобные сравнения ?
Обвинять человека в невнимательности лишь потому, что он MPLAB X назвал MPLAB'ом - не красиво.
MPLAB X - это и есть MPLAB. И будет им всегда. Не вижу ничего в этом оскорбительного в адрес Микрочипа.
Тем более :[uquote="Аlex",url="/forum/viewtopic.php?p=3934473#p3934473"]Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB[/uquote]