Транзисторний перетворювач з дроселем в первинному ланцюзі

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?ожливість оцінити даний пристрій. Можна говорити про високу надійність приладу, тому що підібрані елементи із сучасної бази, рівень безвідмовної роботи яких високий, погрішність перетворення мала.

7. Література

 

  1. Довідник. Джерела електроживлення РЕА. Г. Найвельт, Москва, 1958.
  2. Додік С.Д. Джерела електроживлення на напівпровідникових пристроях.
  3. Дроселі. Довідник Міністерства електронної промисловості СРСР.
  4. Конденсатори. Довідник Міністерства електронної промисловості СРСР.
  5. Білопольський І.І. Розрахунок трансформаторів і дроселів. М.: Енергія, 1973.
  6. Довідник. Напівпровідникові пристрої. Голомедова, М.: 1988.

 

 

180В,50Гц

 

 

 

 

 

 

 

 

 

 

 

 

Подпрограмма установок и инициализации

 

//Watchdog initialize

// prescale: 2048K

void watchdog_init(void)

{

WDR(); //this prevents a timout on enabling

WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs

}

void port_init(void) //инициализация портов

{

DDRA = 0b00110100;

PORTA = 0b000000000;

DDRD = 0b11111111;

PORTD = 0b00000000;
DDRB =0b11111111;

PORTB = 0b00000000;

}

void timer1_init(void) //инициализация таймера на время 18мкс

{

TCCR1B = 0x00; //stop

TCNT1H = 0x3C; //setup

TCNT1L = 0xB0;

OCR1AH = 0xC3;

OCR1AL = 0x50;

OCR1BH = 0xC3;

OCR1BL = 0x50;

ICR1H = 0xC3;

ICR1L = 0x50;

TCCR1A = 0x00;

}

void init_devices(void) //инициализация устройств

{

CLI();

watchdog_init();

port_init();

timer1_init();

SREG = 0b10000000;

ADCSRA = 0b10000110; //инициализация АЦП (режим)

ADMUX = 0b11100011; // инициализация АЦП (выбор РА3)

MCUCR = 0x00;

TIMSK = 0x04; //прерывание по таймеру 1

GICR = 0x00;

SEI();

}

 

Подпрограмма функций

 

unsigned int out,set ,Ton;

int high,low,b,tint1,des,edi;

int mas_code[10]={0b01000000,0b01111001,0b00100100,0b00110000,

0b00011001,0b00010010,0b00000010,0b01111000,0b00000000,0b00010000};

 

void BCD(int b) //BCD-преобразование

{

des=((b0)/10);

edi=((b0));

}

void delay_mcs(unsigned int tmp) //задержка

{

unsigned int tmp1;

tmp1=tmp*10;

while(tmp1>0)

{tmp1--;}

}

void start(void) //функция запуска стабилизатора

{

ADCSRA = 0b11000110; //запуск АЦП

delay_mcs(10);

low=ADCL; high=ADCH;

ADCSRA = 0b01000110; //остановка АЦП

Uin = high;

while(Uin != 0)

{delay_mcs (100);}

PORTA = 0b000000100; //VT1

}

void vol(void) //определение напряжения нагрузки и необходимого тока за 2мкс, индикация

{

ADMUX = 0b11110000; // инициализация АЦП (выбор РА0,РА1)

ADCSRA = 0b11000110; //запуск АЦП

low=ADCL; high=ADCH; //считывание напряжения

out = high; //запись в регистр

ADCSRA = 0b01000110; //остановка АЦП

ADMUX = 0b11100110; // инициализация АЦП (выбор РА6)

ADCSRA = 0b11000110; //запуск АЦП

low=ADCL; high=ADCH; //считывание напряжения

set = high; //запись в регистр

ADCSRA = 0b01000110; //остановка АЦП

if(out<set) {Ton++;}

if(out>set) {Ton--;}

BCD(set);

PORTB= mas_code[edi];

PORTD= mas_code[des];

}

#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void) //подпрограмма прерывания по таймеру 1

{

tint1 = 1;

TCNT1H = 0x3C;

TCNT1L = 0xB0;

}

 

Основная программа:

 

// Target : M16

// Crystal: 10.000Mhz

#include

#include

#include

#include

#include

unsigned int T;

 

void main(void)

{

init_devices();

start();

PORTA&0b001000000 = 0;

PORTA&0b000100000 = 0;

Ton = 10;

while(1)

{

vol();

tint1=0;

TCCR1B = 0x01; //запуск таймера

T = 0;

while (T<=Ton){ PORTA&0b001000000 = 1;T++}

else { PORTA&0b001000000 = 0; PORTA&0b000100000 = 0;} //VT2

while(tint1 != 1)delay_mcs(0);

vol();

tint1=0;

TCCR1B = 0x01; //запуск таймера

T = 0;

while (T<=Ton){ PORTA&0b000100000 = 1;T++}

else { PORTA&0b001000000 = 0; PORTA&0b000100000 = 0;} //VT3

while(tint1 != 1)delay_mcs(0);

}

}