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

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

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

Нужно смотреть даташит и настраивать регистры таймера, а то что ты выложил это функции работы с библиотекой
Scorpion вне форума   Ответить с цитированием
Старый 09.09.2015, 17:17   #2
foxvlad
Junior Member
 
Регистрация: 09.09.2015
Сообщений: 4
Вес репутации: 0
foxvlad is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Scorpion Посмотреть сообщение
Нужно смотреть даташит и настраивать регистры таймера, а то что ты выложил это функции работы с библиотекой
Конечно спасибо, но таких обширных знаний у меня нет.
Какой даташит на атмега328 и что он мне даст? Где настраивать регистры таймера в библиотеке?
foxvlad вне форума   Ответить с цитированием
Старый 30.09.2015, 08:46   #3
ZxKill
Junior Member
 
Регистрация: 30.09.2015
Сообщений: 7
Вес репутации: 0
ZxKill is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Добрый день. Использую код из шапки темы, но не регулируется яркость. Т.е. при вводе в сериал порт ничего не изменяется. При этом если в объявлении переменной Dimmer1 менять значение, то после вгрузки лампа светится по другому.

А вот данный код работает идеально
PHP код:
int incomingByte 0;  // for incoming serial data

int AC_LOAD 3;    // Output to Opto Triac pin
volatile int dimming 117;  // Dimming level (0-128)  0 = ON, 128 = OFF
  
int temp_PIN=0// Порт датчика температуры
void setup()
{

  
pinMode(AC_LOADOUTPUT);      // Set the AC Load as output
  
attachInterrupt(0zero_crosss_intRISING);  // Choose the zero cross interrupt # from the table above
  
Serial.begin(9600);
}

void zero_crosss_int()  // function to be fired at the zero crossing to dim the light
{
  
// Firing angle calculation :: 50Hz-> 10ms (1/2 Cycle)
  // (10000us - 10us) / 128 = 75 (Approx)
  
int dimtime = (75*dimming);   
  
delayMicroseconds(dimtime);    // Off cycle
  
digitalWrite(AC_LOADHIGH);  // triac firing
  
delayMicroseconds(10);        // triac On propogation delay
  
digitalWrite(AC_LOADLOW);    // triac Off
}

void loop()
{

Управления с клавиатуры
if (Serial.available() > 0) {
              
// read the incoming byte:
           
              
int  x=map(Serial.read(),49,57,128,10);
              if(
x>9&&x<129)
                
dimmingx;         
        }


Но данный код рассчитан на один диммер, а мне надо как минимум 2
Подскажите в чем может проблема?
Собирал диммер не совсем по Вашей схеме, детект нуля взят у Вас (только резисторы по 30кОм, с 43 не работал). А вот с силовой частью особо не запаривался, разобрал твердотельное реле на 40 ампер и поменял в нем оптрон (стоял с детектом ноля).
ZxKill вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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