Технический форум

Технический форум (http://www.tehnari.ru/)
-   Микропроцессоры (http://www.tehnari.ru/f115/)
-   -   Arduino UNO "глючит" (http://www.tehnari.ru/f115/t103283/)

Zebraj 06.07.2015 18:36

Arduino UNO "глючит"
 
Доброго времени уважаемые специалисты!

Полгода назад установил на управление аквариумом Arduino UNO R3 MEGA328P CH340G. Полгода работала на питании 5v от блока питания компьютера, но вот он сгорел (причину не выяснял, да и куча его проводов, уже почищенная раздражала).
И я подключил ардуинку от БП 12В (15A 200 Вт импульсный источник питания, AC 100-240в вход , DC 12 выход). На этом же БП светодиодные матрицы 19*10w (основной свет). Там же ночная подсветка с 3*3w и другие штуки для аквариума. Все работает, когда не работает основной свет: после включения основного света минут через 10-20 начитает трещать реле управления, которой управляет Ардуинка, лампочки моргают; затем вырубается все: я так понимаю Ардуинка виснет. Отключив питание и включив его через минуту - все работает....и снова 20 минут и повторяется.
Большой ток идущий на основной свет ее беспокоит?
Или питания не хватает(я на этот БП вешал 32*10W, грелся но работал)?tehno015

И еще вопрос по коду диммирования, вроде написано верно, но не диммирует

Zebraj 06.07.2015 18:51

PHP код:

#include <LiquidCrystal_I2C.h> Подключаем библиотеку монитора
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC 
#include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC 
RTC_DS1307 RTC//Создаем переменную класса - для использования RTC 

#define mn 60UL
#define hr 3600UL

//----------Объявляем разные переменные------------ 
const int RelCO2 3//Используем цифровой ПОРТ 3  -> на реле 6/220
const int LedPWM 9//ШИМ утро-вечер на выходе 9  -> к драйверам

//Установки параметров ШИМ
#define PWM_MIN 0 //минимальное значение ШИМ
#define PWM_MAX 255//максимальное значение ШИМ
#define PWM_LOW 180//сниженное значение ШИМ

const long OnRelLed1 13*hr//Время срабатывания реле
const long OffRelLed1 22*hr//Время выключения реле
const long LedPWMDur 60*mn;//длительность восхода-заката при помощи ШИМ

void setup(){ 

pinMode (RelLed1,OUTPUT); //Инициализируем порт канала как ВЫХОД 
digitalWrite(RelLed1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень 

pinMode(LedPWMOUTPUT); //Инициализируем порт канала как ВЫХОД 
[I]//digitalWrite(LedPWM, LOW);// Устанавливаем PWM в низкий кровень
analogWrite(LedPWMPWM_MIN)[/I];//Устанавливаем PWM  в минимальный уровень, какой-то из них должен работать :)


Wire.begin(); //Инициируем I2C интерфейс 
RTC.begin(); //Инициирум RTC модуль 

//RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале установки часов, 

// КОНЕЦ ИНИЦИАЛИЗАЦИИ 

//-------------------------------------------------- 
void loop() // 

DateTime myTime RTC.now(); 

//----------Раздел обработки реле по времени ---- 
long utime myTime.unixtime(); //сохраняем в переменную - время в формате UNIX 
utime %= 86400//Сохраняем в этой же переменной остаток деления на кол-во секунд в сутках, Это дает количество секунд с начала текущих суток 

//------------Реле  2----------
if ((utime >= OnRelLed1) && (utime <= (OffRelLed1))) //Если секунд с начала суток больше, чем задано для включения, и одновременно меньше, чем задано для включения 
digitalWrite(RelLed1,LOW); //Устанавливаем на входе релейного модуля НИЗКИЙ уровень - реле включается
} else{digitalWrite(RelLed1,HIGH);} 

//-----------Диммируем 9 КАНАЛ ардуино--------
  
if ((utime > (OnRelLed1+LedPWMDur)) && (utime OffRelLed1-LedPWMDur))//время включеного ШИМ
    
{
      
digitalWrite(LedPWMPWM_MAX);
     }
  else
  {
    if((
utime >= OnRelLed1) && (utime < (OnRelLed1 LedPWMDur)))
      {
         
digitalWrite(LedPWM, (utime OnRelLed1)*(PWM_MAX-PWM_MIN) / LedPWMDur); 
      }
     else
     {
      if((
utime >= OffRelLed1 LedPWMDur) && (utime OffRelLed1))
      {
        
digitalWrite(LedPWM, (OffRelLed1 utime)*(PWM_MAX-PWM_MIN) / LedPWMDur); 
      }
     
      else
      {
       
digitalWrite(LedPWMPWM_MIN);//значение PWM_MIN 
      
}
     }
  }
}
//------------Конец ЦИКЛА------- 


Zebraj 07.07.2015 20:38

Поставил я драйвер 12v, 900mA после БП - работает сутки без проблем.
Нет знатоков по С++? Ну хоть куда бежать подскажите ;)

kitkit 08.09.2015 01:22

а не analogWrite вместо digitalWrite надо?


Часовой пояс GMT +4, время: 12:47.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.