Светодиодные фонари и световые приборы. Всё о светотехнике.
Изображения Дневники Группы Поиск
Вернуться   Форум FONAREVKA.RU Лаборатория Электроника и схемотехника Электроника
Расширенный поиск
Забыли пароль? Регистрация

  • О нашем проекте
  • Светотехника и световые приборы
  • Правила форума
Проект FONAREVKA.RU специализируется на предоставлении всей необходимой информации по светотехнике:

— светодиодные фонари;
— различные источники питания;
— разнообразные зарядные устройства;
— освещение помещений и наружное освещение;
— световые приборы для личного, пассажирского и грузового транспорта;
— специальные световые приборы для медицины, для растений, для аквариумов, для террариумов, а также аварийно-сигнальные световые приборы;
— альтернативные источники света;
— лазеры и лазерная техника.

Если у вас есть вопросы по выбору фонарей, аккумуляторов и зарядных устройств ознакомьтесь с FAQ от наших экспертов:

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Ответ  Создать новую тему
Просмотров в теме 39070   Ответов в теме 83   Подписчиков на тему 0   Добавили в закладки 0
Опции темы Поиск в этой теме
Старый 06.11.2010, 08:15 Автор темы   1
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию RGB индикатор заряда батареи на ATtiny45

Давно уже хочу собрать себе красивый RGB индикатор. И наконец-то собрал:
Вложение 2109Вложение 2110
Вот схема:
Вложение 2111
Т.к. на МК вечно не хватает лап - пришлось поизвращаться с подключением светодиодов. Если захочется заюзать готовый RGB светодиод - можно отключить ресет, и шить HV программатором...
Как он работает? Сложно... Программа 1,35кБ (ассемблер), из них 768 байт - база данных, сгенерированная специальным генератором с графического файла (цветовой схемы индикатора, нарисованной в пеинте, sPlan и т.п.), за что огромное спасибо SviMik'у. В индикатор заложена несвойственная им плавность. Все эффекты, анимация, включение, выключение, отображение заряда батареи и т.п. - плавные. Имеет два вывода для управления. Если на PON подать высокий логический - индикатор начинает работать. По-умолчанию есть медленная фоновая анимация голубого цвета. Если подтянуть CHRG к массе - анимация меняется на более быструю белую. Это режим заряда. Вывод предназначен для подключения к контроллеру заряда батареи. Если же сигнала нет ни на одном выводе - индикатор засыпает. При сильном разряде батареи включается быстрая "чёрная" анимация. Приоритет у неё выше фоновой, но ниже зарядной.

На счёт цветовой схемы - тут всё ещё сложнее. Вот графический файл, о котором я упоминал выше:
Вложение 2112
Это 6 картинок, разрешением ровно 256х256 пикселов, вплотную располагающиеся друг возле друга. Да, прям художество какое-то. Напоминает квадрат Малевича .
Как в них информация закодирована? По горизонтали напряжение батареи, а по вертикали яркость канала. АЦП меряет напряжение в пределах 3...4,2V с разрядностью в 8 бит (256 ступенек), и ШИМ тоже 8-ми разрядный. Поэтому и картинки 256х256.
Что на них? Справа три картинки с кривыми компенсации яркости светодиодов от напряжения питания. По одной на канал. Стабилизатора напряжения то нет, вот и приходится извращаться. Да и баланс белого ими удобно выставлять. Светодиоды то далеко не с одной яркостью светят, а в этом индикаторе правильная цветопередача важна. Слева непосредственно сама цветовая схема. В данном случае по мере разряда батареи цвет плавно ползёт с фиолетового к красному. Фигуры такие кривые из-за кривого графика зависимости напряжения батареи от уровня заряда. Программа левую и правую части этого рисунка усредняет, поэтому без разницы с какой стороны что располагать. Кстати о программе, написал её SviMik, за что я его уже поблагодарил. Вот ссылка на её скачивание: http://svimik.com/dbgen_win...

К сожалению видео пока заснять не могу, нет нормальных светодиодов, жду пока привезут 0603. Возможно Fonarik меня обгонит. Он тоже успел собрать этот индикатор, но теперь чухает репу как его прошить ...

Вот архив со всякой требухой: Вложение 2113

Схема, печатка и цветовая схема в редактируемых форматах. Ну и конечно же исходник, hex, и даже батники для дудки...
Схему можно здорово упростить, но есть она не просит и меньше места от этого занимать не станет...

P.S. Наверняка буду ещё допиливать его, так что не советую брать информацию с этого поста, если ниже нет по-новее...
Миниатюры
Нажмите на изображение для увеличения
Название: PB053909.JPG
Просмотров: 2073
Размер:	231.9 Кб
ID:	253600 Нажмите на изображение для увеличения
Название: PB053911.JPG
Просмотров: 1844
Размер:	224.4 Кб
ID:	253601 Нажмите на изображение для увеличения
Название: Индикатор.PNG
Просмотров: 3117
Размер:	30.6 Кб
ID:	253602 Нажмите на изображение для увеличения
Название: main.PNG
Просмотров: 1666
Размер:	17.8 Кб
ID:	253603
Вложения
Тип файла: rar Индикатор на ATtiny25.rar (17.3 Кб, 538 просмотров)
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 08:35   2
lasers_Vik
Ветеран Фонарёвки
 
Аватар для lasers_Vik
 
Регистрация: 24.06.2010
Последняя активность: 09.02.2021 12:53
Сообщений: 1121
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Vik с помощью ICQ
По умолчанию

Круто!!! Ты как всегда в своем репертуаре
__________________

ICQ#: 496612593
lasers_Vik вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:07   3
ABA
Ветеран Фонарёвки
 
Аватар для ABA
 
Регистрация: 25.02.2010
Последняя активность: 11.09.2013 18:36
Сообщений: 1408
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Для полноты восприятия видео явно не хватает.
ABA вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:17   4
lasers_Российская Федерация
Ветеран Фонарёвки
 
Аватар для lasers_Российская Федерация
 
Регистрация: 15.02.2010
Последняя активность: 20.06.2019 01:21
Сообщений: 1411
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Обалденно! Просто обалденно! Я бы выразился более конкретно, но боюсь меня зацензурят! Давно я мечтал о такой штуке, она просто безупречна... Но вот как и чем её шить с ноута, тоже для меня вопрос... Может кто сможет прошить и выслать отдельно несколько контроллеров? за монету разумеется...
lasers_Российская Федерация вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:18   5
lasers_Technic47
Ветеран Фонарёвки
 
Аватар для lasers_Technic47
 
Регистрация: 23.03.2010
Последняя активность: 06.05.2018 15:37
Сообщений: 1589
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Technic47 с помощью ICQ
По умолчанию

+1 к выслать.
Штучка вышла на славу. Интересно посмотреть на доработанный вариант
lasers_Technic47 вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:37   6
lasers_Vik
Ветеран Фонарёвки
 
Аватар для lasers_Vik
 
Регистрация: 24.06.2010
Последняя активность: 09.02.2021 12:53
Сообщений: 1121
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Vik с помощью ICQ
По умолчанию

Я бы тоже целую такую штучку купил бы
lasers_Vik вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 14:09 Автор темы   7
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Я шью вот этим программатором: http://www.lasers.org.ru/fo.... USB'шный, так что и с ноутом без проблем работает. И простой очень. К нему и батники я выложил. Двойной клик и прошивка уже заливается... Не советую связываться с этим индикатором без программатора. Наверняка каждому захочется что-то поменять на свой вкус...

Да, забыл сказать. Программа не умеет компенсировать дрейф яркости светиков от напряжения питания в анимации. Основной цвет берёт из базы, там всё предусмотрено (кроме температурного дрейфа напряжения батареи), а вот второй цвет, в который анимация плавно переходит, фиксированный. Так что например белый цвет при максимальном заряде имеет синий оттенок, а при минимальном красный. Я пока незнаю как это устранить. Возможно ещё одну базу придётся лепить, причём сжатую. И отдельно в ней хранить компенсацию...
Вообще компенсация это один сплошной костыль. Может в схему вместо полевика влеплю ULDO стабилизатор на 3V. Но тогда могут возникнуть проблемы с синим светиком, которому требуется напряжение выше 3V...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 18:02   8
lasers_Intruder
Лазеростроитель
 
Регистрация: 06.04.2010
Последняя активность: 21.03.2015 14:21
Сообщений: 172
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Intruder с помощью ICQ
По умолчанию

+1))
lasers_Intruder вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 19:06 Автор темы   9
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Добавил в первый пост ссылку на скачивание генератора БД.

UPD:
Обновление программы, версия 1,1: Вложение 2124.
В архиве батники и дудка. Всё готово для быстрой прошивки этим программатором: программатор на FT232RL. Сначала прошиваются фьюзы, затем программа...
Потребление в дежурке снижено до 30мкА (Почти всё потребление приходится на внешний делитель напряжения в схеме). На днях перепишу программу под 45-ю тиньку. Разделю БД на две части. Компенсация яркости будет отдельная, чтоб ею мог пользоваться не только АЦП, но и анимация...

Индикатором сегодня всю ночь играется и Fonarik. Пока вроде очень доволен ...
Вложения
Тип файла: rar Indikator.rar (217.0 Кб, 435 просмотров)
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 08.11.2010, 20:30   10
lasers_Fonarik
Увлеченный
 
Аватар для lasers_Fonarik
 
Регистрация: 18.02.2010
Последняя активность: 05.03.2014 20:17
Сообщений: 371
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Fonarik с помощью ICQ
По умолчанию

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


lasers_Fonarik вне форума   Ответить с цитированием Вверх
Старый 08.11.2010, 23:58 Автор темы   11
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Да элементарщина там. Достаточно понять как графики устроены. А они устроены как... обычные графики .
Свимик же сразу въехал как у меня база устроена, и по рисунку программу написал. Причём универсальную...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 09.11.2010, 00:35   12
lasers_Fonarik
Увлеченный
 
Аватар для lasers_Fonarik
 
Регистрация: 18.02.2010
Последняя активность: 05.03.2014 20:17
Сообщений: 371
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Fonarik с помощью ICQ
По умолчанию

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Да элементарщина там. Достаточно понять как графики устроены. А они устроены как... обычные графики .
Свимик же сразу въехал как у меня база устроена, и по рисунку программу написал. Причём универсальную...
ну у вас и опыта побольше...
не могу я вьехать хоть убей
lasers_Fonarik вне форума   Ответить с цитированием Вверх
Старый 09.11.2010, 09:17   13
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Ryazanec с помощью ICQ
По умолчанию

RGB смотри сверху вниз и поймешь какие цветта в каких пропорциях мешаются.
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 09.11.2010, 11:25   14
lasers_chem_kot
Завсегдатай Фонарёвки
 
Аватар для lasers_chem_kot
 
Регистрация: 13.03.2010
Последняя активность: 15.08.2015 05:45
Сообщений: 522
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_chem_kot с помощью ICQ
По умолчанию

Тоже чтоли собрать...тинька45 где-то была вроде... к несчастью только - тонер в принтере кончился
lasers_chem_kot вне форума   Ответить с цитированием Вверх
Старый 06.01.2011, 01:15   15
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Ryazanec с помощью ICQ
По умолчанию

Собрал и программатор и индикатор классно, проверял правда на 3х светодиодах простых, СМД в городе есть но нет зеленого

анимация классная, единственное что бы я подправил это длительность гашения индикатора, секунды 3-4 сделал бы но это моё имхо.

Прошился и заработал индикатор сразу, я ненашел только резистор на 30 килоом, вместо него сейчас 33К , перенастроить надо будет. Резисторов у меня нету с плат разных ковыряю. Да и вместо полевика перемычка, их у меня тоже нет
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 06.01.2011, 07:35   16
Mason
Завсегдатай Фонарёвки
 
Аватар для Mason
 
Регистрация: 19.11.2010
Последняя активность: 27.09.2016 17:51
Сообщений: 564
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для Mason с помощью ICQ
По умолчанию

а печатку еже сотворил отсталось споять и прошить
Mason вне форума   Ответить с цитированием Вверх
Старый 13.01.2011, 11:12 Автор темы   17
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Собрал версию по-лучше, которую уже можно и в массы пускать (некоторые моменты в предыдущей меня не устраивают). Вот новая схема:
Вложение 3181
- Печатка чуть компактнее (8х9мм).
- ШИМ реализован нормально. Частота кадров немного меньше (к ней привязаны и скорости гашения, включения, анимации и т.п.), но работает куда мягче и эффективнее. Можно теперь юзать и обычные RGB светики с общим анодом или катодом.
- Отдельная база для компенсации яркости светиков от напряжения питания. Теперь и анимация не меняет свой цвет и яркость от напряжения питания.
- Пришлось пожертвовать RESET'ом, поэтому перепрошить без восстановителя фьюзов (или HV программатора) не получится. Но схему восстановителя я выкладывал, и программа для этой задачи уже есть...
- Полевик заменил на более высокоомный, и убрал резистор на 4,7Ом. Вместо него теперь сопротивление канала полевика...

Вот текущий код для любопытных*:
Код:
;Программа для RGB индикатора заряда Li-ion батареи на ATtiny45 (8MHz)

	.INCLUDE "tn45def.inc"

;Векторы прерываний

	rjmp	RESET
	reti
	reti
	reti
	reti
	rjmp	Over0
	reti
	reti
	reti
	reti
	rjmp	CompA0
	reti
	reti
	reti
	reti


;Конфигурация

RESET:	Ldi	R16, HIGH(RAMEND)	;инициализация стека
	out	SPH, R16
	Ldi	R16, LOW(RAMEND)
	out	SPL, R16

	ldi	R16, 0b10000000	;Отключить аналоговый компаратор
	out	ACSR, R16

	ldi	R16, 0b00010000	;Выключить цифровой входной буфер на PB4
	out	DIDR0, R16

	ldi	R16, 0b10000010	;ИОН 1,1V, измерение на PB4
	out	ADMUX, R16

	ldi	R16, 0b00000100	;Запуск таймера0, clk/256
	out	TCCR0B, R16

	ldi	R16, 0b00010010	;Включение CompA0 и Over0
	out	TIMSK, R16

	ldi	R16, 0b00100000	;PB5 - подтягивание
	out	PORTB, R16

	ldi	R16, 0b00000111	;PB0, PB1 и PB2 - выходы
	out	DDRB, R16

	ldi	R16, 0b00101000	;PCI_0 на PB3 и PB5
	out	PCMSK, R16

	ldi	R16, 0b00100000	;включить PCI_0
	out	GIMSK, R16




;Спящий режим

loop:	cli
	sbis	PINB, 5
	rjmp	pon
	sbic	PINB, 3
	rjmp	pon
	sbic	GPIOR1, 2
	rjmp	pon
	tst	R7
	brne	pon
	tst	R8
	brne	pon
	tst	R9
	brne	pon

	clr	R16		;Выключить АЦП
	out	ADCSRA, R16
	ldi	R17, 0b10110000
	ldi	R16, 0b10110100	;BOD Sleep, Sleep, режим Power-down, BOD Sleep Enable
	out	MCUCR, R16
	out	MCUCR, R17	;BOD Sleep, Sleep, режим Power-down
	sei
	Sleep

pon:	cli
	ldi	R16, 0b00100000	;Sleep, режим Idle
	out	MCUCR, R16
	ldi	R16, 0b10000110	;Включить АЦП, тактовая clk/64
	out	ADCSRA, R16
	sei
	Sleep
	rjmp	loop




;Праграммный ШИМ RGB каналов

Over0:	ldi	R16, 0b10000001	;Сбросить и остановить предделитель
	out	GTCCR, R16

	clr	R16		;Сбросить таймер
	out	TCNT0, R16

	in	R16, TIFR	;Убрать флаг CompA0
	andi	R16, 0b00010000
	out	TIFR, R16

	sbis	PINB, 5		;Корректное выключение
	rjmp	oka
	sbic	PINB, 3
	rjmp	oka
	clr	R1
	clr	R2
	clr	R3
	cbi	GPIOR0, 0
	rjmp	pwm


oka:	in	R30, ADCL	;Подготовка данных с АЦП
	in	R31, ADCH

	subi	R30, 0x84
	sbci	R31, 0x02
	brcc	okv
	clr	R30
	clr	R31
	rjmp	okv1
okv:	tst	R31
	breq	okv1
	ser	R30
	clr	R31

okv1:	cpi	R30, 108	;Вкл/выкл анимации севшей батареи
	brcc	hibat
	sbi	GPIOR0, 0
	rjmp	lobat
hibat:	cpi	R30, 118
	brcs	lobat
	cbi	GPIOR0, 0

lobat:	mov	R16, R30	;Загрузка данных RGB индикатора
	clr	R17

	lsl	R30		;x6
	rol	R31
	lsl	R30
	rol	R31
	add	R30, R16
	adc	R31, R17
	add	R30, R16
	adc	R31, R17

	subi	R31, -0xA	;+2560

	lpm
	mov	R1, R0		;Загрузить Red

	ldi	R16, 1
	add	R30, R16
	adc	R31, R17
	lpm
	mov	R2, R0		;Загрузить Green

	add	R30, R16
	adc	R31, R17
	lpm
	mov	R3, R0		;Загрузить Blue

	add	R30, R16
	adc	R31, R17
	lpm
	mov	R4, R0		;Загрузить Red_comp

	add	R30, R16
	adc	R31, R17
	lpm
	mov	R5, R0		;Загрузить Green_comp

	add	R30, R16
	adc	R31, R17
	lpm
	mov	R6, R0		;Загрузить Blue_comp


	;Функция управления анимацией

pwm:	sbic	PINB, 5		;Загрузить 3-й канал, если бит сброшен
	rjmp	clrm3

	sbic	GPIOR1, 5	;Загрузить, если не загружен
	rjmp	setm1
	clr	R28
	out	GPIOR1, R28

	ldi	R25, 255	;Цвет анимации 3-го канала (заряд батареи)
	ldi	R26, 255
	ldi	R27, 255
	ldi	R29, 2		;Скорость анимации
	sbi	GPIOR1, 5	;Включить анимацию
	rjmp	setm


clrm3:	sbis	GPIOR0, 0	;Загрузить 2-й канал, если бит установлен
	rjmp	clrm2

	sbic	GPIOR1, 4	;Загрузить, если не загружен
	rjmp	setm1
	clr	R28
	out	GPIOR1, R28

	ldi	R25, 0		;Цвет анимации 2-го канала (низкий заряд батареи)
	ldi	R26, 0
	ldi	R27, 0
	ldi	R29, 3		;Скорость анимации
	sbi	GPIOR1, 4	;Включить анимацию
	rjmp	setm


clrm2:	sbis	PINB, 3		;Загрузить 1-й канал, если бит установлен
	rjmp	clrm1

	sbic	GPIOR1, 3	;Загрузить, если не загружен
	rjmp	setm1
	clr	R28
	out	GPIOR1, R28

	ldi	R25, 0		;Цвет анимации 1-го канала (фон)
	ldi	R26, 255
	ldi	R27, 255
	ldi	R29, 1		;Скорость анимации
	sbi	GPIOR1, 3	;Включить анимацию
	rjmp	setm


clrm1:	clr	R28		;Корректное выключение анимации
	out	GPIOR1, R28
	mov	R24, R28
	rjmp	red

setm:	sbi	GPIOR1, 2


setm1:	sbic	GPIOR1, 1	;Увеличивать множитель, если 1-й бит сброшен
	rjmp	lessm		;Иначе уменьшать

	add	R28, R29
	brcc	okm
	ser	R28
	mov	R24, R28
	ldi	R28, 127
	in	R16, GPIOR1	;Инвертировать 0-й бит
	ldi	R17, 0b00000001
	eor	R16, R17
	out	GPIOR1, R16
	sbic	GPIOR1, 0
	rjmp	red
	sbi	GPIOR1, 1
	ser	R28
	rjmp	red

lessm:	sub	R28, R29
	brcc	okm
	clr	R28
	mov	R24, R28
	ldi	R28, 127
	in	R16, GPIOR1	;Инвертировать 0-й бит
	ldi	R17, 0b00000001
	eor	R16, R17
	out	GPIOR1, R16
	sbic	GPIOR1, 0
	rjmp	red
	clr	R28
	out	GPIOR1, R28
	rjmp	red

okm:	sbis	GPIOR1, 0
	mov	R24, R28



	;R1 - Red_main
	;R2 - Green_main
	;R3 - Blue_main

	;R4 - Red_comp
	;R5 - Green_comp
	;R6 - Blue_comp

	;R7 - Red_damped
	;R8 - Green_damped
	;R9 - Blue_damped

	;R25 - Red_mixing
	;R26 - Green_mixing
	;R27 - Blue_mixing

	;R24 - color_ratio
	;R28 - Loop_ratio
	;R29 - speed_ratio


	;Функция расчёта длительности импульсов каналов

red:	mov	R10, R1
	mov	R17, R4
	mov	R11, R7
	mov	R12, R25
	rcall	anima
	mov	R7, R11

	mov	R10, R2		;green
	mov	R17, R5
	mov	R11, R8
	mov	R12, R26
	rcall	anima
	mov	R8, R11

	mov	R10, R3		;blue
	mov	R17, R6
	mov	R11, R9
	mov	R12, R27
	rcall	anima
	mov	R9, R11


	mov	R16, R8		;Вычисление канала с наименьшей длительностью
	dec	R16
	dec	R7
	dec	R9

	cp	R9, R16
	brcc	more1
	mov	R16, R9
more1:	cp	R7, R16
	brcc	more2
	mov	R16, R7

more2:	inc	R16
	inc	R7
	inc	R9

	out	OCR0A, R16	;Загрузка канала с наименьшей длительностью

	tst	R7		;Включение каналов
	breq	zeror
	sbi	PORTB, 0	;red
zeror:	tst	R8
	breq	zerog
	sbi	PORTB, 1	;green
zerog:	tst	R9
	breq	zerob
	sbi	PORTB, 2	;blue

zerob:	clr	R16
	out	GTCCR, R16	;Запустить предделитель
	sbi	ADCSRA, 6	;Start Conversion
	reti



anima:	sbis	GPIOR1, 2	;Пропустить анимирование, если ноль
	rjmp	damper

	cp	R10, R12	;Анимирование
	breq	damper		;Перейти к компенсации, если равно
	brcs	lessa		;Перейти если main < mixing

	mov	R14, R10	;main - mixing = X
	sub	R14, R12
	mov	R13, R24
	rcall	mpy8u1		;( X x color_ratio ) / 255 = Y
	sub	R10, R15	;main - Y = main
	rjmp	damper


lessa:	mov	R14, R12	;mixing - main = X
	sub	R14, R10
	mov	R13, R24
	rcall	mpy8u1		;( X x color_ratio ) / 255 = Y
	add	R10, R15	;main + Y = main


damper:	mov	R13, R17	;Компенсация зависимости яркости от напряжения питания
	mov	R14, R10
	rcall	mpy8u1		;R15 <- R10 x R17 / 255


	cp	R15, R11	;Сглаживание цветопередачи
	breq	loadd		;Перейти к загрузке, если равно
	brcs	lessd		;Перейти если main < damped

	mov	R16, R15	;Увеличить damped на 1/16 разницы между main и damped
	sub	R16, R11
	lsr	R16
	lsr	R16
	lsr	R16
	lsr	R16
	tst	R16
	brne	okd
	inc	R16
okd:	add	R11, R16
	ret

lessd:	mov	R16, R11	;Уменьшить damped на 1/16 разницы между main и damped
	sub	R16, R15
	lsr	R16
	lsr	R16
	lsr	R16
	lsr	R16
	tst	R16
	brne	okd1
	inc	R16
okd1:	sub	R11, R16
loadd:	ret



mpy8u1:	clr	R15		;R15 <- R14 x R13 / 255
	ldi	R16, 8
	lsr	R14
m8u_0:	brcc	m8u_1
	add 	R15, R13
m8u_1:	ror	R15
	ror	R14
	dec	R16
	brne	m8u_0
	tst	R14
	breq	m8u_2
	inc	R15
m8u_2:	ret



;Выключение каналов

compA0:	in	R16, TCNT0
	cp	R16, R7
	brcs	ron
	cbi	PORTB, 0	;red
ron:	cp	R16, R8
	brcs	gon
	cbi	PORTB, 1	;green
gon:	cp	R16, R9
	brcs	bon
	cbi	PORTB, 2	;blue

bon:	in	R16, PORTB	;Загрузка в компаратор следующего значения
	andi	R16, 0b111

	cpi	R16, 0b001
	brne	mach1
	out	OCR0A, R7
	reti

mach1:	cpi	R16, 0b010
	brne	mach2
	out	OCR0A, R8
	reti

mach2:	cpi	R16, 0b011
	brne	mach3
	cp	R7, R8
	brcc	machg
	out	OCR0A, R7
	reti

mach3:	cpi	R16, 0b100
	brne	mach4
	out	OCR0A, R9
	reti

mach4:	cpi	R16, 0b101
	brne	mach5
	cp	R7, R9
	brcc	machb
	out	OCR0A, R7
	reti

mach5:	cp	R8, R9		;0b110
	brcc	machb
machg:	out	OCR0A, R8
	reti
machb:	out	OCR0A, R9
	reti



	.ORG	0x500		;Начало массива RGB индикатора (последние 1536 байт памяти)

	     ;R    G    B   RC   GC   BC    R    G    B   RC   GC   BC
	.db 255,   0,   0, 246, 255, 255, 255,   1,   0, 246, 255, 255 ;0
	.db 254,   1,   0, 245, 251, 252, 254,   2,   0, 245, 246, 247 ;2
	.db 253,   2,   0, 244, 243, 243, 253,   3,   0, 244, 240, 240 ;4
	.db 252,   3,   0, 243, 238, 236, 251,   4,   0, 243, 235, 234 ;6
	.db 251,   5,   0, 242, 233, 231, 250,   5,   0, 242, 231, 229 ;8
	.db 250,   6,   0, 241, 229, 227, 249,   6,   0, 241, 227, 225 ;10
	.db 248,   7,   0, 240, 226, 223, 248,   7,   0, 240, 224, 221 ;12
	.db 247,   8,   0, 239, 223, 219, 246,   9,   0, 239, 221, 218 ;14
	.db 246,   9,   0, 238, 220, 216, 245,  10,   0, 238, 218, 214 ;16
	.db 244,  11,   0, 237, 217, 213, 244,  12,   0, 237, 215, 211 ;18
	.db 243,  12,   0, 236, 214, 210, 242,  13,   0, 236, 213, 208 ;20
	.db 241,  14,   0, 235, 211, 207, 241,  15,   0, 235, 210, 205 ;22
	.db 240,  15,   0, 234, 209, 204, 239,  16,   0, 234, 207, 203 ;24
	.db 238,  17,   0, 233, 206, 202, 237,  18,   0, 233, 205, 200 ;26
	.db 236,  19,   0, 232, 204, 199, 235,  20,   0, 232, 202, 198 ;28
	.db 235,  21,   0, 231, 201, 197, 234,  21,   0, 231, 200, 195 ;30
	.db 233,  22,   0, 230, 199, 194, 232,  23,   0, 230, 198, 193 ;32
	.db 231,  24,   0, 229, 197, 192, 230,  25,   0, 229, 196, 191 ;34
	.db 229,  26,   0, 228, 195, 190, 228,  27,   0, 228, 194, 189 ;36
	.db 227,  28,   0, 228, 193, 188, 226,  29,   0, 227, 192, 187 ;38
	.db 225,  30,   0, 227, 191, 185, 224,  31,   0, 226, 190, 184 ;40
	.db 223,  32,   0, 226, 189, 183, 222,  33,   0, 225, 188, 182 ;42
	.db 221,  34,   0, 225, 187, 181, 220,  36,   0, 224, 187, 180 ;44
	.db 219,  37,   0, 224, 186, 179, 217,  38,   0, 223, 185, 178 ;46
	.db 216,  39,   0, 223, 184, 177, 215,  40,   0, 222, 183, 177 ;48
	.db 214,  42,   0, 222, 182, 176, 213,  43,   0, 221, 181, 175 ;50
	.db 211,  44,   0, 221, 180, 174, 210,  45,   0, 220, 179, 173 ;52
	.db 209,  46,   0, 220, 178, 172, 208,  48,   0, 219, 178, 171 ;54
	.db 206,  49,   0, 219, 177, 170, 205,  51,   0, 218, 176, 170 ;56
	.db 204,  52,   0, 218, 175, 169, 202,  53,   0, 217, 174, 168 ;58
	.db 201,  55,   0, 217, 173, 167, 199,  56,   0, 216, 173, 166 ;60
	.db 198,  58,   0, 216, 172, 165, 197,  59,   0, 215, 171, 164 ;62
	.db 195,  60,   0, 215, 170, 164, 194,  62,   0, 214, 170, 163 ;64
	.db 192,  63,   0, 214, 169, 162, 191,  65,   0, 213, 168, 161 ;66
	.db 189,  67,   0, 213, 168, 161, 187,  68,   0, 212, 167, 160 ;68
	.db 186,  70,   0, 212, 166, 159, 184,  72,   0, 211, 165, 158 ;70
	.db 183,  73,   0, 211, 165, 157, 181,  75,   0, 211, 164, 157 ;72
	.db 179,  77,   0, 210, 163, 156, 178,  78,   0, 210, 163, 155 ;74
	.db 176,  80,   0, 209, 162, 155, 174,  82,   0, 209, 161, 154 ;76
	.db 172,  84,   0, 208, 161, 153, 170,  86,   0, 208, 160, 152 ;78
	.db 168,  88,   0, 207, 159, 152, 166,  90,   0, 207, 158, 151 ;80
	.db 164,  92,   0, 206, 158, 150, 162,  94,   0, 206, 157, 150 ;82
	.db 160,  96,   0, 205, 156, 149, 158,  99,   0, 205, 156, 148 ;84
	.db 156, 101,   0, 204, 155, 148, 154, 103,   0, 204, 155, 147 ;86
	.db 152, 105,   0, 203, 154, 146, 150, 107,   0, 203, 153, 146 ;88
	.db 147, 110,   0, 202, 153, 145, 145, 112,   0, 202, 152, 144 ;90
	.db 142, 114,   0, 201, 152, 144, 140, 117,   0, 201, 151, 143 ;92
	.db 138, 119,   0, 200, 150, 142, 135, 122,   0, 200, 150, 142 ;94
	.db 133, 124,   0, 199, 149, 141, 130, 127,   0, 199, 149, 141 ;96
	.db 127, 130,   0, 198, 148, 140, 124, 133,   0, 198, 148, 139 ;98
	.db 121, 136,   0, 197, 147, 139, 119, 139,   0, 197, 146, 138 ;100
	.db 116, 142,   0, 196, 146, 138, 114, 145,   0, 196, 145, 137 ;102
	.db 111, 148,   0, 195, 145, 136, 107, 151,   0, 195, 144, 136 ;104
	.db 103, 155,   0, 194, 143, 135, 100, 159,   0, 194, 143, 135 ;106
	.db  96, 163,   0, 193, 142, 134,  92, 166,   0, 193, 142, 133 ;108
	.db  88, 170,   0, 193, 141, 133,  84, 174,   0, 192, 141, 132 ;110
	.db  80, 178,   0, 192, 140, 132,  77, 182,   0, 191, 140, 131 ;112
	.db  73, 187,   0, 191, 139, 131,  68, 192,   0, 190, 139, 130 ;114
	.db  64, 198,   0, 190, 138, 130,  58, 203,   0, 189, 138, 129 ;116
	.db  53, 208,   0, 189, 137, 128,  47, 214,   0, 188, 137, 128 ;118
	.db  42, 220,   0, 188, 136, 127,  36, 227,   0, 187, 136, 127 ;120
	.db  29, 234,   0, 187, 135, 126,  21, 243,   0, 186, 135, 126 ;122
	.db  13, 251,   0, 186, 134, 125,   4, 255,   3, 185, 134, 125 ;124
	.db   0, 253,   9, 185, 133, 124,   0, 247,  15, 184, 133, 124 ;126
	.db   0, 241,  21, 184, 132, 123,   0, 235,  27, 183, 132, 123 ;128
	.db   0, 230,  33, 183, 131, 122,   0, 224,  39, 182, 131, 122 ;130
	.db   0, 218,  44, 182, 130, 121,   0, 212,  49, 181, 130, 121 ;132
	.db   0, 207,  55, 181, 129, 120,   0, 201,  60, 180, 129, 119 ;134
	.db   0, 196,  65, 180, 128, 119,   0, 190,  70, 179, 128, 118 ;136
	.db   0, 185,  75, 179, 127, 118,   0, 180,  80, 178, 127, 118 ;138
	.db   0, 175,  85, 178, 126, 117,   0, 170,  89, 177, 126, 117 ;140
	.db   0, 166,  94, 177, 125, 116,   0, 161,  99, 176, 125, 116 ;142
	.db   0, 156, 104, 176, 124, 115,   0, 152, 108, 175, 124, 115 ;144
	.db   0, 147, 113, 175, 123, 114,   0, 143, 117, 175, 123, 114 ;146
	.db   0, 138, 122, 174, 123, 113,   0, 133, 126, 174, 122, 113 ;148
	.db   0, 129, 130, 173, 122, 112,   0, 125, 134, 173, 121, 112 ;150
	.db   0, 121, 138, 172, 121, 111,   0, 117, 142, 172, 120, 111 ;152
	.db   0, 113, 146, 171, 120, 111,   0, 109, 150, 171, 119, 110 ;154
	.db   0, 105, 154, 170, 119, 110,   0, 101, 158, 170, 118, 109 ;156
	.db   0,  97, 162, 169, 118, 109,   0,  93, 167, 169, 118, 108 ;158
	.db   0,  88, 171, 168, 117, 108,   0,  84, 174, 168, 117, 108 ;160
	.db   0,  81, 178, 167, 116, 107,   0,  77, 181, 167, 116, 107 ;162
	.db   0,  74, 185, 166, 116, 106,   0,  70, 189, 166, 115, 106 ;164
	.db   0,  67, 192, 165, 115, 105,   0,  63, 195, 165, 114, 105 ;166
	.db   0,  60, 199, 164, 114, 104,   0,  56, 202, 164, 113, 104 ;168
	.db   0,  53, 206, 163, 113, 104,   0,  49, 209, 163, 113, 103 ;170
	.db   0,  46, 213, 162, 112, 103,   0,  43, 216, 162, 112, 102 ;172
	.db   0,  39, 219, 161, 111, 102,   0,  36, 222, 161, 111, 102 ;174
	.db   0,  33, 225, 160, 111, 101,   0,  30, 228, 160, 110, 101 ;176
	.db   0,  27, 231, 159, 110, 100,   0,  24, 234, 159, 109, 100 ;178
	.db   0,  21, 237, 158, 109, 100,   0,  18, 240, 158, 109,  99 ;180
	.db   0,  16, 243, 157, 108,  99,   0,  13, 246, 157, 108,  98 ;182
	.db   0,  10, 249, 157, 108,  98,   0,   7, 251, 156, 107,  98 ;184
	.db   0,   4, 254, 156, 107,  97,   1,   1, 255, 155, 106,  97 ;186
	.db   3,   0, 254, 155, 106,  96,   5,   0, 252, 154, 106,  96 ;188
	.db   8,   0, 250, 154, 105,  96,  10,   0, 248, 153, 105,  95 ;190
	.db  12,   0, 246, 153, 105,  95,  14,   0, 243, 152, 104,  94 ;192
	.db  17,   0, 241, 152, 104,  94,  19,   0, 239, 151, 103,  94 ;194
	.db  21,   0, 237, 151, 103,  93,  23,   0, 235, 150, 103,  93 ;196
	.db  26,   0, 232, 150, 102,  93,  28,   0, 230, 149, 102,  92 ;198
	.db  30,   0, 228, 149, 102,  92,  32,   0, 226, 148, 101,  91 ;200
	.db  34,   0, 224, 148, 101,  91,  36,   0, 222, 147, 101,  91 ;202
	.db  38,   0, 220, 147, 100,  90,  40,   0, 218, 146, 100,  90 ;204
	.db  42,   0, 216, 146, 100,  90,  44,   0, 214, 145,  99,  89 ;206
	.db  46,   0, 212, 145,  99,  89,  48,   0, 210, 144,  99,  89 ;208
	.db  50,   0, 208, 144,  98,  88,  52,   0, 206, 143,  98,  88 ;210
	.db  54,   0, 204, 143,  98,  88,  56,   0, 202, 142,  97,  87 ;212
	.db  58,   0, 200, 142,  97,  87,  60,   0, 198, 141,  97,  87 ;214
	.db  62,   0, 196, 141,  96,  86,  63,   0, 194, 140,  96,  86 ;216
	.db  65,   0, 192, 140,  96,  86,  67,   0, 190, 140,  95,  85 ;218
	.db  69,   0, 189, 139,  95,  85,  71,   0, 187, 139,  95,  85 ;220
	.db  72,   0, 185, 138,  94,  84,  74,   0, 183, 138,  94,  84 ;222
	.db  76,   0, 181, 137,  94,  84,  78,   0, 179, 137,  93,  84 ;224
	.db  80,   0, 177, 136,  93,  83,  81,   0, 176, 136,  93,  83 ;226
	.db  83,   0, 174, 135,  92,  83,  85,   0, 172, 135,  92,  82 ;228
	.db  87,   0, 170, 134,  92,  82,  88,   0, 169, 134,  91,  82 ;230
	.db  90,   0, 167, 133,  91,  81,  92,   0, 165, 133,  91,  81 ;232
	.db  94,   0, 164, 132,  90,  81,  96,   0, 162, 132,  90,  80 ;234
	.db  97,   0, 160, 131,  90,  80,  99,   0, 158, 131,  89,  80 ;236
	.db 100,   0, 157, 130,  89,  79, 102,   0, 155, 130,  89,  79 ;238
	.db 104,   0, 153, 129,  89,  79, 105,   0, 152, 129,  88,  78 ;240
	.db 107,   0, 150, 128,  88,  78, 108,   0, 148, 128,  88,  78 ;242
	.db 110,   0, 147, 127,  87,  77, 112,   0, 145, 127,  87,  77 ;244
	.db 113,   0, 144, 126,  87,  77, 115,   0, 142, 126,  86,  77 ;246
	.db 116,   0, 140, 125,  86,  76, 118,   0, 139, 125,  86,  76 ;248
	.db 119,   0, 137, 124,  86,  76, 121,   0, 136, 124,  85,  75 ;250
	.db 123,   0, 134, 123,  85,  75, 124,   0, 132, 123,  85,  75 ;252
	.db 126,   0, 131, 122,  84,  74, 127,   0, 129, 122,  84,  74 ;254
Вот такая получилась цветовая схема:
Вложение 3097
Готовые RGB светики сбалансированы и компенсировать разницу яркостей в каналах почти не приходится. А чем меньше компенсация, тем мягче работа...

Вот печатка: Вложение 3099.
А вот архив с программой, исходником, "дудкой", и готовыми батниками для прошивки через программатор на FT232RL: Вложение 3131.
Сначала прошиваем фьюзы нового МК без отключения ресета, файлом "Fuse.bat", затем заливаем программу файлом "indikator.bat". Если нужно заюзать вывод CHRG, придётся отключить RESET файлом "Fuse_reset.bat". После этого прошить контроллер уже не получится, сначала придётся восстановить фьюз HV реаниматором. Схему своего варианта такого восстановителя я где-то тут выкладывал, программа к нему вот: Вложение 3130.

Сейчас схема в дежурке кушает 30мкА (внешний делитель напряжения, на двух резисторах, в спячку уходить не умеет), во время работы 6...10мА. Яркость приличная, по-моему даже в избытке. Подключаю к нему матовый RGB светик с общим катодом. Вечером попробую снять видео, теперь это вполне возможно...
Слеплю несколько вариантов программ для разной логики управления. Есть просьбы, например, сделать включение индикации при единице на CHRG. И ещё нужно два варианта для светиков с общим анодом и с общим катодом...

В общем покупайте 45-е тиньки . Полевики можно оставить и старые, но они не так хорошо давят помехи по питанию...

*Текущий код уже давно устарел, дальше по теме версии по-свежее...
Миниатюры
Нажмите на изображение для увеличения
Название: main.PNG
Просмотров: 1118
Размер:	18.1 Кб
ID:	254426 Нажмите на изображение для увеличения
Название: Индикатор v1.1.PNG
Просмотров: 2837
Размер:	29.8 Кб
ID:	254496
Вложения
Тип файла: lay Индикатор на ATtiny45.lay (77.7 Кб, 795 просмотров)
Тип файла: rar reanimator.rar (213.4 Кб, 405 просмотров)
Тип файла: rar Indikator v1.2.rar (219.5 Кб, 398 просмотров)
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 13.01.2011, 14:49   18
nevil
Ветеран Фонарёвки
 
Аватар для nevil
 
Регистрация: 17.12.2010
Последняя активность: 12.11.2015 02:01
Сообщений: 716
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для nevil с помощью ICQ
По умолчанию

ждем видео)
__________________
Лучшая работа - это высокооплачиваемое хобби!

http://www.youtube.com/user/nevil91
nevil вне форума   Ответить с цитированием Вверх
Старый 13.01.2011, 16:58   19
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

Отправить сообщение для lasers_Ryazanec с помощью ICQ
По умолчанию

Видео не помешало бы а то может 25 тиньки что я купил на простой RGB регулятор перепрошью просили для автомобиля сделать для подсветки днища
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 14.01.2011, 00:38 Автор темы   20
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Не получается видео снять . Говнокамеры (вебки, мобилки и т.п.) не передают цвет, а нормальные колбасит от ШИМ светика. На глаз он не мерцает абсолютно (122Гц), а камеры колбасит капитально...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Ответ  Создать новую тему





Copyright ©2007 - 2024, FONAREVKA.RU

Powered by vBulletin®
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot

Правила форума | Отказ от ответственности

Время генерации страницы 0.14525 секунды с 17 запросами