На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > ардуина и rgb led , в сети сверху плавает корявый вариант подключения rgb с общим анодом
      Порылся в сети, вариант подключения, предложенный инэтом - вполне хил :facepalm: , в случае подключения одного ~20mA RGB LED с общим анодом(т.е. общий + у каналов R,G,B).

      Простая реализация, позволяющая плавно(ШИМ) менять свечение каждого отдельного канала(годится только в случае подключения одного диодика :good: ):
      общий плюс берем через резюк(около 1к) - с ноги 3.3в или 5в.
      Ножки R,G,B подкидываем на ардуину 3,5,6 (ШИМ-же!)


      ExpandedWrap disabled
        const byte const_Pin_R=3;
        const byte const_Pin_G=5;
        const byte const_Pin_B=6;
         
        const byte const_pwr_min=200;
        const byte const_pwr_max=255;
         
        byte pwr_R=const_pwr_min;
        byte pwr_G=const_pwr_min;
        byte pwr_B=const_pwr_min;
         
          analogWrite(const_Pin_R,pwr_R);
          analogWrite(const_Pin_G,pwr_G);
          analogWrite(const_Pin_B,pwr_B);
          delay(50);


      255 на ШИМах(pwr_*) - полное выключение канала. :)


      p.s. для более серьезных нагрузок можно заюзать что нибудь вроде К1109КТ22 = ULN2003, хотя какова их частота, смогут ли они нормально трудится с ШИМ - вопрос открытый. :rolleyes:

      Добавлено
      и ещё, я взял ближайший резюк для питалова, меньще кило, соответственно питание просаживалось, что выглядело как мерцание при изменении значений нескольких каналов. Решил проблему включением подручного же (ближайшего) кондера между питанием и землей - мерцание полностью устранено, цвета меняются плавно и очень красиво! :wub:
      /*хотя в таком режиме плата наверняка относительно быстро сдохнет.*/ :rolleyes:
        рабочий скетч (отладил красивое перетекание цветов):
        ExpandedWrap disabled
          byte Pin_Color[3]{3,5,6};//R,G,B
           
          const byte const_Delay=200;/*для ускоренного просмотра рекомендуется установить в 50, 20, или меньше. Потомм вернуть 200.*/
          int Delay_Dynamic=0;
          int Delay_Tmp=0;
           
          const int const_pwr_off=255; // 255 - светодиоды не светят
          const int const_pwr_on=200;  // 200 - яркий свет
           
          int i=0;
           
          int pwr[3]={0,0,0}; //яркость R,G,B- от 0 до 55(const_pwr_off-const_pwr_on)
          int pwr_average[3]={10,45,32};//среднее значение R,G,B, при отклонении стремиться к нему
          int pwr_max[3]={20,55,55};//ограничение по максимуму для канала (истиный максимум - const_pwr_off-const_pwr_on=55)
          int pwr_steep[3]={1,1,1};//шаг R,G,B, положительное число - увеличит яркость, отрицательное - снизит
           
          int odds_steep_change=0;//вероятность на изменение шага(меняется по ситуации)
           
          const int rnd_counter_enter=2;//количество циклов до входа в random(изменения динамики)
          int rnd_counter=0;
          int rnd;
           
           
          //моргнуть бортовым светодиодом
          //void delay1() {digitalWrite(13, HIGH);delay(5);digitalWrite(13, LOW);delay(5);}
           
           
          void setup() {
             /*Serial.begin(9600);*/
          }
           
           
          void loop() {
           
            //условие для изменений динамики
            if (rnd_counter<rnd_counter_enter) {rnd_counter++;}
            else
            {
              rnd_counter=0;
              Delay_Tmp=0;
              for (i=0;i<3;i++)
              {
                odds_steep_change=pwr_average[i]-pwr[i];
                Delay_Tmp+=(odds_steep_change*2);
          /*      Serial.print("i: ");
                Serial.println(i);
                Serial.println(odds_steep_change);
                Serial.println(Delay_Tmp);
                Serial.println("-------");*/
                if (odds_steep_change<0) {odds_steep_change=-odds_steep_change;}
                rnd=random(57-odds_steep_change);
           
                if (pwr[i]<pwr_average[i]) {if (rnd>-1 && rnd<3) {pwr_steep[i]++;}}
                if (pwr[i]>pwr_average[i]) {if (rnd>-1 && rnd<3) {pwr_steep[i]--;}}
                if (pwr[i]==pwr_average[i]) {if (rnd==1) {pwr_steep[i]++;} else {if (rnd==2) {pwr_steep[i]--;}}}
              }
            }
           
            //включение каналов (R,G,B) светодиода
            for (i=0;i<3;i++)
            {
              pwr[i]=pwr[i]+pwr_steep[i];if (pwr[i]<0) {pwr[i]=0;if (random(2)==1){pwr_steep[i]++;}} else {if (pwr[i]>pwr_max[i]) {pwr[i]=pwr_max[i];if (random(3)==1){pwr_steep[i]--;}}}
              analogWrite(Pin_Color[i],const_pwr_off-pwr[i]);
            }
           
            Delay_Dynamic=const_Delay-(Delay_Tmp);
            if (Delay_Dynamic<5) {Delay_Dynamic=5;}
           
            delay(Delay_Dynamic);
           
            //delay1();
          }


        использовано:

        arduino nano - 1шт
        светодиод RGB 5mm с общим анодом(т.е. полюс один, и три ноги под минусы)- 1 шт
        резистор ближайший подручный (условно 1к, но не меньше) - 1шт
        конденсатор электролитический, ближайший подручный, (не меньше 6В) сколько-то-там микрофарад(не больше 1000uf, хотя у меня 1500uf) - 1шт.

        опционально(таки заюзано) макетная плата - 1шт,
        провода китайские для удобства работы с макеткой - 5шт.


        от ноги ардуино 3,3В, через резюк(1к) кидаем на + электролит, вторая нога электролита(минус которая) - на земле. С электролита плюс кидаем на анод светодиода(который плюсом питается), три ноги светодиода подключаем к портам 3,5,6 ардуино(порты с ШИМ). Заливаем скетч, вуаля, моргалка работает!

        Неплохой эффект достигается добавлением рассеивателя из простого листа белой бумаги А4 - складываем как угодно, хоть домиком, он будет вполне прикольно подсвечиваться! :)

        у меня сутки крутится без проблем, хотя резюк ~ на 2К, и электролит поменьше(500uf) - было бы надежней для долгосрока. :rolleyes:

        моргалка к НГ! :)

        Добавлено
        кстати, с фишкой-моргалкой(хотя нифига не моргает, плавно цвета текут - красотища) неплохо сочетать жмых оптоволокна. :good:
        Сообщение отредактировано: Руслан -
          Цитата Руслан @
          от ноги ардуино 3,3В, через резюк(1к) кидаем на + электролит, вторая нога электролита(минус которая) - на земле. С электролита плюс кидаем на анод светодиода(который плюсом питается), три ноги светодиода подключаем к портам 3,5,6 ардуино(порты с ШИМ).

          Думаю, не удачное решение: не стоит крахоборничать и экономить на спичках резисторах. Надо поставить 3 между катодами и портами, тем самым снизится зависимость по яркости.
            моргалка к НГ! :)
            Скрытый текст
            есть rgb светодиоды переливающиеся сами по себе 8] (~ по 40р за штуку)
              Цитата Alexei @
              Думаю, не удачное решение: не стоит крахоборничать и экономить на спичках резисторах. Надо поставить 3 между катодами и портами

              Скоро третьи сутки как без остановок крутится на одном резисторе... :whistle: Сча время появится, буду переделывать - вешать жмых сведодиодов (через подручные транзисторы).
              Хотя глобально конечно согласен - предложенные резюки - нужны бы (а я просто поленился из ставить)!

              Скрытый текст
              Цитата SVK @
              есть rgb светодиоды переливающиеся сами по себе 8] (~ по 40р за штуку)

              я 50 шт. брал ~ рублей за 200, т.е. ~4р.\шт., плюс МК(ардуино), который управляет ~ 120р.
              Сообщение отредактировано: Руслан -
                Итак, к ардуине подключил целый жмых RGB LED с общим анодом. Что порадовало - оказалась полная совместимость с выше приведенным скетчем. Использовано минимум деталей(да, я жмот, экономящий на спичках).
                Использовано (перечисляю снова)

                МК Ардуино - 1шт.
                блок питания 5В (зарядное для мобилки) - 1шт.
                RGB светодиоды с общим анодом (кстати не рекомендую их юзать - местами крайне неудобно, лучше с общим катодом) - 8шт.
                транзисторы pnp подручные(подручными оказались 1015, ЭКБ) - 3шт.
                резисторы из расчёта 200 Ом - 3шт.

                проводки подручные, короткие - 5шт * 10см.
                макетная плата (на этот раз под пайку которая) - 1шт.

                аноды светодиодов(плюс который) соединил вместе и отправил прямиком к питанию +5В (думаю не сдохнет, судя по стабилизатору на плате МК).
                катоды светодиодов R пачкой идут к резистору 1, который в свою очередь идёт к эмитеру транзюка 1
                катоды светодиодов G пачкой идут к резистору 2, который в свою очередь идёт к эмитеру транзюка 2
                катоды светодиодов B пачкой идут к резистору 3, который в свою очередь идёт к эмитеру транзюка 3
                коллекторы транзюков соеденены вместе, и подключены прямиком к GND
                базы транзюков идут к портам ардуино - R=3, G=5, B=6

                вуаля, засветилось сразу, без изменений скетча. :)

                токопотребление (при 5.14В) получилось 0,02А - 0,03А(запас прочности светодиодов получается раз в 5). :)

                Добавлено
                Скрытый текст
                из неожиданных эффектов: колонки которые были отремонтированы примерно год назад(включены вместо пылящегося саба) внезапно заговорили не своим голосом на полной громкости (в обход резистора), впрочем, эффект одноразовый; что это за наводки привели к сбою микросхемы усилителя - хз, близкий к ппц! :blink: :ph34r:
                  Прикреплённая картинка
                  Прикреплённая картинка

                  Прикреплённая картинка
                  Прикреплённая картинка

                  Прикреплённая картинка
                  Прикреплённая картинка
                    Цитата Руслан @
                    RGB светодиоды с общим анодом (кстати не рекомендую их юзать - местами крайне неудобно, лучше с общим катодом)

                    Не понятны мне ваши проблемы : пину МК побарабану - "истекать" током или тянуть в себя.
                    Проблемы с драйверами лед , их делают на втекающий ток, а светодиоды- наоборот.
                    И еще МК от тех же 5в питается, выше что-то про 3.3 было, думаю с ним не заработает.
                      Цитата Alexei @
                      Не понятны мне ваши проблемы : пину МК побарабану - "истекать" током или тянуть в себя.

                      Адресацию сложней организовать, что бы разными группами LED отдельно управлять с одного МК. Из этих соображений RGB с общим катодом - значительно удобней! :yes:

                      Цитата Alexei @
                      выше что-то про 3.3 было, думаю с ним не заработает

                      Почему же, прекрасно работало трое суток без остановок. с ноги 3,3 бралось питание одного светодиода; но то была программа минимум, так сказать эксперимент перед запусков жменьки светодиодов, где 3,3 нога незатейлево выгорит от непомерной нагрузки. :)

                      Изменения:
                      номинал резисторов изменен на 20 ом, соответственно света больше, макс.потребление тока приблизилось к 0,1А при 5В. На схему опять добавил какой то подручный кондер (~на 100-200uf).
                      изображение (сделал в замечательной free программе fritzing).

                      обновленный скетч (лучше отрегулирован, больше опций, более интуитивно понятно в настройке) будет позже.

                      Прикреплённая картинка
                      Прикреплённая картинка


                      Добавлено
                      п.с. светодиоды собраны в жмых параллельно (да, решение с экономией на спичках :blush: ).
                        Цитата Руслан @
                        Адресацию сложней организовать, что бы разными группами LED отдельно управлять с одного МК. Из этих соображений RGB с общим катодом - значительно удобней! :yes:

                        Не понятно чем. :blink:
                        Цитата
                        пину МК побарабану - "истекать" током или тянуть в себя.

                        Соответственно, группы можно переключать как питанием, так и "0"
                        Нарисуйте , о чем вы?
                        Цитата Руслан @

                        Почему же, прекрасно работало трое суток без остановок. с ноги 3,3 бралось питание одного светодиода;

                        Речь о том , что если МК питается 0т 3.3в, а на эмитере тр-ра 5в , то он не закроется.

                        Вообще , тр-ры используются как-то странно. В схеме ключа тр-р , в зависимости от проводимости , подключают эмитером к питанию или земле, а нагрузку включают в коллектор.
                          Цитата Alexei @
                          Вообще , тр-ры используются как-то странно.
                          Что странного в эмиттерном повторителе?
                            Цитата Alexei @
                            Речь о том , что если МК питается 0т 3.3в, а на эмитере тр-ра 5в , то он не закроется.
                            Закроется.
                            Если на ноге высокое напряжение (скажем 3 вольта), транзистор выдаст на светодиод напряжение где-то 2.5 В (для красного светодиода как раз столько и надо, желтый или зелёный будут светиться пожалуй тускловато).
                            Если напряжение низкое (ниже 0.5-0.7 вольта), транзистор закроется и погасит диод.
                            Другое дело, что при свечении диода транзистор будет рассеивать мощность порядка 0.05 ватта, но думаю, для таких транзисторов это ерунда.
                              Цитата Dushevny @
                              Что странного в эмиттерном повторителе?

                              Применение не к месту.

                              Цитата amk @
                              Закроется.
                              Если на ноге высокое напряжение (скажем 3 вольта), транзистор выдаст на светодиод напряжение где-то 2.5 В (для красного светодиода как раз столько и надо, желтый или зелёный будут светиться пожалуй тускловато).
                              Если напряжение низкое (ниже 0.5-0.7 вольта), транзистор закроется и погасит диод.

                              Не закроется,особенно при низком :)
                              Там pnp.
                                Цитата Alexei @
                                Применение не к месту.

                                У меня всё работает. А как ты считаешь было бы лучше подключить?

                                Вот практика:
                                Ногу анода светодиодов вместо +5(я же говорил, что питаю от зарядного, это разумеется было временное решение, у меня не десяток зарядных) подключил к vin, куда подал регулируемое напряжение(12В адаптера, через LM2596), таким образом повышается яркость светодиодов до любых(разумных) значений, транзисторов хватает тянуть жменю светодиодов. Ну а что предлагаешь ты? :huh:

                                Добавлено
                                Цитата Alexei @
                                Речь о том , что если МК питается 0т 3.3в, а на эмитере тр-ра 5в , то он не закроется.

                                Хорош порожняки гонять! Давай по существу, а? Есть предложения как лучше подключить к ардуине десяток RGB LED с общим анодом, или нет? :huh:
                                Сообщение отредактировано: Руслан -
                                  Цитата Alexei @
                                  Не закроется,особенно при низком
                                  Там pnp
                                  Невнимательно прочитал (вообще, схемы предпочитаю рисованные, а не описанные текстом) В таком случае светодиоды гаснут потому, что одного вольта просто не хватает, чтобы их зажечь. В полной темноте,возможно, можно разглядеть свечение.
                                  Хотя здесь действительно лучше подошли бы npn-транзисторы со стандартным подключением эмиттера к земле, а диодов через резистор порядка 50-100 Ом (надо по конкретным диодам определять) к питанию.
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0513 ]   [ 20 queries used ]   [ Generated: 19.03.24, 09:59 GMT ]