Помехи в управлении светодиодной лентой ws2812b

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

Добрый день.

Если очень коротко, то имеется самопаянная светодиодная лента из 8-ми RGB-светодиодов ws2812b. Они питаются от бортовой сети автомобиля через понижающий модуль mini360. Собиралась схема согласно даташиту, с использованием 104-х керамических конденсаторов. Управляется все сие творение arduino nano.

Проблема заключается в следующем: при включении питания и при незагрузившимся arduino mini некоторые светодиоды загораются тем светом, каким им хочется. Длится это, к счастью не долго, всего около 10-50 милисекунд, после выполняется функция setup(), которая отключает все светодиоды и они гаснут.

Действие происходит быстро, но глаз успевает заметить, а посему хотелось бы от этого избавиться.

Как мне удалось понять это происходит из-за того, что "земля" авто очень загрязнена и вовсе не 0.

Прошу подсказать мне, как избавиться от самопроизвольного их зажжения?

Как вариант, конечно, можно подключить транзистор и управлять им с помощью ардуинки, т.е. как только она загрузится, открывать его и подавать питание на ленты, но хочется узнать про какие-нибудь другие варианты. Спасибо!

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

Nikel097 пишет:

Добрый день.

Если очень коротко, то имеется самопаянная светодиодная лента из 8-ми RGB-светодиодов ws2812b. Они питаются от бортовой сети автомобиля через понижающий модуль mini360. Собиралась схема согласно даташиту, с использованием 104-х керамических конденсаторов. Управляется все сие творение arduino nano.

Проблема заключается в следующем: при включении питания и при незагрузившимся arduino mini некоторые светодиоды загораются тем светом, каким им хочется. Длится это, к счастью не долго, всего около 10-50 милисекунд, после выполняется функция setup(), которая отключает все светодиоды и они гаснут.

Действие происходит быстро, но глаз успевает заметить, а посему хотелось бы от этого избавиться.

Как мне удалось понять это происходит из-за того, что "земля" авто очень загрязнена и вовсе не 0.

Прошу подсказать мне, как избавиться от самопроизвольного их зажжения?

Как вариант, конечно, можно подключить транзистор и управлять им с помощью ардуинки, т.е. как только она загрузится, открывать его и подавать питание на ленты, но хочется узнать про какие-нибудь другие варианты. Спасибо!

 

 Каким же образом вы сейчас управляете при помощи Arduino, если транзисторы в вашей схеме не задействованы ?

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

Alexandsvoi пишет:

Каким же образом вы сейчас управляете при помощи Arduino, если транзисторы в вашей схеме не задействованы ?

Я управляю лишь цветом светодиодов. Под "отключением в функции setup()" я подразумеваю отправление им всем цвета (0,0,0), т.е. как бы выключаю, напряжение на них по прежнему поступает.

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вас про схему подключения спросили. Как они у Вас подюлючены? Помеу на управляющем проводе при выключенной ардуине грязь? Он не притянут к земле? Рисуйте схему.

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

ЕвгенийП пишет:

Вас про схему подключения спросили. Как они у Вас подюлючены? Помеу на управляющем проводе при выключенной ардуине грязь? Он не притянут к земле? Рисуйте схему.

Конкретно подключение светодиодов очень простое:

Питание (+ и -) от автомобиля проходящее через понижающий преобразователь mini360, провод управления от ардуинки подтянут к земле резистором на 10 кОм, VDD вход каждого светодиода подключен к земле керамическим конденсатором 104, согласно даташиту.

Если я немного непонятно говорю, то могу начертить схему.

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

Nikel097 пишет:

ЕвгенийП пишет:

Вас про схему подключения спросили. Как они у Вас подюлючены? Помеу на управляющем проводе при выключенной ардуине грязь? Он не притянут к земле? Рисуйте схему.

Конкретно подключение светодиодов очень простое:

Питание (+ и -) от автомобиля проходящее через понижающий преобразователь mini360, провод управления от ардуинки подтянут к земле резистором на 10 кОм, VDD вход каждого светодиода подключен к земле керамическим конденсатором 104, согласно даташиту.

Если я немного непонятно говорю, то могу начертить схему.

Стало еще непонятней ))) 

Даже без сарказма. Какие функции у Arduino в этой схеме и чем она управляет ?

Я не вижу. 

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

Alexandsvoi пишет:

Стало еще непонятней ))) 

Даже без сарказма.

Понимаю) Самоучки, они очень странный народ. 

Черчу схему.

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

Alexandsvoi пишет:

Даже без сарказма. Какие функции у Arduino в этой схеме и чем она управляет ?

Я не вижу. 

На ардуине еще "висят" два датчика холла и ИК-приемник, все это питается чисто от ардуины. На основании их показаний светятся тем или иным способом RGB-светодиоды. Вот в чем идея управления ардуиной.

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

Nikel097 пишет:

Alexandsvoi пишет:

Даже без сарказма. Какие функции у Arduino в этой схеме и чем она управляет ?

Я не вижу. 

На ардуине еще "висят" два датчика холла и ИК-приемник, все это питается чисто от ардуины. На основании их показаний светятся тем или иным способом RGB-светодиоды. Вот в чем идея управления ардуиной.

Осталось схему увидеть, чтобы уловить всю идею

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

На ардуине следующая распиновка:

Vin и GND - питание самой ардуино
5V и GND - питание датчиков Холла и ИК-приемника
12, А0, А1 - входы для сигналов от датчиков и приемника.

10 и 11 - выходы для управления двумя светодиоднами лентами по 8 светодиодов в каждой (на схеме 3 для упрощения).

Питание ардуины и всех ее датчиков и питаение светодиодов разделено разными преобразователями.

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

Для чистоты эксперимента, пробовал убирать подтягивающий резисторы на 10 кОм, ставить, стваить на одну ленту, а на другую нет. Эффекта и азницы не замечал.

slider
Offline
Зарегистрирован: 17.06.2014

1. на кой вы туда диоды поставили? эти преобразователи, что?, часто напряжение сами переполюсовывают? 

 уберите их!   в зависимости от нагрузки , на них может оседать от 0.1- до 1в . Уж если так хочется поставьте один 1-3-5А перед преобразователями, и кондер около 1000мкф 16-25в , чтоб сгладить пульсации БС автомобиля, ибо импульсные DC-DC не любят пульсации входного

2. применять желательно преобразователи на другой микросхемке , там частота в несколько раз выше, до 1МГц - пульсаций меньше.

3. на втором стабе желательно ставить 7.5-8в в зависимости какая ардуина нано (есть ли там уже диод на ходе, и жирный ли там стаб 1117-5.0 (to-252  или   sot-89) , смотрите чтоб сильно не грелся.   

Nikel097
Nikel097 аватар
Offline
Зарегистрирован: 14.04.2017

slider пишет:

1. на кой вы туда диоды поставили? эти преобразователи, что?, часто напряжение сами переполюсовывают? 

 уберите их!   в зависимости от нагрузки , на них может оседать от 0.1- до 1в . Уж если так хочется поставьте один 1-3-5А перед преобразователями, и кондер около 1000мкф 16-25в , чтоб сгладить пульсации БС автомобиля, ибо импульсные DC-DC не любят пульсации входного

2. применять желательно преобразователи на другой микросхемке , там частота в несколько раз выше, до 1МГц - пульсаций меньше.

3. на втором стабе желательно ставить 7.5-8в в зависимости какая ардуина нано (есть ли там уже диод на ходе, и жирный ли там стаб 1117-5.0 (to-252  или   sot-89) , смотрите чтоб сильно не грелся.   

Диоды я поставил, так как при подключении ардуино к ноутбуку для настройки и отладки, преобразователь начинает очень сильно грется, вследстии протекания обратного тока.

Насчет кондера идея хорошая.

А может ли пульсация самих преобразователей играть раль помехи и приводить к произвольному включению светодиодов, описаному выше?

bwn
Offline
Зарегистрирован: 25.08.2014

Что то подсказывает, что дело в медленном нарастании напряжения при подаче питания на DC-DC. МК еще мертв, а чип в ленте рисует рандомные значения. ИМХО.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Второй DC/DC (9-вольтовый) выкинуть, достаточно одного 5-вольтового.

Питание на светодиоды подавать через MOSFET, управляемый Arduino, т.е. пока она не прогрузится - светодиоды будут обесточены.

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

будет ли адресный светодиод работать без конденсатора? 

sadman41
Offline
Зарегистрирован: 19.10.2016

Будет.

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

Мой пример способа зажечь отдельные светодиоды по serial или любые сочетания и плакат распайки сделал кому нужно.

Адреса ленты начинаются с 0-143 для ленты 144, не загорался 1й светодиод, думал из за конденсатора по команде зажечь 1й светодиод в ленте командой (1), командой 0 удалось зажечь, так как нумерация с 0 начинается. Думал китайцы 143 диода на ленте сделали вместо 144, пересчитав дошло, что последний светодиод 143й выйдет если с 0 начинается нумерация, так нашлась причина, почему самодельный светодиод без конденсатора не заработал сразу. Верно, без конденсатора работает. Могли и конденсатор в светодиод встроить сразу если бы влезло. Лента легко зажигает отдельные огни. Делаю так, не мог найти долго код - 

#define NUM_LEDS 145
#include "FastLED.h"
#define PIN 3
CRGB leds[NUM_LEDS];
byte counter;
//
String bufer="";
void setup(){
    FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness(60);
  pinMode(13, OUTPUT);
//****************************************************************************************************
Serial.begin(115200);// 115200 //128000 successful
//Serial.println("UPRAVLENIE SVETODIODOM PO SERIAL");
}
void loop(){
read_serial();


}
void read_serial() {
if (Serial.available() > 0) {
char ByteRead=Serial.read();  
if (ByteRead==13) {  //возврат каретки
analyzer();   //передача данных на обработку
bufer="";
}  //освобождение буфера
else {
//накопление данных в буфер
if(ByteRead!=10)bufer=bufer+char(ByteRead); // символ "новая строка" \n, нам в буффере не нужен
      }  
    }
  }
void analyzer() {

if   (bufer=="1RED"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[143] = CHSV(8 , 255, 255);//RED COLOR R G B RED % GREEN % BLUE % 
        leds[0] = CHSV(8 , 255, 255);//RED COLOR R G B RED % GREEN % BLUE % 
     //    leds[143] = CHSV(8 , 255, 255);//RED COLOR R G B RED % GREEN % BLUE % 
}}

if   (bufer=="1BLUE"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[145] = CHSV(150 , 255, 255);//RED COLOR
}}

if   (bufer=="1red"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[143] = CHSV(0,0,0);
    leds[0] = CHSV(0,0,0);
   //      leds[143] = CHSV(0,0,0);
}}

if   (bufer=="1blue"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[145] = CHSV(0,0,0);
}}


if   (bufer=="2RED"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[2] = CHSV(8, 255, 255);//100 GREEN  150 BLUE
}}

if   (bufer=="2red"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[2] = CHSV(0, 0, 0);
}}

if   (bufer=="2BLUE"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[2] = CHSV(150, 255, 255);//100 GREEN  150 BLUE
}}

if   (bufer=="2blue"){ for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[2] = CHSV(0, 0, 0);
}}


  counter++;        // counter меняется от 0 до 255 (тип данных byte)
  FastLED.show();
  delay(5);         // скорость движения радуги
//********************total end**************************************************
  }
если в коде не хватит скобок добавите, суть понятна из кода 

 

 

MYFRIEND
MYFRIEND аватар
Offline
Зарегистрирован: 31.01.2017

держите ws2112b https://yadi.sk/d/AUiyHU_R-1qgTA сделал светодиод для ARES импортируйте FILE > IMPORT PROJECT CLIP 

появится сразу на плате, сделать из него библиотеку самый простой способ - обведите его стрелкой что бы выделился, далее нажать всего лишь правой мышкой MAKE PACKAGE далее назвать ему название ws2812b и выбрать написав всюду например MY название разделов, можно написать 12345, все что угодно, и ок, на всякий случай проверьте на соответствие размерам известными вам способами, сравнив с другими деталями размеры при распечатке. Но нигде не было модели, нарисовал. Доделайте если не так что, но вроде все верно, но и гарантии "как есть".