|
 
|
|
Home Page |
| Домашня сторінка |
Симмисторный регулятор мощности
Или как я оживлял принтер Hewlett-Packard Laser
Jet 4 с испорченым контроллером печки (Fuser)
українська версія --- російська
версія
Регулирование мощности других нагрузок по этой схеме смотри ниже
>>>
Ко мне в руки попал принтер Hewlett-Packard, который после включения питания
выдавал ошибку "50 Service" (что означало ошибку "печки"). После активного
серфенга по интернету и помощи
форумчан был
найден источник проблемы.
Это был контроллер печки, который управлял мощностью нагревателя по
аналоговому сигналу (0...5В) из недр принтера. В качестве силового элемента был
применен симмистор BCR8CM и симмисторная оптопара с "контроллем перехода через
ноль"
Схему решено было заменьть на простенькую, сприменением микроконтроллера
PIC12F675, так как он имеет встроеный 10-разрядный АЦП и относительно не дорогой
(около 10 грн в Киеве).
Модернезированная схема показана ниже:

Диоды VD3-VD6 - защитные (от повышенного напряжения на входе и напряжения
обратной полярности).
Цепь на транзисторной оптопаре DA2 предназначена для захвата "нуля" сетевого
напряжения и гальванической развязки от нее. При наличии "полуволны" происходит
шунтирование вывода 5 микроконтроллера на землю. Диод VD2 защищает оптопару от
полуволны обратного напряжения. Резистор R1 - гасящий, мощностью 2Вт.
Алгоритм управления тиристором - фазоимпульстный, что
вызывает небольшой треск (при малых мощностях) в сетевом фильтре БП.
Микроконтроллер PIC12F675 может работать как с внутренним так и внешним
кварцевым резонатором.В моем варианте МК работал с внутреним генератором (4МГц).
При изменении частоты необходимо подкорректировать константы (ShimShagMax
та ShimShagDiv). ShimShagMax
указывает количество прерываний таймера на один полупериод при частоте сети 50
Гц - 10мс. Прерывание таймера каждые 256 мкс(при частоте 4МГц), тогда константа
будет иметь значение
10мкс/256мкс=39. Принимаем 40, на всякий пожарный). ShimShagDiv=255/ShimShagMax=6.375
Ниже представлена программа для PIC12F675, написанная на
языке Си:
#include <12F675.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
//#FUSES INTRC_IO //Внутрішній генератор
#FUSES XT //Зовнішній
генератор
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES PUT //Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#byte ADCON0 = 0x1F
#byte GPIO = 0x05
#use fast_io(A) // Работа с портами без переключения
// каждый раз регистров TRIS
#use delay(clock=4000000)
#define ShimShagMax 40
// 255/ShimShagMax
#define ShimShagDiv 6.375
unsigned char Shim, ShimVal;
#int_RTCC
void RTCC_isr()
{
Shim++; //Увеличиваем зачения счетчика ШИМ
if (Shim>ShimShagMax) Shim=0;//Период ШИМ порядка 20 мс (50Гц)
if ((ShimShagMax-Shim)<ShimVal) //Провреняем, не пришло ли время
OUTPUT_HIGH(PIN_A0);//если да, то лог "1"
else
OUTPUT_LOW(PIN_A0); //если нет, то "0"
if ((input_a() & 0b00000100))
Shim=0; //Синхронизируем с ~220В.
}
void Pause255(unsigned char Ret)
{ unsigned char Pause=0;
while(Ret>0)
{
while (Pause<255) Pause++;
Pause=0;
Ret--;
}
}
void main()
{
setup_adc_ports(sAN1|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_16);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_adc_channel( 1 );
SET_TRIS_A(0b00000110);
ShimVal=0;
{unsigned char InpVolt;
/* float Temp; */
//стабилизация температуры
while(1)
{
Pause255(254);
// ADCON0 |= 4; // Начинаем АЦПяпить
Pause255(254);
while (ADCON0 & 0b00000010); //Ожидаем завершение преобразования
InpVolt=READ_ADC()/ShimShagDiv; //
//Плавное изменение температуры
if ((InpVolt>ShimVal)&&(ShimVal<ShimShagMax)) ShimVal++;
if ((InpVolt<ShimVal)&&(ShimVal>0)) ShimVal--;
}
}
}
Для управления другими нагрузками, схему
можно модернизировать.
При использовании переменного резистора (1...10кОм), в
качестве задатчика, его следует подключать крайними выводами к +5В и земеле и
средний вывод подключить ко входу МК(вывод №6, при этом резистор R5 в этой цепи
можно исключить).
Синхронизацию с сетью (зез гальванической развязки) можно взять из
схемы коммутатора гирлянд,
подав сигнал прямо на вывод № 5 МК.
Для работы с обеими полупериодами, следует транзисторную оптопару DA2 подключать через диодный мостик, чтобы иметь на
выходе импульсы при любой полярности полупериода.
Для20.02.2008