Например TDA7294

Форум РадиоКот • Просмотр темы - PIC12F675 (MPLab IDE C++)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 13:34:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Сб окт 06, 2018 19:19:01 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
Здравствуйте!

Я прошу Вас помочь мне разобраться, как остановить цикл при удержании кнопки? Есть три тэны которые будут управляться релюшками, одна кнопка при каждом нажатии будет включать дополнительную тэну, а вторая кнопка в обратном порядке будет отключать тэны. Есть также и кнопка "СТОП", которая одним нажатием выключает все тэны.

Так вот, вопрос в следующем, как сделать так чтобы при долгом нажатии все тэны сразу не включились? В интернете находил информацию, что как то это можно через таймер реализовать...но у меня с этим ничего не получилось...

Спойлер
Код:
/*
 * Project name:
     |<A...y> (PIC12F675)
 * Copyright:
     (c) <A...7,
      v.1.0 - (Start(21.07.2015) and Finish(25.07.2015))>
 * Revision History:
     <versionNo> - 1.0
 */
#include <pic.h>
//PIC12F675
#include <htc.h>
#include <delay.c>
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
 #define OpenTR3      TRIS0 //Открытие тр-ра #3(7-ая нога МК(GP0/AN0)).
 #define OpenTR2      TRIS1 //Открытие тр-ра #2(6-ая нога МК(GP1/AN1/VREF)).
 #define OpenTR1      TRIS2 //Открытие тр-ра #1(5-ая нога МК(GP2/T0CKI/INT/AN2)).
 #define KnopkaStop   GPIO3 //Аварийное отключение(4-ая нога МК(GP3/$MCLR$)).
 #define KnopkaDown   GPIO4 //Понижение темперетуры(3-ья нога МК(GP4/$T1G$/OSC2/AN3))).
 #define KnopkaUp     GPIO5 //Повышение темперетуры(2-ая нога МК(GP5/T1CKI/OSC1)).
__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);
//----------
//unsigned int g,k,s;
unsigned char i;
//----------

 void ZX1(void)      //Подготовка МК.
  {
   TRISIO = 0b111111;//Направление работы ножек порта(1-вход, 0-выход).
   CMCON = 0x07;     //Отключение компараторов.
   GPIO = 0b000111;  //Очищаем порт(0-приём напряж., 1-подача напряж.).
   WPU4 = 1;         //Подтягивающий резистор(1-вкл., 0-откл.).
   WPU5 = 1;         //Подтягивающий резистор(1-вкл., 0-откл.).
   ANSEL = 0b000101; //Настройка аналогового входа.
   i = 1;
  }
//----------

void main(void)//Начало программы.
 {
   ZX1();      //Вызов функции подготовки МК.
   while(1)    //Бесконечный цикл.
     {
MT:   if (KnopkaUp==1)//Повышение темперетуры.
        {
         if(i==1)//1
           {
            i=2;
            OpenTR2=1;
            OpenTR3=1;
            OpenTR1=0;
            DelayMs(500);
            goto MT;
           }
         if(i==2)//2
           {
            i=3;
            OpenTR1=1;
            OpenTR3=1;
            OpenTR2=0;
            DelayMs(500);
            goto MT;
           }
         if(i==3)//3
           {
            OpenTR1=1;
            OpenTR2=0;
            OpenTR3=0;
            DelayMs(500);
            goto MT;
           }
         }   
         if(KnopkaDown==1)//Понижение темперетуры.
          {
          if(i==3)//2
           {
            i=2;
            OpenTR1=1;
            OpenTR3=1;
            OpenTR2=0;
            DelayMs(500);
            goto MT;
           }
         if(i==2)//1
           {
            i=1;
            OpenTR2=1;
            OpenTR3=1;
            OpenTR1=0;
            DelayMs(500);
            goto MT;
           }
         if(i==1)//OFF
           {
            OpenTR1=1;
            OpenTR3=1;
            OpenTR2=1;
            DelayMs(500);
            goto MT;
           }
          }
         if(KnopkaStop==1)//Аварийное отключение.
          {
           i=1;
           TRISIO = 0b111111;
           DelayMs(1);
           return;
          }
      DelayMs(5);//Задержка 0,005 сек.
    }
}


Вложения:
Proteus.rar [87.23 KiB]
Скачиваний: 193
Снимок.JPG [209.04 KiB]
Скачиваний: 533
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Сб окт 06, 2018 20:48:31 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Запоминаете предыдущее состояние кнопки и срабатывание производите только в том случае, если она нажата, а предыдущее состояние - не нажата. После чего, делаете защитный интервал для подавления дребезга контактов кнопки.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Сб окт 06, 2018 22:59:51 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
Код:
Button= h1; // опросили кнопку для первоначальной установки переменной

while(1)
{
_delay_ms(10); // для подавления дребезга кнопки

oldButton= Button; // предыдущее состояние кнопки
Button= h1; // текущее состояние кнопки

if(oldButton && !Button) // момент нажатия кнопки
    {
    if(DataTimer) DataTimer= 0; // если кнопка нажата во время работы таймера, то останавливаем таймер
    else DataTimer= 555; // если таймер стоял, то запускаем его
                                    // число 555 соответствует 555*10мсек= 5550мсек= 5,55 сек таймера
    }

if(DataTimer) --DataTimer;
}

Вот так.


Если я правильно понял, мне нужно сделать что-то наподобие этого? Только что-то у меня не получается... :(


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Вс окт 07, 2018 05:44:52 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Так как вы написали: задержка, сохранение предыдущего, опрос нового, повтор - никогда работать не будет. потому как надо с нажатием попасть в очень короткий период времени. Надо прочитать и сразу сохранить, задержка, повторить. И в любом месте задержки проверяь условие.
кажется, фигню написал. Приведённый код верный. А... это не ваш.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Вс окт 07, 2018 18:59:26 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
Возможно это не самый хороший вариант, но он работает
Код:
XL1:          if (KnopkaUp){goto XL1;}

Пока кнопку не отпустишь дальше по циклу не пойдёт..
Код:
MT:   if (KnopkaUp==1)//Повышение темперетуры.
        {
         DelayMs(10);//Для подавления дребезга кнопки.
         if (KnopkaUp)
           {
            if(i==0||i==1||i==2)
             {
              i++;
XL1:          if (KnopkaUp){goto XL1;}
             }
            if(i==1)//1
             {
              OpenTR2=1;
              OpenTR3=1;
              OpenTR1=0;
              DelayMs(10);
              goto MT;
             }
            if(i==2)//2
             {
              OpenTR1=1;
              OpenTR3=1;
              OpenTR2=0;
              DelayMs(10);
              goto MT;
             }
       . . .

Спасибо за помощь


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 10:30:05 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...чтобы при долгом нажатии все тэны сразу не включились?...

При долгом нажатии чего? какой кнопки?

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 11:05:00 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
pyzhman писал(а):
...чтобы при долгом нажатии все тэны сразу не включились?...

При долгом нажатии чего? какой кнопки?

При долгом нажатии одной из этих двух кнопок, подключенных к 2-ой и 3-ей ножке МК.
Код:
 #define KnopkaDown   GPIO4 //Понижение темперетуры(3-ья нога МК(GP4/$T1G$/OSC2/AN3))).
 #define KnopkaUp     GPIO5 //Повышение темперетуры(2-ая нога МК(GP5/T1CKI/OSC1)).

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 11:14:01 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Что-то я не могу понять, что за беда с подключением ТЭНов. По идее должна быть общая масса, а реле должны подключать соответствующий ТЭН. Не?
__________
Просчитал по положениям реле (все 8 возможных состояний). Полная ахинея получается.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 12:29:01 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
pyzhman писал(а):
Что-то я не могу понять, что за беда с подключением ТЭНов. По идее должна быть общая масса, а реле должны подключать соответствующий ТЭН. Не?
__________

Вы правы, обычно так и подключают (общая масса, а реле коммутирует соответствующий ТЭН с источником питания).
Но здесь 2-е ТЭНы одинаковой мощности и длины (они подключены параллельно), а третий ТЭН имеет более большую мощность и длину (подключен последовательно с теми двумя ТЭНами)

Это не моя идея, так задумано инженерами которые проэктировали данный бойлер (Только изначально ТЭНы управлялись программным пакетным переключателем) Как объясняет производитель, такое подключение ТЭН имеет более большую рассеиваемую мощность (теплоотдачу) при малых мощностях потребляемого бойлером тока
Цитата:
Просчитал по положениям реле (все 8 возможных состояний). Полная ахинея получается.

Подскажите пожалуйста более правильный вариант кода, я в программировании новичёк... :oops:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 13:04:33 
Мудрый кот
Аватар пользователя

Карма: 26
Рейтинг сообщений: 650
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1754
Откуда: Северодонецк
Рейтинг сообщения: 0
Что обратной связи нет в вашем бойлере?Датчик температуры?
Какой тогда смысл "городить" контроллер, если можно тумблерами все включать и выключать?

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 13:35:47 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
Что обратной связи нет в вашем бойлере?Датчик температуры?
Какой тогда смысл "городить" контроллер, если можно тумблерами все включать и выключать?

Обратной связи для МК нет. Поддержку температуры думал оставить заводскую, к баку с водой прикручен термостат "KSD 301 75 10A", с помощью его поддерживается температура воды на уровне 75°С.
Изображение
Фаза приходит на термостат, а с термостата на силовые контакты реле.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 13:44:21 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Alexander90h, глюкнет ваше изобретение при первых же включениях ТЕН'ов.
Поставьте тумблеры и не занимайтесь ерундой. МК тут явно излишен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 15:18:36 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...к баку с водой прикручен термостат "KSD 301 75 10A", с помощью его поддерживается температура воды на уровне 75°С....

и выключается при превышении. Стандартное решение и работает надёжно.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Пн окт 08, 2018 19:14:13 
Родился

Зарегистрирован: Сб окт 06, 2018 15:09:18
Сообщений: 7
Рейтинг сообщения: 0
Аlex писал(а):
Alexander90h, глюкнет ваше изобретение при первых же включениях ТЕН'ов.

Насчёт того, что это изобретение глюкнет при первом включении, вполне возможно, если контакты на реле прикипят и оно не отключит фазу или ноль при переключении.
Изображение
Родной программный пакетный переключатель уже не рабочий и заменить его нечем, я не нашел подходящий по размерам... кстати, на него тоже приходила фаза с нулём и таким же образом переключались контакты
Аlex писал(а):
Поставьте тумблеры и не занимайтесь ерундой. МК тут явно излишен.

Вы правы, гораздо проще поставить пару тумблеров, наверное так и сделаю...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Вт окт 23, 2018 09:16:36 
Родился

Карма: -1
Рейтинг сообщений: 0
Зарегистрирован: Пн дек 14, 2009 16:17:43
Сообщений: 4
Рейтинг сообщения: 0
Цитата:
Вы правы, гораздо проще поставить пару тумблеров, наверное так и сделаю...

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

В 675-ом есть отличный 10-и разрядный АЦП - с помощью одного терморезистора за "5 коппеек" можно организовать регулируемый термостат, на этом же контроллере, в будущем, можно согласовать работу нескольких устройств, к примеру в ванне тёплый пол будет выключатся при включении тэнов в бойлере, чтобы избежать излишней нагрузки на проводку, к немуже можно прикрутить модуль управления по wi-fi или сети, сейчас таких на Ali валом...

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12F675 (MPLab IDE C++)
СообщениеДобавлено: Вт окт 23, 2018 13:00:49 
Мудрый кот
Аватар пользователя

Карма: 26
Рейтинг сообщений: 650
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1754
Откуда: Северодонецк
Рейтинг сообщения: 0
Цитата:
настоящие практические навыки, создания цифровых систем контроля и управления

Вот умеете поднять настроение :beer:

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y