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

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

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

Ребят всем привет!
Очень нужна ваша помощь! Приобрел ваш Диммер - классная вещь, все работает, но вот незадача. Когда я использую Ардуино + Wi-Fi Shield все идеально, регулирую уровень свечения через wi-fi все гуд. Но когда я использую WIFI ESP8266-07, используя для обмена с ним информацией SoftwareSerial, то при передаче данных к этому модулю напряжение на PIN 3 подключенному к димммеру падает до нуля и восстанавливается, т.е. пытаясь изменить свечение лампы она моргает. Менял пины ничего не помогает, все время на это пине пропадает напряжение.
Сетую на SoftwareSerial, но не знаю что делать, может кто знает в чем дело?

Вот скетч:
PHP код:
#include <ESP8266.h>
#include <SPI.h>
#include "CyberLib.h"
#include <SoftwareSerial.h>

#define SSID        "---"
#define PASSWORD    "---"
#define HOST_NAME   "0"
#define HOST_PORT   2390

volatile uint8_t ticDimmer1=100;

SoftwareSerial mySerial(10,11); // RX, TX для отладки
ESP8266 wifi(mySerial);

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


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

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

void connectionWiFi(){
    
mySerial.begin(115200);
    
delay(1000);
    
mySerial.println("AT+CIOBAUD=9600");
    
mySerial.begin(9600);
    
    
Serial.begin(9600);  
    
Serial.print("setup begin\r\n");
    
    
Serial.print("FW Version:");
    
Serial.println(wifi.getVersion().c_str());
      
    if (
wifi.setOprToStation()) {
        
Serial.print("to station ok\r\n");
    } else {
        
Serial.print("to station err\r\n");
    }
 
    if (
wifi.joinAP(SSIDPASSWORD)) {
        
Serial.print("Join AP success\r\n");
        
Serial.print("IP: ");
        
Serial.println(wifi.getLocalIP().c_str());       
    } else {
        
Serial.print("Join AP failure\r\n");
    }

    
Serial.print("setup end\r\n");
    
    if (
wifi.registerUDP("0",0HOST_PORT,2)) {
        
Serial.print("register udp ok\r\n");
    } else {
        
Serial.print("register udp err\r\n");
    }
    
}

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

void loop() {
    
uint8_t buffer[128] = {0};
    
uint32_t len wifi.recv(buffersizeof(buffer),10000);
    
    if (
len 0) {
        
packet "";
        
//Serial.print("Received:[");
        
for(uint32_t i 0leni++) {
            
packet += (char)buffer[i];        
        }
        
//Serial.print(packet);
        
level packet.toInt();
        
Serial.print(level);
        
//Serial.print("]\r\n");
        
    
}

    
Dimmer1 level;
 

SmartDragon вне форума   Ответить с цитированием
Старый 15.08.2015, 22:19   #512
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 вне форума   Ответить с цитированием
Старый 09.09.2015, 11:23   #513
foxvlad
Junior Member
 
Регистрация: 09.09.2015
Сообщений: 4
Вес репутации: 0
foxvlad is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Подскажите пожалуйста возможно что-то сделать или нет.
Нужно на 10,11 пин перекинуть Software порты, но как только подключаю библиотеку "SoftwareSerial" и объявляю пины SoftwareSerial mySerial(10, 11);
То получается косяк, как только что-то приходит на эти пины лампа моргает, что то не стыкуется в библиотеках, может кто подскажет как можно сделать по другому.
foxvlad вне форума   Ответить с цитированием
Старый 09.09.2015, 12:21   #514
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 вне форума   Ответить с цитированием
Старый 09.09.2015, 13:51   #515
foxvlad
Junior Member
 
Регистрация: 09.09.2015
Сообщений: 4
Вес репутации: 0
foxvlad is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Admin Посмотреть сообщение
Похоже используется один и тот же таймер
И ничего не сделать?
foxvlad вне форума   Ответить с цитированием
Старый 09.09.2015, 14:35   #516
Scorpion
Junior Member
 
Регистрация: 03.03.2014
Сообщений: 21
Вес репутации: 0
Scorpion is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

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

Цитата:
Таймер
Timer1.
Настройку прерываний таймера можно настраивать от 6 мкс. до 4000000 мкс.(4 сек.) с шагом 1 мкс.
StartTimer1(obrobotchik, 1000) запуск таймера, первый параметр это Ваш обработчик прерывания, второй параметр это время, может принимать значения от 6 до 4000000
StopTimer1() Выключить таймер
ResumeTimer1() возобновить отсчет после остановки
RestartTimer1() перезапустить отсчет таймера заново
Все что я нашел про таймер, а как его поменять не знаю.
foxvlad вне форума   Ответить с цитированием
Старый 09.09.2015, 17:07   #518
Scorpion
Junior Member
 
Регистрация: 03.03.2014
Сообщений: 21
Вес репутации: 0
Scorpion is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Нужно смотреть даташит и настраивать регистры таймера, а то что ты выложил это функции работы с библиотекой
Scorpion вне форума   Ответить с цитированием
Старый 09.09.2015, 17:17   #519
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   #520
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 вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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