Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

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

Пт ноя 27, 2020 14:48:10

Всем здравствуйте!
Прошу помочь в создании термореле на микроконтроллере - задача сделать включение и отключение нагревателя в подвале по температуре 3 градуса вкл и 4 градуса выкл. Датчик температуры ds18b20. Сам написал программу на си и на асм для pic16f630, не работает. Написал программку для ардуино - работает, но иногда выскакивают неадекватные значения температуры - почему - хз (сейчас все устройство стоит - более-менее работает). Схема на мощном тиристоре - тут все ок, не работает именно микроконтроллер. Версию на си прикладываю. Версию на асм приложу завтра.
Делал давно, решил возобновить - разобраться - вот верные файлы:
асм
newpic_8b_general.asm
(4.25 KiB) Скачиваний: 313

си
ts1.c
(2.86 KiB) Скачиваний: 317

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

Пн ноя 30, 2020 11:24:13

Посмотри вот этот древний проектик (сделано в МПЛАБ 8.92, ассемблер)
t_hed676.zip
(105.86 KiB) Скачиваний: 301

схемки (не помню уже какая под что) от него
demoterm.pdf
(135.64 KiB) Скачиваний: 240

demoterm_2.pdf
(119.94 KiB) Скачиваний: 233

Может чего прояснится...
: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

Сам написал программу на си и на асм для pic16f630, не работает

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

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

Пн ноя 30, 2020 12:56:20

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

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

Пн ноя 30, 2020 13:37:12

Сам написал программу на си и на асм для pic16f630, не работает.

там и там:
Код:
  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

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

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

Пн ноя 30, 2020 15:48:27

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

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

Пн ноя 30, 2020 16:43:42

Каждый имеет право на собственную разработку
Я не про разработку говорю, а про кучу примеров на любых языках.
Разрабатывать, конечно же, лучше самому. Но грешить на программу, примеров которой тьма в интернете, и идти на форум с просьбой помочь в ней разобраться - извращенство.
Ищем примеры, смотрим, сравниваем, ищем ошибки, поправляем, .... Или чукча - не читатель ?
Ну или ТС - тупо лентяй, "сделайте всё за меня, а я буду заниматься своими делами" ...

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

Пн ноя 30, 2020 20:16:43

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

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

Ср дек 02, 2020 06:23:19

Ребята, благодарю за ответы! Я не студент - просто как-то затронула тема программирования МК - втянулся, посмотрел, почитал, поизучал асм, сделал термометр в квартиру на pic16f676 c динамическим индикатором, потом купил ардуинок - поизучал си - понял, что си облегчает жизнь, особенно на ардуинках:) Ну в общем не специалист - так, поверхностно нахватался:) Занимаюсь ради интереса.
Про выложенный код асм - да, вспомнил - я начал писать программу, но столкнулся с трудностью - как сделать условие больше >CONST< меньше на асм и не дописал - решил делать на си - но не заработало и я бросил. Замечание про "__delay_us(750); заменить на Код: __delay_ms(750);" верно, но по факту работает и с задержной в 750 микросекунд.
Я тут тоже времени не терял - нашел у себя в закромах МК PIC16F628A и решил для него писать код на асм - т.к. на асм меньше вероятность допустить неявных ошибок.
На сегодня код такой -
Termostat-v21.X.rar
(23.81 KiB) Скачиваний: 284

Это проект в 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 KiB) Скачиваний: 264

По поводу схемы - вот схема в SL-out
term.lay6
(72.77 KiB) Скачиваний: 283

И схема принципа подключения нагрузки:
термореле.gif
(23 KiB) Скачиваний: 236

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

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

Ср дек 02, 2020 09:29:31

без дисплеев, индикаторов, кнопок

для примера - там и црц есть:
https://radiokot.ru/forum/viewtopic.php ... 2#p3380962

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

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

Ср дек 02, 2020 09:42:54

но по факту работает и с задержной в 750 микросекунд.

...
Проверяю в протеусе

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

на асм меньше вероятность допустить неявных ошибок.

Очень сомнительное утверждение )

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

Ср дек 02, 2020 09:49:05

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

otest писал(а):Что за набор файлов в папке проекта? Чем он запускается ?
Это проект MPLAB X :)

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

Ср дек 02, 2020 10:17:31

ТС пишет
Это проект в MPLAB v3.65

Даже здесь без внимания написано.

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

Ср дек 02, 2020 10:33:30

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

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

Ср дек 02, 2020 10:36:47

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

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

Ср дек 02, 2020 10:39:36

У микрочипа на сайте после обжорства атмелем вообще лазить... тяжковато...
:evil:

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

Ср дек 02, 2020 10:48:25

Забыл символ "X" написать

Именно так. Будто вам неизвестно , что 1 символ приведёт к краху всей программы.

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

Ср дек 02, 2020 11:12:06

Ну, мы сейчас не о программе глаголим. Зачем делать подобные сравнения ?
Обвинять человека в невнимательности лишь потому, что он MPLAB X назвал MPLAB'ом - не красиво.
MPLAB X - это и есть MPLAB. И будет им всегда. Не вижу ничего в этом оскорбительного в адрес Микрочипа.
Тем более :
Возможно, что человек вообще не знает о существовании обычного MPLAB'а, и для него MPLAB X - просто MPLAB
Ответить