В наше время наверное только ленивый, не переделывал компьютерный AT или ATX блок питания в лабораторный или зарядное устройство для автомобильной АКБ. И я решил не оставаться в стороне. Для переделки взял старый ATX 350 Вт блок питания с ШИМ контроллером TL494 или его аналогом KA7500B, блоки с таким контроллером легче всего переделывать. Первым делом необходимо убрать лишние компоненты с платы, дроссель групповой стабилизации, конденсаторы, некоторые резисторы, не нужные перемычки, цепь power ON с ней же и компаратор LM393. Стоит заметить что все схемы на TL494 похожи, иметь могут только не большие различия, поэтому для понимания как переделывать БП можно взять типовую схему.
Вообщем вот типовая схема ATX блока питания на TL494.
Вот схема с удаленными лишними элементами.
На первой схеме я выделил участок, этот участок отвечает за защиту от перегрузок по мощности у себя я его счел нужным удалить о чем немного сожалею. Советую этот участок не удалять. В выходной цепи вместо диодной сборки +12 В необходимо поставить диодную сборку Шоттки с максимальным импульсным обратным напряжением 100 В и током 15 А примерно такую: VS-16CTQ100PBF. Электролитический конденсатор после дросселя должен иметь емкость 1000-2200 мкФ и напряжение минимум 25 В. Нагрузочный резистор должен иметь сопротивление 100 Ом и мощность около 2 Вт. Дроссель
После того как все лишние удалено, можно приступить к сборке схемы управления.
Схему управления взял из этой статьи: Лабораторный БП из AT. В этой статье очень подробно описывается переделка.
На операционном усилителе DA1.1 собран дифференциальный усилитель в цепи измерения напряжения. Коэффициент усиления подобран таким образом, что при изменении выходного напряжения блока питания от 0 до 20 В (с учётом падения напряжения на шунте R7), на его выходе сигнал меняется в пределах 0…5 В. Коэффициент усиления зависит от соотношения сопротивлений резисторов R2/R1=R4/R3.
На операционном усилителе DA1.2 собран усилитель в цепи измерения тока. Он усиливает величину падения напряжения на шунте R7. Коэффициент усиления подобран таким образом, что при изменении тока нагрузки блока питания от 0 до 10 А, на его выходе сигнал меняется в пределах 0…5 В. Коэффициент усиления зависит от соотношения сопротивлений резисторов R6/R5.
Сигналы с обоих усилителей (напряжения и тока) подаются на входы компараторов ошибки ШИМ-контроллера (выводы 1 и 16 DA2). Для установки необходимых значений напряжения и тока, инвертирующие входы этих компараторов (выводы 2 и 15 DA2) подключены к регулируемым делителям опорного напряжения (переменные резисторы R8, R10). Напряжение +5 В для этих делителей снимается с внутреннего источника опорного напряжения ШИМ-контроллера (вывод 14 DA2).
Резисторы R9, R11 ограничивают нижний порог регулировки. Конденсаторы C2, C3 устраняют возможный «шум» при повороте движка переменного резистора. Резисторы R14, R15 также установлены на случай «обрыва» движка переменного резистора.
На операционном усилителе DA1.4 собран компаратор для индикации перехода блока питания в режим стабилизации тока (LED1).
Моя схема
В своей схеме для измерения тока я использую датчик тока ACS712 на эффекте холла, валялся длительное время без дела вот и решил внедрить. Надо отметить, что измеряет он по точнее чем кусок проволоки, ибо имеет маленькую зависимость от температуры так как измерительная часть имеет очень маленькое сопротивление. Кусок же проволоки меняет свое сопротивление с ростом тока.
Сборка
Шунт сделал из текстолита и куска проволоки из черного метала, сопротивление получилось примерно 0,001 Ом, чего вполне достаточно. Крепится к корпусу на стойки для печатных плат.
Разместил все в готовом корпусе:
Готовый корпус заводского изготовления (G768 140x190x80мм).
Чертеж передней панели:
Плата от компьютерного блока питания, легко устанавливается в этот корпус.
Сзади установлен вентилятор охлаждения, он продувает воздух через весь корпус, в верхней крышке насверлил отверстий по бокам для выхода воздуха. Обороты заданы DC-DC преобразователем, питание взято с дежурки 20V.
Плата индикации:
Вид сверху:
Вид снизу:
Плата создана в программе Dip Trace Скачать
Плата управления:
Вид сверху:
Вид снизу:
Плата создана в программе Dip Trace Скачать
Код программы для Atmega8
Код создан в среде CodeVisionAVR. Особо ничего не придумывал, использовал математику с float. Архив с проектом, в нем же можно найти прошивку Скачать
#include <mega8.h> #include <delay.h> #include <alcd.h> #include <stdio.h> // Voltage Reference: AREF pin #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR)) // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=(1<<ADSC); // Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCW; } unsigned char lcd_buff[16]; int data; float V, I, W; void main(void) { // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // ADC initialization // ADC Clock frequency: 125,000 kHz // ADC Voltage Reference: AREF pin ADMUX=ADC_VREF_TYPE; ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); SFIOR=(0<<ACME); // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTD Bit 0 // RD - PORTD Bit 1 // EN - PORTD Bit 2 // D4 - PORTD Bit 4 // D5 - PORTD Bit 5 // D6 - PORTD Bit 6 // D7 - PORTD Bit 7 // Characters/line: 8 lcd_init(16); while (1) { lcd_clear( ); read_adc(1); V =0; data = ADCW; // Вычитываем значение V = (float) (data*5.095*10.905)/1000; // Переводим в вольты sprintf(lcd_buff,"U=%.2f", V); lcd_gotoxy(0,0); // Выставляем курсор lcd_puts( lcd_buff ); // Выводим значение read_adc(2); I =0; data = ADCW; // Вычитываем значение if(data > 515){I = (float) (data-515)/20;}; // Переводим в вольты sprintf(lcd_buff,"I=%.2f", I); lcd_gotoxy(9,0); // Выставляем курсор lcd_puts( lcd_buff ); // Выводим значение W = V * I; sprintf(lcd_buff,"W=%.3f", W); lcd_gotoxy(0,1); // Выставляем курсор lcd_puts( lcd_buff ); // Выводим значение delay_ms(400); // Задаем задержку в 400 миллисекунд } }
Спасибо за толковую инструкцию. А как с охлаждением получилось? Хватает маленького вентилятора и нескольких дырок по бокам корпуса?
Вполне хватает, на полной мощности из них идет теплый воздух.
Наконец-то и я зарегистрировался!
Долго искал схему полноценной индикации для лабораторного БП. В интернете вариантов много, но все без индикации установленного тока стабилизации. Наткнулся на Вашу и загорелся!
Идея в следующем: с вывода платы управления, который идет на 15 ногу TL494 сделать выход на плату индикации. Напряжение на нем меняется от 0 до 5 вольт в зависимости от установленного тока стабилизации. Подключить к МК и сделать так, чтобы при установке максимального тока стабилизации (5в) на дисплей выводилось фактическое значение тока. Я думаю, что Вы меня поняли.
И еще вопрос — можно ли заменив шунт из «черного металла» на качественный манганиновый 0,01 Ом использовать его и как датчик тока для платы управления и для показаний текущего тока и исключить ACS712?
Для меня для воплощения моей мечты в жизнь переделать прошивку (даже при наличии исходников) задача невыполнимая. Если окажете помощь — буду в восторге.
ACS712 можно исключить из схемы и поставить обычный шунт что я планирую в ближайшем будущем сделать.
Да, еще две непонятки по схеме
1. Для чего в обвязке TL494 вместо электролита «мягкого старта» между 4 и 14 выводами установлен резистор 100kOm?
2. Почему не используется вывод дежурки +5 вольт, а установлен стабилизатор 7805 на 12-20 вольтовый выход дежурки?
Про такой параметр «Dead time» слышали?
Слышал. Я обе статьи Голубева досконально изучил и не один блок переделал по его методике.
Действительно, в схеме Вашего БП нет конденсатора.
У вас как напряжение и ток выводятся?
если я правильно понял вопрос, то на вольтметр и амперметр
https://a.d-cd.net/b4118bu-960.jpg
Думал, что уже и не ответите. В общем, попытался сделать сам.
Получилось так (Видео 3 минуты) собрано «в соплях» https://www.youtube.com/watch?v=w6YSbtifqUw
Окончательный вариант http://radikal.ru/users/gogaze#img=6159203141&rnd=3
Теперь хочу, по мере дальнейшего изучения программирования, сделать меню
1. Блок питания (все оставить так как сейчас есть)
2. Зарядное — то же самое, только вместо мощности счетчик ампер часов.
Спасибо за исходники программы!!! Пригодилось для изучения.
можно в лайоте печатки попросить?
А почему в нем?