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

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

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

Попытался скомпилировать код из шапки под arduino mega - сыпало ошибки
написал свой, может кому пригодится:
используется библиотека TimerOne код компилится для любой платы, в цикле loop рандомно меняется яркость первого диммера каждые 100мс.

PHP код:
#include <TimerOne.h>
//#include <CyberLib.h>
volatile uint8_t tic ;
uint8_t data;
int startDimPin 3//первый диммер
int endDimPin 12//последний диммер
int Dimmer[9]; //количество диммеров минус 1

void setup() {


  
//*********************Настраиваем порты на выход**********************

  
for ( int i startDimPin<= endDimPini++) //пройдемся циклом по портам
  
{
    
pinMode (iOUTPUT);
    
digitalWrite(iLOW); // гасим оответствующий пин

    
Dimmer[startDimPin] = 10//выставим яркость соответствующего диммера в 0
  
}
  
//CHANGE – прерывание вызывается при любом изменении значения на входе;
  //RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH)
  //FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low)
  
attachInterrupt(0detect_upLOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
  
Timer1.initialize(40);              // Интервал срабатывания таймера в мкс
  
Timer1.attachInterrupt(halfcycle);   //будет вызыватся каждый раз при отсчете заданого времени
  
Timer1.stop();
  
Serial.begin(115200); //инициализация порта
  
randomSeed(analogRead(0)); //псевдогенератор случайных чисел будет использовать шумы на аналог пин 0
}

//********************обработчики прерываний*******************************
void halfcycle()  //прерывания таймера
{
  
tic--;  //счетчик
  
for ( int i startDimPin<= endDimPini++)
  {
    if (
Dimmer[startDimPin] > tic )
      
digitalWrite(iHIGH); //управляем выходом (откроем семистор)
  
}
}

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

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{
  
Timer1.stop(); //остановить таймер
  
for ( int i startDimPin<= endDimPini++)
  {

    
digitalWrite(iLOW);
  }
  
tic 200;     //обнулить счетчик
  
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик

}

void loop() {
  {

//********помигаем первым диммером рандомно********
    
Dimmer[0] = random(10200);
    
//Задержка для более плавного эффекта мерцания
    
delay(100);

  }

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

Вопрос уже задавался выше, но с учетом специфики своих не богатых знаний и масла подлитого в огонь местным электриком-самоучкой... спрошу еще Имею на руках ваше творение. Три выходные колодки.
1) Я правильно понимаю что фаза и ноль должны прийти на два разьема, верхних по картинке "Подключение Dimmer модуля" (причем видимо фаза там и показана красным), а снимается отдимированное напряжение с того же нуля и отдимированной фазы (это видимо будет нижняя точка для силового подключения на картинке)?
2) Земля в этой схеме не используется
incbot вне форума   Ответить с цитированием
Старый 24.02.2016, 19:19   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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, работающий в фоновом режиме

1-все верно
3-нет. для диммирования земля не нужна,она нужна только для металличиских корпусов, что бы срабатывало УЗО при утечке
Admin вне форума   Ответить с цитированием
Старый 24.02.2016, 22:39   #4
incbot
Junior Member
 
Регистрация: 24.02.2016
Сообщений: 2
Вес репутации: 0
incbot is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Большое спасибо за оперативный ответ. Уже запустил )) Сейчас много копаюсь по теме ардуино, и если код (сам по образованию программист плюс Ваше хорошее пояснение принципов работы девайса) не вызывает вопросов, то с железками пока все много хуже )). Особенно с силовой частью. Наверное банально ее боюсь )))) Если не затруднит ответьте хотя бы в общем еще на несколько вопросов (они возникли из-за того что оптрон для меня понятие новое):

1) Из каких соображений считались резисторы в СИЛОВОЙ части по номиналу и мощности в схемке определения нуля? Курю даташит PC 814 и не понимаю пока... Там есть параметр на максимальную силу входного тока? Как называется? Причем где то выше вы писали, что можно ставить и один суммарный резистор, но более мощный, на ватт вместо двух на 0.5 вт... Этого вообще понять не могу. Они же последовательно соединены, эти два по 43к и ток через один замещающий будет такой же... При равном приложенном напряжении и токе мощность рассеивания та же. Где я не прав?
2) Я так понимаю что 510 ом это из-за ограничений тока в выходной цепи МОС302x? Как он в даташите называется? (там почему то нарисована рекомендация на 180 ом.......)
3) Про нагрузки и RC цепи (те что есть на плате но не впаяны). Те емкость и резистор что на схеме они ставятся на любую не резистивную нагрузку или там как-то пересчитать лучше? И как если что?
4) Хотел попробывать управлять мощностью пальника (еще отца инструмент - ЭПСН- 40Вт/220в с деревянной ручкой отличный зверь). Сделать на базе вашего девайса простенькую паяльную станцию (пока без обратной связи по температуре -нет датчика). Получится? Какая это нагрузка будет? Что то добавлять из RC надо?

PS Перечитал свои вопросы и подумал что наверное не плохо Вас загрузил )) Вы уж простите меня... Честное слово вроде все спросил )) А модуль классный ))
incbot вне форума   Ответить с цитированием
Старый 24.02.2016, 23:27   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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, работающий в фоновом режиме

1-Ток в цепи будет одинаковым на любом участке, а напряжение разным и зависит оно от сопротивления этого участка цепи. Теперь к расчетам: 220/86=2,5мА получили ток в цепи(это среднеквадратичное значение тока, так как у нас переменка), 2,5*220=0,55W получили общую выделяемую мощность на резисторах, теперь делим эту мощность на число резисторов 0,55/4=0,137W получили выделяемую мощность на одном резисторе. Этот расчет верен при условии что все 4 резистора будут иметь одинаковое сопротивление. При разных сопротивлениях, нужно будет пересчитывать по сопротивлению каждого резистора в цепи

2-при разных входных напряжениях , будут разные сопротивления. Возможно в ДШ входное напряжение было меньше чем 5В, теперь считаем:
5 - 1,3 = 3,7В падение напряжения, 3,7/0,510=7,2мА получили ток в цепи который укладывается в допустимые пределы MOCxxxx. Я не сторонник экстремальных токов, так как при них компоненты долго не живут

3-получится , ничего добавлять не нужно, так как в паяльнике индуктивность очень маленькая
Admin вне форума   Ответить с цитированием
Старый 02.03.2016, 09:45   #6
dimontau
Junior Member
 
Регистрация: 02.03.2016
Сообщений: 4
Вес репутации: 0
dimontau is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Здравствуйте. Ситуация такая. Делаю управление котлом отопления на твердом топливе, попутно измеряет температуру на улице и отправляет данные на народный мониторинг через W5100, также стоят часы DS3231. Требуется шим управление вентилятором наддува. Так вот, проблема в том, что когда подключаю диммер к ардуине, то прерывания от диммера не дают работать всему контролеру.Контрольн� �я лампа на выходе диммера тупо моргает и все.
Ардуино мега 2560.
Можно ли как то это исправить, или проще поставить вторую ардуинку (например мини или нано) для диммера и соединить ее с основной?

Последний раз редактировалось dimontau; 02.03.2016 в 09:51.
dimontau вне форума   Ответить с цитированием
Старый 02.03.2016, 11:02   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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 вне форума   Ответить с цитированием
Старый 02.03.2016, 11:58   #8
dimontau
Junior Member
 
Регистрация: 02.03.2016
Сообщений: 4
Вес репутации: 0
dimontau is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Нет. только диммер.
подключен дисплей 20Х4 и часы DS3231 по I2C. Ethernet Shield W5100. И два DS18B20 по oneWire. Больше ни чего нет.
Да, чистый работает нормально.

Последний раз редактировалось dimontau; 02.03.2016 в 12:42.
dimontau вне форума   Ответить с цитированием
Старый 02.03.2016, 15:03   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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, работающий в фоновом режиме

Цитата:
подключен дисплей 20Х4 и часы DS3231 по I2C. Ethernet Shield W5100. И два DS18B20 по oneWire. Больше ни чего нет.
Почти все перечисленное использует прерывания, что в свю очередь будет влиять на работу диммера
Попробуйте методом исключения определить какое устройство вносит задержки. Я думаю что DS18B20 и DS3231
Admin вне форума   Ответить с цитированием
Старый 02.03.2016, 18:09   #10
dimontau
Junior Member
 
Регистрация: 02.03.2016
Сообщений: 4
Вес репутации: 0
dimontau is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Admin спасибо. Попробовал вариант от romanti4ok для меги 2560. Получилось, но все равно немного притормаживает когда диммер возле крайних крайних точек. Я предполагаю, что это из за того, что в в программе используются delay.
Возможно ли от них избавиться?
dimontau вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 13 (пользователей: 0 , гостей: 13)
 

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

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

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


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


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