Поворотник бегущий огонь

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



Позволяет реализовать поворотник «бегущий огонь» с заполнением на 9 каналах.
Автоматически отключается от АКБ после выключения поворотников и не потребляет ток.
Имеет функцию удлинителя поворотов («лентяйка»).
Можно подключить лампу через встроенный полевой транзистор, так избавляемся от проблемы асинхронной работы бегущего огня и лампы поворотника. Время свечения лампы поворотника при этом можно менять в довольно большом диапазоне.
Отличается от версии 1 отсутствием удлинителя поворотов и возможностью регулировки скорости загорания модуля светодиодов для обеспечения синхронизма с сигналом поворотника.
В этой версии упразднена функция включения лампы поворотника от контроллера с регулировкой времени свечения.
Применяемые детали расписаны на схеме. Транзисторы нужно ставить на ток не менее тока нагрузки светодиодных модулей и напряжением не менее 20В. Рекомендую в качестве выходных транзисторов использовать n-канальные mosfet в корпусе SOT-23.
Платы разработаны в SL и DipTrace для всех трех версий.


Подключение
Необходимо подвести к плате питание +12В от АКБ. НЕ с ключа зажигания, а с АКБ. Это главный минус этой версии, почему и были сделаны вторая и третья.
Вывод IN L® подключается к штатной проводке автомобиля к проводу идущему на поворотник.
Светодиодные модули подключаются к выходам LED1-9 и светятся в соответствующей последовательности.
На вывод OUT L® подключается лампа поворотника, если лампа вообще остается иначе не подключаем ничего.
Регулировка времени горения лампы поворотника осуществляется установкой перемычки от вывода IN LED(X) к одному из выводов LED1-9. Чем выше номер вывода, тем дольше горит лампа.
Основным преимуществом этой версии является отсутствие необходимости в подключении платы к плюсу АКБ, что резко упрощает ее подключение. Но за удобства нужно платить.
По этой причине в данной версии и версии 2.1 отсутствует функция удлинителя поворотов.
Регулировка скорости заполнения огней настраивается установкой перемычки относительно массы на выводы SPEED1-5. Чем больше номер, тем медленнее заполнение. Регулировкой скорости заполнения осуществляется настройка времени горения модуля в такт лампам поворотников. Синхронизация автоматическая. В этой версии сохранена возможность подключения ламп поворотников через мосфет к контроллеру для регулировки времени горения.
В этой версии прошивка та-же самая, что и на 2.0, разница в том, что убран мосфет на лампу поворотника для вариантов реализации, когда лампа из поворотника убрана и работает только модуль светодиодов.

Небольшая демонстрация работы первой версии прошивки:
И вторая версия:
Вариантов применения в автомобиле может быть много, в зависимости от того, что именно Вы делаете.
Пара примеров подключения ниже.


Поворотник бегущий огонь + ДХО. Версия 3.1
Поворотник бегущий огонь + ДХО. Версия 3.1 Испытания и настройка.
Как сделать бегущий «умный» поворотник своими руками для автомобиля

Рассмотрим создание бегающего поворотника как на ауди, на примере фары от автомобиля Рено Клио. Сделаем поворотники и ДХО в одном устройстве.
Что для этого потребуется:
Светодиодная лента, состоящая из светодиодов ws2812b
Контроллер Arduino nano (можно использовать в любом другом формфакторе)
Автомобильное зарядное устройство для мобильных телефонов или любой преобразователь напряжения 12В->5В. Так как светодиодной ленте нужно напряжение в 5В, то это зарядное будем использовать в качестве преобразователя напряжения с 12В на 5В.
4 резистора 100 кОм и 4 резистора 47 кОм, в качестве делителя напряжения.
НОВЫЙ скетч, в котором количество диодов меняется переменно count качайте тут
Видео как делать и как это работает:
Бегущий поворотник, дхо

Всем привет, наткнулся на очень интересную статью про бегущие поворотники и дхо.
Статья не моя внизу скину ссылку на первоисточник.
Схема построена на МК Ардуино, в этом нет ничего сложного.
Очень интересная конструкция которая позволяет сильно приобразить Ваши поворотники. Для питания нужен преобразователь 12 => 5 вольт.
Можно использовать обазную зарядку для мобилки.

Для меня лучше подойдет скрытый вариант, который оставит место для других потребителей.

Для построение чудо поворотника необходимо: 4 резистора 100 кОм и 4 резистора 47 кОм, сама ардуино, а также отрезки адресной светодиодной ленты ws2812b(обычная не подойдет)

Для соединения вхес елементов в целое необходима пайка, я думаю с этим проблем не будет, схему подключить так чтобы напряжение на схему поступало от включения «зажигания».
Плюсовой провод от действующих поворотников подключаются к 5 и 6 контакту контроллера через делитель напряжения из резисторов. Аналогичным образом подключаются кнопки для дополнительных режимов работы контроллера
Прошивка контоллера
Для прошивки необходим usb кабель и компьютер, ноутбук.
НОВЫЙ скетч, в котором количество диодов меняется переменно count качайте тут.
Скачать готовый скетч в файле можете по этой ссылке.
Для работы с пиксельными светодиодами нужна будет библиотека . Установить ее можно будет следующим образом: Скетч -> Подключить библиотеку -> Управлять библиотеками. Далее в меню поиска ввести название библиотеки Adafruit_NeoPixel.h и нажать кнопку установить.
Как прошить ардуино, уже существует тысячи прекрасных постов поэтому я оставлю ссылку где подробно все расписано.
Весь код я оставлю ниже
#include // подключаем библиотеку
Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, 7, NEO_GRB + NEO_KHZ800); //Инициализируем первый поворотник 7 диодов на 7 цифровом выходе
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(7, 8, NEO_GRB + NEO_KHZ800);//Инициализируем второй поворотник 7 диодов на 8 цифровом выходе
void setup()
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
strip.begin();
strip.show();
strip2.begin();
strip2.show();
>
void loop()
if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
//Режим аварийной сигнализации, если на 5 и 6 пин приходит плюс
for(int k = 0; k < 3; k++)
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; i++)
for(int j = 0; j < i; j++)
if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
k = 0; // если во время мигания поворотника получаем еще плюcовой сигнал, то обнуяем счетчик, чтобы поворотник мигал еще как минимум 3 раза
>
strip.setPixelColor(j, strip.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip.show();
strip2.show();
>
for(int i = 0; i < 10; i++)
for(int j = 0; j < i; j++)
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip.setPixelColor(j-2, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j-1, strip.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j, strip.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-2, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-1, strip2.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip.show();
strip2.show();
>
>
>
if (digitalRead(5) == LOW and digitalRead(6) == HIGH)
// включается один поворотник
for(int k = 0; k < 3; k++)
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; i++)
for(int j = 0; j < i; j++)
if ((digitalRead(5) == LOW) and (digitalRead(6) == HIGH))
k = 0;
>
strip.setPixelColor(j, strip.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip.show();
>
for(int i = 0; i < 10; i++)
for(int j = 0; j < i; j++)
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip.setPixelColor(j-2, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j-1, strip.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j, strip.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip.show();
>
>
>
if (digitalRead(5) == HIGH and digitalRead(6) == LOW)
< // включаем второй поворотник
for(int k = 0; k < 3; k++)
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; i++)
for(int j = 0; j < i; j++)
if ((digitalRead(5) == HIGH) and (digitalRead(6) == LOW))
k = 0;
>
strip2.setPixelColor(j, strip2.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip2.show();
>
for(int i = 0; i < 10; i++)
for(int j = 0; j < i; j++)
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip2.setPixelColor(j-2, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-1, strip2.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
>
delay(60);
strip2.show();
>
>
>
if (digitalRead(3) == HIGH)
// режим спецсигналов, если на 3 пин подаем плюс
for(int j = 0; j < 16; j++)
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(255, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 255)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(20);
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(20);
>
for(int j = 0; j < 16; j++)
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 255)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(255, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(20);
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(20);
>
>
if (digitalRead(4) == HIGH)
// Режим стробоскова, если на 4 пин подаем питание
for(int j = 0; j < 24; j++)
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(255, 255, 255)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(15);
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(15);
>
for(int j = 0; j < 24; j++)
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(255, 255, 255)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(15);
for(int i = 0; i < 7; i++)
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
>
strip.show();
strip2.show();
delay(15);
>
>
if( digitalRead(3) == LOW and digitalRead(5) == LOW and digitalRead(6) == LOW and digitalRead(9) == LOW)
for(int i = 0; i < 8; i++)
// Зажигаем ходовые огни, если нетниодного сигнала
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip2.setPixelColor(i, strip2.Color(255, 255, 255));
>
strip.show();
strip2.show();
>
>
>
Я думаю что лучше будет смотрется с силиконовыми каналами

Поворотник станет еще более плавным и приятным.
Осталось дело за страшным сном — разборка фары )
Если вам понравится думаю иногда выкладывать подобные посты.
Ну а на сегодня у меня все. Всем добра)
Видео работы:
Ссылка на первоисточник: тыц
Бегущий поворотник.

Эта страничка самодельного бегущего поворотника. Если будет интерес и спрос, то проект получит обновление, и все материалы будут в конце этой статьи. Отдельную страницу для обновлений этого заводить нет смысла. Видео по работе данного поворотника смотрите в конце статьи.
Плюс данной схемы в том, что он работает без лишних проводов, подключается параллельно штатной лампе и ее можно не вынимать, все будет работать.
Схема подключения вот такая ( стабилизатор линейный ams1117-5 )

Либо, если диодов в схеме больше 10 то такая. Понижающий стабилизатор настроить на выходное напряжение 5 вольт!

В видео я упомянал, что с большим количеством диодов (больше 10) первая схема перегревается . Перегрев стабилизатора ( ams1117-5 ) с 16 диодаи наступает примерно через 3-5 минуты после включения при комнатной температуре. В жаркий день температура воздуха в багажнике окажется гораздо выше, и это стоит учитывать. Поэтому первую версию печатки я выложу, но собирать ее рекомендую только взвесив все за и против, либо проведя эксперимент. Добавление радиатора удинняет время непрерывной работы примерно на 1 минуту, так, что рассматривать этот вариант нужно с опаской.
При перегреве поворотник ведет себя не адекватно, вначале бежит как нужно, затем перестает «добегать» срабатывает защита и он погасает, далее повторяется. Длинна выбега все время уменьшается пока не наступает хаотичное мигание. Немного улучшить ситуацию можно включенными последовательно со схемой диодами (если чуть чуть не хвалило). На каждом диоде будет падение напряжения в 0,6-0,7 вольта. соответственно поставив 4-5 диодов на каждую платку, вы не только спасете схему от опасности переполюсовки, но и снизите тепловую нагрузку на стабилизатор на 25-35 процентов. Это решение скорее костыль (колхозом попахивает).
Вторая версия предназначена для пайки вот к такому модулю:
Брать лучше с танталовыми конденсаторами, а не с электролитами. Если не различаете их, то смотрите как выглядят они по ссылкам ниже. Это несколько ссылок, так как лоты у продавцов иногда исчезают, а следить за их наличием и каждый раз менять статью мне лениво, поэтому вот ссылки на одно и то же. Покупать именно эти лоты я не призываю, так как на aliexpress цены у лотов могут меняться, ищите дешевле. Внизу ссылки проверенных продавцов и минимальной ценой на момент написания статьи.
Стоит он примерно 50-65 рублей (на момент написания статьи), и на выходе способен выдавать до 3А, Но снимать больше 1.5-2А не советую, у него так же нет радиатора и может случиться таже ситуация, что произошла у меня. 1,5 А это примерно 25-30 диодов при белом свечении и 35-40 при желтом свечении, чего вполне достаточно на 1 поворотник. Выходное напряжение стабилизатора, перед подключением к схеме настроить переменным резистором, на стабилизаторе, на 5 вольт! Подключать к уже настроеному та 5 вольт стабилизатору!
Переключение режимов не предусмотрено, это поворотник, не думаю ,что смена режима кому то понадобится, тем более переключать придется для каждого поворотника отдельно. В архиве лежат исходники и бат файл для сборки. Исходники и прочие материалы смотрите здесь : http://r13-project.ru/files/arh/povorot_V0.1.zip
Пароль от архива:
r13-project.ru
Настройка прошивки осуществляется в файле main.c, он прокомментирован, в самом начале файла понятно, какой параметр за что отвечает.Скорость переключения придется подбирать экспериментально, так как с изменением количества диодов меняется и скорость анимации. Чем больше число, тем медленнее переключение.
Цвет настраивается указанием яркости для каждого цвета светодиода. Минимальная яркость диода (погашен) максимальная 255. Подобрать цвет можно в любом онлайн сервисе, например здесь www.csscolor.ru
Тыкаете в поле и получаете значения цыфр в формате RGB (яркость для каждого канала). например для желтого это будет 255, 255, 0
В исходниках как раз для этого случая и установлены параметры. Если что то будет непонятно, то задавайте вопросы в группе в VK
или на youtuube канале
Режимы меняются в этой строчке:
const unsigned char rezim=0; -это для бегущего поворотника
const unsigned char rezim=3; -это для стробоскопа. Нумерация идет с 0 а не с 1.
Прошивка настроена под микроконтроллер ATTINY45, если будете использовать ATTINY25 или ATTINY85, то потребуется править файл Makefile. Он открывается в любом текстовом редакторе, в самом начале указывается тип контроллера
DEVICE = attiny45
Если нужен ATTINY25 или ATTINY85, то эту строку необходимо будет подправить на DEVICE = attiny25 или DEVICE = attiny85.
Фьюзы устанавливать такие

Видео с эффектами и пояснениями: