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

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, 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 вне форума   Ответить с цитированием
Старый 30.09.2015, 09:02   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
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, работающий в фоновом режиме

Цитата:
Использую код из шапки темы, но не регулируется яркость.
Но почему тогда у меня и у других пользователей регулируется?
А что Вы посылаете в Serial для того что бы происходила регулировка?

Цитата:
Но данный код рассчитан на один диммер, а мне надо как минимум 2
Данный код не возможно использовать на два диммера так как в нем используются задержки delayMicroseconds
Admin вне форума   Ответить с цитированием
Старый 30.09.2015, 10:14   #5
ZxKill
Junior Member
 
Регистрация: 30.09.2015
Сообщений: 7
Вес репутации: 0
ZxKill is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Admin Посмотреть сообщение
Но почему тогда у меня и у других пользователей регулируется?
А что Вы посылаете в Serial для того что бы происходила регулировка?
Так вот и я не пойму почему не работает, вводил все что только можно и как у Вас написано и цифры. Потом пробовал вот этот код
PHP код:
#include <CyberLib.h> //Библиотека от Cyber-Place.ru 
volatile uint8_t ticDimmer1=255
uint8_t data

void setup()  
{  
  
D4_OutD3_Out;//Настраиваем порты на выход 
  
D4_LowD3_High;//установить на выходах низкий уровень сигнала 
  
D2_In//настраиваем порт на вход для отслеживания прохождения сигнала через ноль   
  
attachInterrupt(0detect_upLOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень 
  
StartTimer1(halfcycle40); //время для одного разряда ШИМ 
  
StopTimer1(); //остановить таймер 
  
UART_Init(57600); //инициализация порта 

//********************обработчики прерываний******************************* 
void halfcycle()  //прерывания таймера 
{  
  
tic++;  //счетчик   
  
if(Dimmer1 tic D4_High//управляем выходом 


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

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту 
{    
 
StopTimer1(); //остановить таймер 
 
D4_Low;       //логический ноль на выходы 
 
tic=0;       //обнулить счетчик 
 
attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик 
}  
//************************************************************************* 
void loop()  
{
Start 
  
if (UART_ReadByte(data)) 
 { 
   if(
data>47 && data<59
    { 
      
data=225-(data-48)*25
      
Dimmer1=data
    } 
 }  
End
и вводил от 0 до 9, ничего не меняется, лампочка все время выключена
Цитата:
Сообщение от Admin Посмотреть сообщение
Данный код не возможно использовать на два диммера так как в нем используются задержки delayMicroseconds
это я понял, поэтому и пытался использовать Ваш код
и как я писал если просто изменить переменную volatile uint8_t tic, Dimmer1=255; то яркость меняется в зависимости от значения, но вот почему в режиме реального времени не меняется я не пойму Использую Arduino Nano 3
ZxKill вне форума   Ответить с цитированием
Старый 30.09.2015, 10:28   #6
ZxKill
Junior Member
 
Регистрация: 30.09.2015
Сообщений: 7
Вес репутации: 0
ZxKill is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Сейчас произошло вообще интересное) залил опять Ваш скетч и он начал регулировать яркость, три раза изменил а потом начал гореть на всю и не регулируется. Выключил/включил ардуинку и опять, несколько раз отозвался на команды и опять на всю зажегся
В чем может быть недочет? Может как-то можно отловить ошибку? Недавно столкнулся с ардуинками и можно сказать я совсем чайник в этом деле
ZxKill вне форума   Ответить с цитированием
Старый 30.09.2015, 10:28   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
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 вне форума   Ответить с цитированием
Старый 30.09.2015, 10:43   #8
ZxKill
Junior Member
 
Регистрация: 30.09.2015
Сообщений: 7
Вес репутации: 0
ZxKill is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Admin Посмотреть сообщение
Скорость обмена в сериал мониторе какая?
Нарисуйте или опишите к каким пинам ардуины у Вас подключен диммер
пробовал 9600 и 115200.
Детект ноля на D2. Выход на диммер D4
Вроде все как положено. Но вот несколько команд понимает, а потом на всю горит и все(
Думаю если бы какой-то косяк был в схеме то и с другим кодом бы не работало, но там все работает долго и хорошо

Сейчас поигрался немного, если вводить 0-2 то все работает, только стоит ввести 3 или больше, то горит на всю и уже не регулируется

Последний раз редактировалось ZxKill; 30.09.2015 в 10:47.
ZxKill вне форума   Ответить с цитированием
Старый 30.09.2015, 10:47   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
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, работающий в фоновом режиме

Цитата:
пробовал 9600 и 115200.
Как бы ни разу не попали, нужно 57600
Admin вне форума   Ответить с цитированием
Старый 30.09.2015, 11:04   #10
ZxKill
Junior Member
 
Регистрация: 30.09.2015
Сообщений: 7
Вес репутации: 0
ZxKill is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Admin Посмотреть сообщение
Как бы ни разу не попали, нужно 57600
ничего не изменилось(
ZxKill вне форума   Ответить с цитированием
Ответ


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

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

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

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

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


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


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