Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2016, 12:43   #681
DAP
Junior Member
 
Регистрация: 26.04.2015
Сообщений: 8
Вес репутации: 0
DAP is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

имел в виду нечто ворде http://uniel.ru/catalog/2202
DAP вне форума   Ответить с цитированием
Старый 16.08.2016, 14:43   #682
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

По RS485 проще всего
Для этого понадобится сам драйвер RS485-TTL и дописать скетч
Admin вне форума   Ответить с цитированием
Старый 25.08.2016, 05:38   #683
sveloga
Junior Member
 
Регистрация: 25.07.2016
Сообщений: 2
Вес репутации: 0
sveloga is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Имеется Nano (328) и диммер.
Код взял с этой темы.
Работает, но с задержкой около одной секунды.
На контроллере светодиод RX моргает моментально, сразу после отправки данных в порт, а уже спустя секунду изменятся яркость лампочки.
Как минимизировать эту паузу?



Код:
#include <TimerOne.h> 
volatile uint8_t tic ; 
uint8_t data; 
int Dimmer;

void setup() { 

  //*********************Настраиваем порты на выход********************** 
    pinMode (3, OUTPUT); 
    digitalWrite(3, LOW); // гасим оответствующий пин 
    Dimmer = 10; //выставим яркость соответствующего диммера в 0 

  attachInterrupt(0, detect_up, LOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень 
  Timer1.initialize(40);              // Интервал срабатывания таймера в мкс 
  Timer1.attachInterrupt(halfcycle);   //будет вызыватся каждый раз при отсчете заданого времени 
  Timer1.stop(); 
  Serial.begin(115200); //инициализация порта 
  randomSeed(analogRead(0)); //псевдогенератор случайных чисел будет использовать шумы на аналог пин 0 

  Serial.begin(9600);
} 

//********************обработчики прерываний******************************* 
void halfcycle()  //прерывания таймера 
{ 
  tic--;  //счетчик 
    if (Dimmer > tic ) 
      digitalWrite(3, HIGH); //управляем выходом (откроем семистор) 
} 

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту 
{ 
  tic = 200;           //обнулить счетчик 
  Timer1.resume();   //запустить таймер 
  attachInterrupt(0, detect_down, HIGH);  //перепрограммировать прерывание на другой обработчик 
} 

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту 
{ 
  Timer1.stop(); //остановить таймер 
  digitalWrite(3, LOW); 
  tic = 200;     //обнулить счетчик 
  attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик 

} 

void loop() { 
if (Serial.available() > 0) 
   {
      Dimmer = Serial.parseInt();
   }
}
sveloga вне форума   Ответить с цитированием
Старый 25.08.2016, 10:13   #684
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

В шапке темы рабочий и проверенный код, без каких либо задержек
Admin вне форума   Ответить с цитированием
Старый 25.08.2016, 14:01   #685
DAP
Junior Member
 
Регистрация: 26.04.2015
Сообщений: 8
Вес репутации: 0
DAP is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от sveloga Посмотреть сообщение
Имеется Nano (328) и диммер.
Код взял с этой темы.
Работает, но с задержкой около одной секунды.
На контроллере светодиод RX моргает моментально, сразу после отправки данных в порт, а уже спустя секунду изменятся яркость лампочки.
Как минимизировать эту паузу?



Код:
#include <TimerOne.h> 
volatile uint8_t tic ; 
uint8_t data; 
int Dimmer;

void setup() { 

  //*********************Настраиваем порты на выход********************** 
    pinMode (3, OUTPUT); 
    digitalWrite(3, LOW); // гасим оответствующий пин 
    Dimmer = 10; //выставим яркость соответствующего диммера в 0 

  attachInterrupt(0, detect_up, LOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень 
  Timer1.initialize(40);              // Интервал срабатывания таймера в мкс 
  Timer1.attachInterrupt(halfcycle);   //будет вызыватся каждый раз при отсчете заданого времени 
  Timer1.stop(); 
  Serial.begin(115200); //инициализация порта 
  randomSeed(analogRead(0)); //псевдогенератор случайных чисел будет использовать шумы на аналог пин 0 

  Serial.begin(9600);
} 

//********************обработчики прерываний******************************* 
void halfcycle()  //прерывания таймера 
{ 
  tic--;  //счетчик 
    if (Dimmer > tic ) 
      digitalWrite(3, HIGH); //управляем выходом (откроем семистор) 
} 

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту 
{ 
  tic = 200;           //обнулить счетчик 
  Timer1.resume();   //запустить таймер 
  attachInterrupt(0, detect_down, HIGH);  //перепрограммировать прерывание на другой обработчик 
} 

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту 
{ 
  Timer1.stop(); //остановить таймер 
  digitalWrite(3, LOW); 
  tic = 200;     //обнулить счетчик 
  attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик 

} 

void loop() { 
if (Serial.available() > 0) 
   {
      Dimmer = Serial.parseInt();
   }
}
Этот скетч я писал для рандомного моргания лампой
DAP вне форума   Ответить с цитированием
Старый 20.09.2016, 04:07   #686
bublonik
Junior Member
 
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0
bublonik is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Непонятно почему, при плавной регулировке в диапазоне от 125 до 100 лампа начинает моргать, как будто симистор после импульса открывается на полную и в конце полуволны закрывается. Боролся уже по всякому. Снаббер почти не помогает. Симистор BTA225-800, оптика MOC3052/
bublonik вне форума   Ответить с цитированием
Старый 20.09.2016, 08:26   #687
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Вы сами собирали диммет? Если да то возможно что сопротивление на PC814 не соответсвует
Admin вне форума   Ответить с цитированием
Старый 23.09.2016, 21:27   #688
bublonik
Junior Member
 
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0
bublonik is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Собирал сам, на основе плавного пуска мощного пылесоса. Там схема практически один в один,только контроллер сдох. Вот его и меняю на ардуинку.
С работой диммера разобрался,уменьшил резистор на управляющем оптроне (MOC3052) все заработало отлично. При подаче питания на всю схему, движок, после загрузки ардуинки плавно разгоняется.
Теперь не получается прикрутить кнопку пуск-стоп. Опрос входа на котором она висит из-за прерываний не происходит, в результате получается белиберда с пуск-стопом.
Думаю надо опрашивать вход в момент обработки прерывания.
Может кто решал задачу с обработкой цифрового входа при работе диммера?

Последний раз редактировалось bublonik; 23.09.2016 в 22:05. Причина: Дополнение текста.
bublonik вне форума   Ответить с цитированием
Старый 24.09.2016, 10:09   #689
bublonik
Junior Member
 
Регистрация: 20.09.2016
Сообщений: 3
Вес репутации: 0
bublonik is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Все, плавное включение-выключение кнопкой то же победил. Сделал обработку кнопки в момент работы прерывания по положительной полуволне.
bublonik вне форума   Ответить с цитированием
Старый 25.09.2016, 10:24   #690
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Конденсатор 0,1мкф, одним концом на GND, другим на вход контроллера к которому подключена кнопка. Такой способ надежнее любых программных
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 187 (пользователей: 0 , гостей: 187)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:12. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика