Показано с 1 по 7 из 7
  1. #1
    Новичок
    Регистрация
    04.03.2011
    Возраст
    38
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Стробоскоп для светодиодных ДХО/ПТФ/фар

    Недавно приобрёл Кардуину и решил выложить свой первый скетч, пришлось пару вечеров вспоминать азы С++
    Идея такова: планирую изготовить светодиодные ДХО, пока ищу подходящий корпус. В каждой фаре будет по 6шт 3х ваттных всетодиодов последовательно. Драйвер будет буст на ncp3066, с ШИМ входом. Выходной ток драйвера планируется около 1А.

    Теперь об управлении: Ардуинка будет подключена к замку зажигания, при включении она выдаёт импульсы заданной скважности( регулируется резистором R2) и фиксированной частоты. Специально ввёл такую регулировку чтобы понизить выходной ток драйвера до нужного(около 600мА) значения в штатном режиме. Нажатие на кнопку "Strobe on" включает режим стробоскопа. Каждая сторона поочерёдно мигает установленное кол-во раз с установленной частотой. Причём в режиме строба, на выходах уже не ШИМ сигнал, а логические о и 1. Это как раз для того чтобы драйвер выдавал установленный в нём изначально 1А. Сделано это для повышения яркости. В паузах между вспышками у светодиодов будут достаточные передышки чтобы можно было не бояться перегрева.
    PHP код:
    #include <EEPROM.h>
    #include <buttons.h>

    int freq//Настройки - частота, кол-во вспышек и яркость в основном режиме
    int num;
    int bright;

    Button B//Кнопка настроек

    #define rightpin 10 //1ый выход ШИМ
    #define leftpin 9 //2ой выход ШИМ
    #define butpin 11 //кнопка включения строб режима
    #define settings 7 //кнопка настроек
    #define resetjump 5 //джампер сброса настроек(если запутались)
    #define ind 6 //салонный индикатор 
    #define internalind 13 //внутренний индикатор
    #define dimmeradc 0 //вход регулировки яркости в обычном режиме

    void setup()
    {
      
    pinMode(leftpinOUTPUT);
      
    pinMode(rightpinOUTPUT);
      
    pinMode(indOUTPUT);
      
    pinMode(internalindOUTPUT);
      
    pinMode(butpinINPUT);
      
    pinMode(settingsINPUT);
      
    pinMode(dimmeradcINPUT);
      
    pinMode(resetjumpINPUT); 

      
    //Свойства кнопки настроек  
      
    B.assign(settings); //Определяем выход для класса Button
      
    B.setMode(OneShotTimer); //Режим
      
    B.setTimer(500);  //Время для удерживания устанавливаем пол секунды
      
    B.setRefresh(1000); //Время срабатывания последующих удерживаний кнопки

      //Записываем начальные настройки в еепром если он пустой и читаем их и кладём в переменные если там чтото есть
      
    if (EEPROM.read(0)==255) { 
        
    EEPROM.write(0,1); 
      } 
      else { 
        
    num EEPROM.read(0); 
      }
      if (
    EEPROM.read(1)==255) { 
        
    EEPROM.write(1,7); 
      } 
      else { 
        
    freq EEPROM.read(1); 
      }  
    }

    void loop() //Понеслась
    {
      
    bright=analogRead(dimmeradc)/4

      switch (
    B.check()) //Проверяем состояние кнопки настроек
      


      case 
    ON//Если нажатие одиночное - уменьшаем частоту строба и записываем в еепром
        
    freq=freq+7;
        
    EEPROM.write(1,freq);
        if (
    EEPROM.read(1)>=147) {
          
    EEPROM.write(1,10); 
          
    freq=7
        } 
    //Задаём максимальную паузу мажду вспышками

        //Для наглядного показа настроенной частоты мигаем индикаторами 5 раз с установленной частотой
        
    for (int j=0j<5j++)
        {
          
    delay(freq); 
          
    digitalWrite(internalind,HIGH);
          
    digitalWrite(ind,HIGH);
          
    delay(freq);
          
    digitalWrite(internalind,LOW);
          
    digitalWrite(ind,LOW);
        }
        break; 

      case 
    Hold//Если держим кнопку то увеличиваем моличество вспышек
        
    num++;
        
    freq=freq-7;
        
    EEPROM.write(0,num); //Сразу записываем в еепром
        
    if (EEPROM.read(0)>=11) {
          
    EEPROM.write(0,0); 
          
    num=1
        } 
    //Задаём максимальное кол-во вспышек
        
    B.setRefresh(1000+(300*num));

        
    //Мигаем индикаторами установленное кол-во раз чтобы сосчитать глазами:)
        
    for (int j=0j<numj++)
        {
          
    delay(150);
          
    analogWrite(ind,15); //Чтобы не перепутать настройки частоты и кол-ва вспышек, нужно чтобы индикатор моргал с разной яркостью
          
    digitalWrite(internalind,HIGH);
          
    delay(150);
          
    analogWrite(ind,0);
          
    digitalWrite(internalind,LOW);
        }      
        break;  

      default:
        break;
      }

      
    //Кнопка нажата - включаем строб
      
    if (digitalRead(butpin))  { strobenow(freqnum); }
      
      
    //Кнопка отпущена - включаем основной режим  
      
    else  {  analogWrite(rightpin,bright);  analogWrite(leftpin,bright);  }  

      if (
    digitalRead(resetjump)) { resetsettings(); }
      
    }

    //===============================================================================
    //Строб режим
    void strobenow(int fint c) {

      
    digitalWrite(rightpinLOW);

      for (
    int i=0i<c;i++) //Мигает одна сторона
      
    {
        if (
    i!=0delay(f); //Первое включение стороны делаем без задержки 
        
    digitalWrite(ind,HIGH);
        
    digitalWrite(leftpinHIGH);
        
    delay(f); 
        
    digitalWrite(ind,LOW);
        
    digitalWrite(leftpinLOW); 
      }


      for (
    int ii=0ii<c;ii++) //Мигает другая сторона
      
    {
        if (
    ii!=0delay(f);  //Первое включение стороны делаем без задержки 
        
    digitalWrite(ind,HIGH);
        
    digitalWrite(rightpinHIGH);
        
    delay(f); 
        
    digitalWrite(ind,LOW);
        
    digitalWrite(rightpinLOW); 
      }
    }

    //===============================================================================
    //Сброс настроек
    void resetsettings() {

        
    freq=7
        
    num=1;
        
    EEPROM.write(0,num); 
        
    EEPROM.write(1,freq); 
        
    digitalWrite(internalind,HIGH);   
      

    LED1 используется как индикатор состояния и ставится в салоне. Настраивается всё с помощью кнопки "Settings". Одиночное нажатие увеличивает паузы между вспышками на 7 миллисекунд, минимальная пауза - 7мс, максимальная - 147мс. (20 нажатий) После нажатия кнопки, пауза увеличится на 7мс, LED1 и D13 мигнёт 5 раз с установленной паузой и настройка запишется в еепром. При долгом удерживании, устанавливается кол-во вспышек с каждой стороны. Например: держим кнопку более полсекунды, индикатор мигнёт 4 раза, если после этого, всё ещё держим - индикатор через секунду мигнёт 5 раз, если кнопку отпустим - настройка сохранится. Количество свпышек индикатора будет соответствовать количеству вспышек каждой стороны. Ещё предусмотрены джампер сброса настроек и дополнительное приглушение света при включении фар например(U1, R1).
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	strobe_схема.png 
Просмотров:	1745 
Размер:	65.1 Кб 
ID:	11510  
    Вложения Вложения

  2. #2
    Новичок
    Регистрация
    23.10.2010
    Возраст
    41
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар


  3. #3
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар

    А что за лампочки стоят?

  4. #4
    Новичок
    Регистрация
    23.10.2010
    Возраст
    41
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар

    светодиоды, по 24шт в каждой

  5. #5
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар

    Сам спаял или купил ? Что за производитель?

  6. #6
    Новичок
    Регистрация
    23.10.2010
    Возраст
    41
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар

    сам собирал. Взял только корпуса от лобковых китайский фонарей. Поэтому производитель - SerGO_home
    плату вставил в блок управления светом

  7. #7
    Продвинутый Аватар для MiD_E34
    Регистрация
    11.01.2008
    Сообщений
    492
    Вес репутации
    300

    По умолчанию Re: Стробоскоп для светодиодных ДХО/ПТФ/фар

    Цитата Сообщение от sergo_nu Посмотреть сообщение
    сам собирал. Взял только корпуса от лобковых китайский фонарей. Поэтому производитель - SerGO_home
    плату вставил в блок управления светом
    лобковые паразиты бывают, а фонарь - налобный
    X-Trail,2010
    i5 Intel 3.5" board, DC-DC PS, 4G, W8.1x64, iCar, CityG.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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