Контроллер RGB подсветки панели приборов автомобиля
Модератор: boogyman
Re: Контроллер RGB подсветки панели приборов автомобиля
А тема ещё жива, а то есть вопрос к автору?!
Re:
Сам пока ещё нуб в написании прошивки, ток изучаю в режиме "чайника" хотя ещё лет пять назад купил оригинал AVR isp mk2, но некогда было. Долго искал что-то подобное для панели приборов своего рено логан и вспомнил эту тему, выбрал с 4 каналами. Алгоритм работы практически то что нужно: общее питание вешаем (в моём варианте) на постоянный плюс акума, "вход 1" (запуск стрелок (3 канал) и табла (1 канал) приборки) подключаем на ключ зажигания, "вход 2" (подсветку шкалы (2 канал) и стрелки (3 канал) приборки) подключаем на габариты, 4 канал на подсветка красного сектора тахометра, "вход к ручнику" можно так же подпитать к аварийным лампочкам. Схему автора поспешно реализовал в железе, прошил, протестил на RGB ленте и выяснилось, что после выборочного отключения "входов 1 и 2" зависает в цикличности 4 и 3 RGB каналы (поочередно загораются и тухнут). Так же в процессе "женитьбы с приборкой" столкнулся с двумя проблемами. Первая - принимая во внимание своеобразность своей приборки было принято решение использовать для подсветки самих стрелок (3 канал) мини RGB светодиоды с сотика ибо другие не влазиют,( пилить кожух и отражатель нет желания), но они оказались с общим минусом. То-есть в одном RGB канале? в моём случае 3-тим (для стрелок) я так понимаю мне нужно использовать P-Chhanel полевик с шунтом на плюс и логикой "0". Проблема вторая - нет припухания яркости всех каналов в режиме габаритов, а хотелось бы в моём варианте, ведь днём нужно видеть, что на табло (бак, температура и тд) и стрелки (которые не имеют люминесцентного покрытия из-за RGB подсветки) то-есть яркость на всю, а при наступлении темного времени суток будет утомлять высокая яркость табла и стрелок. В принципе можно и все входа и питание запитать вместе и настройками снизить общую яркость. Тогда в принципе можно освободить порты входа 1 и 2 за ненадобностью и пустить их к примеру на датчик спидометра и т.д. Но тогда днём свечения цифр будет яркое чтоб видеть их, а ночью получается опять же нужно снижать чтоб не слепило. То-есть опять не хватает снижения яркости по команде по входам к примеру "вход2". Я попытался загнать прошивку для тренировки в AVR Studio 7, а схему в Proteus и поиграться с логикой на 3 канал, да яркостью, но пробуя запуская тесты (эмуляции) валится куча ошибок. Вот я теперь в засаде, может кто поможет ? Нужно на канале 3 инвертировать RGB с лог. единицы, в лог. ноль. И сделать, что если "входе 2" лог. единица, второй и третий RGB каналы плавно разгорятся с соответствующей заданной задержкой и яркостью, а каналы первый и третий протухают (при этом имеют два режима регулировке яркости, для входа 1 и для входа 2). Ткните носом где рыть. ))) Спасибо.
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Контроллер RGB подсветки панели приборов автомобиля
Нужно на канале 3 инвертировать RGB с лог. единицы, в лог. ноль.
Этот кусок кода поменять
на
Этот кусок кода поменять
Код: Выделить всё
if (tick < red_pwm_3)
PORTC |= (1 << LED_RED_3);
else
PORTC &= ~(1 << LED_RED_3);
if (tick < green_pwm_3)
PORTC |= (1 << LED_GREEN_3);
else
PORTC &= ~(1 << LED_GREEN_3);
if (tick < blue_pwm_3)
PORTC |= (1 << LED_BLUE_3);
else
PORTC &= ~(1 << LED_BLUE_3);
Код: Выделить всё
if (tick < red_pwm_3)
PORTC &= ~(1 << LED_RED_3);
else
PORTC |= (1 << LED_RED_3);
if (tick < green_pwm_3)
PORTC &= ~(1 << LED_GREEN_3);
else
PORTC |= (1 << LED_GREEN_3);
if (tick < blue_pwm_3)
PORTC &= ~(1 << LED_BLUE_3);
else
PORTC |= (1 << LED_BLUE_3);
Re: Контроллер RGB подсветки панели приборов автомобиля
Спасибо за помощь!!! Завтра попробую на макете и в прогах. Я так подумал, что мне можно использовать родные шины питания (светодиодной) подсветки приборки, ведь панель штатно имеет функцию притухания информационного табло, туда и запитаю канал 1 и 3 (стрелку и табло), а канал 2 и 4 (шкала и красный сектор тахометра)на шину при включении подсветки. Хотя в схему функцию притухания на вход 2 нужно бы реализовать для приборок на лампочках.
Re: Контроллер RGB подсветки панели приборов автомобиля
Чет нечего у меня не вышло, ошибка при сборке. Наверно инвертирую на транзисторах.
Re: Контроллер RGB подсветки панели приборов автомобиля
Чета я уже голову сломал. Прошивку отредактировать не получилось, инвертировать сигнал с МК тоже не вышло, спалил по крыворукости МК и запаял вытравленную плату, Протеусу ума дать не могу, ругается и ошибки валит, эмуляция не идёт. Пробывал в Атмел studio 7 прошивку инвентировать, нифига не вышло, наверно не то тыкаю. В общем, машина без приборки. Может кто поможет прошивку инвертировать. Пробовал подключать нагрузку по 3 каналу в таких вариациях, верхняя правая это штатная, верхняя левая это я пробовал без изменения прошивки, а нижняя левая это для переделанной прошивки. Но чет не пошло, МК вспух. https://drive.google.com/file/d/1RZ-j0_ ... sp=sharing. Вот ошибки @echo Building file: $< и #include "hsv_to_rgb.h"AntonChip писал(а): ↑12 сен 2018, 19:37 Нужно на канале 3 инвертировать RGB с лог. единицы, в лог. ноль.
Этот кусок кода поменятьнаКод: Выделить всё
if (tick < red_pwm_3) PORTC |= (1 << LED_RED_3); else PORTC &= ~(1 << LED_RED_3); if (tick < green_pwm_3) PORTC |= (1 << LED_GREEN_3); else PORTC &= ~(1 << LED_GREEN_3); if (tick < blue_pwm_3) PORTC |= (1 << LED_BLUE_3); else PORTC &= ~(1 << LED_BLUE_3);
Код: Выделить всё
if (tick < red_pwm_3) PORTC &= ~(1 << LED_RED_3); else PORTC |= (1 << LED_RED_3); if (tick < green_pwm_3) PORTC &= ~(1 << LED_GREEN_3); else PORTC |= (1 << LED_GREEN_3); if (tick < blue_pwm_3) PORTC &= ~(1 << LED_BLUE_3); else PORTC |= (1 << LED_BLUE_3);