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

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

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

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

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Ответ  Создать новую тему
Просмотров в теме 26271   Ответов в теме 52   Подписчиков на тему 0   Добавили в закладки 0
Опции темы Поиск в этой теме
Старый 01.10.2012, 17:52   21
lasers_AVSel
Ветеран Фонарёвки
 
Аватар для lasers_AVSel
 
Регистрация: 15.02.2010
Последняя активность: 05.09.2022 18:18
Сообщений: 1090
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Можно еще сравнить показания на солнце и в темноте.
В темноте чувствительность ощутимо смещается в сине-фиолетовую область.
При сравнении яркости лазеров, красного с фиолетом, на солнце и ночью, это должно быть хорошо заметно.
__________________
Чем бы дитя не тешилось - лишь бы не лазером...
lasers_AVSel вне форума   Ответить с цитированием Вверх
Старый 01.10.2012, 19:24 Автор темы   22
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Но всё равно точность оценки заряда от этого страдает гораздо меньше, чем от температуры батареи, к примеру (а если ещё и нагрузка есть, то вообще караул). Чтоб промахнутся на одно базовое деление (с синего съехать на голубое, к примеру), нужно постараться. С синим и голубым ещё соглашусь, их можно спутать в определённых ситуациях...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 02.10.2012, 09:43   23
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

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

Ну да - недозаряд около 20 % если после китайской зарядки остается 4,0 вольта.
Миниатюры
Нажмите на изображение для увеличения
Название: ak-li-ion_disch_char.png
Просмотров: 848
Размер:	17.6 Кб
ID:	259112
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 02.10.2012, 11:39 Автор темы   24
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Это если не учитывать, что кривая на этом графике снималась под нагрузкой (0,2C)...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 02.10.2012, 12:16   25
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

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

Да, если нагрузка будет больше, то процент будет меньше, зато при очень маленьких токах разряда кривая будет почти прямой до 3,7 вольта.
Кстати там график при токе 1С - тоже около 20%
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 02.10.2012, 12:41 Автор темы   26
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Я за другое говорю. Если отключить нагрузку - напряжение будет выше. А меряем мы напряжение без нагрузки. Соответственно при показаниях мультиметра в 4,0V на этом же графике заряд будет не 80%, а меньше процентов на 5. И да, без нагрузки резкий завал начинается после 3,7V, а до этого он не такой уж и пологий, я под него индикатор подстраивал. В электротранспорте, к примеру, я бы ресурс батареи экономил. Выше 4,1V врятли бы стал заряжать, и разряжать ниже 3,6V. Батарея там дорогая, а заряжать приходится часто. Но в указке, которая заряжается раз в неделю, экономить ресурс я не стану. При тех многих сотнях циклов аккум быстрее на пенсию от возраста уйдёт. Да и без того его заряда хватает минут на 40 работы всего...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 03.10.2012, 16:29   27
lasers_Nimnul
Новичок
 
Регистрация: 03.10.2012
Последняя активность: 28.11.2012 17:01
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

INFERION Отличная зарядка, очень понравилась, но есть пару вопросов:
1. Возможно ли переделать прошивку под tiny45, т.к. 25 нет а 45 валом
2. Шунт я так понял разведен на плате в виде "змейки"?
3. Возможно ли поднять зарядный ток к примеру до 500-1000 мА (соответственно, при этом забыв про зарядку от компьютера, хотя моя мать позволяет давать ток 1500 мА для зарядки "Яблоководов")
Спасибо. с Ув. Юрий.
lasers_Nimnul вне форума   Ответить с цитированием Вверх
Старый 04.10.2012, 02:08 Автор темы   28
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

1. Вот хекс под 45-ю: Вложение 8287 Батники придётся подредактировать, заменив в них число 25 на 45, а-то дудка выругает, что пытаемся прошить левый МК...
Из-за разброса параметров возможно придётся подбирать сопротивления. Мне проще, я заряжаю аккум и смотрю на ошибку, и прошиваю зарядку откалиброванным опорным значением...
2. Да, шунт разведён на плате, Но у него противный ТКС. Хотя для этой зарядки не критично.
3. Сколько ключ позволяет, на столько и можно поднимать. С 2k базовым резистором потолок около 800мА, но МК может пару десятков миллиампер выжать, а ключ держит 6А (в ключевом режиме), но не стоит забывать за его охлаждение. Защита хоть и есть, но термодатчик аж в МК, а ключ способен нагреваться очень быстро...

Харьков? Не подскажете, где у вас можно шпон достать? На днях поеду доставать, нужно в кратчайшие сроки акустику доделать...

P.S. Все гнёзда ими на компах позатыкал, клавиатуру подключить с мышкой некуда ...
Вложения
Тип файла: rar Charger45.rar (2.2 Кб, 292 просмотров)
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 00:10   29
lasers_Nimnul
Новичок
 
Регистрация: 03.10.2012
Последняя активность: 28.11.2012 17:01
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Спасибо за прошивку
Цитата:
Посмотреть сообщение Сообщение от INFERION :
Из-за разброса параметров возможно придётся подбирать сопротивления. Мне проще, я заряжаю аккум и смотрю на ошибку, и прошиваю зарядку откалиброванным опорным значением...
Это Вы про шунт? Расскажите как подогнать опорное значение?
Цитата:
Посмотреть сообщение Сообщение от INFERION :
3. Сколько ключ позволяет, на столько и можно поднимать. С 2k базовым резистором потолок около 800мА, но МК может пару десятков миллиампер выжать, а ключ держит 6А (в ключевом режиме), но не стоит забывать за его охлаждение. Защита хоть и есть, но термодатчик аж в МК, а ключ способен нагреваться очень быстро...
Ну думаю поставить небольшие игольчатые радиаторы.
Цитата:
Посмотреть сообщение Сообщение от INFERION :
Харьков? Не подскажете, где у вас можно шпон достать? На днях поеду доставать, нужно в кратчайшие сроки акустику доделать...
Может это поможет: http://www.kharkovforum.com...
lasers_Nimnul вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 01:18 Автор темы   30
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Нет, не про шунт. С ним как раз всё нормально, да и какая разница, каким током заряжается аккумулятор? 350мА, или 330мА, разницы не заметишь. А вот конечное зарядное напряжение очень критично, и зависит оно от опорного напряжения встроенного в МК ИОН (которое, сволочь, ещё и от питающего напряжения ощутимо гуляет) и от разброса сопротивлений резисторов в делителе напряжения. Вот последнее и подгоняется под требуемые 4,2V. У меня напряжение гуляло в пределах 0,05V от экземпляра к экземпляру. Почти везде было 4,15...4,20V, а в одном сигануло до 4,24V. Я заряжал полностью батарею, смотрел на напряжение и перерасчитывал опорную константу в программе. Но для этого требуется её перекомпилировать и перезалить, а для того чтоб перезалить - активировать RESET высоковольтным программатором, т.к. он отключается после прошивки, чтоб цепь обратной связи по напряжению могла работать. А без RESET'а прошивка невозможна. Так что если у вас есть всё необходимое - проще повозится с исходным кодом программы, а нет - подбираем резисторы, или довольствуемся разбросом...

За ссылку спасибо.
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 09:52   31
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

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

У меня нет высоковольтного программатора, но есть самоделка одна, которая сбрасывает значения фьюз на заводские (Atmega fusebit doctor). Валалось у меня несколько тинек, жалко было, собрал устройство и восстановил их. Тиньки эти мне отсыпали, так как ои отказывались программироваться, что с ними ни кто не знал, навешивание кварца внешнего не помогло. Так что если кто то хочет поковыряться с прошивкой - собирайте.
lasers_Ryazanec вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 10:37   32
lasers_Nimnul
Новичок
 
Регистрация: 03.10.2012
Последняя активность: 28.11.2012 17:01
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

INFERION
А внешний ИОН, можно применить к примеру TL431?
Восстанавливаю тиньки без проблем, у меня есть DOPER а у него на борту HVSP есть.
Делитель подобрать то можно ...но хотелось поточней
lasers_Nimnul вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 12:24 Автор темы   33
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Да у меня у самого на 13-й тиньке собран HV восстановитель уже несколько лет как, им и пользуюсь. Мелкая платка с питанием от USB программатора, как переходник идёт...

Не выжу смысла применять внешний ИОН, если он сожрёт вывод, на котором сейчас сидит ключ. Тогда придётся отказываться от индикатора и переписывать программу. И главное - нафига усложнять и ухудшать, если отлично работает и со встроенным?

Тогда вот исходник:
Код:
;USB зарядка на ATtiny25 для Li-ion.


	.INCLUDE "tn25def.inc"
;	.INCLUDE "tn45def.inc"

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

	rjmp	RESET
	reti
	reti
	reti
	reti

	set				;Over0

	;R2:R1   - Red_SDM
	;R4:R3   - Green_SDM
	;R6:R5   - Blue_SDM
	;R8:R7	 - Ton
	;R10:R9  - Red_error
	;R12:R11 - Green_error
	;R14:R13 - Blue_error
	;R15	 - Ton_error
	;R29	 - Loop counter

	push	R0
	in	R0, SREG
	push	R0
	clr	R0			;Сигма-дельта модулятор PWM
	add	R15, R7
	rol	R0
	add	R0, R8
	out	OCR0A, R0

Red:	cpi	R29, 0
	brne	green
	add	R9, R1			;Сигма-дельта модулятор Red
	adc	R10, R2
	rol	R29
	lsl	R29
	out	PORTB, R29
	ldi	R29, 1
	rjmp	intout

green:	cpi	R29, 1
	brne	blue
	add	R11, R3			;Сигма-дельта модулятор Green
	adc	R12, R4
	ror	R29
	lsr	R29
	swap	R29
	out	PORTB, R29
	ldi	R29, 2
	rjmp	intout

blue:	clr	R29
	add	R13, R5			;Сигма-дельта модулятор Blue
	adc	R14, R6
	ror	R29
	asr	R29
	lsr	R29
	swap	R29
	out	PORTB, R29
	clr	R29

intout:	pop	R0
	out	SREG, R0
	pop	R0
	reti


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

RESET:	;Ldi	R16, HIGH(RAMEND-12)	;инициализация стека (для Tiny45)
	;out	SPH, R16

	Ldi	R16, LOW(RAMEND-12)	;инициализация стека
	out	SPL, R16

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

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

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

	ldi	R16, 0b00111000		;выключение цифрового входа на PB3, PB4 и PB5
	out	DIDR0, R20

	ldi	R16, 0b10000111		;Запуск измерения Ioffset
	out	ADMUX, R16

	ldi	R16, 0b11000011		;ADEN, ADSC, тактовая clk/8
	out	ADCSRA, R16

	ldi	R16, 0b00000010		;Включить Over0
	out	TIMSK, R16

	ldi	R16, 0b11000011		;Fast PWM inverting mode
	out	TCCR0A, R16

	ldi	R16, 0b00000001		;Запуск таймера0 (clk/1)
	out	TCCR0B, R16

	clr	R1			;Очистить регистры
	clr	R2
	clr	R3
	clr	R4
	clr	R5
	clr	R6
	clr	R7
	clr	R8
	clr	R9
	clr	R10
	clr	R11
	clr	R12
	clr	R13
	clr	R14
	clr	R15
	clr	R26
	clr	R27
	clr	R28
	clr	R29

	ldi	ZH, HIGH(RAMEND+1)	;Очистить ОЗУ
	ldi	ZL, LOW(RAMEND+1)
	ldi	R16, 12			;Количество очищаемых ячеек
upclr:	st	-Z, R1
	dec	R16
	brne	upclr

	sei				;Разрешить прерывания


;Калибровка токового шунта:

pause:	brtc	pause
	clt
	sbi	ADCSRA, 6
	dec	R28
	breq	pause

	ldi	R28, 72
	clr	R18
	clr	R19
offset:	brtc	offset
	clt
	in	R16, ADCL		;Записать данные АЦП в буфер
	in	R17, ADCH
	sbi	ADCSRA, 6
	add	R18, R16
	adc	R19, R17
	dec	R28
	brne	offset

	ldi	ZH, HIGH(RAMEND-5)
	ldi	ZL, LOW(RAMEND-5)
	st	Z+, R18			;Записать Ioffset
	st	Z+, R19

	ldi	R16, 0b10100000		;Запуск измерения Vout
	out	ADMUX, R16
	sbi	ADCSRA, 6



	;R28		- Счётчик семплов
	;RAMEND-1	- Температура
	;RAMEND-3	- Iref
	;RAMEND-5	- Ioffset
	;RAMEND-7	- Vout max
	;RAMEND-9	- Error FB damped
	;RAMEND-11	- Vout no charge


;Модулятор тока (120Hz):

main:	brtc	main
	clt
	sbi	ADCSRA, 6

	sbic	GPIOR0, 0		;Модуляция зарядного тока
	rjmp	maxcur

	sbi	GPIOR0, 0
	ldi	ZH, HIGH(RAMEND-11)
	ldi	ZL, LOW(RAMEND-11)
	ld	R16, Z+			;Загрузить Vout no charge
	ld	R17, Z+

	ldi	R18, 0x80		;Порог капельного заряда 2,7V
	ldi	R19, 0x7E
	cp	R16, R18
	cpc	R17, R19
	brcc	ldmidc
	ldi	R17, 0x11		;Irefmax=40mA (R шунта 0,1Ом+ТКС)
	ldi	R16, 0xA0
	rjmp	ldminc

ldmidc:	ldi	R18, 0x00		;Порог пониженного тока 3,5V
	ldi	R19, 0xA4
	cp	R16, R18
	cpc	R17, R19
	brcc	ldmaxc
	ldi	R17, 0x72		;Irefmax=260mA (R шунта 0,1Ом+ТКС)
	ldi	R16, 0xC0
	rjmp	ldminc

ldmaxc:	ldi	R17, 0xB0		;Irefmax=400mA (R шунта 0,1Ом+ТКС)
	ldi	R16, 0x00

ldminc:	ldi	ZH, HIGH(RAMEND-3)
	ldi	ZL, LOW(RAMEND-3)
	st	Z+, R16			;Записать Iref
	st	Z+, R17
	rjmp	voltag

maxcur:	cbi	GPIOR0, 0
	ldi	ZH, HIGH(RAMEND-3)
	ldi	ZL, LOW(RAMEND-3)
	ld	R16, Z+			;Загрузить Iref
	ld	R17, Z+

	mov	R18, R16		;Irefx0,75
	mov	R19, R17
	clr	R20
	clr	R21
	lsl	R18
	rol	R19
	rol	R20
	lsl	R18
	rol	R19
	rol	R20
	sub	R18, R16
	sbc	R19, R17
	sbc	R20, R21
	lsr	R20
	ror	R19
	ror	R18
	lsr	R20
	ror	R19
	ror	R18

	st	-Z, R19			;Записать Iref
	st	-Z, R18


voltag:	brtc	voltag
	clt

	in	R16, ADCL		;Записать данные АЦП в буфер
	in	R17, ADCH

	sbic	GPIOR0, 0
	rjmp	voltmx

	ldi	R18, 0b10100111		;Запуск измерения Iout
	out	ADMUX, R18
	sbi	ADCSRA, 6

	ldi	ZH, HIGH(RAMEND-7)
	ldi	ZL, LOW(RAMEND-7)
	st	Z+, R16			;Записать Vout max
	st	Z+, R17

	rjmp	pausec



;ОС по напряжению (60Hz):

voltmx:	ldi	R18, 0b10101111		;Запуск измерения температуры
	out	ADMUX, R18
	sbi	ADCSRA, 6

	ldi	ZH, HIGH(RAMEND-7)
	ldi	ZL, LOW(RAMEND-7)
	ld	R18, Z+			;Загрузить Vout max
	ld	R19, Z+

	mov	R20, R18		;Delta Vout
	mov	R21, R19
	sub	R20, R16
	sbc	R21, R17
	brcc	deltok
	clr	R20
	clr	R21
deltok:	lsl	R20			;Delta Vout x 4
	rol	R21
	lsl	R20
	rol	R21
	brcc	vxgood
	ser	R20
	ser	R21
vxgood:	sub	R18, R20		;Vout no charge
	sbc	R19, R21
	brcc	vnchok
	clr	R18
	clr	R19

vnchok:	ldi	ZH, HIGH(RAMEND-11)
	ldi	ZL, LOW(RAMEND-11)
	st	Z+, R18			;Записать Vout no charge
	st	Z+, R19
	ld	R20, Z+			;Загрузить Error FB damped
	ld	R21, Z+

	ldi	R16, 0x40		;Vref no charge 4,2V (калибр.)
	ldi	R17, 0xE1

	cp	R18, R16
	cpc	R19, R17
	brcc	morev

	sub	R16, R18
	sbc	R17, R19
	lsr	R17
	ror	R16
	lsr	R17
	ror	R16
	sub	R20, R16
	sbc	R21, R17
	brcc	vcorr
	clr	R20
	clr	R21
	rjmp	fbmxok

morev:	sub	R18, R16
	sbc	R19, R17
	lsr	R19
	ror	R18
	lsr	R19
	ror	R18
	add	R20, R18
	adc	R21, R19
	brcc	vcorr
	ser	R20
	ser	R21

vcorr:	ldi	R17, 0xB0		;Irefmax=400mA
	ldi	R16, 0x00
	cp	R16, R20		;Ограничение Error FB сверху
	cpc	R17, R21
	brcc	fbmxok
	mov	R20, R16
	mov	R21, R17

fbmxok:	st	-Z, R21			;Записать Error FB damped
	st	-Z, R20
	ldi	ZH, HIGH(RAMEND-3)
	ldi	ZL, LOW(RAMEND-3)
	ld	R22, Z+			;Загрузить Iref
	ld	R23, Z+

	sub	R22, R20		;Коррекция Iref
	sbc	R23, R21
	brcc	writeV
	clr	R22
	clr	R23

writev:	st	-Z, R23			;Записать Iref
	st	-Z, R22



;Индикация, первый фрагмент (60Hz):

pauset:	brtc	pauset
	clt
	sbi	ADCSRA, 6

	sbis	GPIOR0, 1
	rjmp	ind

	inc	R27
aniris:	cpi	R27, 64
	brcc	animax
	mov	R26, R27
	lsl	R26
	lsl	R26
	rjmp	ind

animax:	cpi	R27, 128
	brcc	anifal
	ser	R26
	rjmp	ind

anifal:	cpi	R27, 192
	brcc	animin
	ldi	R26, 191
	sub	R26, R27
	lsl	R26
	lsl	R26
	rjmp	ind

animin:	clr	R26

ind:	ldi	ZH, HIGH(RAMEND-11)
	ldi	ZL, LOW(RAMEND-11)
	ld	R16, Z+			;Загрузить Vout no charge
	ld	R17, Z+

	subi	R16, 0x00
	sbci	R17, 0xA1
	brcc	okv
	clr	R17
	clr	R16

okv:	lsl	R16
	rol	R17
	lsl	R16
	rol	R17
	brcc	okadr
	ser	R17
okadr:	clr	R16

	mov	ZL, R17			;Загрузка данных RGB индикатора
	clr	ZH

	lsl	ZL			;x3
	rol	ZH
	add	ZL, R17
	adc	ZH, R16

	ldi	R18, LOW(data*2)
	ldi	R19, HIGH(data*2)
	add	ZL, R18
	adc	ZH, R19

	lpm
	mov	R17, R0			;Загрузить Red
	mov	R18, R1
	mov	R19, R2
	ldi	R20, 255
	rcall	anima
	mov	R1, R18
	mov	R2, R19

	mov	R24, ZL			;Сохранить адрес
	mov	R25, ZH



;Температура (60Hz):

temp:	brtc	temp
	clt

	in	R16, ADCL		;Записать данные АЦП в буфер
	in	R17, ADCH

	ldi	R18, 0b10100111		;Запуск измерения Iout
	out	ADMUX, R18
	sbi	ADCSRA, 6

	subi	R17, 0x55		;60 градусов
	brcc	termok
	clr	R16
	clr	R17
termok:	clr	R18			;x64
	lsr	R17
	ror	R16
	ror	R18
	lsr	R17
	brne	overt
	ror	R16
	ror	R18
	rjmp	novert
overt:	ser	R16
	ser	R18

novert:	ldi	ZH, HIGH(RAMEND-3)
	ldi	ZL, LOW(RAMEND-3)
	ld	R20, Z+			;Загрузить Iref
	ld	R21, Z+
	ld	R22, Z+			;Загрузить температуру
	ld	R23, Z+

	cp	R18, R22		;Сглаживание
	cpc	R16, R23
	breq	equalt
	brcc	moret

	mov	R17, R22		;Y-=(Y-X)/64
	mov	R19, R23
	sub	R17, R18
	sbc	R19, R16
	clr	R18
	lsl	R17
	rol	R19
	rol	R18
	lsl	R17
	rol	R19
	rol	R18
	clr	R17
	cp	R19, R17
	cpc	R18, R17
	brne	rsttdn
	inc	R19
rsttdn:	sub	R22, R19
	sbc	R23, R18
	rjmp	equalt

moret:	sub	R18, R22		;Y+=(X-Y)/64
	sbc	R16, R23
	clr	R17
	lsl	R18
	rol	R16
	rol	R17
	lsl	R18
	rol	R16
	rol	R17
	clr	R18
	cp	R16, R18
	cpc	R17, R18
	brne	rsttup
	inc	R16
rsttup:	add	R22, R16
	adc	R23, R17

equalt:	;mov	R5, R16			;Вывод температуры на красный канал
	;mov	R6, R17			;(для калибровки)

	sub	R20, R22		;Коррекция Iref
	sbc	R21, R23
	brcc	writet
	clr	R20
	clr	R21

writet:	st	-Z, R23			;Записать температуру
	st	-Z, R22
	st	-Z, R21			;Записать Iref
	st	-Z, R20



;Индикация, второй фрагмент (120/60Hz):

pausec:	brtc	pausec
	clt
	sbi	ADCSRA, 6

	sbis	GPIOR0, 0		;Анимировать, если флаг установлен
	rjmp	curent

	mov	ZL, R24
	mov	ZH, R25

	ldi	R24, 1
	clr	R16

	add	ZL, R24
	adc	ZH, R16
	lpm
	mov	R17, R0			;Загрузить Green
	mov	R18, R3
	mov	R19, R4
	ldi	R20, 255
	rcall	anima
	mov	R3, R18
	mov	R4, R19

	add	ZL, R24
	adc	ZH, R16
	lpm
	mov	R17, R0			;Загрузить Blue
	mov	R18, R5
	mov	R19, R6
	ldi	R20, 255
	rcall	anima
	mov	R5, R18
	mov	R6, R19



;Выходной ток (31kHz):

curent:	brtc	curent
	clt

	in	R16, ADCL		;Записать данные АЦП в буфер
	in	R17, ADCH

	inc	R28
	brne	meascu
	ldi	R18, 0b10100000		;Запуск измерения Vout
	out	ADMUX, R18
meascu:	sbi	ADCSRA, 6

	cpi	R17, 0x20		;Включение анимации
	brcs	anioff
	sbic	GPIOR0, 1
	rjmp	lofset
	sbi	GPIOR0, 1
	clr	R27
	rjmp	lofset

anioff:	cpi	R17, 0x18		;Выключение анимации
	brcs	sinoff
	sbic	GPIOR0, 1
	rjmp	lofset
sinoff:	sbis	GPIOR0, 0
	rjmp	lofset
	cbi	GPIOR0, 1
	clr	R26

lofset:	ldi	ZH, HIGH(RAMEND-5)
	ldi	ZL, LOW(RAMEND-5)
	ld	R18, Z+			;Загрузить Ioffset
	ld	R19, Z+
	ld	R20, Z+			;Загрузить Iref
	ld	R21, Z+

	sub	R16, R18		;Коррекция смещения
	sbc	R17, R19
	brcc	currok
	clr	R16
	clr	R17

currok:	;mov	R3, R20			;Вывод Iref на зелёный канал
	;mov	R4, R21			;(для ОТЛАвлиВАНИЯ лаЖИ)

	;mov	R5, R16			;Вывод шунта на синий канал
	;mov	R6, R17			;(для калибровки)

	clr	R18
	cp	R16, R20
	cpc	R17, R21
	brcs	loTon1

	sub	R16, R20		;Ton=Ton-(Iout-Iref)/8
	sbc	R17, R21
	lsr	R17
	ror	R16
	lsr	R17
	ror	R16
	lsr	R17
	ror	R16
	cp	R16, R18
	cpc	R17, R18
	brne	mod1
	inc	R16

mod1:	sub	R7, R16			;Коррекция
	sbc	R8, R17
	brcc	modok
	clr	R8

modclr:	clr	R7
modok:	tst	R28
	brne	curent
	rjmp	main

loTon1:	sub	R20, R16		;Ton=Ton+(Iref-Iout)/8
	sbc	R21, R17
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	cp	R20, R18
	cpc	R21, R18
	brne	mod2
	inc	R20

mod2:	ser	R16			;Коррекция
	add	R7, R20
	adc	R8, R21
	brcs	mdfal2
	cp	R8, R16
	brcs	modok
mdfal2:	mov	R8, R16
	rjmp	modclr




;Подпрограмма обработки каналов анимации:

anima:	cp	R17, R20	;Анимирование
	brcs	lessa		;Перейти если main < mixing

	mov	R22, R17	;main - mixing = X
	sub	R22, R20

	clr	R23		;R23 <- R22 x R26 / 255
	lsr	R22		;( X x color_ratio ) / 255 = Y
	brcc	noad0
	add	R23, R26
noad0:	ror	R23
	ror	R22
	brcc	noad1
	add	R23, R26
noad1:	ror	R23
	ror	R22
	brcc	noad2
	add	R23, R26
noad2:	ror	R23
	ror	R22
	brcc	noad3
	add	R23, R26
noad3:	ror	R23
	ror	R22
	brcc	noad4
	add	R23, R26
noad4:	ror	R23 
	ror	R22
	brcc	noad5
	add	R23, R26
noad5:	ror	R23
	ror	R22
	brcc	noad6
	add	R23, R26
noad6:	ror	R23 
	ror	R22
	brcc	noad7
	add	R23, R26
noad7:	ror	R23 
	ror	R22
	breq	m8u0
	inc	R23

m8u0:	sub	R17, R23	;main - Y = main
	rjmp	damper

lessa:	sub	R20, R17	;mixing - main = X

	clr	R23		;R23 <- R22 x R26 / 255
	lsr	R20		;( X x color_ratio ) / 255 = Y
	brcc	noad8
	add	R23, R26
noad8:	ror	R23
	ror	R20
	brcc	noad9
	add	R23, R26
noad9:	ror	R23
	ror	R20
	brcc	noad10
	add	R23, R26
noad10:	ror	R23
	ror	R20
	brcc	noad11
	add	R23, R26
noad11:	ror	R23
	ror	R20
	brcc	noad12
	add	R23, R26
noad12:	ror	R23 
	ror	R20
	brcc	noad13
	add	R23, R26
noad13:	ror	R23
	ror	R20
	brcc	noad14
	add	R23, R26
noad14:	ror	R23 
	ror	R20
	brcc	noad15
	add	R23, R26
noad15:	ror	R23 
	ror	R20
	breq	m8u1
	inc	R23

m8u1:	add	R17, R23	;main + Y = main


damper:	cp	R18, R16	;Сглаживание цветопередачи
	cpc	R19, R17
	breq	equald
	brcc	mored

	mov	R20, R16
	mov	R21, R17
	sub	R20, R18
	sbc	R21, R19
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	cp	R20, R16
	cpc	R21, R16
	brne	okdnd
	inc	R20
okdnd:	add	R18, R20
	adc	R19, R21
equald:	ret

mored:	mov	R20, R18
	mov	R21, R19
	sub	R20, R16
	sbc	R21, R17
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	lsr	R21
	ror	R20
	cp	R20, R16
	cpc	R21, R16
	brne	okupd
	inc	R20
okupd:	sub	R18, R20
	sbc	R19, R21
	ret




	.ORG	0x280		;Массив RGB индикатора (последние 768 байт памяти)

	     ;R    G    B    R    G    B    R    G    B    R    G    B
data:	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;0
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;4
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;8
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;12
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;16
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;20
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;24
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;28
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;32
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;36
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;40
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;44
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;48
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;52
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;56
	.db 255,   0,   0, 255,   0,   0, 255,   0,   0, 255,   0,   0 ;60
	.db 255,   0,   0, 254,   1,   0, 253,   2,   0, 252,   3,   0 ;64
	.db 251,   4,   0, 250,   5,   0, 249,   6,   0, 248,   7,   0 ;68
	.db 247,   8,   0, 246,   9,   0, 245,  10,   0, 244,  11,   0 ;72
	.db 243,  12,   0, 242,  13,   0, 241,  14,   0, 240,  15,   0 ;76
	.db 239,  16,   0, 238,  17,   0, 237,  18,   0, 236,  19,   0 ;80
	.db 235,  20,   0, 234,  21,   0, 233,  22,   0, 232,  23,   0 ;84
	.db 231,  24,   0, 230,  25,   0, 229,  26,   0, 228,  27,   0 ;88
	.db 227,  28,   0, 226,  29,   0, 225,  30,   0, 224,  31,   0 ;92
	.db 223,  33,   0, 221,  36,   0, 218,  39,   0, 215,  42,   0 ;96
	.db 212,  45,   0, 209,  48,   0, 206,  50,   0, 204,  53,   0 ;100
	.db 201,  56,   0, 198,  59,   0, 195,  62,   0, 192,  65,   0 ;104
	.db 189,  68,   0, 186,  71,   0, 183,  74,   0, 180,  77,   0 ;108
	.db 177,  80,   0, 174,  82,   0, 172,  85,   0, 169,  88,   0 ;112
	.db 166,  91,   0, 163,  94,   0, 160,  97,   0, 157, 100,   0 ;116
	.db 154, 103,   0, 151, 106,   0, 148, 109,   0, 145, 112,   0 ;120
	.db 142, 114,   0, 140, 117,   0, 137, 120,   0, 134, 123,   0 ;124
	.db 131, 126,   0, 128, 131,   0, 123, 137,   0, 117, 143,   0 ;128
	.db 111, 149,   0, 105, 155,   0,  99, 161,   0,  93, 167,   0 ;132
	.db  87, 173,   0,  81, 179,   0,  75, 185,   0,  69, 192,   0 ;136
	.db  63, 198,   0,  57, 204,   0,  51, 210,   0,  45, 216,   0 ;140
	.db  39, 222,   0,  33, 228,   0,  27, 234,   0,  21, 240,   0 ;144
	.db  15, 246,   0,   9, 252,   0,   3, 255,   1,   0, 254,   5 ;148
	.db   0, 250,   9,   0, 246,  12,   0, 243,  16,   0, 239,  20 ;152
	.db   0, 235,  23,   0, 232,  27,   0, 228,  31,   0, 224,  34 ;156
	.db   0, 221,  38,   0, 217,  42,   0, 213,  45,   0, 210,  49 ;160
	.db   0, 206,  53,   0, 202,  56,   0, 199,  60,   0, 195,  64 ;164
	.db   0, 191,  67,   0, 188,  71,   0, 184,  74,   0, 181,  78 ;168
	.db   0, 177,  82,   0, 173,  85,   0, 170,  89,   0, 166,  93 ;172
	.db   0, 162,  96,   0, 159, 100,   0, 155, 104,   0, 151, 107 ;176
	.db   0, 148, 111,   0, 144, 115,   0, 140, 118,   0, 137, 122 ;180
	.db   0, 133, 126,   0, 129, 129,   0, 126, 133,   0, 122, 137 ;184
	.db   0, 118, 140,   0, 115, 144,   0, 111, 148,   0, 107, 151 ;188
	.db   0, 104, 155,   0, 100, 159,   0,  96, 162,   0,  93, 166 ;192
	.db   0,  89, 170,   0,  85, 173,   0,  82, 177,   0,  78, 181 ;196
	.db   0,  74, 184,   0,  71, 188,   0,  67, 192,   0,  63, 195 ;200
	.db   0,  60, 199,   0,  56, 202,   0,  53, 206,   0,  49, 210 ;204
	.db   0,  45, 213,   0,  42, 217,   0,  38, 221,   0,  34, 224 ;208
	.db   0,  31, 228,   0,  27, 232,   0,  23, 235,   0,  20, 239 ;212
	.db   0,  16, 243,   0,  12, 246,   0,   9, 250,   0,   5, 254 ;216
	.db   1,   1, 255,   5,   0, 254,   9,   0, 250,  12,   0, 246 ;220
	.db  16,   0, 243,  19,   0, 239,  23,   0, 235,  27,   0, 232 ;224
	.db  30,   0, 228,  34,   0, 224,  38,   0, 221,  41,   0, 217 ;228
	.db  45,   0, 213,  48,   0, 210,  52,   0, 206,  56,   0, 202 ;232
	.db  59,   0, 199,  63,   0, 195,  67,   0, 191,  70,   0, 188 ;236
	.db  74,   0, 184,  78,   0, 181,  81,   0, 177,  85,   0, 173 ;240
	.db  88,   0, 170,  92,   0, 166,  96,   0, 162,  99,   0, 159 ;244
	.db 103,   0, 155, 107,   0, 151, 110,   0, 148, 114,   0, 144 ;248
	.db 117,   0, 140, 121,   0, 137, 125,   0, 133, 127,   0, 129 ;252
Конкретно в нём нужно править число 0xE140, в "Vref no charge 4,2V (калибр.)" Число это должно быть кратное 64-м, ибо сравнивается оно с таким же (у АЦП 10 бит с выравниванием по левому краю, а число 16-ти битное). Воткнули батарею, зарядили до 4,15V, а надо 4,20V, что делаем: 4,20/4,15*0xE140/0x40*0x40=Vref. С переводом чисел из одной системы в другую - инженерный калькулятор в помощь.
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 18:49   34
lasers_Nimnul
Новичок
 
Регистрация: 03.10.2012
Последняя активность: 28.11.2012 17:01
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Спасибо ОГРОМНОЕ...буду собирать.
lasers_Nimnul вне форума   Ответить с цитированием Вверх
Старый 05.10.2012, 22:52   35
lasers_Ryazanec
Ветеран Фонарёвки
 
Регистрация: 04.05.2010
Последняя активность: 15.11.2019 11:47
Сообщений: 1409
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

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

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

По умолчанию

Ой, не твои это проблемы, по-моему ...
Или я не прав и чего-то не понимаю?
Тут кто-то помню выступал, мол понаделали мне дорогих подарков по дембелю, открытку подарили в рамочке даже, и теперь ждёте от меня взаимности. Я что-то упустил? Вот висит эта рамочка над монитором, читаю кто там на шикарный мультиметр мне скидывался, которым я эту зарядку и мерял с точностью до сотни микровольт. И ты есть в том списке, и ABA, который упорно ждёт от меня драйвера для сини, и mason, лазер которого с 12x ЛД лежит у меня без драйвера ещё с весны, и ещё куча народу. И динамики у меня долгожданные появились благодаря форуму, на акустику моей мечты. Это так, пища для размышлений, чтоб не ругали за мою доброту, сами же этим грешите ...

Я не собираюсь ставить эту зарядку на конвейер. А если и собираюсь, то не с этим кодом, ибо калибровать каждый девайс геморно. Будем считать это Open Source. Как по мне - так всем же только лучше от этого...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 06.10.2012, 00:53   37
lasers_Российская Федерация
Ветеран Фонарёвки
 
Аватар для lasers_Российская Федерация
 
Регистрация: 15.02.2010
Последняя активность: 20.06.2019 01:21
Сообщений: 1411
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Ну мы как бы от чистого сердца, все дела... Ясен перец никто не будет специально требовать от тебя новых свершений) Твари по ходу дела и не парься об этом)
lasers_Российская Федерация вне форума   Ответить с цитированием Вверх
Старый 06.10.2012, 01:35   38
lasers_Hobbi TV
Ветеран Фонарёвки
 
Аватар для lasers_Hobbi TV
 
Регистрация: 14.02.2010
Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

Цитата:
Посмотреть сообщение Сообщение от INFERION :
И динамики у меня долгожданные появились благодаря форуму, на акустику моей мечты.
Кстати, кто не в курсе - Инф тогда выбрал динамики вместо осциллографа.
__________________
моб.: +7-931-336-3737
e-mail: shop@hobbi.tv
lasers_Hobbi TV вне форума   Ответить с цитированием Вверх
Старый 06.10.2012, 01:51 Автор темы   39
lasers_INFERION
Ветеран Фонарёвки
 
Аватар для lasers_INFERION
 
Регистрация: 15.02.2010
Последняя активность: 24.08.2019 11:36
Сообщений: 1362
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

По умолчанию

А теперь если успею доделать акустику до конца месяца - и осциллограф могу выиграть на конкурсе, проходящем на сайте паяльника ...
lasers_INFERION вне форума   Ответить с цитированием Вверх
Старый 08.10.2012, 16:18   40
lasers_chem_kot
Завсегдатай Фонарёвки
 
Аватар для lasers_chem_kot
 
Регистрация: 13.03.2010
Последняя активность: 15.08.2015 05:45
Сообщений: 522
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях

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

В глаза случайно бросилось
ldi R16, 0b00111000 ;выключение цифрового входа на PB3, PB4 и PB5
out DIDR0, R20
R20 нигде до этого не трогался. Очепятка?
lasers_chem_kot вне форума   Ответить с цитированием Вверх
Ответ  Создать новую тему





Copyright ©2007 - 2024, FONAREVKA.RU

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

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

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