Добавить форум Lasers.fonarevka.ru в Избранное ×
LASERS.FONAREVKA.RU - Всё о лазерах и лазерной технике  

Вернуться   Форум Lasers.fonarevka.ru > Электроника > Разное
Забыли пароль? Регистрация
Темы с вашим участием Новые сообщения Сообщения за день

  • Бесплатные розыгрыши призов
  • Для гостей форума
  • Пожертвования (Donate)
На форуме ежемесячно проходят бесплатные розыгрыши призов для зарегистрированных и активно общающихся форумчан. Вы можете выиграть не только различные лазерные указки и другое лазерное оборудование, но и фонарики, зарядные устройства, аккумуляторы и другие аксессуары известных брендов, а также фонари и компоненты от известных кастомщиков и мелкосерийных производителей. Также разыгрываются и другие призы, такие как мультитулы, ножи, рюкзаки и другое снаряжение. Все проходящие розыгрыши призов являются действительно абсолютно бесплатными для самих участников, т.к. все расходы берут на себя организаторы (т.е. владельцы данного форума) и сами спонсоры, которые предоставляют тот или иной приз для наших розыгрышей призов. Форумчане не несут никаких имущественных рисков, связанных с участием в данных розыгрышах (т.е. вы ничего не оплачиваете и ничем не рискуете). Вам достаточно нажать кнопку "Принять участие" и ждать результата!

На данный момент проходит 1 розыгрыш призов.

1. Зарядное устройство XTAR XP4 Panzer + 2 аккумулятора Panasonic NCR18650B 3400 мАч

Рекомендуем Вам подписаться на тему (оптимальнее с уведомлением на ваш E-mail), где публикуется информация о новых розыгрышах призов.
Подробная информация по ссылке
Искренне рады видеть Вас на нашем независимом проекте о лазерах и лазерной технике!

Что Вам даст регистрация на нашем проекте:


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

и много других приятных привилегий

Искренне надеемся, что Вам у нас понравится!
Если вы хотите финансово поддержать работу проекта LASERS.FONAREVKA.RU, будем искренне благодарны!
Даже самая малая сумма поможет дальнейшему развитию и прогрессу нашего с вами уже общего проекта.


Ответ
Просмотров в теме 28444   Ответов в теме 83   Подписчиков на тему 0   Добавили в закладки 0
Опции темы
Старый 06.11.2010, 08:15   1
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию RGB индикатор заряда батареи на ATtiny45

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

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

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

Вот архив со всякой требухой: Индикатор на ATtiny25.rar

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

P.S. Наверняка буду ещё допиливать его, так что не советую брать информацию с этого поста, если ниже нет по-новее...

[Исправлено: INFERION, 13.01.2011 в 11:18].
INFERION вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 08:35   2
Vik
Научный сотрудник
 
Аватар для Vik
 
Регистрация: 24.06.2010
Последняя активность: 10.01.2019 09:57
Адрес: Новокузнецк
Сообщений: 1590
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

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

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

Для полноты восприятия видео явно не хватает.
ABA вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:17   4
Российская Федерация
Модератор
 
Аватар для Российская Федерация
 
Регистрация: 15.02.2010
Последняя активность: 20.06.2019 02:21
Адрес: город-герой Москва
Сообщений: 2308
Сказал(а) спасибо: 11
Поблагодарили 28 раз(а) в 18 сообщениях
По умолчанию

Обалденно! Просто обалденно! Я бы выразился более конкретно, но боюсь меня зацензурят! Давно я мечтал о такой штуке, она просто безупречна... Но вот как и чем её шить с ноута, тоже для меня вопрос... Может кто сможет прошить и выслать отдельно несколько контроллеров? за монету разумеется...

[Исправлено: Российская Федерация, 06.11.2010 в 15:05].
Российская Федерация вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:18   5
Technic47
Научный сотрудник
 
Аватар для Technic47
 
Регистрация: 23.03.2010
Последняя активность: 06.05.2018 16:37
Адрес: Москва
Сообщений: 2035
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

+1 к выслать.
Штучка вышла на славу. Интересно посмотреть на доработанный вариант
Technic47 вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 13:37   6
Vik
Научный сотрудник
 
Аватар для Vik
 
Регистрация: 24.06.2010
Последняя активность: 10.01.2019 09:57
Адрес: Новокузнецк
Сообщений: 1590
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Я бы тоже целую такую штучку купил бы
Vik вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 14:09   7
INFERION
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию

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

Да, забыл сказать. Программа не умеет компенсировать дрейф яркости светиков от напряжения питания в анимации. Основной цвет берёт из базы, там всё предусмотрено (кроме температурного дрейфа напряжения батареи), а вот второй цвет, в который анимация плавно переходит, фиксированный. Так что например белый цвет при максимальном заряде имеет синий оттенок, а при минимальном красный. Я пока незнаю как это устранить. Возможно ещё одну базу придётся лепить, причём сжатую. И отдельно в ней хранить компенсацию...
Вообще компенсация это один сплошной костыль. Может в схему вместо полевика влеплю ULDO стабилизатор на 3V. Но тогда могут возникнуть проблемы с синим светиком, которому требуется напряжение выше 3V...

[Исправлено: INFERION, 06.11.2010 в 19:29].
INFERION вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 18:02   8
Intruder
Лазеростроитель
 
Регистрация: 06.04.2010
Последняя активность: 21.03.2015 14:21
Адрес: Украина г Одесса
Сообщений: 181
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

+1))
Intruder вне форума   Ответить с цитированием Вверх
Старый 06.11.2010, 19:06   9
INFERION
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию

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

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

Индикатором сегодня всю ночь играется и Fonarik. Пока вроде очень доволен ...

[Исправлено: INFERION, 07.11.2010 в 06:59].
INFERION вне форума   Ответить с цитированием Вверх
Старый 08.11.2010, 20:30   10
Fonarik
Лазеростроитель
 
Аватар для Fonarik
 
Регистрация: 18.02.2010
Последняя активность: 05.03.2014 19:17
Адрес: Киев, Украина
Сообщений: 489
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

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


Fonarik вне форума   Ответить с цитированием Вверх
Старый 08.11.2010, 23:58   11
INFERION
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию

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

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

RGB смотри сверху вниз и поймешь какие цветта в каких пропорциях мешаются.
Ryazanec вне форума   Ответить с цитированием Вверх
Старый 09.11.2010, 11:25   14
chem_kot
Научный сотрудник
 
Аватар для chem_kot
 
Регистрация: 13.03.2010
Последняя активность: 15.08.2015 06:45
Адрес: Екатеринбург
Сообщений: 648
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Тоже чтоли собрать...тинька45 где-то была вроде... к несчастью только - тонер в принтере кончился

[Исправлено: Hobbi TV, 09.11.2010 в 11:30].
chem_kot вне форума   Ответить с цитированием Вверх
Старый 06.01.2011, 01:15   15
Ryazanec
Переводчик
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Адрес: Рязань
Сообщений: 2389
Сказал(а) спасибо: 6
Поблагодарили 7 раз(а) в 6 сообщениях
По умолчанию

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

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

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

[Исправлено: Ryazanec, 06.01.2011 в 10:21].
Ryazanec вне форума   Ответить с цитированием Вверх
Старый 06.01.2011, 07:35   16
Mason
Лазеростроитель
 
Аватар для Mason
 
Регистрация: 19.11.2010
Последняя активность: 27.09.2016 18:51
Адрес: Украина
Сообщений: 567
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

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

Собрал версию по-лучше, которую уже можно и в массы пускать (некоторые моменты в предыдущей меня не устраивают). Вот новая схема:
Нажмите на изображение для увеличения
Название: Индикатор v1.1.PNG
Просмотров: 2503
Размер:	29.8 Кб
ID:	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
Вот такая получилась цветовая схема:
Нажмите на изображение для увеличения
Название: main.PNG
Просмотров: 974
Размер:	18.1 Кб
ID:	3097
Готовые RGB светики сбалансированы и компенсировать разницу яркостей в каналах почти не приходится. А чем меньше компенсация, тем мягче работа...

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

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

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

*Текущий код уже давно устарел, дальше по теме версии по-свежее...

[Исправлено: INFERION, 22.01.2011 в 21:56].
INFERION вне форума   Ответить с цитированием Вверх
Старый 13.01.2011, 14:49   18
nevil
Лазеростроитель
 
Аватар для nevil
 
Регистрация: 17.12.2010
Последняя активность: 12.11.2015 02:01
Адрес: Электросталь
Сообщений: 1072
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

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

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

Видео не помешало бы а то может 25 тиньки что я купил на простой RGB регулятор перепрошью просили для автомобиля сделать для подсветки днища
Ryazanec вне форума   Ответить с цитированием Вверх
Старый 14.01.2011, 00:38   20
INFERION
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию

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


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм заряда Li:Ion и Li:Po аккумуляторов Hobbi TV Зарядные устройства 2 30.07.2016 06:49
Индикатор заряда батареи на Attiny25 (Светофор) Ryazanec Разное 204 01.12.2015 12:21
Индикатор разряда батареи.(идеи) Ryazanec Разное 26 03.02.2011 22:52
Продам RGB индикатор заряда Li-ion аккумулятора на ATtiny45 INFERION Торговый уголок для частных лиц 5 24.01.2011 00:00
Индикация разряда батареи PSIxxx Разное 27 08.12.2010 16:55


Текущее время: 07:53. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc. Перевод: zCarot
Template-Modifications by TMS

Copyright ©2010 - 2015, Hobbi.TV & FONAREVKA.RU.

Если Вы не являетесь правообладателем того или иного контента размещенного на форуме (фото/видео/текст),
то при любом использовании материалов форума необходимо получить письменное разрешение
на использование того или иного материала у администрации форума.

При использовании материалов форума ссылка на Lasers.fonarevka.ru обязательна.

Украинский портАл CATALOG.METKA.RU
Каталог webplus.info Каталог сайтов Zabor.com