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

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

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

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

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Ответ  Создать новую тему
Просмотров в теме 7388   Ответов в теме 1   Подписчиков на тему 0   Добавили в закладки 1
Опции темы Поиск в этой теме
Старый 07.02.2011, 12:50 Автор темы   1

 
Аватар для MrHot
 
Регистрация: 22.08.2010
Последняя активность: 20.11.2016 05:29
Адрес: Хабаровск
Сообщений: 270
Сказал(а) спасибо: 6
Поблагодарили: 95 раз(а) в 22 сообщениях

По умолчанию Переделываем Ultrafire UF-H3

Перенос со speleo.ru на fonarevka.ru выполнен на правах авторства материалов.


Занавес - в сторону !

Переделываем Ultrafire UF-H3.

Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 1805
Размер:	61.4 Кб
ID:	7387

Данная статья пересекается со следующими темами данного форума:
  • "Зебра" для бедных (или Ultrafire UF-H3)
  • Осваиваем LTC3454(или как три пальца об###)
  • Zebra H60 reverse engineering.
(ссылки на данные темы следует искать через содержание раздела светотехники)

Элетроника.

Ядро Buck-Boost преобразователя уже довольно избито и затёрто. Это LTC3454.
Я продолжил изыскания начатые Andreyus и попытался изготовить ядро с некоторой сервисной доработкой. Доработка касается возможности работать драйверу как на 20ма, так и на 700ма при управлении от процессора.
И так. Всё собрано из двух блоков.
Силовая часть:
Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 1811
Размер:	35.0 Кб
ID:	7388

И блок микроконтроллера.
Нажмите на изображение для увеличения
Название: 3.jpg
Просмотров: 1700
Размер:	225.6 Кб
ID:	7389

Я изначально питал надежду собрать всё при помощи PWM-управления (PWM + интегратор на RC-цепочке). Но потом мои надежды развалились. Я понял что невозможно будет задать нужный стабильный уровень напряжения. к этому моменту процессор уже стоял на печатной плате (неправильной печатной плате) и перепаивать его было кране нежелательно. Решено было спасать процессор и выполнить монтаж тонкими проводами в лаковой изоляции с последующим нанесением лака. Большая просьба в этом месте промолчать искателей перфекционизма (сделаете себе платы такие, какие захотите, и всё сделаете правильно и с первого сраза).
В итоге, пошарив в панике по ящикам - я обнаружил MCP41050. Это электронно управляемый (SPI) потенциометр на 50 Ком. Он выпускается только в SO-8 и это была катастрофа. Место было только одно - на обратной стороне платы процессора. Там я резаком расчертил лужайку под MCP41050 и выполнил её монтаж. После пробного запуска я обнаружил что не могу выставить ток ниже 60ма. А хотелось - очень. Хотелось примерно 20ма. И так на свет появился резистор R2 на схеме CPU. Именно дёргая его то на землю, то в 3-е состояние (порт PA3) я смог сгладить ограниченые рамки своей элементной базы. Что интересно - мне даже это понравилось. Можно применять и иные электронные потенциометры. Более простые и с меньшим числом шагов. В той схеме что у меня приведена - запись меньшего значения в потенциометр обеспечивает протекание меньшего тока через LED. Что приятно совпадает с человеческой логикой.
Немного об индуктивности. Это MURATA типоразмера 2525. Выполнена в закрытом виде. На вид как ящик. Очень удобно обпиливать её при изготовлении "бутербродных" плат. Другого у меня небыло, а мотать самому не очень хотелось. Хотя, я сделал попытку. Но КПД был достигнут такой же, и посему - я решил не дурить и оставил MURATA.
При том что у меня есть КПД составил:
При птании 4,068V и токе через LED 0,113А - 90%
На малых токах 20ма - я не промерял КПД. Вернее, он был примерно 84% на токе в 61ма. На 20 ма - ещё меньше из-за работающего процессорного блока (и не только). Но даже эти показатели я считаю очень приемлимыми и приятными. Большего - не желаю (хотя нет.. соврал..).
Я изготовил под себя прошивку:
  • Пять режимов.
  • Есть запоминание текущего режима при выключении (хранится в RAM).
  • При смене батареи - переходит в самый слабый из режимов.
  • При обнаружении провала питания ниже 3.5V - даётся один раз предупредительное моргание (3-и раза мигает) и более не повторяется (если сделать вкл/выкл - то повторится)
  • При провале питания ниже 3.0V - автоматом переключается в самый слабый из режимов.
  • При напряжении 2.8 - немедленное отключение.
  • Ток в состоянии ожидания примерно 0.7...0.8 мкА (измерено мультиметром Agilent)
  • Первый режим ~22ма
  • затем ~62ма
  • ~112ма
  • ~340ма
  • ~680ма
Ток покоя в режиме ожидания - меня просто поразил. Это нечто ! Всегда бы так ! Прошивка писалась несколько дней. Я уже почти был готов бросить это занятие. Постоянно была борьба за микропотребление в спячке (это оказалось не так просто сделать, вечно что-то жрало то там то сям..) Процессор был с 2Кб Flash ПЗУ и т.к. я писал на AVR GCC то память летела со свистом. Осталось в итоге 10%
Ругайте меня - пилите, что хотите.. но могу дать только "гостевой" исходник.
<dl class="codebox"><dt>Код:
</dt><dd>
Цитата:
<code>#include <avr io.h="">
#include <avr sleep.h="">
#include <avr interrupt.h="">

unsigned char OnOffState;
unsigned char ModeNumber;
unsigned char ButRead;

//---------------------------------------------------------------------------------------
ISR(IO_PINS_vect)
{
GIMSK = GIMSK & 0b11101111; //запрещены прерывания от OnPinChange
}
//---------------------------------------------------------------------------------------
void Delay1(void) //264ms at 1MHz and -O0 (compiller option)
{
unsigned int i;
unsigned int j;
for(i=0; i<8000; i++) j = j + i;
}
//---------------------------------------------------------------------------------------
void SPI_MCP41xx(unsigned char TxCommand, unsigned char TxData)
{
unsigned char i, tData;
//SPI_OUT PORTB1
//SPI_SCK PORTB2
//SPI_CS PORTA0
PORTA = PORTA | 0b00000001; //SPI_CS = 1
PORTA = PORTA & 0b11111110; //SPI_CS = 0
PORTB = PORTB & 0b11111011; //SPI_SCK = 0

tData = TxCommand;
for (i=0; i<8; i++)
{

if (tData & 0b10000000)
PORTB = PORTB | 0b00000010; //SPI_OUT = 1
else
PORTB = PORTB & 0b11111101; //SPI_OUT = 0

PORTB = PORTB | 0b00000100; //SPI_SCK = 1
PORTB = PORTB | 0b00000100; //SPI_SCK = 1
PORTB = PORTB & 0b11111011; //SPI_SCK = 0
tData = tData << 1;
}

tData = TxData;
for (i=0; i<8; i++)
{

if (tData & 0b10000000)
PORTB = PORTB | 0b00000010; //SPI_OUT = 1
else
PORTB = PORTB & 0b11111101; //SPI_OUT = 0

PORTB = PORTB | 0b00000100; //SPI_SCK = 1
PORTB = PORTB | 0b00000100; //SPI_SCK = 1
PORTB = PORTB & 0b11111011; //SPI_SCK = 0
tData = tData << 1;
}


//инициализация линий SPI в исходное состояние
PORTB = PORTB & 0b11111011; //SPI_SCK = 0
PORTA = PORTA | 0b00000001; //SPI_CS = 1
}
//---------------------------------------------------------------------------------------
void main()
{
OnOffState = 0;
ModeNumber = 1;

MCUCR = MCUCR | 0b00110000; //Set PowerDown Mode and Sleep Enable bit
MCUCR = MCUCR & 0b11110111; //SM0 = 0

ACSR = ACSR | 0b10000000; //Analog comparator disable
ADCSR = ADCSR & 0b01111111; //ADC disable

PORTA = 0xFF; //подтягиваем всё к питанию, чтобы ложно не срабатывало OnPinChange
PORTB = 0xFF;
PORTA = PORTA & 0b11011111; // PA5 - вход резистивного делителя, подтягивание тут излишне
PORTB = PORTB & 0b01111111; // Reset line pull up disable

DDRB = 0b00000111; //PB1 PB2 - как выход (SPI interface) PB0 - как выход EN1 для LTC3454
DDRA = DDRA | (1<<dda0); pa0="" -="" как="" выход="" cs="" для="" mcp41xxx="">

DDRA = DDRA | (1<<dda7); pa2="" -="" как="" выход="" (резистивный="" делитель)="">

//PORTA = PORTA | (1<

PORTB = PORTB & 0b11111110; //выключить EN1 для LTC3454

PORTA = PORTA & 0b01111111; //вЫключить тестовый светодиод

//инициализация линий SPI
PORTA = PORTA | 0b00000001; //SPI_CS = 1
PORTB = PORTB & 0b11111011; //SPI_SCK = 0

SPI_MCP41xx(0b00010001, 200);
SREG = SREG | 0b10000000; //разрешены прерывания поднят флаг I

// первичные инициализации завершены
while (1) //общий цикл событий
{
if (OnOffState == 0) //надо впасть в спячку
{
GIMSK = GIMSK | (1<

sleep_cpu();
} //надо впасть в спячку


ButRead = PINB & 0b00001000; //интересует PINB3
//посмотрим на кнопку, не нажали ли её
if (ButRead == 0) //что-то случилось с кнопкой
{
Delay1(); //ждём
if (OnOffState == 0) //PowerUp procedure
{
PORTB = PORTB | 0b00000001; //включить EN1 для LTC3454
OnOffState = 1;
} //PowerUp procedure
else //PowerDown procedure
{
OnOffState = 0;
PORTB = PORTB & 0b11111110; //выключить EN1 для LTC3454
} //PowerDown procedure
} //что-то случилось с кнопкой
} //общий цикл событий
}

</dda7);></dda0);></avr></avr></avr></code>
</dd><dd><code><avr io.h=""><avr sleep.h=""><avr interrupt.h=""><dda0); pa0="" -="" как="" выход="" cs="" для="" mcp41xxx=""><dda7); pa2="" -="" как="" выход="" (резистивный="" делитель)="">



</dda7);></dda0);></avr></avr></avr></code></dd></dl>
Он умеет включаться-выключаться и работать с потенциометром. R2 - на плате CPU необходимо ликвидировать и выводы #6,7 MCP41050 заземлить. Это даст стабилизацию тока в 220ма (если мне не изменяет память).
Если не будет R2 - то минимальный ток драйвера будет в районе 60ма. Т.е. это меня не устроило и я сделал ещё и управляемый R2. Но в "гостевой" прошивке R2 - не управляется и не предусмотрен. Посему - я написал что и куда необходимо закоротить (чтобы гостевая прошивка "ожила" по моему замыслу).

Вот фьюзы:
Нажмите на изображение для увеличения
Название: 4.png
Просмотров: 1765
Размер:	9.0 Кб
ID:	7390

Вот опции компиляции:
Нажмите на изображение для увеличения
Название: 5.png
Просмотров: 1702
Размер:	23.0 Кб
ID:	7391

Это позволит понять что и как при отладке своего драйвера. Хотя - я сильно сомневаюсь что есть желающие повторять тоже самое на процессоре AtTiny26L в корпусе MLF. Я и сам уже не в числе таких желающих. Хотя...

Обратная сторона силовой платы:
Нажмите на изображение для увеличения
Название: 6.jpg
Просмотров: 445
Размер:	368.9 Кб
ID:	7392

Две платы перед сборкой.
Нажмите на изображение для увеличения
Название: 7.jpg
Просмотров: 463
Размер:	298.2 Кб
ID:	7393

Две платы бутербродом.
Нажмите на изображение для увеличения
Название: 8.jpg
Просмотров: 439
Размер:	287.5 Кб
ID:	7394

Модификации теплонесущих частей.

Как были срезаны резьбовые стойки.
Нажмите на изображение для увеличения
Название: 9.jpg
Просмотров: 401
Размер:	373.9 Кб
ID:	7395

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

Утрамбовано внутрь.
Нажмите на изображение для увеличения
Название: 10.jpg
Просмотров: 419
Размер:	339.3 Кб
ID:	7396

При вставке драйвера внутрь - я применил капельку разъёмного автомобильного анаэробного резьбового фиксатора. Т.к. я довольно много раз вставлял и извлекал латунное кольцо то оно ослабило хватку алюминия. Не сильно, но ослабило. Через это латунное колечко тепло от LTC3454 уходит прямо в корпус через намеренно утолщённые дорожки.

Начинаем изобретать теплопровод.
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 520
Размер:	162.3 Кб
ID:	7397

Это кусок водопроводной медной трубы 1мм толщиной. При изгибании использовал свёрла и небольшие пасатижики.

Пропаиваем его.
Нажмите на изображение для увеличения
Название: 12.jpg
Просмотров: 521
Размер:	122.5 Кб
ID:	7398

Заходим в примерочную...
Нажмите на изображение для увеличения
Название: 13.jpg
Просмотров: 391
Размер:	209.7 Кб
ID:	7399

LED - снабжаем медным уголком и примеряемся.
Нажмите на изображение для увеличения
Название: 14.jpg
Просмотров: 477
Размер:	183.1 Кб
ID:	7400

Тоже самое, но если перевернуть.
Нажмите на изображение для увеличения
Название: 15.jpg
Просмотров: 483
Размер:	202.9 Кб
ID:	7401

Гайку я был вынужден припять намертво. Иначе - ничего не выйдет. Т.о. я получил разборный проводник-распределитель тепла. Если кто придумает (и зафотографирует) лучше - большой почёт тому и уважение ! У меня - идей нет более.

Надо всё промазать теплопроводящим составом. LED в месте прохождения винта (М1,6) надо промазать пастой КПТ-8. Линза LED так же промазывается изнутри по контуру для влагостойкости.
Находим по оглавлению и читаем тему: "Термоклеи, термоинтерфейсы в применении к охлаждению LED".
Нажмите на изображение для увеличения
Название: 16.jpg
Просмотров: 483
Размер:	243.0 Кб
ID:	7402

Модификация пружины. Без этого мероприятия сильно ощущается падение напряжение на этой самой пружине. На токе в 680ма - это ощутимо проваливает питание. Поэтому - так проще, лучше и надёжнее.
Ищем по оглавлению и читаем тему: "Модернизация пружин батарейных отсеков".

Нажмите на изображение для увеличения
Название: 17.jpg
Просмотров: 446
Размер:	310.8 Кб
ID:	7403

Весть проект выполнен специально под незащищённые АКБ. Заказал себе 3000ма/час Li-Ion с Dx (без защиты). Буду тестировать. Думаю что всё будет очень приятно.

Защита от переполюсовки не сделана. Особо невнимательные (и те кто меняет АКБ в темноте) могут подсмотреть уже готовые схемы защиты в обзорах Dhaitya.

Надеюсь, господа - всем было очень интересно.
Занавес закрывается...
MrHot вне форума   Ответить с цитированием Вверх
Поблагодарили: 3 раз(а)
Bobay (16.02.2013), kiraX (19.11.2013), rezhik (30.11.2012)
Старый 07.02.2011, 14:45 Автор темы   2
MrHot

 
Аватар для MrHot
 
Регистрация: 22.08.2010
Последняя активность: 20.11.2016 05:29
Адрес: Хабаровск
Сообщений: 270
Сказал(а) спасибо: 6
Поблагодарили: 95 раз(а) в 22 сообщениях

По умолчанию Re: Переделываем Ultrafire UF-H3

После переделки заметил некую странность при операциях с кнопкой. Создавалось ощущение, что что-то помимо меня надавливает на кнопку при этом не создавая щелчка. При этом ситуация оказалось нестабильной. Т.е. то работает как надо, то ведёт себя странно. Например может пропустить нажатие и не отреагировать на него.
Как водится - первым делом ругань пошла на кривизну софта. Но решил не торопиться. Выкрутил кнопку и повесил её на проводках. Стал днями тестировать. Сижу, что-то делаю за столом и периодически тыркаю фонарик. Всё оказалось на удивление складно и чётко.
Вторая мысль пала на теплопроводящий герметик. Думал что он проводит частично ток и при закрывании я где-то что-то испачкал и теперь это что-то периодически мне гадости строит. Но практика показала что герметик не проводит ток даже на диапазоне тестера в 200Мом.
Третье что пришло в голову - это то что винты слегонца вылазят из своих "нор" и что-то там замыкают. Винты имели неровные и острые края. Видимо их в китае обкусывали бокорезами. После некоторой обработки на Dremel-е у меня винты стали немного короче и обзавелись гламурными, почти полироваными хвостовиками. Но и это небыло причиной проишествий.
Немного позже выяснилось что глюки возникают при надавливании резинового колпачка в область кнопки. После долгих танцев с бубном я заменил тактовую кнопку на совершенно другую. Кажется нечисть удалось победить. Ещё придирчиво тестирую.
Итог: как мне показалось, штатная кнопка оказалось какой-то ущербной. Первый раз так попадаюсь на обыкновенной кнопке. Время покажет в общем...
MrHot вне форума   Ответить с цитированием Вверх
Ответ  Создать новую тему





Copyright ©2007 - 2024, FONAREVKA.RU

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

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

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