Простой RGB контроллер - ФОРУМ ДВ Робот dvrobot.ru
Суббота, 15.12.2018, 03:49
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: GRACH, Serg  
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Библиотека Проектов » Простой RGB контроллер (световые эффекты)
    Простой RGB контроллер
    nestandartДата: Среда, 14.11.2012, 21:50 | Сообщение # 1
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    Простой RGB контроллер на основе ардуино.

    Устройство представляет собой простой RGB контроллер с ручным управлением.
    Итак.
    Нам понадобится
    1. Метр светодиодной ленты (RGB)
    2. Микросхема ULN2003
    3. Переменный резистор номиналом от 1к до 20к.
    4. Ну конечно же любая ардуино совместимая плата.
    5. Источник питания 12в 1А
    6.Провода , паяльник , припой и т.д.

    RGB лента.

    Это гибкая плата на которой находится определенное количество светодиодов .
    Количество может быть разным (30 , 60 , 120 светодиодов на метр).
    Мой выбор пал на ленту с шестьюдесятью светодиодами.
    Лента имеет четыре контакта: общий – плюс , R-канал (красный) , G –канал (зеленый) и
    B-канал (синий).
    Каналы коммутируются по GND.



    Каждый пиксель ленты это три светодиодных кристалла расположенные в одном
    корпусе под общей линзой.
    Лента питается от 12в и потребление ток около 600-900мА/метр.
    Т.е. каждый канал потребляет от 200 до 300мА/метр.
    Лента имеет встроенные гасящие (токоограничительные) резисторы так что можно смело подключать ее к любому питанию не боясь сжечь.

    Драйвер светодиодной ленты.

    Дело в том что пин микроконтроллера (ардуино) способен отдавать номинальный ток 20мА и максимальный 40мА (до этого доводить не стоит).
    Если превысить эти значения то, в лучшем случае, выгорит пин ардуино, в худшем весь контроллер.
    Для усиления токов и напряжений применяют, так называемые, драйверы.

    В роли драйвера мы будем использовать универсальную сборку транзисторных ключей –ULN2003.
    Эта микросхема содержит в себе семь составных транзисторов Дарлингтона, работающих в режиме ключей.
    Каждый из семи каналов микросхемы способен выдержать ток до 500мА.
    Так же, каналы можно соединять параллельно для увеличения максимального тока.

    Пример.
    Для подключения двух метров ленты (потребление тока около 600мА на канал)
    Нужно запаралелить каналы драйвера. Вот так.



    Микросхема работает от 12в, имеет общий плюс и коммутирует каналы по минусу.

    Переменный резистор.

    Переменный резистор (в дальнейшем потенциометр) имеет три вывода – два крайних и один средний.
    Крайний вывод (любой) подключается к +5в, противоположный крайний к gnd, средний к пину АЦП ардуино.

    Добавлено (14.11.2012, 21:50)
    ---------------------------------------------
    Схема готового устройства.



    Как вы можете видеть, здесь задействовано только три канала микросхемы (больше нам и не нужно).
    VD1 - синий канал. VD2 – зеленый канал. VD3 – красный канал.

    Алгоритм программы.

    Устройство работает так.
    При вращении потенциометра происходит плавная смена цветов от красного до фиолетового (строго по спектру).

    Включили контроллер – горит красный, начали вращать потенциометр – красный плавно переходит в оранжевый, далее – оранжевый переходит в желтый, желтый в зеленый, зеленый в голубой, голубой в синий, синий в розовый, розовый в красный.
    Прикрепления: 1208885.jpg(22.0 Kb) · 3219281.jpg(41.6 Kb) · 3956770.jpg(40.1 Kb)


    Сообщение отредактировал nestandart - Четверг, 15.11.2012, 13:52
     
    nestandartДата: Четверг, 15.11.2012, 14:30 | Сообщение # 2
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    Управляющая программа.

    Code
    int potpin=0;
    int potpin2=0;
    int potpin3=0;
    void setup()
    {
    pinMode(9,OUTPUT);
    pinMode(10,OUTPUT);
    pinMode(11,OUTPUT);
    pinMode(14,INPUT);
    }
    void loop ()

    {
         potpin=analogRead(14);
            
         potpin=(potpin*2)-(potpin/2);
            

    if(potpin<=512)
    {
           
            
    if(potpin>=0 && potpin<=255)
    {
           
    analogWrite(11,0);
        analogWrite(9,255);
        analogWrite(10,potpin);

    }
    else
    {

    analogWrite(11,0);
    analogWrite(9,(512-potpin));
    analogWrite(10,255);

    }

    }
    //*******************************************************//

    potpin2=(potpin-509);

    if(potpin2<=0)
    {
    potpin2=0;
    }    
    else
    {    
    if(potpin2<=509)
    {
    if(potpin2>0 && potpin2<=255)
    {
    analogWrite(9,0);
    analogWrite(10,255);
    analogWrite(11,potpin2);

    }
    else
    {
    analogWrite(9,0);
    analogWrite(10,(509-potpin2));
    analogWrite(11,255);

    }

    }    
    }

    //***************************************************//

    potpin3=(potpin-1023);
    if(potpin3<=0)
    {
    potpin3=0;
    }
    else
    {
    if(potpin3<=509)
    {
    if(potpin3>0 && potpin3<=255)
        {
        analogWrite(10,0);
        analogWrite(11,255);
        analogWrite(9,potpin3);
        }
        else
        {
        analogWrite(10,0);
        analogWrite(11,(509-potpin3));
        analogWrite(9,255);
    }
        }
        }
    }



    Добавлено (14.11.2012, 21:50)
    ---------------------------------------------
    Осталось только собрать устройство и прошить программу в ардуино.

    Добавлено (15.11.2012, 13:53)
    ---------------------------------------------
    Ну вот мы и разобрались с ручным управлением, теперь будем автоматизировать процесс.
    Сделаем так чтобы цвета менялись сами.
    Теперь, вместо потенциометра, будет оператор for.

    Программа будет выглядеть вот так.

    Code

    int potpin=0;
    int potpin2=0;
    int potpin3=0;
    int potpin4=0;
    int potpin5=0;
    int potpin6=0;

    void setup()
    {
    pinMode(9,OUTPUT);
    pinMode(10,OUTPUT);
    pinMode(11,OUTPUT);
    pinMode(14,INPUT);
    randomSeed(analogRead(0));
    }
    void loop ()

    {
            
            
              
           for(potpin = 0 ;potpin <=255; potpin+=1)//увеливаем яркость зеленого канала на 1 за один цикл оператора for    
           {
             analogWrite(11,0);
             analogWrite(9,255);
              analogWrite(10,potpin);
                
             delay(10);//ждем    
           }
           
         //далее все аналогично
            
            
           for(potpin2 =255 ;potpin2 >=0; potpin2-=1)    
           {
             analogWrite(11,0);
             analogWrite(9,potpin2);
              analogWrite(10,255);
                 
             delay(10);
           }

         for(potpin3 = 0 ;potpin3 <=255; potpin3+=1)    
           {
             analogWrite(11,potpin3);
             analogWrite(9,0);
              analogWrite(10,255);
                
             delay(10);
           }
           
        for(potpin4 =255 ;potpin4 >=0; potpin4-=1)    
           {
             analogWrite(11,255);
             analogWrite(9,0);
              analogWrite(10,potpin4);
                 
             delay(10);
           }
              
             
            for(potpin5 = 0 ;potpin5 <=255; potpin5+=1)    
           {
             analogWrite(11,255);
             analogWrite(9,potpin5);
              analogWrite(10,0);
                
             delay(10);
           }
              
           
        for(potpin6 =255 ;potpin6 >=0; potpin6-=1)    
           {
             analogWrite(10,0);
             analogWrite(9,255);
              analogWrite(11,potpin6);
                 
             delay(10);
           }
           }



    Добавлено (15.11.2012, 13:54)
    ---------------------------------------------
    Теперь добавим ручное управление скоростью смены цветов (все тот же потенциометр).

    Программа.

    Code
    int potpin=0;
    int potpin2=0;
    int potpin3=0;
    int potpin4=0;
    int potpin5=0;
    int potpin6=0;
    int speed=0;

    void setup()
    {
    pinMode(9,OUTPUT);
    pinMode(10,OUTPUT);
    pinMode(11,OUTPUT);
    pinMode(14,INPUT);
    randomSeed(analogRead(0));
    }
    void loop ()

    {
            
          speed=(analogRead(14)/20);//считываем значение потенциометра и делим его на 20
            if(speed<1)//если значение переменнойменьше одного
            {
              speed=1; //приравниваем его к 1
            }
              
           for(potpin = 0 ;potpin <=255; potpin+=1)//увеливаем яркость зеленого канала на 1 за один цикл оператора for    
           {
             analogWrite(11,0);
             analogWrite(9,255);
              analogWrite(10,potpin);
                
             delay( speed);//ждем    
           }
           
         //далее все аналогично
            
            
           for(potpin2 =255 ;potpin2 >=0; potpin2-=1)    
           {
             analogWrite(11,0);
             analogWrite(9,potpin2);
              analogWrite(10,255);
                 
             delay( speed);
           }

         for(potpin3 = 0 ;potpin3 <=255; potpin3+=1)    
           {
             analogWrite(11,potpin3);
             analogWrite(9,0);
              analogWrite(10,255);
                
             delay( speed);
           }
           
        for(potpin4 =255 ;potpin4 >=0; potpin4-=1)    
           {
             analogWrite(11,255);
             analogWrite(9,0);
              analogWrite(10,potpin4);
                 
             delay( speed);
           }
              
             
            for(potpin5 = 0 ;potpin5 <=255; potpin5+=1)    
           {
             analogWrite(11,255);
             analogWrite(9,potpin5);
              analogWrite(10,0);
                
             delay( speed);
           }
              
           
        for(potpin6 =255 ;potpin6 >=0; potpin6-=1)    
           {
             analogWrite(10,0);
             analogWrite(9,255);
              analogWrite(11,potpin6);
                 
             delay( speed);
           }
             
            
    }



    В следующих статьях покажу более интересные эффекты и работу контроллера в связке с другими устройствами, например с датчиком препятсятвий.

    Это устройство можно применить как ночник, гирлянду или подсветку салона авто.

    Nestandart 2012.

    На выходных собираюсь написать вам "Трактат о кнопках" - довольно емкая тема.
     
    nestandartДата: Четверг, 15.11.2012, 14:41 | Сообщение # 3
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    Скажите Serg вас интересуют только проекты с непосредственным применением ардуино ?
    Просто я сейчас я делаю очередного робота , получилась довольно не плохое самодельное танковое шасси.
    Вобщем хотел бы его выложить (чертежики ,детальные фото, коментарии по сборке и т.д.).
    Как вы наэто смотрите ?
     
    SergДата: Четверг, 15.11.2012, 15:04 | Сообщение # 4
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Если по хорошему, насчет своих планов и проектов, Вам нужно обратится сюда
     
    GRACHДата: Пятница, 16.11.2012, 20:24 | Сообщение # 5
    dvrobot.ru
    Группа: Администраторы
    Сообщений: 111
    Репутация: 16181
    Статус: Offline
    nestandart, Доброе время !! Информация о Вашем новом проекте уже где то публиковалась ? Если нет, то мы готовы рассмотреть Ваш проект. Напомню, что вся информация,о том как можно продать свою : идею, план, проект или что то еще, что связано с Arduino , радиоэлектроникой ,механикой роботостроением, Вы можете узнать на сайте компании ДВ Робот dvrobot.ru
     
    nestandartДата: Пятница, 16.11.2012, 22:20 | Сообщение # 6
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    GRACH, а вы кто ? Админ сайта ?
    Если вы , под "Новым проектом" , имеете в виду "Трактат о кнопках" , то это не проект.
    Это статья о том как правильно работать с кнопкой (кнопками) с множеством программных примеров и бесценным опытом.
    До этого данная статья ни где не публиковалась (она еще, даже, не дописана).
     
    SergДата: Пятница, 16.11.2012, 22:54 | Сообщение # 7
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    GRACH - это самый главный админ и представитель магазина DV ROBOT. он уполномочен во всех вопросах.а я так, один из юзеров...
     
    GRACHДата: Суббота, 17.11.2012, 18:59 | Сообщение # 8
    dvrobot.ru
    Группа: Администраторы
    Сообщений: 111
    Репутация: 16181
    Статус: Offline
    nestandart, доброе время !!
    Да, я один из админов этого форума.Со мной решаются "партнерские вопросы" , с администратором Serg, решаются технические вопросы форума, а так же информационные аспекты проектов, опубликованных на нашем форуме.

    А под вашим "Новым проектом" я имел ввиду "самодельное танковое шасси"

    P.S. Serg, далеко не юзер!!
     
    muveyДата: Суббота, 17.11.2012, 20:47 | Сообщение # 9
    220 Вольт
    Группа: Пользователи
    Сообщений: 303
    Репутация: 1
    Статус: Offline
    nestandart, так а шасси покажуть нам? smile

    Ex nihilo nihil fit
     
    nestandartДата: Суббота, 17.11.2012, 21:44 | Сообщение # 10
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    Сегодня ночью . Разберу и соберу шасси под детальную фотосъемку.
    Статью опубликую не раньше вечера воскресенья.


    Сообщение отредактировал nestandart - Суббота, 17.11.2012, 21:44
     
    muveyДата: Суббота, 17.11.2012, 21:57 | Сообщение # 11
    220 Вольт
    Группа: Пользователи
    Сообщений: 303
    Репутация: 1
    Статус: Offline
    nestandart, ясно,бум ждать smile

    Добавлено (17.11.2012, 21:57)
    ---------------------------------------------
    nestandart, а электроника там есть,или ток механика?


    Ex nihilo nihil fit
     
    nestandartДата: Суббота, 17.11.2012, 22:14 | Сообщение # 12
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 23
    Репутация: 0
    Статус: Offline
    Только механика на основе гусениц tamia.
    Электронику делаю сейчас , но публяковать врядли буду.
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Библиотека Проектов » Простой RGB контроллер (световые эффекты)
    • Страница 1 из 1
    • 1
    Поиск:

    ДВ Робот - Чат