IMAX по-русски: USB-вариант умной зарядки на микроконтроллере для любых аккумуляторов. Радиотехника, электроника и схемы своими руками


Аккумуляторы сегодня очень распространены, но зарядные устройства для них, имеющиеся в продаже, как правило, не универсальны и слишком дороги. Предлагаемое устройство предназначено для зарядки аккумуляторных батарей и отдельных аккумуляторов (в дальнейшем используется термин "батарея") с номинальным напряжением 1,2...12,6 В и током от 50 до 950 мА. Входное напряжение устройства - 7...15 В. Ток потребления без нагрузки - 20 мА. Точность поддержания тока зарядки - ±10 мА. Устройство имеет ЖКИ и удобный интерфейс для установки режима зарядки и наблюдения за её ходом.

Реализован комбинированный метод зарядки, состоящий из двух этапов. На первом этапе батарею заряжают неизменным током. По мере зарядки напряжение на ней растёт. Как только оно достигнет заданного значения, наступит второй этап - зарядка неизменным напряжением. На этом этапе зарядный ток постепенно снижается, а на батарее поддерживается заданное напряжение. Если напряжение по какой-либо причине упадёт ниже заданного, автоматически вновь начнётся зарядка неизменным током.

Схема зарядного устройства изображена на рис. 1.

Рис. 1. Схема зарядного устройства

Его основа - микроконтроллер DD1. Он тактирован от внутреннего RC-генератора частотой 8 МГц. Использованы два канала АЦП микроконтроллера. Канал ADC0 измеряет напряжение на выходе зарядного устройства, а канал ADC1 - зарядный ток.

Оба канала работают в восьмиразрядном режиме, точности которого для описываемого устройства достаточно. Максимальное измеряемое напряжение - 19,9 В, максимальный ток - 995 мА. При превышении этих значений на экране ЖКИ HG1 появляется надпись "Hi".

АЦП работает с образцовым напряжением 2,56 В от внутреннего источника микроконтроллера. Чтобы иметь возможность измерять большее напряжение, резистивный делитель напряжения R9R10 уменьшает его перед подачей на вход ADC0 микроконтроллера.

Датчиком зарядного тока служит резистор R11. Падающее на нём при протекании этого тока напряжение поступает на вход ОУ DA2.1, который усиливает его приблизительно в 30 раз. Коэффициент усиления зависит от соотношения сопротивлений резисторов R8 и R6. С выхода ОУ напряжение, пропорциональное зарядному току, через повторитель на ОУ DA2.2 поступает на вход ADC1 микроконтроллера.

На транзисторах VT1-VT4 собран электронный ключ, работающий под управлением микроконтроллера, формирующего на выходе ОС2 импульсы, следующие с частотой 32 кГц. Коэффициент заполнения этих импульсов зависит от требуемых выходного напряжения и зарядного тока. Диод VD1, дроссель L1 и конденсаторы С7, С8 преобразуют импульсное напряжение в постоянное, пропорциональное его коэффициенту заполнения.

Светодиоды HL1 и HL2 - индикаторы состояния зарядного устройства. Включённый светодиод HL1 означает, что наступило ограничение выходного напряжения. Светодиод HL2 включён, когда идёт нарастание зарядного тока, и выключен, когда ток не изменяется или падает. В ходе зарядки исправной разряженной батареи сначала будет включён светодиод HL2. Затем светодиоды станут поочерёдно мигать. О завершении зарядки можно судить по свечению только светодиода HL1.

Подборкой резистора R7 устанавливают оптимальную контрастность изображения на табло ЖКИ.

Датчик тока R11 можно сделать из отрезка высокоомного провода от спирали нагревателя или от мощного проволочного резистора. Автор использовал отрезок провода диаметром 0,5 мм длиной около 20 мм от реостата.

Микроконтроллер ATmega8L-8PU можно заменить любым из серии ATmega8 с тактовой частотой 8 МГц и выше. Полевой транзистор BUZ172 следует установить на теплоотвод с площадью охлаждающей поверхности не менее 4 см 2 . Этот транзистор можно заменить другим p-канальным с допустимым током стока более 1 А и малым сопротивлением открытого канала.

Вместо транзисторов КТ3102Б и КТ3107Д подойдёт и другая комплементарная пара транзисторов с коэффициентом передачи тока не менее 200. При правильной работе транзисторов VT1-VT3 сигнал на затворе транзистора должен быть аналогичен показанному на рис. 2.

Рис. 2. График сигнала на затворе

Дроссель L1 извлечён из компьютерного блока питания (он намотан проводом диаметром 0,6 мм).

Конфигурация микроконтроллера должна быть запрограммирована в соответствии с рис. 3. Коды из файла V_A_256_16.hex следует занести в память программ микроконтроллера. В EEPROM микроконтроллера должны быть записаны следующие коды: по адресу 00H - 2СН, по адресу 01H - 03H, по адресу 02H - 0BEH, по адресу 03H -64H.

Рис. 3. Программирование микроконтроллера

Налаживание зарядного устройства можно начинать без ЖКИ и микроконтроллера. Отключите транзистор VT4, а точки подключения его стока и истока соедините перемычкой. Подайте на устройство напряжение питания 16 В. Подберите резистор R10 таким, чтобы напряжение на нём находилось в пределах 1,9...2 В. Можно составить этот резистор из двух, соединённых последовательно. Если источника напряжения 16 В не нашлось, подайте 12 В или 8 В. В этих случаях напряжение на резисторе R10 должно быть соответственно около 1,5 В или 1 В.

Вместо батареи подключите к устройству последовательно амперметр и мощный резистор или автомобильную лампу. Изменяя напряжение питания (но не ниже 7 В) или подбирая нагрузку, установите ток через неё равным 1 А. Подберите резистор R6 таким, чтобы на выходе ОУ DA2.2 было напряжение 1,9...2 В. Как и резистор R10, резистор R6 удобно составить из двух.

Отключите питание, подключите ЖКИ и установите микроконтроллер. К выходу устройства присоедините резистор или лампу накаливания 12 В на ток около 0,5 А. При включении устройства на ЖКИ будут выведены напряжение на его выходе U и ток зарядки I, а также напряжение ограничения Uz и максимальный ток зарядки Iz. Сравните значения тока и напряжения на ЖКИ с показаниями образцовых амперметра и вольтметра. Вероятно, они будут различаться.

Выключите питание, установите перемычку S1 и вновь включите питание. Для калибровки амперметра нажмите и удерживайте кнопку SB4, а кнопками SB1 и SB2 установите на ЖКИ значение, ближайшее к показываемому образцовым амперметром. Для калибровки вольтметра нажмите и удерживайте кнопку SB3, а кнопками SB1 и SB2 установите на ЖКИ значение, равное показываемому образцовым вольтметром. Не выключая питания, снимите перемычку S1. Калибровочные коэффициенты будут записаны в EEPROM микроконтроллера для напряжения по адресу 02H, а для тока - по адресу 03H.

Выключите питание зарядного устройства, установите на место транзистор VT4, а к выходу устройства подключите автомобильную лампу на 12 В. Включите устройство и установите Uz=12 В. При изменении Iz должна плавно меняться яркость свечения лампы. Устройство готово к работе.

Требуемый зарядный ток и максимальное напряжение на батарее устанавливают кнопками SB1 "▲", SB2 "▼", SB3 "U", SB4 "I". Интервал изменения зарядного тока - 50...950 мА с шагом 50 мА. Интервал изменения напряжения - 0,1...16 В с шагом 0,1 В.

Для изменения Uz или Iz нажмите и удерживайте соответственно кнопку SB3 или SB4, ас помощью кнопок SB1 и SB2 установите требуемое значение. Через 5 с после отпускания всех кнопок установленное значение будет записано в EEPROM микроконтроллера (Uz - по адресу 00H, Iz - по адресу 01H). Следует иметь в виду, что удержание кнопки SB1 или SB2, нажатой более 4 с, увеличивает скорость изменения параметра приблизительно в десять раз.

Программу микроконтроллера можно скачать .


Дата публикации: 25.09.2016

Мнения читателей
  • Олег / 19.05.2018 - 21:49
    Очень прошу, скиньте файл для прошивки eeprom на эл.почту [email protected] Больше месяца тужусь, не выходит цветок!!!
  • саша / 19.01.2018 - 19:10
    Народ,кто нибудь собирал данный девайс!
  • Юрий / 19.01.2018 - 18:35
    Вопро к автору.Вывод 1 микропроцессора висит в воздухе.Это не опечатка.

Это устройство предназначено для измерения ёмкости аккумуляторов Li-ion и Ni-Mh , а также для заряда Li-ion аккумуляторов с выбором начального тока заряда.

Управление

Подключаем устройство к стабилизированному блоку питания 5в и током 1А (например от сотового телефона). На индикаторе в течении 2 сек отображается результат предыдущего измерения емкости "ххххmA/c" а на второй строке значение регистра OCR1A "S.xxx". Вставляем аккумулятор. Если нужно зарядить аккумулятор то кратко жмём кнопку ЗАРЯД, если нужно измерить ёмкость то кратко жмём кнопку ТЕСТ. Если нужно изменить ток заряда (значение регистра OCR1A) то долго(2 сек) жмем кнопку ЗАРЯД. Заходим в окно регулировки регистра. Отпускаем кнопку. Кратко нажимая на кнопку ЗАРЯД меняем по кругу значения (50-75-100-125-150-175-200-225) регистра, в первой строке показывается ток заряда пустого аккумулятора при выбранном значении (при условии что у вас в схеме стоит резистор 0,22 Ом). Кратко жмём кнопку ТЕСТ значение регистра OCR1A запоминаются в энергонезависимой памяти.
Если вы проделывали разные манипуляции с устройством и вам надо сбросить показания часов, измеренной ёмкости то долго жмём кнопку ТЕСТ (значение регистра OCR1A не сбрасываются). Как только заряд окончен подсветка дисплея отключается, для включения подсветки кратко нажмите кнопку ТЕСТ или ЗАРЯД.

Логика работы устройства следующая:

При подаче питания, на индикаторе отображается результат предыдущего измерения ёмкости аккумулятора и значение регистра OCR1A, хранящееся в энергонезависимой памяти. Через 2 секунды устройство переходит в режим определения типа аккумулятора по величине напряжения на клемах.

Если напряжение более 2В то это Li-ion аккумулятор и напряжение полного разряда составит 2,9В, иначе это Ni-MH аккумулятор и напряжение полного разряда составит 1В. Только после подключения аккумулятора доступны кнопки управления. Далее устройство ожидает нажатия кнопок Тест или Заряд. На дисплее отображается "_STOP". При нажатии кратко кнопки Тест подключается нагрузка через MOSFET.

Величина тока разряда определяется по напряжению на резисторе 5,1Ом и, каждую минуту суммируется с предыдущим значением. В устройстве используется кварц 32768Гц для работы часов.

На дисплее отображается текущая величина емкости аккумулятора "ххххmA/c" и тора разряда "А.ххх", а также время "хх:хх:хх"с момента нажатия кнопки. Показывается также анимированный значок разряда аккумулятора. По окончании теста для Ni-MH аккумулятора появляется надпись "_STOP", результат измерения отображается на дисплее "ххххmA/c" и запоминается.

Если аккумулятор Li-ion, то также результат измерения отображается на дисплее "ххххmA/c" и запоминается, но сразу включается режим заряда. На дисплее отображается содержимое регистра OCR1A "S.xxx". Показывается также анимированный значок заряда аккумулятора.

Регулировка тока заряда осуществляется с помощью ШИМ и ограничивается резистором 0,22Ом. Апаратно ток заряда можно уменьшить увеличив сопротивление 0,22Ом до 0,5-1Ом. В начале заряда ток плавно нарастает до значения регистра OCR1A или до достижения напряжения на клемах аккумулятора 4,22В (если аккумулятор был заряжен).

Величина тока заряда зависит от значения регистра OCR1A - больше значение - больше ток заряда. При превышении напряжения на клемах аккумулятора 4,22В значение регистра OCR1A уменьшается. Процесс дозаряда продолжается до величины регистра OCR1A равного 33, что соответствует току около 40 mA. На этом заряд заканчивается. Подсветка дисплея отключается.

Настройка

1. Подключаем питание.
2. Подключаем аккумулятор.
3. Подключаем вольтметр к аккумулятору.
4. Временными кнопками + и - (PB4 и PB5)добиваемся совпадения показания вольтметра на дисплее и на эталонном вольтметре.
5. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.
6. Извлекаем аккумулятор.
7. Подключаем вольтметр к резистору 5,1Ом (по схеме около транзистора 09N03LA).
8. Подключаем регулируемый БП к клемам аккумулятора, выставляем на БП 4В.
9. Нажимаем кратко кнопку ТЕСТ.
10. Измеряем напряжение на резисторе 5,1Ом - U.
11. Высчитываем ток разряда I=U/5,1
12. Временными кнопками + и - (PB4 и PB5) устанавливаем на индикаторе"А.ххх" рассчитанный ток разряда I.
13. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.

Устройство питается от стабилизированного источника напряжением 5 Вольт и током 1А. Кварц на 32768Гц предназначен для точного отсчета времени. Контроллер ATmega8 тактируется от внутреннего генератора частотой 8 МГц, также необходимо установить защиту от стирания EEPROM соответствующими битами конфигурации. При написании управляющей программы были использованы обучающие статьи с данного сайта.

Текущие значения коэффициентов напряжения и тока (Ukof . Ikof) можно увидеть если подключить дисплей 16х4 (16х4 предпочтительно для отладки) на третьей строке. Или в Ponyprog если открыть файл прошивки EEPROM (считать с контроллера EEPROM).
1 байт - OCR1A , 2 байт - I_kof, 3 байт - U_kof, 4 и 5 байт результат предыдущего измерения емкости.

Видео работы прибора:

Схемы на микроконтроллере, статьи и описания с прошивками и фотографиями для автомобиля.

Простой тахометр на микроконтроллере ATmega8

Тахометр применяется в автомобилях для измерения частоты вращения всяких деталей которые способны вращаться. Есть много вариантов таких устройств, я предложу вариант на AVR микроконтроллере ATmega8. Для моего варианта, вам также…

Читать полностью

Цветомузыка на микроконтроллере Attiny45 в авто

Эта цветомузыка, имея малый размер и питание 12В, как вариант может использоваться в авто при каких-либо мероприятиях. Первоисточник этой схемы Радио №5, 2013г А. ЛАПТЕВ, г. Зыряновск, Казахстан. Схема…

Читать полностью

Контроллер обогрева зеркал и заднего стекла

Позволяет управлять одной кнопкой раздельно обогревом заднего стекла и зеркал, плюс настраиваемый таймер отключения до полутора часов для каждого канала. Схема построена на микроконтроллере ATtiny13A. Описание работы:

Читать полностью

Диммер для плафона автомобиля

Почти во всех автомобилях есть управление салонным светом, которое осуществляется с помощью бортового компьютера или отдельной бортовой системой. Свет включается плавно, и гаснет также с некой задержкой (для…

Читать полностью

GSM сигнализация с оповещением на мобильник

Представляю очень популярную схему автомобильной сигнализации на базе микроконтроллера ATmega8. Такая сигнализация дает оповещение на мобильник админа в виде звонков или смс. Устройства интегрируется с мобильником с помощью…

Читать полностью

Моргающий стопак на микроконтроллере

Сделал новую версию моргающего стопака. Отличается алгоритм работы и схема управления, размер и подключение такое же. Возможно регулировать частоту моргания, длительность до перехода в постоянное свечение и скважность…

Читать полностью

ДХО плюс стробоскопы

Эта поделка позволяет стробоскопить светодиодными ДХО. Поделка имеет малый размер, управление всего одной кнопкой, широкие возможности настройки. Размер платы 30 на 19 миллиметров. С обратной стороны расположен клемник…

Читать полностью

Делаем и подключаем доводчик к сигнализации

Количества автомобилей с автоматическим стеклоподъемниками постоянно растет, и даже если в машине нет такого, многие делают его своими руками. Моей целю было собрать такое устройства и подключить его к…

Читать полностью

Светодиоды включаются от скорости

Получился «побочный продукт»: нужно было оттестить режим работы датчика скорости для проекта отображения передач на матрице 5х7, для этого собрал небольшую схемку. Схемка умеет включать светодиоды в зависимости…

Читать полностью

Цифровой тахометр на AVR микроконтроллере (ATtiny2313)

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

Читать полностью

Простой цифровой спидометр на микроконтроллере ATmega8

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

Читать полностью

Плавный розжиг приборки на микроконтроллере

Эта версия немного отличается схемой: добавлена вторая кнопка настройки и убран потенциометр скорости розжига. Возможности: Два отдельных независимых канала. Для каждого канала три группы настраиваемых параметра: время задержки до начала…

В интернете существует огромное количество схем зарядных устройств (ЗУ) для автомобильных аккумуляторов. От простейших до очень сложных. В нашем случае пойдет речь о ЗУ сделанном на микроконтроллере (МК) Atmega8. Использование МК в отличие от схемы на транзисторах позволяет внедрить очень богатый функционал для ЗУ. К примеру в данном зарядном я решил внедрить следующие функции.

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

2. Ток заряда будет до 5А. Хотя у меня в автомобиле стоит батарея 85А/ч мне для заряда хватит и 5А, просто на заряд уйдет немного больше времени. Однако при необходимости можно будет без глобальных переделок и перепрошивки МК увеличить ток заряда до 10А.

3. Менять ток заряда можно будет с шагом до 0.1А. Минимальный ток можно будет выбрать до 0.1А. Это значит можно заряжать и батареи маленькой емкости. Причем если энкодер вращать чуть быстрее, шаг увеличения/уменьшения тока заряда будет работать в пределах 0.5 А.

4. Батарея будет заряжаться до напряжения 14.4 вольт.

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

6. Обязательно должна быть защита от замыкания клемм ЗУ. К примеру если закоротить клеммы между собой и при этом включить зарядник, то разумеется это не должно принести ему вред. И вообще пока не будет подключена батарея на клеммах не будет никакого напряжения. Так же если по ошибке была подключена батарея не с соблюдением полярности, включение заряда будет невозможно. Вся эта защита будет реализована программно аппаратным способом.

7. Заряд батареи должен быть полностью автоматизирован. Это вполне возможно, так как будет использоваться МК. Автоматизация процесса заряда должна исключать участие человека. Это значит подключил батарею, выбрал ток заряда и на этом все. Все остальное должно сделать само зарядное. А именно, поддержание выбранного зарядного тока в процесе заряда. Если батарея неисправна и заряд дальше не возможен, батарея должна быть автоматически отключена, в противном случае она будет просто бесконечно кипеть, а нам это не надо.

8. Показалось, что удобна будет функция "хранение батареи зимой". Как ни крути, абсолютно любая батарея в природе имеет свой внутренний саморазряд. Это значит, что если просто оставить без присмотра батарею на определенный срок, то из-за тока саморазряда она разрядится, что в итоге приведет к сульфатации пластин. А для батареи это смерть. Причем время саморазряда и сульфатации не такое уж и большое. Порой достаточно пару месяцев. Чтобы этого не произошло и будет внедрена функция "хранение батареи зимой". Работает это просто, подключаем зарядник к батарее, причем батарею не нужно вынимать из автомобиля. Далее ЗУ будет раз в пол часа смотреть какое же напряжение на батарее. Если напряжение упало ниже нормы, включится автоматический заряд, после окончания цикла заряда, ЗУ опять перейдет в режим контроля напряжения на батарее. Причем порог срабатывания выставляет сам пользователь в меню и силу тока тоже можно выбрать в меню. Лично я для себя установил порог 12.5 вольт и сила тока заряда 0.5А. Зярадка малым током более эффективна чем большими токами.

9. Возможно будет полезна функция "продолжение заряда после отключения электричества". Хотя такое совпадение может произойти раз в 150 лет, тем не менее эта функция есть. Зарядное всегда "помнит", что включен процесс заряда и если произойдет отключение/включение элетричества, заряд просто продолжится дальше. В любом случае все функции можно отключить или включить по выбору в меню. Если отключить все функуции, то зарядное просто станет "обычным зарядным" которое зарядит батарею и выключится.

10. Ну и напоследок в ЗУ будет работать программный таймер. Таймер будет постоянно тикать вперед 0..1,2 и так далее. Если батарея заряжается, а это видно будет по тому, как на ней будет постепенно подниматься напряжение до 14.4 вольта. Так вот, как только на батарее напряжение чуть поднялось, таймер сразу сбросится в 0 и продолжить снова считать 0...1,2... Но если батарея неисправна или старая, или не совсем правильна плотность электролита, то при определенном пороге заряд дальше невозможен. И этот порог может быть ниже 14.4 вольта. Как быть? В таком случае таймер перестанет сбрасываться. И дотикав до определенного момента, он попросту выключит заряд с сообщением на дисплей. Дальше кипятить батарею не имеет смысла. Таймер можно выключить в меню или включить, задав диапазон тикания от 30 мин до 3х часов. На дисплее можно будет видеть как таймер будет тикать и сбрасываться время от времени, если заряд протекат в штатном режиме.

Теперь перейдем к обсуждению схемы зарядника.

Блок питания.
В данном случае будем использовать любой импульсный блок питания (ИБП). Выходное напряжение от 16 до 20 вольт. Так как ток заряда будет до 5А, то выходной ток ИПБ должен быть с запасом где-то до 6А. Я использовал ИПБ MEAN WELL RS-75-15 у которого выходное напряжение 15 вольт, но в блоке есть подстроечный резистор которым можно поднять напряжение до 16.5 вольт. Преимущество ИПБ в том что он легкий, компактный и имеет уже втроенную защиту от повышенных токов, замыканий и пр. Поэтому об этом уже не надо особо заботиться. Впринципе подходит любой другой ИПБ. Хоть с ноутбука. Если в вашем ИПБ ток менее 5А, его тоже можно использовать, просто нужно следить за тем чтоб не выставлять ток заряда более чем может выдать ИПБ. Трансформатрный блок питания в нашем случае не подходит. Зарядное на трансформаторе это отдельная тема и отдельная статья. Итак схема питания будет выглядеть примерно так.

Конденсатор на 1000uF в принципе можно не ставить так как он уже установлен в импульсном блоке питания на выходе, но если установить то хуже не будет. Конденсатор С2 лучше если будет электролит, но я поставил керамический smd. Стабилизатор 7805 нужен чтобы питать МК, дисплей LCD и прочую обвязку.

Теперь подключим батарею и полевой транзистор.



Как видим, все просто. Транзистором будем регулировать силу тока через батарею. Реле К1 будет брать на себя роль защиты, будет включаться только тогда, когда батарея подключена и подключена правильно. Цементный резистор R18 выполняет роль шунта. При токе в 5А на нем будет напряжение 0.5 вольт. Это напряжение усилим и подадим на АЦП МК, так МК будет знать какой ток в цепи заряда и это значение можно будет вывести на дисплей. Теперь пора подключать МК к схеме.

Как видим схема немного усложнилась. Но не сильно. К выводу PB0 подключим реле, любое реле на 12V, контакты которого должны выдержать ток в 5А. Последовательно с реле надо подключить гасящий резистор примерно в 200 Ом, так как питаться то реле у нас будет от напряжения 16-20 вольт. Параллельно катушке реле надо установить защитный диод (любой, поставил LL4148) , без диода может пробиться транзистор VT4. VT4 может быть любой тип npn, использовал MMBT4401LT1 .

К выводам PD7, PC1, PC0 подключен энкодер. Использовался этот или этот . На выводы к которым подключен энкодер необходимо подключить конденсаторы 0.1 uF и подтягивающие резисторы по 10к. Это уменьшит контактов.

Дисплей использовался на две строки по 16 символов. Дисплей так же имеет встроенный русский шрифт. Если подключить дисплей без русских символов, на экране будут крякозябры. Так как у МК Atmega8 не сильно много ног, то дисплей подключил по 4х битной шине. Выводы дисплея DB3-DB0 не используются.

К выводу МК PB2 подключен диод шоттки BAT54S , два конденсатора 0.1uF и резистор 100 Ом. Зачем это нужно? Дело в том что в схеме используется операционный усилитель ОУ LM358 который не "rail to rail". В таких ОУ без отрицательного напряжения питания на минусовом выводе питания, на выходе ОУ никогда не будет 0 вольт. Поэтому эта цепочка элементов подключенная к выводу PB2 создает отрицательное напряжение где то -4V для питания ОУ. Для того чтобы цепочка на выводе PB2 заработала и генерировала -4V, на нее необходимо подать ШИМ сигнал со скважностью 50%. Таким образом на выводе PB2 всегда присутствует ШИМ с частотой 62.5 кГц.

На выводе PB3 так же всегда присутствует ШИМ, но скважность сигнала в данном случае от 0 до 100% уже регулируется вращением энкодера. Резистор R18 и конденсатор С11 составляют интегрирующую цепочку сглаживают ШИМ в постоянное напряжение. Резисторы R19 и подстроечный R20 являются делителем напряжения. Как настроить R20? Подключаем мультиметр к выводу PB3 и вращаем энкодер до тех пор, пока прибор не покажет 2.5 Вольта. Далее вращаем подстроечный резистор R20 так чтобы на неинвертирующем выводе ОУ было напряжение 0.25 вольта. На этом настройка R20 закончена.

Как работает регулировка и управление транзистором? Предположим что на неинвертирующем выводе ОУ (+) 0.5 вольт. Одно из свойств ОУ это то, что он стремиться к тому, чтоб уровнять разность потенциалов между его двумя входами. Делает это он используя свой выход, повышая или понижая на нем напряжение. Итак на выводе (+) 0.5 вольт, а на выводе (-) 0 вольт. Что дальше? ОУ сразу же начнет повышать напряжение на выходе, который подключен к затвору транзистора IRF540. Транзистор начинает открываться. Через батарею, транзистор и шунт начинает течь ток. Текущий ток вызывает падение напряжение на шунте R18. ОУ будет открывать транзистор до тех пор пока на шунте не будет напряжение 0.5 вольт. Напряжение с шунта подается через R13 на вывод (-). Как только на выводе (-) будет 0.5 вольта (такое же как и на выводе (+)), ОУ перестанет открывать транзистор. При этом ток заряда будет равен 5А.

Если энкодером уменьшить напряжение на выводе (+) до 0.25 вольта, ОУ уменьшит напряжение на затворе транзистора до такой величины, чтоб на выводе (-), так же стало 0.25 вольта, данное значение соответствует току заряда в 2.5А. Получается что регулировка тока заряда осуществляется аппаратным способом с помощью ОУ. А это очень хорошо, так как ОУ никогда не зависнет и скорость раекции мгновенная. Данная схема регулировки является обычным линейным источником тока. Удобство данной схемы в том что она является простой, но минус в том, что вся разность напряжения между импульсным блоком питания и напряжением на батарее выделяется в виде тепла на транзисторе.

К примеру ИПБ выдает 20 вольт, напряжение на батарее в начале ее заряда 12 вольт, а ток заряда 5А. Какая мощность выделиться на трназисторе? (20-12)*5=40 Вт. 40Вт это очень много!!! Нужен здоровенный радиатор и пять вентиляторов. Так никуда не годиться. Хотя транзистор IRF540 выдержит и 150 ватт, разогревать транзистором зарядник нет смысла. Как уменьшить выделение тепла? Можно понизить напряжение ИПБ например до 16 вольт. Тогда (16-12)*5 =20 Вт в два раза меньше уже лучше. Но нагрев можно сделать еще меньше до 5 ватт и менее. Каким образом?

В ИПБ подобного типа как MEAN WELL RS-75-15 всегда есть подстроечный резистор, которым можно регулировать напряжение на выходе в пределах 10%. Это значит от 13.5 до 16.5, в моем случае получилось от 13 до 17 вольт. Можно выпаять из ИПБ подстроечник, а вместо него впаять вывод МК, таким образом мы сможем с помощью МК регулировать напряжение на выходе ИПБ, это позволит снизить выделение тепла на транзисторе до минимума. К примеру если на батарее 12 вольт, понижаем напряжение до 13 вольт и получаем (13-12)*5=5 Вт тепла на транзисторе, лучше чем 40. Итак модернезируем схему


В выводу PB1 подключаем оптрон PC123 или подобный ему. На выводе PB1 так же всегда дежурит шим сигнал который интегрируется цепочкой R22 и C13. В ИБП выпаиваем подстроечный резистор и вместо него впаиваем обычный на 1.2 кОм. Вот теперь МК может управлять напряжением на выходе ИБП через оптрон. Когда оптрон выключен напряжение на выходе ИБП минимально, когда включен, резистор R23 шунтируется на землю, напряжение поднимается. Плавно закрывая/открывая оптрон с помощью ШИМ сигнала на выводе РВ1, плавно регулируем напряжение на выходе ИБП.

Чтабы знать когда и на сколько регулировать напряжение на выходе ИБП, надо знать сколько вольт вообще на силовом транзисторе. Нам то надо напряжение на выходе ИБП понизить настолько, чтоб разница между напряжением на батарее и напряжением на выходе ИБП была допустимо минимально. Для этого выводом РС2 используя АЦП МК измеряем напряжение на стоке транзистора. Это делается с помощью делителя R9 и R10. Теперь зная необходимые параметры, программа в МК будет сама контролировать скважность ШИМ на выводе РВ1.

Теперь осталось совсем немного. Это измерять ток в цепи заряда и выводить его на дисплей. И еще осталось измерить напряжение на батарее и так же вывести его на дисплей.

Напряжение на батарее измеряем дифференциальным способом. Значение снимаем с вывода РС5. Резисторы R5 и R6 должны быть ровно по 3кОм, а резисторы R2 и R4 по 1кОм, желательно точность не менее 1%, у меня таких не было поэтому R4 установил подстроечным. Суть в том, что при таких номиналах резисторов отношение напряжений на входах ОУ и на его выходе составляет 3:1. При изменении напряжения от 0 до 15 вольт на батарее, на выходе ОУ напряжение будет меняться от 0 до 5 вольт. Для настройки данной цепочки необходимо вместо батареи подключить 14.4 вольта например с лабораторного блока питания. Далее вращаем подстроечник R4 чтоб на дисплее LCD тоже было 14.4 вольта. Настройка цепи измерения напряжения на этом закончена.

Ток измеряется через падение напряжения на шунте, роль которого играет обычный цементный резистор. Ток у нас от 0 до 5А. Напряжение на шунте соответсвенно изменяется от 0 до 0.5 вольт. Значения резисторов R16 и R17 подобраны так, чтоб на выходе ОУ значение напряжения было от 0 до 5 вольт. Отображение тока заряда настраиваем по следующей цепочке. Подключаем батарею и делаем ток в 2.5 А. Параллельно батарее подключаем лампочку на 12 вольт. Батарею отключаем, а лампочку оставляем. Убеждаемся что ток равен 2.5 ампера. Если на шунте напряжение будет 0.25 вольт, значит ток равен 2.5А. если это не так, вращаем энкодер пока на шунте не будет 0.25 вольт. Теперь вращаем подстроечник R17 чтоб на дисплее отображался ток в 2.5А. Настройка отображения тока на этом закончена.

Что можно было бы упростить? Например если нет желания возиться с делителем напряжения в ИБП, то все что припаяно к ноге МК РВ1, можно выкинуть из схемы. Но все остальное должно быть на своих местах. Но в таком случае вся разница напряжения между батареей и на выходе ИБП высадится в виде тепла на силовом транзисторе. В таком случае радиатор берем побольше не жалеем.

Если нужен ток заряда до 10А, параллельно шунту припаиваем такой же шунт значением 0.1 Ом. Реле берем с контактами выдерживающем до 10А и параллельно транзистору IRF540 припаиваем еще один такой же. Транзисторы прикручиваем на здоровенный радиатор и вперед, делаем тест. Единственное, значение тока на диспле надо в уме умножать на 2. Если дисплей покажет 5А, на самом деле это уже будет 10А. Лично я сам так не делал, но в теории должно работать.

В конце концов итоговая схема будет иметь следующий вид:


Ничего не видно согласен, поэтому скачиваем схему отсюда .

Пару фрагментов прошивки.

#include "define.h" #include "init_mcu.h" #include "lcd.h" #include "text.h" #include "bits_macros.h" #include "fun.h" #include "encoder.h" #include "servise.h" #include "main.h" #include #include #include #include #include #include #include #define RELAY PB0 uint8_t lcd_time,lcd_track,lcd_count,enc_interval,enc_speed,off_charge; uint8_t U_bat_tim,I_bat_tim=255,stok_reg,energy_flag,count; uint16_t I_reg,enc_block,bat_count,bat_save,bat_off; EEMEM uint8_t energy_off; struct flag { _Bool lcd_clr_txt0: 1; _Bool lcd_clr_txt1: 1; _Bool count_timer0: 1;//для обработчика прерывания _Bool start_charging: 1;//отключение реле если при заряде бат откл. электричество _Bool ocr1a_block: 1; }flags; ISR(TIMER0_OVF_vect)//прерывание по переполнению Timer 0 раз в 1мсек. { TCNT0=0x6; flags.count_timer0=1; } void reg_I(uint16_t reg_val)//уменьшение тока заряда при достижении 14.4вольта { if (I_reg>reg_val) { I_reg=0; off_charge=1; if (OCR2!=0) { OCR2--; enc_data=OCR2; } } } void charg_off(void) { if (BitIsSet(PORTB,RELAY)) { eeprom_update_byte(&energy_off,0); } ClearBit(PORTB,RELAY); ClearBit(TCCR2,COM21);//отключили аппаратный вывод шим на пине PB3 OCR1A=0;//опустили питание импульсника до 12.5 вольт. off_charge=0; flags.start_charging=0; flags.ocr1a_block=0; enc_data=0; I_bat_tim=255; count=0; OCR2=0; } int main(void) { #if 1//инициализация MCU_init_ports(); MCU_init_adc(); MCU_init_an_comp(); MCU_init_timer0(); MCU_init_timer1(); MCU_init_timer2(); LCD_init(); LCD_string_of_flashXY(text_1,4,0); LCD_string_of_flashXY(text_2,3,1); _delay_ms(1500); LCD_string_of_flashXY(text_3,3,0); LCD_string_of_flashXY(text_4,2,1); _delay_ms(1500); LCD_clear(); if (BitIsClear(PIND,PUSH)){servise();}//вход в сервисное меню if (eeprom_read_byte(&energy_off) && u_batt()>20) { enc_data=eeprom_read_byte(&i_pusk); } else { eeprom_update_byte(&energy_off,0); } MCU_init_wdt(); sei(); #endif while(1) { wdt_reset(); uint8_t u_bat=u_batt(); uint8_t i_bat=i_batt(); #if 1/*определяем подключена ли батарея*/ if (u_bat>30)//30*0.0585=1.7 вольта на батарее, подключена { if (flags.lcd_clr_txt0==0) { flags.lcd_clr_txt0=1; LCD_clear(); } if (lcd_time>200) { lcd_time=0; LCD_string_of_flashXY(text_7,0,0); LCD_string_of_flashXY(text_9,7,0); LCD_string_of_flashXY(text_11,13,0); char buffer; uint16_t U=(u_bat*59)/100; utoa((uint8_t)U, buffer, 10);//выводим напряжение на дисплей if ((uint8_t)U>=100) { LCD_dataXY(buffer,2,0); LCD_data(buffer); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,6,0); } else if ((uint8_t)U>=10 && (uint8_t)U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) { LCD_dataXY(buffer,10,0); LCD_data("."); LCD_data(buffer); } else { LCD_dataXY("0",10,0); LCD_data("."); LCD_data(buffer); } } } else //неподключена { LCD_string_of_flashXY(text_5,0,0); LCD_string_of_flashXY(text_6,0,1); flags.lcd_clr_txt0=0; eeprom_update_byte(&energy_off,0); continue; } #endif #if 1/*обрабатываем флаг прерывания timer0*/ if (flags.count_timer0==1) { flags.count_timer0=0; lcd_time++; enc_interval++; I_reg++; lcd_track++; if (enc_speed!=100)//определяем скорость вращения энкодера. { enc_speed++; } if (enc_block>=1) { enc_block++; if (enc_block>=500) { enc_block=0; } } if (BitIsSet (PORTB,RELAY)) { bat_count++; } else { bat_count=0; bat_off=0; bat_save++; } stok_reg++; if (flags.start_charging && count!=255) { count++; } } #endif #if 1/*Получение данных от энкодера*/ if (enc_interval>=5) { enc_interval=0; OCR2=encoder();//считали значение энкодера. #if 0//временно для теста char buffer; utoa(OCR2, buffer, 10); if (OCR2>=100) { LCD_dataXY(buffer,0,1); LCD_data(buffer); LCD_data(buffer); } else if (OCR2>=10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) { reg_I(3000);//раз в 3 сек } else if (u_bat==255 && OCR2>0) { reg_I(100);//раз в 100 мсек } else if (u_bat>246 && OCR2>0) { reg_I(500);//раз в 500 мсек } #endif #if 1 /*Отключаем заряд при достижении тока заряда 0.1А*/ if (off_charge==1 && enc_block==0) { if (i_bat<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat>4)//4*0.02=0.08A { flags.start_charging=1; } if (flags.start_charging==1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) { if (flags.lcd_clr_txt1==1) { flags.lcd_clr_txt1=0; LCD_string_of_flashXY(text_8,0,1); } if (lcd_track>=200) { lcd_track=0; lcd_count++; switch (lcd_count) { case 0: LCD_data_of_flashXY(text_15,8,1); break; case 1: LCD_data_of_flashXY(text_16,8,1); break; case 2: LCD_data_of_flashXY(text_17,8,1); break; case 3: LCD_data_of_flashXY(text_18,8,1); break; case 4: LCD_data_of_flashXY(text_19,8,1); break; case 5: LCD_data_of_flashXY(text_20,8,1); break; case 6: LCD_data_of_flashXY(text_21,8,1); break; case 7: LCD_data_of_flashXY(text_22,8,1); break; case 8: #if 1 if (off_charge==1) { lcd_count=5; break; } if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>=60000 && eeprom_read_byte(&timer_time))//мсек 60000 { bat_count=0; bat_off++; #if 1//для отладки LCD_string_of_flashXY(text_37,0,1); char buffer; utoa(bat_off, buffer, 10); if(bat_off>=100) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_data(buffer); LCD_string_of_flashXY(text_38,5,1); } else if (bat_off>=10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge==0)//сброс аварийного таймера по напряжению { bat_off=0; U_bat_tim=u_bat; } if (i_bat= eeprom_read_word(&tim_dlitl))//180 минут по умолчанию { charg_off(); LCD_string_of_flashXY(text_14,0,1); bat_off=0; flags.lcd_clr_txt1=1; } #endif #if 1/*Регулировка напряжения на выходе блока питания*/ if (stok_reg>=100) { stok_reg=0; uint8_t u_stok=u_stokk(); if (u_stok>62)//0,0195*51*2=2 вольта на стоке. { if (OCR1A!=0) { OCR1A--; } } else if (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>=100) { LCD_dataXY(buff,3,1); LCD_data(buff); LCD_data(buff); } else if (u_stok>=10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>=60000 && eeprom_read_byte(&save_on)!=0) { bat_save=0; if (u_bat<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Вопросы задаем сюда dmalash@gmail com
Если кому то нужен прошитый микроконтроллер, то его можно заказать отсюда . Все остальное естественно собираем и делаем сами.

Сейчас немного видео и фотографий. Вот так выглядел самый первый прототип.

Вот так выглядела первая плата.

В последствии была сделана более цивильная плата.

Потом был придуман корпус.

Потом все это было собрано.

В итоге получилось вот что.

Скачать схему зарядного устройства можно .
Заказать прошитый микроконтроллер можно .
Дополнительная информация., печатная плата .
Вопросы и пожелания [email protected]

Частотомер на АТ90S2313

Виртуальный частотомер это "комплект" из программы для PC и простого измерительного прибора, который подключается к COM порту компьютера. Виртуальный прибор позволяет измерять частоту, период, временные интервалы и вести подсчет импульсов.

Подробности: http://home.skif.net/~yukol/FMrus.htm

Рекомендую собрать простая конструкция не требует настройки и главное работает! Микроконтроллер программировал программатором PonyProg -отличный программатор, простой, большая номенклатура программируемых микроконтроллеров, работает под Windows, интерфейс русский.


Журнал "Радио" N1 2002г. Для Ni-Cd аккумуляторов. Позволяет заряжать 4 аккумулятора.



Частотомер на Pic 16F84A

Технические характеристики частотомера:

Максимальная измеряемая частота.............30 МГц;

Максимальное разрешение измеряемой частоты.. .10 Гц.

Чувствительность по входу....................250 мВ;

Напряжение питания.........................8... 12 В:

Потребляемый ток............................35 мА


Подробности, прошивка: http://cadcamlab.ru


Паяльная станция на Atmega 8


Переключение паяльника и фена осуществляется переключателями ПК. Управление феном осуществляется тиристором, т.к. фен на 110в вместо R1 диод катодом к в.6.


Подробности, прошивка: http://radiokot.ru/forum


Цифровой измеритель емкости без выпайки из схемы

Описание дано в журнале "Радио" №6 2009 г. Конструкция собрана на AT90S2313, без изменений в прошивке применил Tiny2313. В Поньке выставил галки для SUT1, CKSEL1, CKSEL0, остальные пустые. MAХ631 не ставил, она что то у нас дорогая, решил запитать от блока питания через стабилизатор 7805, R29, R32 , R33 посадил на плюс питания. Кроме измерителя емкости в корпусе смонтирован пробник, для проверки транзисторов без выпайки и генератор НЧ ВЧ сигналов.



Измеритель параметров полупроводниковых приборов на ATmega8

Прибор умеет:

Определять выводы полупроводников;
- определять тип и структуру;
- измерять статические парамеры.
Измеряет диоды, биполярные транзисторы,полевые транзисторы JFET и MOS, резисторы, конденсаторы.


Измеритель выполнен в одном корпусе с измерителем FCL, индикатор переключается между приборами переключателем ПК.

Частотометр, измеритель ёмкости и индуктивности - FCL-meter

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

Технические характеристики:

Напряжение питания, В: 6…15

Ток потребления, мА: 14…17

Пределы измерения:

F1, МГц 0,01…65**

F2, МГц 10…950

С 0,01 пФ…0,5 мкФ

L 0,001 мкГн…5 Гн


Схема выносной головки


Подробнее: http://ru3ga.qrz.ru/PRIB/fcl.shtml


Миниатюрный вольтметр на микроконтроллере ATmega8L


Здесь рассматривается конструкция вольтметра на одном лишь микроконтроллере ATmega8L и индикаторе от электронного медицинского термометра. Диапазон измеряемых напряжений постоянного тока ±50 В. Как дополнительная функция – реализован режим звукового пробника для проверки целостности проводов, ламп накаливания. Устройство автоматически переходит в дежурный режим при отсутствии измерений. Питание микроконтрллера осуществляется от двух миниатюрных щелочных элементов (элементы питания для наручных часов), я поставил 1 элемент на 3в. Необходимости часто менять элементы питания не будет: потребляемый ток в активном режиме составляет всего 330 мкА, в дежурном режиме – менее 300 нА. Благодаря своей миниатюрной конструкции и возможностям устройство полезно и практично. В корпус от термометра не влезла у меня плата, и я сделал в корпусе от фламастера. Плату делал свою, резисторы R5-R7 установил ветикально на шинах. Прошивку из исходника помог сделать VADZZ спасибо ему. Выводы индикатора с лево на право, выводы внизу и лицом к себе.

Схема (для полноформатной схемы сохраните изображение себе на компьютер).

Подробнее смотри: http://www.rlocman.ru/shem/schematics.html?di=63917

ЗУ с функцией измерения емкости

Захотелось померять емкость аккумуляторов, импортные измерители достаточно дорого стоят, нашел интересную схему и собрал. Работает нормально, заряжает, измеряет, но с какой точностью затрудняюсь сказать - нет эталона. Мерял аккумуляторы довольно приличных фирм 2700 ма/ч - намерял 2000. Аккумуляторы от игрушек 700 ма/ч -350, заказывал на EBAY китайские аккумуляторы BTY 2500 ма/ч - 450 ма/ч, но при этом достаточно приличные, неплохо работают в игрушках, гораздо выгоднее батареек.


Устройство предназначено для зарядки NiMH аккумуляторов и контроля их емкости. Переключение режимов заряд/разряд осуществляется кнопкой SА1. Режим работы отображается с помощью светодиодов и десятичными точками двух первых разрядов семисегментного индикатора.
Сразу после включения питания устройство переходит в режим заряд. На индикаторе отображается время заряда. После истечения запрограммированного промежутка времени заряд прекращается. Об окончании заряда (и разряда то же) свидетельствует зажженная точка четвертого разряда. Ток заряда определяется как С/10 где С - емкость батареи, выставляется подстроечником R14.
Принцип действия измерителя основан на подсчете времени за которое напряжение аккумулятора снизится до1,1 В. Ток разряда должен быть равен 450 ма, выставляется R16. Для того чтобы измерить емкость, надо вставить аккумулятор в отсек для разряда и запустить процесс нажатием на кнопку! Устройство способно разряжать только один аккумулятор .

Подробнее: http://cxem.net

Универсальная печь радиолюбителя

Печка для пайки SMD деталей, имеет 4 программируемых режима.

Схема блока управления (для полноформатной схемы сохраните изображение себе на компьютер).


Блок питания и управление нагревателем


Собрал данную конструкцию для управления ИК паяльной станцией. Может когда нибудь и печкой управлять буду. Была проблема с запуском генератора, поставил конденсаторы 22 пф с выводов 7, 8 на массу, и стала нормально запускаться. Все режимы нормально отрабатывает, нагружал 250 вт керамическим нагревателем.

Подробнее: http://radiokot.ru/lab/hardwork/11/

Пока печки нет, сделал вот такой нижний подогрев, для небольших плат:

Нагреватель 250 вт, диаметр 12 см, прислали из Англии, покупал на EBAY.


Цифровая паяльная станция на PIC16F88x/PIC16F87x(a)

Паяльная станция с двумя одновременно действующими паяльником и феном. Можно использовать разные МК (PIC16F886/PIC16F887, PIC16F876/PIC16F877, PIC16F876a/PIC16F877a). Применен дисплей от Nokia 1100 (1110). Обороты турбины фена регулируются электронно, так же задействован встроенный в фен геркон. В авторском варианте применен импульсный блок питания, я применил трансформаторный БП. Всем мне нравится эта станция, но с моим паяльником: 60вт, 24в, с керамическим нагревателем, большое забегание и колебание температуры. При этом паяльники меньшей мощности, с нихромовым нагревателем имеют меньшие колебания. При этом мой паяльник, с описаной выше паяльной станцией от Михи-Псков, с прошивкой от Volu, поддерживает температуру с точность до градуса. Так что нужнен хороший алгоритм нагрева и поддержания температуры. В качестве эксперемента сделал ШИМ регулятор на таймере, управляющее напряжение подал с выхода усилителя термопары, отключение, включение от микроконтроллера, Колебание температуры сразу уменьшилось до нескольких градусов, это подтверждает что нужен правильный алгоритм управления. Внешний ШИМ это конечно порнография при наличии микроконтроллера, но хорошую прошивку пока не написали. Заказал другой паяльник если с ним не будет хорошей стабилизации, продолжу свои эксперементы с внешним ШИМ управлением, а может хорошая прошивка появится. Станцию собрал на 4 платах, соединяются между собой на разъемах.

Схема цифровой части устройсква представлена на рисунке, для наглядности показаны два МК: IC1 - PIC16F887, IC1(*) - PIC16F876. Другие МК подключаются аналогично, на соответствующие порты.

Для изменения контрасности нужно найти 67 байт, его значение "0х80" , для начала можно поставить "0х90". Значения должны быть от "0х80" до "0х9F".

По поводу дисплея 1110i (текст отображается зеркально), если не китай, а оригинал,открываем ЕЕПРОМ, ищем 75 байт, меняем его с A0 на A1.