Если Вы увлекались Китайскими фонариками на сверх ярких светодиодах, то Вам знаком этот драйвер. Я его немного модифицировал. Просто было интересно разобраться с программированием микропроцессоров AVR. В этом драйвере установлен ATtiny13A. Еще там установлены стабилизаторы тока AMC7135 – 8шт. В максимальном режиме этот драйвер выдает стабильный ток силой 2,8А, но не долго, т.к. батарея разряжается. Режимы с меньшим током реализованы ШИМ регулированием. Все AMC7135 висят на одной ноге микропроцессора. Переключение режимов осуществляется прерыванием питания драйвера.
Мне захотелось поделить из на группы и регулировать в режимах с большим током не при помощи ШИМ, а изменением количества включенных AMC7135 и только самые минимальные режимы я решил реализовать на ШИМ. Такое решение обеспечит максимальный КПД. Кроме того было решено реализовать “выжиматель” батареи. Дело в том, что у аккумуляторов есть некое внутреннее сопротивление и согласно закону Ома при увеличении тока нагрузки напряжение понижается, но если при достижении минимально допустимого напряжения уменьшить ток, то напряжение возрастет и аккумулятор сможет отдать еще некоторое количество энергии.
Еще я решил добавить индикацию напряжения на батареи – при полностью заряженной –5 миганий, при разряженной – одно мигание. Режим индикации включается двойным быстрым прерыванием питания (примерно как для переключения режима, но значительно быстрее). Кроме того было решено сделать защиту от переразряда батареи для работы разными типами аккумуляторов. Обычно фонарь считает критическим напряжение 3V, а после установки перемычки 2.8. Это я для более полного разряда LiFePo4.
Идей много, а памяти для размещения программы в ATtiny13A всего 1kb :( Кстати, о микропроцессоре:
Features
• High Performance, Low Power AVR® 8-Bit Microcontroller
• Advanced RISC Architecture
– 120 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 20 MIPS Througput at 20 MHz
• High Endurance Non-volatile Memory segments
– 1K Bytes of In-System Self-programmable Flash program memory
– 64 Bytes EEPROM
– 64 Bytes Internal SRAM
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
– Data retention: 20 Years at 85°C/100 Years at 25°C (see page 6)
– Programming Lock for Self-Programming Flash & EEPROM Data Security
• Peripheral Features
– One 8-bit Timer/Counter with Prescaler and Two PWM Channels
– 4-channel, 10-bit ADC with Internal Voltage Reference
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
• Special Microcontroller Features
– debugWIRE On-chip Debug System
– In-System Programmable via SPI Port
– External and Internal Interrupt Sources
– Low Power Idle, ADC Noise Reduction, and Power-down Modes
– Enhanced Power-on Reset Circuit
– Programmable Brown-out Detection Circuit with Software Disable Function
– Internal Calibrated Oscillator
• I/O and Packages
– 8-pin PDIP/SOIC: Six Programmable I/O Lines
– 10-pad MLF: Six Programmable I/O Lines
– 20-pad MLF: Six Programmable I/O Lines
• Operating Voltage:
– 1.8 – 5.5V
• Speed Grade:
– 0 – 4 MHz @ 1.8 – 5.5V
– 0 – 10 MHz @ 2.7 – 5.5V
– 0 – 20 MHz @ 4.5 – 5.5V
• Industrial Temperature Range
• Low Power Consumption
– Active Mode:
• 190 μA at 1.8 V and 1 MHz
– Idle Mode:
• 24 μA at 1.8 V and 1 MHz
Вот так, и все это в малюсеньком корпусе с 8 ногами.
На изучения микроконтроллера и реализацию задуманного ушло примерно 7 дней, результатом я делюсь с Вами. Вдруг, не я один такой упертый и еще кто-то решит изменить программу в микроконтроллере, управляющем Китайским фонариком :) .
Что может модифицированный драйвер:
1. Пять режимов работы. Переключение вниз - от мощного к слабому:
- 2.8А включено 8 шт. 7135
- 1.05А включено 3 шт. 7135
- 0.35А включено 1 шт. 7135
- 0.16А включено 1 шт. 7135 и ШИМ.
- 10mA одна 7135 и маленький ШИМ (очень слабы режим, зато ночью после полной темноты не слепит)
2. Память режимов. Драйвер помнит режим, в котором был до отключения и включается именно в нем.
3. Защита от дребезга контактов – драйвер не будет хаотично менять режимы и не будет срабатывать защита от разряда аккумулятора.
4. Высасыватель батареи – переключение режимов при достижении на батарее критически низкого напряжения и затем полное отключение фонаря.
5. Индикация напряжения на батарее, включается тремя очень быстрыми кликами кнопки питания. Полностью заряжено – 5 миганий, разряжено – одно мигание.
Может он и еще что может – не помню :)
Чтобы залить программа работала в драйвере нужно его немного модифицировать. Режем дорожки в местах, отмеченных стрелками 1 и 2:
Для наглядности справа фото драйвера без стрелок. Напаиваем 2 перемычки и все – готово. Пора заливать прошивку. Да, совсем забыл, звезда 3 служит для изменения диапазона – не замкнуто на землю – диапазон для работы с литий ионом, замкнуто – LiFePo4. Диапазоны моргалки:
ион - 3.10V 3.40V 3.70V 4.10V
фосфат - 2.90V 3.10V 3.30V 3.50V его можно бы разрядить и до 2-х вольт, но нет смысла. После того как драйвер отключается в батарее остается 10-12 mAh.
Высасыватель батареи отключает максимум 3,0В для иона и 2.8В для фосфата. В режимах с меньшим током порог немного меняется в сторону уменьшения.
Про заливку программ в AVR можно узнать из Интернет. Существует очень много различных программаторов, я использовал такую схемку:
Вот здесь можно почитать http://forum.fonarevka.ru/showthread.php?t=4
Программу использовал PonyProg, фусы выставляем так:

Прошивку берем здесь http://narod.ru/disk/39435195001/7135x8v