NS108-5050-16bit от Newstar

Views: 634


Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность такой шины  ограничена и в основном составляет 800 kbit. Эти светодиоды имеют 8 бит глубину яркости на один цвет и как многие заметили имеют очень грубый шаг на изменение яркости на 1 бит данных. Еще одним недостатков светиков этого типа есть очень высокий ток потребления даже если яркость светодиода установлена на ноль. Ещё одним неудобством для этих светодиодов, это было это формирование протока с использованием микроконтроллеров (МК), которая при программной реализации отнимало много машинного времени. Но в последнее время появилась возможность для формирования передачи данных использовать независимую периферию в новым МК, что решило эту проблему.

Следующим этапом развития этого типа светодиодов, стало появление светодиодов работающих по синхронной шине используемых два провода. Этими светодиодами стали APA102. Для передачи данных на эти светодиоды можно использовать стандартный периферийный модуль SPI, что значительно упростила передачу данных на любом микроконтроллере, а если в МК оснащён и модулем DMA, то вопрос с обновлением данных в светодиодах, которые используются в световых устройствах становиться риторическим. Скорость передачи данных в первых вариантах APA102 составлял до 2,5Mbit, а современных была доведена до 30Mdit, что дало возможность строить на дисплеях построенных на таких светодиодах аля-видеоэкраны, с намного меньшими затратами, которые требовались для подобных экранов на WS-ках. Но реальное видео, вывести на такие экраны, не представлялось возможным. В чем же основная причина?

Все знают эффект гашения света в кинотеатрах перед началом сеанса. Свет плавно и с определённой скорость гаситься до нуля позволяя глазам адаптироваться к требуемой освещённости. Такой эффект освещения на светодиодах которые используют глубину света 8 бит достичь невозможно. Один бит яркости на один цвет даёт значительный скачек освещённости. Второй недостаток ранее изготовляемых светодиодов была частота ШИМ, которая использовался для формирования яркости, в первых моделях она колебался от 1,9 до 2,7 KHz, в последних моделях она была доведена до 27-28 KHz, что значительно улучшило восприятие. И вот когда все улучшения в 8 битных системах были доведены до идеала, настало время 16 битных систем.

Сначала появились версии с шимом 1,9 KHz, а потом были выпущены версии до 27 KHz. Так же появились и WSки на 16 бит (но это другая тема). С мая 2020 китайский производитель Newstar начала выпуск светодиодов NS108. Это китайский производитель который производит, собирает светодиоды для знаменитых китайских марок, в общем все много производиться в Китае как оказывается в одном мести, и при том одно и тоже, но расходиться под разными названиями и брендами.

И так NS108 – что в нем хорошего и что плохого, это мои личные наблюдения.

Хорошего:

ШИМ – 27 КГц.

Скорость передачи данных – до 30 Мбит.

Экономичность – низкое потребление тока самим драйвером.

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

Логические уровни сигналов совместимы с ТТЛ, т.е можно напрямую управлять логикой питающейся от 3,3 вольта.

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

Заявлена защитата от статики дл 4 КВольт.

Плохого:

Низкое качество сборки – например, попались светодиоды у которых нет синего света, как оказалось просто отсутствует кристал синего света. Т.е. они не проходять проверку после сборки.

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

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

Для управления такими системами уже стоит использовать 16 или 32 битные микроконтроллеры.

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

 

Теперь более подробно. Что представляет собой светодиод:

Стандартный корпус 5050 с 6 выводами.

Напряжение питания 5 вольт. Уровни сигналов совместимы с ТТЛ, т.е. можно управлять логикой с питанием 3,3 вольта. Удобно размещать рядом с чипом фильтрующий конденсатор и вести шины данных и питания.

Схема подключения:

Все светодиоды включаются в цепочку, входные и выходные резисторы не обязательны, всё зависить от конструкции изделия, по большому счету, даже наличие конденсаторов рядом с каждым чипом не есть критически важно, как это необходимо для WSсок. Если предполагается сделать “удалённый экран” то рекомендуется для передачи данных использовать LVDS.

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

Формат передачи данных.

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

Пакет передачи данных разбит на три части. В начале идёт кадр синхронизации (старт), за ней кадры данных яркости светодиодов, потом кадр окончания*.

Кадр синхронизации представляет собой не менее 128 бит данных с низким уровнем. Т.е. необходимо передать 128 бит все нули. Светодиоды когда получают на вход 128 бит понимают, что после этого должны поступать данные и таким образов выполняется синхронизация внутренних сдвиговых регистров. 128 бит это 4 передачи 32 бита, если SPI настроен на передачу 32 битных данных.

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

В кадре данных следубщие 15 бит идущие за стартовым битом, это так называемые биты корректировки тока светодиода. Они разделены на 5 бит для каждого цвета, это даёт возможность регулировать яркость в 32 уровня от полного выключения до 100%. Данные распределены соответственно красный, зелёный и синий.

Далее идут данные яркости каждого цвета всего 48 бит, соответственно по 16 бит для каждого цвета соответственно красный, зелёный и синий.

Например, пакет передача данных, заданы значения – уровень тока для все светодиодов – 15, яркость –  красного – 20, зеленого – 500, синего – 7000.

От 0 до 1 маркера это стартовый бит.

От 1 до 2 маркера это 5 бит регулировка тока для красного светодиода.

От 2 до 3 маркера это 5 бит регулировка тока для зеленого светодиода.

От 3 до 4 маркера это 5 бит регулировка тока для синего светодиода.

От 4 до 5 маркера это 16 бит данные яркости для красного светодиода.

От 5 до 6 маркера это 16 бит данные яркости для зеленого светодиода.

От 6 до 7 маркера это 16 бит данные яркости для синего светодиода.

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

Пример последовательности для 4 светодиодов:

Кадр окончания – предназначен, чтобы закончить последовательность передачи данных. Его описание не понятно мне в даташите. Я реализовываю его подачей 128 бит равных нулю. Или от него можно отказаться, если вы выполняете постоянное обновление данных, при этом, данные переданные в текущей передачи, будут отображаться, при передачи следующей и так далее. В этом случае увеличавается скорость обновления дисплея.

Общий вид пакета выглядит так:

 


Рекомендованная структура данных для передачи данных управления светодиода при использовании 32 битного режима SPI:

typedef union
{
    struct
    {
        uint16_t lights_red; // яркость красного светодиода
        unsigned gain_red : 5; // 0-4 усиление красного светодиода
        unsigned gain_green : 5; // 5-9 усиление зеленого светодиода
        unsigned gain_blue : 5; // 10-14 усиление синего светодиода
        unsigned start_bit : 1; // 15 стартовый бит всегда 1
        
        uint16_t lights_blue; // яркость синего светодиода gain 
        uint16_t lights_green; // яркость зеленого светодиода
    };
    uint32_t data[2];// для удобства передачи данных
} _NS108;

_NS108 NS108[BUFF]; // описание буфера данных

Константы для построения буфера данных:

//------------------------------------------------------------------------------
/* Константы инициализации буфера данных для NS108*/
#define	NLEDs   512  // Количество светодиодов
#define	INTLED  2   // ДЛИТЕЛЬНОСТЬ инициализации 2*64=128бит (установите в ноль для варианта в самом конце описания)
#define	ENDLED  2   // ДЛИТЕЛЬНОСТЬ окончания 2*64=128бит
#define	BUFF    (NLEDs+INTLED+ENDLED)  // Общий размер буфера
//------------------------------------------------------------------------------

Пример функции инициализации светодиодов, выполняется гашения всех светодиодов:

//------------------------------------------------------------------------------
void NS108_init (void) // инициализация дисплея
{
    uint16_t a,b;
   
    // инициализация кадра СТАРТ
    for (a = 0; a < INTLED; a++)
    {
        NS108[a].data[0] = 0;
        NS108[a].data[1] = 0;
    }
    // инициализация ДАННЫХ
    for (a = 0; a < NLEDs; a++)
    {
        b = a + INTLED;// смещение
        NS108[b].data[0] = 0x80000000;
        NS108[b].data[1] = 0x00000000;
    }
    // инициализация кадра END
    for (a = BUFF-ENDLED; a < BUFF; a++)
    {
        NS108[a].data[0] = 0;
        NS108[a].data[1] = 0;
    }
    //передача данных в экран
    for (b = 0; b < BUFF; b++) // загрузка 4 лед
    {
        for (a = 0; a < 2; a++) // загрузка светодиода
        {
            SPI1_Exchange32bit ((uint32_t) NS108[b].data[a]);
        }
    }
}//-----------------------------------------------------------------------------

Тестирование:

Больше никаких нюансов в управлении светодиодами почти нет.

P.S. Все что описано выше сделано на основании технического описания. Но логика она ломает все описание. Дело в том, что если разобраться логически, то для нормальной загрузки данных нет необходимости в стартовом кадре, есть только необходимость в кадре остановки. Драйвер контролирует первый бит в передачи (стартовый бит в начале передачи), если он 1, то это данные, если он ноль синхронизация для вывода в ШИМ, и логически, битовые пакеты из 128 нулей должны подаваться после загрузки данных! Я проверил свои умозаключения и вот итог, в этом случае все работает идеально и без танце с бубном, и отпадает дополнительное время и работает все быстрее.

Скан передачи данных выглядит так, сначала данные, потом кадр загрузки:

Т.е. сначала передаём наши данные на нужное количество светодиодов, эти данные загружаются в буфер светодиодов, а для вывода на индикацию, передаём не менее 128 бит нулей (можно больше, достаточно передать 96 бит, такой вариант тоже работал). После этого данные выводяться для индикации. Для переделки кода в этот вариант, достаточно константу INTLED = 0! Эта технологи работает и для APA102, но почему в даташитах такое заумное описание, мне не понятно.

Значок

NS108-5050-16bit от Newstar - datasheet 1 МБ 52 downloads

NS108-5050-16bit от Newstar - datasheet ...

Это может быть интересно


  • Дисплей KD035C-3A подключение и управлениеДисплей KD035C-3A подключение и управление
    Views: 805 Дисплей KD035C-3A производиться компанией SHENZHEN STARTEK ELECTRONIC TECHNOLOGY CO.,LTD Характеристики Параметр Спецификация Единицы измерения Размер дисплея 70.08(H)*52.56(V) (3.5inch) mm Тип дисплея TFT active matrix Цветовая гамма 65K/262K colors Разрешение …
  • Development Boards PIC18F47Q84Development Boards PIC18F47Q84
    Views: 6042 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …
  • ch-светомузыка и AK4113ch-светомузыка и AK4113
    Views: 1460 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
  • Цифровой тахометр для автомобиля CH-С3300Цифровой тахометр для автомобиля CH-С3300
    Views: 1987  Тахометр Ch-С3300 предназначен для индикации и контроля оборотов, времени работы и максимальных оборотов развиваемых двигателем во время поездки. Датчиком может использоваться как обычный контактный прерыватель или выход датчика …
  • Проект с использованием MCC часть 14Проект с использованием MCC часть 14
    Views: 962 С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем …
  • CLUBBEST – reasoning on the visualization of music.CLUBBEST – reasoning on the visualization of music.
    Views: 275 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ.     Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
  • BMP280 – температура и атмосферное давление – учебный проектBMP280 – температура и атмосферное давление – учебный проект
    Views: 2199 Учебный проект на PIC32 и светодиодной панели P5 (2121)-168-6432-80 (32*64). Проект позволяет ознакомиться с простой графикой и с чтением давления и температуры с датчика BMP280. Для тестирования необходимо …
  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    Views: 3183 CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет …
  • LM317 и светодиодыLM317 и светодиоды
    Views: 8082 LM317 и светодиоды статья с переработанная с сайта http://invent-systems.narod.ru/LM317.htm Долговечность светодиодов определяется качеством изготовления кристалла, а для белых светодиодов еще и качеством люминофора. В процессе эксплуатации скорость деградации кристалла …
  • CAN – Controller Area NetworkCAN – Controller Area Network
    Views: 1217 Controller Area Network (CAN) первоначально был создан немецким поставщиком автомобильных систем Робертом Бош в середины 1980-х для автомобильной промышленности как метод для обеспечения возможности надежной последовательной связи. Целью было сделать автомобили более надежными, …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее

Комментарии

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.