RSS блога
Подписка
Светодиодная RGBW лента на SK6812
- Цена: $ 6.64 - 39.58
- Перейти в магазин
Здесь уже было много обзоров лент на светодиодах WS2812, возможно кому-то будет интересна RGBW версия. Как и в прошлых версиях запускать буду от ПЛИС, знаю, что на ардуино проще и дешевле, но вот что было под рукой на том и тестирую.
Ниже приведён немного изменённый драйвер ws2812b. Я пробовал разные времянки, т.к. есть несколько версий даташитов, где китайцы путаются с номинальной длиной импульсов и возможным допуском на импульс и весь бит. В коде задержки исходя из тактовой частоты 50 МГц.
Никаких ambilight-подобных самоделок описывать не буду, кому понадобится пусть сам развлекается. Эта лента будет интересна скорее тем, кто хочет сделать разноцветную подсветку в комнате со всякими эффектами и возможностью включить полноценную белый не RGB подсветку.
Продавец предлагает версии с холодным, нейтральным и тёплым белым светом я выбрал RGBNW (нейтральный).
Для проверки ленты реализовал бегущие огни. Для динамического изменения параметров бегущих огней без пересинтезирования прошивки в проекты Xilinx ISE можно добавить блок VIO (Virtual Input-Output). Output в нём это выход блока в котором мы будем менять значения через графический интерфейс. Тут я использовал 48 бит 32 бита на цвет бегущей строки и 16 бит на длину.
И подключить его к ChipScope через ICON блок.
В ChipScope вместе с Logic Analizer (который я показывал в прошлом обзоре) это выглядит как-то так (значения цветов и длины можно менять в табличке и они сразу изменятся в проекте):
Я разбил общую шину 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 были сделаны так же).
Ниже приведён немного изменённый драйвер 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 были сделаны так же).
Самые обсуждаемые обзоры
+73 |
3550
145
|
+32 |
2727
53
|
+53 |
3719
68
|
+39 |
3150
42
|
Но ПЛИС…
А насчет с работы… Вот у меня лежит там пара десятков плат мертвых. На 90% — без шансов на восстановление. Их уже списали. А на каждой пара ПЛИСин (пусть старенькие Циклон2), ARM7, SRAM, кучка всяких стабилизаторов… Причем большая часть микросхем исправна. Ну, или почти исправна. Вот, давеча, пытался восстановить. Все отлично, но не работает CAN — что-то там с с этой ногой. Но остальные 143 работают. Для какой-то поделки ARM7… Хех, почему бы и нет?
В «моем» варианте в любой точке ленты будет 1R.
В «вашем» варианте — 1/4 будет на самом дальнем конце. В других точках — будет другое сопротивление. Так? Ну и как это будет способствовать равномерности свечения ленты? Никак.
В «моем» варианте — в любой точке будет 1/2R. Т.е. на все светодиоды придет одинаковое напряжение. Да, оно будет ниже, чем в «вашем» варианте в самой дальней точке. Но равномерность достигается постоянством параметров по всей длине. а не максимальным напряжением…
Ну сами посчитайте — в каком варианте все вольтметры покажут одинаковое напряжение?
Или, где я ошибаюсь?
p.s. ссылка немного порезалась, 5050, warm, ip67.
сейчас по той ссылке уже ничего конечно нет :(
Она до сих пор служит мне для фоновой подсветки в комнате — я ее пустил по периметру окна. Занавеска прекрасно рассеивает свет
тут можно глянуть —
www.youtube.com/watch?v=CJ0vYvfOghQ
контролера который в комплекте мне вполне хватает — поигрался немного режимами и в итоге осталось 2-3 которые периодически использую
чаще всего это плавная смена цветов как в ролике поэтому пульт использую очень редко а контроллер помнит последний режим