Регулятор для паяльника

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Да, ставил PD3, пятая нога мк.
Да, напряжение на PD3 при работающем бузере - 3 ... 0 ... 3 ... 0 ... и т.д.

Дождусь аларма и померяю снова, может напутал чего от радости :) .

По ходу, менял 40 и 10

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

#define TIME_POWER_OFF   (uint16_t)(40*60*10)//разрядность 0,1сек
#define TIME_POWER_OFF_ALARM   (uint16_t)(TIME_POWER_OFF-10*60)
на 15 и 5 минут

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

#define TIME_POWER_OFF   (uint16_t)(15*60*10)//разрядность 0,1сек
#define TIME_POWER_OFF_ALARM   (uint16_t)(TIME_POWER_OFF-5*60)
- автовыключение не срабатывает вообще, настройка правильная - on.
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Твой бузер потребляет 30мА, а у порта выход 20мА, включи его через транзистор.
Скинь архив с тем что у тебя получилось, именно код обоих файлов.
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Через транзистор так
Изображение
?

sources_buzzer.zip
(12.9 КБ) 250 скачиваний
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Нет, бузер вместо резистора R2. Не вижу изменения таймера отключения в файле main.h
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Угу ... В первом варианте с транзистором бузер включается, но бузит постоянно, а не прерывисто.

Сделал так:

Изображение

, жду :) .

Таймер отключения ставил 15*60*10, 5*60, чтобы не ждать по 40 минут его срабатывания и тестирования бузера. Но с 15*60*10, 5*60 таймер не сработал ни через 15 минут, ни через полчаса, оставил тот, который от разработчика - 40*60*10, 10*60.

По ходу, и в этом - оригинальном (авторском) варианте - аларм отключения срабатывает отнюдь не за 10, а минуты за 3-4 до отключения.

Добавлено after 1 hour 29 minutes 8 seconds:
Поставил

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

#define TIME_POWER_OFF   (uint16_t)(10*60*10)//разрядность 0,1сек
#define TIME_POWER_OFF_ALARM   (uint16_t)(TIME_POWER_OFF-5*60)
Аларм включился ровно через 10 минут работы, дисплей мигал и бузер бузил где-то секунд 30.
sources_alarm.zip
(6.38 КБ) 224 скачивания
Добавлено after 25 minutes 14 seconds:
Должно быть так:

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

#define TIME_POWER_OFF_ALARM   (uint16_t)(TIME_POWER_OFF-5*60*10)
Работает правильно.

Последний раз редактировалось elektro.kot Пн июн 11, 2018 13:20:59, всего редактировалось 1 раз.
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Так ты подобрал время таймеров?
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Да, так можно задавать любые значения времени до выключения и продолжительности аларма, и все работает как бы правильно.
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Баг.
При нажатии любой кнопки индикатор мигать прекращает, но бузер начинает пищать постоянно.
Код по умолчанию.
Спойлер

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

void key_action(void){

   if (Key) {
   //если экран мигает и нажата кнопка, то отменить таймер откл, и выйти из ф. без обработки кнопки
      TimeOff=0;
      if (Flag & MIGANIE) {
         Flag &= ~MIGANIE;
         Blank=0;
         Key=0;
         return;
      }
   }

// ...

         //-------Мигание_и_выключение------------
         if (PowerTmp)
         {
         if (++TimeOff>TIME_POWER_OFF_ALARM){
            Flag|=MIGANIE;
            if (TimeOff>TIME_POWER_OFF) PowerTmp=0;//д.стоять ниже по коду if (ChangePower!=PowerTmp)
            if (--TimeBlank==0)
               {
               if ( Blank )
                  {// параметр будет виден
                  Blank=0;
                  TimeBlank=5;//0.5sek
                  ON(BUZZER); // 0.5 сек будет включен
                  }
               else
                  {
                  Blank=1;
                  TimeBlank=2;
                  OFF(BUZZER); // 0.2 сек будет выключен
                  }
               }
            }
         }
Так (код ниже) бузер отключается, но только кнопками [+] или [-], при нажатии кнопки [SET] индикатор мигать прекращает, но бузер начинает пищать постоянно.

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

void key_action(void){

   if (Key) {
   //если экран мигает и нажата кнопка, то отменить таймер откл, и выйти из ф. без обработки кнопки
      TimeOff=0;
      if (Flag & MIGANIE) {
         if (Flag &= ~MIGANIE) {
            OFF(BUZZER);
         }
         Blank=0;
         Key=0;
         return;
      }
   }
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Попробуй вместо:

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

   if (Key) {
      TimeOff=0;
      if (Flag & MIGANIE) {
         if (Flag &= ~MIGANIE) {
            OFF(BUZZER);
         }
         Blank=0;
         Key=0;
         return;
      }
   

сделать просто

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


   if 
(Key) {
      TimeOff=0;
      if (Flag & MIGANIE) {
         Flag &= ~MIGANIE
         OFF
(BUZZER);
         Blank=0;
         Key=0;
         return;
      }
   }
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

[uquote="radteh",url="/forum/viewtopic.php?p=3400032#p3400032"]сделать просто[/uquote] - это было первое, что сделал, результат - постоянный писк бузера при нажатии любой кнопки для отмены аларма. Поэтому поставил проверку/условие, в этом случае кнопки [-] и [+] отключают и мигание, и бузер, а вот кнопка [SET] мигание отключает, но бузер включает на полную, при этом, бывает, также высвечивается EEP.
Последний раз редактировалось elektro.kot Пт июн 15, 2018 16:55:07, всего редактировалось 2 раза.
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

В функцию int main(void) , перед while(1) , поставь OFF(BUZZER);
Эта часть кода отвечает за запуск регулятора после подачи питания. Если бузер сразу начнёт пищать, значит надо будет поменять пару настроек .
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Пищит постоянно сразу после подачи питания.
Спойлер

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

int main(void)
{
uint8_t TimeBlank=1;//Tim10msek=10,
uint8_t Tim100msek=10, TimLed=4,ChangePower=0;

avr_init();
read_struct_eep();
TriacGate=LARGE_LIMIT_FI;//выключен

OFF(BUZZER);

while(1)
{
Последний раз редактировалось elektro.kot Пт июн 15, 2018 21:24:24, всего редактировалось 1 раз.
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Отлично. Открой файл main.h и исправь строчку #define BUZZER D,3,L на #define BUZZER D,3,H
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Таки да, оно хотело H.
По ходу, #define BUZZER D,3,H : D - порт, 3 - номер порта, L или H - это что?

Рабочий код.
Спойлер

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

// main.h

#define BUZZER   D,3,H  // Возможно вместо L надо будет написать H

//...

#define TIME_POWER_OFF   (uint16_t)(30*60*10) // время работы - 30 минут
#define TIME_POWER_OFF_ALARM   (uint16_t)(TIME_POWER_OFF-1*60*10)// аларм включается за 1 мин. до отключения

// main.c

void key_action(void){

   if (Key) {
   //если экран мигает и нажата кнопка, то отменить таймер откл, и выйти из ф. без обработки кнопки
      TimeOff=0;
      if (Flag & MIGANIE) {
         Flag &= ~MIGANIE;
         OFF(BUZZER);         
         Blank=0;
         Key=0;
         return;
      }
   }

//...

         //-------Мигание_и_выключение------------
         if (PowerTmp)
         {
         if (++TimeOff>TIME_POWER_OFF_ALARM){
            Flag|=MIGANIE;
            if (TimeOff>TIME_POWER_OFF) PowerTmp=0;//д.стоять ниже по коду if (ChangePower!=PowerTmp)
            if (--TimeBlank==0)
               {
               if ( Blank )
                  {// параметр будет виден
                  Blank=0;
                  TimeBlank=5;//0.5sek
                  ON(BUZZER); // 0.5 сек будет включен
                  }
               else
                  {
                  Blank=1;
                  TimeBlank=2;
                  OFF(BUZZER); // 0.2 сек будет выключен
                  }
               }
            }
         }
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

L и H задают активный уровень в состоянии ON, низкий или высокий. Перед while(1) оставь OFF(BUZZER), это задаёт начальное состояние.
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

Перед while(1) оставил OFF(BUZZER);.
Идем дальше...

В режиме аларма при нажатии любой кнопки мигание прекращается и бузер отключается.
Если не нажимать кнопки, регулятор отключается (на индикаторе три прочерка - [---] ).
Но при этом бузер начинает пищать непрерывно, что с OFF(BUZZER); перед while(1), что без него .
При нажатии любой кнопки бузер отключается, на индикаторе три прочерка - [---], дальше можно управлять регулятором, как обычно - выбрать фиксированную настройку, перейти в настройки и т.д.

Конечно, постоянный писк бузера после отключения регулятора можно рассматривать как незапланированную фичу, типа, если в режиме аларма не была нажата любая кнопка, регулятор отключается и бузер начинате пищать постоянно, требуя от имени регулятора - "отключите меня от питания!!!" :))) .
Может, оно и полезно в плане общей безопасности. Но как-то неправильно :) .

Видимо, надо еще вставить OFF(BUZZER);, когда регулятор отключен, но где это в коде - не нашел.

Также при срабатывании аларма в режиме FI – фазоимпульсный в такт бузеру слегка мигает подключенная лампа накаливания.

Добавлено after 1 hour 49 minutes 7 seconds:
Как бы вылечилось так:

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

   //----------=----------.1-Sek---------------------------------------
   if ( --Tim100msek==0 )   //0.1sek
      {
      Tim100msek=100;
      TimeState--;
      if (TimeState==0) {
         regim=0;
         OFF(BUZZER);//выключен
      }
      if (--ViewReg==0) Flag&=~VIEWREG;
// ...
После выключения регулятора бузер выдает ~2-секундный непрерывный сигнал, умолкает и переходит в режим [---], это уже более-менее похоже на промышленный функционал :))) . Возможно, достаточно поставить отключение бузера только при if (regim==0) {OFF(BUZZER);}, пока не проверял.

Оригинальный код:
Спойлер

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

//----------=----------.1-Sek---------------------------------------
   if ( --Tim100msek==0 )   //0.1sek
      {
      Tim100msek=100;
      TimeState--;
      if (TimeState==0) regim=0;
      if (--ViewReg==0) Flag&=~VIEWREG;
// ...
... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Попробуй заменить код:

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

// Оригинал
if (TimeOff>TIME_POWER_OFF) PowerTmp=0;

// Отключение бузера вместе с питанием
if (TimeOff>TIME_POWER_OFF){
  PowerTmp=0;
  OFF(BUZZER);
}
По идее должен выключаться одновременно. По режиму FI надо посмотреть алгоритм
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

С этим кодом

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

// Отключение бузера вместе с питанием
if (TimeOff>TIME_POWER_OFF){
  PowerTmp=0;
  OFF(BUZZER);
}
бузер не отключается.
Этот код

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

      if (TimeState==0) {
         regim=0;
         if (regim==0) {
            OFF(BUZZER);//выключен
         }
      }
работает аналогично коду

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

      if (TimeState==0) {
         regim=0;
         OFF(BUZZER);//выключен
      }
В обоих (последних) случаях лампочка помигивает, бузер где-то посреди периода пикания на долю секунды запинается, а после выключения регулятора все так же выдает более длинный сигнал - все есть в ролике.

... ардубино и наебиэкспресс убивают творчество в зародыше.
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Регулятор для паяльника

Сообщение radteh »

Два твоих варианта работают аналогично по одной простой причине:
regim=0; - этой строчкой ты присваиваешь переменной regim значение 0. if (regim==0) - а здесь ты проверяешь равняется ли значение переменной regim нолю, и естественно оно равняется ведь мы его только что присвоили.

Можно попробовать потушить бузер в коде включения прочерков

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


if 
(PowerTmp==0){
  led_buffer[0]=sD;//font[0];
  led_buffer[1]=sD;//font[f_F];
  led_buffer[2]=sD;//font[f_F];
  OFF(BUZZER);
}


Что касается лампочки. Могу предположить что происходит это из-за того что в режиме FI, в основном цикле, происходит постоянное вычисление с делением, а это ресурсоёмкая операция. Без бузера то-же лампа подмигивала?
Аватара пользователя
elektro.kot
Электрический кот
Сообщения: 1020
Зарегистрирован: Сб фев 04, 2017 12:16:42
Откуда: Украина

Re: Регулятор для паяльника

Сообщение elektro.kot »

[uquote="radteh",url="/forum/viewtopic.php?p=3400720#p3400720"]по одной простой причине[/uquote] - это понятно, отличие в деталях.[uquote="radteh",url="/forum/viewtopic.php?p=3400720#p3400720"]Можно попробовать потушить бузер в коде включения прочерков[/uquote]Ок, но в ролике явно видно и слышно, что бузер отключается после того, как прочерки уже включены. Т.е, сперва выключается регулятор (regim==0), включаются прочерки, бузер прекращает пищать прерывисто, и начинает гудеть постоянно, после чего срабатывает выключение бузера. Непонятно, почему такая большая задержка выключения бузера после срабатывания regim=0;.

Лампочка мигает только в режиме аларма.

Добавлено after 3 hours 29 minutes 22 seconds:
С кодом

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

         if (PowerTmp==0){
            led_buffer[0]=sD;//font[0];
            led_buffer[1]=sD;//font[f_F];
            led_buffer[2]=sD;//font[f_F];]
            OFF(BUZZER);
            }
пищит постоянно, при нажатии кнопок [+][-] пищит, при нажатии кнопки фикс. настроек пищит, при появлении прочерков - в случае принудительного нажатия кнопок - пищать прекращает.

Как бы без замечаний работает код

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

   if ( --Tim100msek==0 )   //0.1sek 
      {
      OFF(BUZZER);//выключен
      Tim100msek=100;
      TimeState--;
      if (TimeState==0) regim=0;
      if (--ViewReg==0) Flag&=~VIEWREG;
// ...
, что логично - отключение сигнала по окончании отсчета.

Лампочка в режиме аларма мигает как с подключенным (физически) бузером, так и без него (бузер не припаян).
Хорошо бы найти, почему мигает лампочка?
... ардубино и наебиэкспресс убивают творчество в зародыше.
Ответить

Вернуться в «Статьи»