Светодиодная RGBW лента на SK6812

  • Цена: $ 6.64 - 39.58

Здесь уже было много обзоров лент на светодиодах WS2812, возможно кому-то будет интересна RGBW версия. Как и в прошлых версиях запускать буду от ПЛИС, знаю, что на ардуино проще и дешевле, но вот что было под рукой на том и тестирую.



Ниже приведён немного изменённый драйвер ws2812b. Я пробовал разные времянки, т.к. есть несколько версий даташитов, где китайцы путаются с номинальной длиной импульсов и возможным допуском на импульс и весь бит. В коде задержки исходя из тактовой частоты 50 МГц.
Timings

немного verilog кода
module sk6812drv (
	input clk,rst,
	input en,
	input [31:0] clr,
	input fn,
	output wire data, rd
	);
	 
	parameter wait_time = 3800;
	parameter TP = 62; // unstable 52
	parameter T0H = 16; // unstable 13
	parameter T1H = 32; // unstable 26
	 
	reg dat;	 
	reg [31:0] clr_reg;
	reg rdr;	 
	reg [5:0] ccn;
	reg [7:0] bcn;
	reg [15:0] fncn;
	
	assign data = dat;
	assign fl = bcn==TP-1;
	assign fb = ccn==31&fl;	
	assign rd = rdr;

	always@(posedge clk) begin	
		clr_reg[31:0] <= en? {clr[24],clr[25],clr[26],clr[27],clr[28],clr[29],clr[30],clr[31],clr[16],clr[17],clr[18],clr[19],clr[20],clr[21],clr[22],clr[23],clr[0],clr[1],clr[2],clr[3],clr[4],clr[5],clr[6],clr[7],clr[8],clr[9],clr[10],clr[11],clr[12],clr[13],clr[14],clr[15]}: clr_reg;		
		ccn <= rst? 0: en? 0: fb? 0: fl? ccn+1: ccn;
		bcn <= rst? 0: en? 0: fl? 0: bcn+1;		
		fncn <= rst? wait_time: fn? 0: fncn==wait_time? fncn: fncn+1;		
		dat <= rst? 0: fncn!=wait_time? 0: clr_reg[ccn]&bcn<T1H? 1: clr_reg[ccn]&bcn>=T1H? 0: !clr_reg[ccn]&bcn<T0H? 1: !clr_reg[ccn]&bcn>=T0H? 0: 0;		
		rdr <= (fncn==wait_time&ccn==31&bcn==TP-4)|(fncn==wait_time-1);	
	end
endmodule

Никаких ambilight-подобных самоделок описывать не буду, кому понадобится пусть сам развлекается. Эта лента будет интересна скорее тем, кто хочет сделать разноцветную подсветку в комнате со всякими эффектами и возможностью включить полноценную белый не RGB подсветку.
Продавец предлагает версии с холодным, нейтральным и тёплым белым светом я выбрал RGBNW (нейтральный).

Для проверки ленты реализовал бегущие огни. Для динамического изменения параметров бегущих огней без пересинтезирования прошивки в проекты Xilinx ISE можно добавить блок VIO (Virtual Input-Output). Output в нём это выход блока в котором мы будем менять значения через графический интерфейс. Тут я использовал 48 бит 32 бита на цвет бегущей строки и 16 бит на длину.

И подключить его к ChipScope через ICON блок.
В ChipScope вместе с Logic Analizer (который я показывал в прошлом обзоре) это выглядит как-то так (значения цветов и длины можно менять в табличке и они сразу изменятся в проекте):
вот так вставляются в код
icon_core icon_inst (
    .CONTROL0(ilaw), // INOUT BUS [35:0]
    .CONTROL1(viow) // INOUT BUS [35:0]
    );
	
ila_core ila_inst (
    .CONTROL(ilaw), // INOUT BUS [35:0]
    .CLK(clk), // IN
    .TRIG0(ldcn[8:0]), // IN BUS [8:0]
    .TRIG1(cn), // IN BUS [9:0]
    .TRIG2(clr), // IN BUS [31:0]
    .TRIG3(bcn_), // IN BUS [7:0]
    .TRIG4(ccn_), // IN BUS [4:0]
    .TRIG5(en), // IN BUS [0:0]
    .TRIG6(rd), // IN BUS [0:0]
    .TRIG7(fn), // IN BUS [0:0]
    .TRIG8(data) // IN BUS [0:0]
    );
	
vio_core vio_inst (
    .CONTROL(viow), // INOUT BUS [35:0]
    .CLK(clk),
    .SYNC_OUT(vioi) // IN BUS [47:0]
    );

Я разбил общую шину 48 бит на отдельные, отвечающие за цвет и длину бегущей строки. Различные комбинации, между которыми я переключался можно увидеть на видео:

Бегущая строка длиной 1, 72, 143 элемента, различных цветов.

Т.к. мой блок питания 5 В всего на 25 Вт, на полной яркости он немного проседал. Но большее падение напряжения вызывает сопротивление самой ленты, в то время как в начале напряжение просело до 4,8В, то на конце ленты было 4,0 В при токе 5,9 А (Это я пробовал включать все 144 элемента на максимум) таким образом лучше подключать питание к ленте с обоих концов. По отдельности цвета потребляют 1,4 А красный, зелёный и синий и 2,7 А белый (когда включено 144 элемента), соответственно 0,01 А и 0,019 А в расчёте на один элемент.
Да, забыл упомянуть два момента:
— синий светодиод немного засвечивает белый люминофор;
— лента на 144 элемента спаяна из двух кусков по 72 (впрочем, и ws2812b были сделаны так же).
Планирую купить +30 Добавить в избранное +42 +58
+
avatar
  • ABATAPA
  • 29 апреля 2017, 23:05
0
Лента хорошая, белый нужен.
Но ПЛИС…
+
avatar
  • GrAl
  • 29 апреля 2017, 23:34
+2
Arduino nano ~3$
+
avatar
  • ploop
  • 29 апреля 2017, 23:08
+1
запускать буду от ПЛИС
Круто! Из пушки по воробьям конечно, но для проверки пофиг на чём.
+
avatar
  • skif31
  • 30 апреля 2017, 00:09
-27
+
avatar
  • ploop
  • 30 апреля 2017, 00:20
+11
В быту ПЛИС не применяется
С чего это? Законом вроде не запрещено, а в радиолюбительской практике ещё как применяется, при том некоторые разработки без неё просто не сделать.
+
avatar
+7
Не, не, я хоть и использовал рабочий программатор раньше, но не так давно специально обзор писал и на отладочную плату и на сравнение программаторов, так что всё сам покупал.
+
avatar
+9
Цена маленькой ПЛИС не сильно отличается от ардуино UNO (народная ардуино нано конечно сильно дешевле). Плюс не очень красиво бездоказательно обвинять человека в воровстве.
+
avatar
+1
Не понимаю логики, человек реализовал что-то своё, на том, что было. Или прям вот все обязаны диодами управлять только с ардуинок? Что за глупости, мыслите шире.
+
avatar
0
Судя по виду, это отладочная плата, причем из простейших. Так что вряд ли с работы. На работу, если и покупают, то полным фаршем — проще потом жить.
А насчет с работы… Вот у меня лежит там пара десятков плат мертвых. На 90% — без шансов на восстановление. Их уже списали. А на каждой пара ПЛИСин (пусть старенькие Циклон2), ARM7, SRAM, кучка всяких стабилизаторов… Причем большая часть микросхем исправна. Ну, или почти исправна. Вот, давеча, пытался восстановить. Все отлично, но не работает CAN — что-то там с с этой ногой. Но остальные 143 работают. Для какой-то поделки ARM7… Хех, почему бы и нет?
+
avatar
  • Alber
  • 30 апреля 2017, 00:08
0
Вроде как и цена не плохая. Если брать 5м, то выходит по 11 центов за диод, что на уровне ws2812.
+
avatar
  • Safar
  • 30 апреля 2017, 04:06
0
CipScope
поправьте
+
avatar
  • Naevus
  • 30 апреля 2017, 07:53
+3
лучше подключать питание к ленте с обоих концов.
Еще есть вариант — «по диагонали». Плюс подключается на один конец, а минус — на другой. Так обеспечивается одинаковое напряжение на каждом светодиоде (ну при постоянных характеристиках самой ленты).
+
avatar
  • Rzzz
  • 02 мая 2017, 14:54
0
А правильнее всего не с концов, а точек 1/4 и 3/4 длины ленты.
+
avatar
  • Naevus
  • 02 мая 2017, 15:27
0
Нее, тогда на краях ленты напряжение будет отличаться от напряжения в точке подключения. Ведь до края дойдет черeз сопротивление 1/4R + 3/4R (если принять всю длину ленты за R). А в точке подключения будет 0R+1/2R

В «моем» варианте в любой точке ленты будет 1R.
+
avatar
  • Rzzz
  • 02 мая 2017, 17:13
0
Не люблю тыкать людей в их ошибки, но вы считаете неправильно. Так, как вы указали считается только при послетдовательном подключении. При «моём» же варианте в самой дальней точки ленты от точки подключения питание пойдёт через сопротивление 1/4 R,.При подключении «с обоих концов» — 1/2R.
+
avatar
  • Naevus
  • 02 мая 2017, 17:49
0
а я наоборот — люблю когда меня тычут — способствует развитию…
В «вашем» варианте — 1/4 будет на самом дальнем конце. В других точках — будет другое сопротивление. Так? Ну и как это будет способствовать равномерности свечения ленты? Никак.
В «моем» варианте — в любой точке будет 1/2R. Т.е. на все светодиоды придет одинаковое напряжение. Да, оно будет ниже, чем в «вашем» варианте в самой дальней точке. Но равномерность достигается постоянством параметров по всей длине. а не максимальным напряжением…
Ну сами посчитайте — в каком варианте все вольтметры покажут одинаковое напряжение?

Или, где я ошибаюсь?
+
avatar
  • Rzzz
  • 03 мая 2017, 11:39
0
Одинаковое -да, будет. Но суммарные потери будут больше, они и так на лентах довольно большие из-за балластных резисторов и тонких токоведущих дорожек, поэтому, если стоит задача энергосбережения, то имеет смысл делать так. Неравномерность в теории будет, но довольно маленькая, скорее всего и не разглядишь.
+
avatar
0
Интересно. У меня 11 метров ленты WS2812 по 60 диодов на метр, запитанная через каждые 2.5 метра, потребляет 7 ампер, БП 80 Вт. Ваша больше, что у меня не так?
+
avatar
0
Тут есть белый диод
+
avatar
0
660*0,01 А = 6,6 А, так примерно и получится, если только один цвет на максимум.
+
avatar
  • Zuskin
  • 30 апреля 2017, 14:51
0
интересно можно с помощи цвета из этой ленты сделать часы?
+
avatar
  • Rzzz
  • 02 мая 2017, 15:01
0
Можно наклеить на фанерку, чтобы получилась пиксельная матрица, и рисовать на ней что угодно
+
avatar
  • zoom70
  • 30 апреля 2017, 16:41
0
Ваять бегущие огни на ПЛИС отличная идея. Я то в детстве на 573РФ2/2716 делал.
+
avatar
+3
Ребята, кто в теме. Какую ленту взять для потолочной подсветки в комнате покругу. Чтоб и красиво и недорого. RGB обязательно. Кто может помочь, в ЛС плиз чирканите. Спасибо.
+
avatar
+1
интересует такой же вопрос)) + какие то решения с контроллером и что можно им делать)
+
avatar
0
А меня чисто белый на кухню интересует, подскажите пожалуйста?
+
avatar
0
Я себе брал вот такую, три года уже светит.
p.s. ссылка немного порезалась, 5050, warm, ip67.
+
avatar
0
в далеком уже 2012 году брал такую — [ Huizhuo освещение ] 5 м водонепроницаемый RGB 5050 300 свет с 24 ключи ИК контроллер + блок питания за цельных 22,4 бакса
сейчас по той ссылке уже ничего конечно нет :(

Она до сих пор служит мне для фоновой подсветки в комнате — я ее пустил по периметру окна. Занавеска прекрасно рассеивает свет
тут можно глянуть —


www.youtube.com/watch?v=CJ0vYvfOghQ

контролера который в комплекте мне вполне хватает — поигрался немного режимами и в итоге осталось 2-3 которые периодически использую
чаще всего это плавная смена цветов как в ролике поэтому пульт использую очень редко а контроллер помнит последний режим