Онлайн
библиотека книг
Книги онлайн » Разная литература » Интернет-журнал "Домашняя лаборатория", 2007 №7 - Глуховский

Шрифт:

-
+

Закладка:

Сделать
1 ... 188 189 190 191 192 193 194 195 196 ... 511
Перейти на страницу:
— 1,1 kom; R5 — 1 kom. Все 0,5 ватт; ТР-р I — 220 в, III — 7 в, II — 12 в. маломощный Кварц — 4 MHz.

Модули А, В, С, D идентичные и собираются по следующей схеме:

(www.pozitron.ru)

Детали: VD1-fl243, VD2 — Д226; VD3-KC156A.

С1-20мкф. 12в

DAI — PC120 (оптрон).

VT1- KT809 (400 в, З А) на радиаторе (для всех вместе 100x150x50мм) VT2 — КТ315 R1 — 10 ком, 1 Вт

R2 — 5.1 Ом (многоваттное примерно 10 ватт),

R3, R4, - 30 ком; R5 — 20 ком, R6 — 1, 1 ком. 0,5ватт

Остальные сопротивления 1 Вт.

Микросхема D1 является простым микроконтроллером, который работает по программе, записываемой в ее память (в соответствие с графиком включения ключей Рис. 1) Программирование осуществляется через разъем XI.

Прошивка настроена на импульсы 2кГц и скважность 5050.

Эти параметры можно менять перед компиляцией.

Для программирования скопируйте в блокнот и сохраните с расширением

HEX

Прошивка:

:020000020000FC

:020000000FC02F

:100020000FED0DBF08E107BB00E001BB34EC29E098

:1000300002E00EBDC49АС39А41Е090Е090Е010Е067

:10004000D0E07FC060E06DBD60E06CBD089500E46D

:1000500008BF08B742FD06C06DB5B61731F06DB5E3

:10006000B61710F006FFF5CF08956CB56C1788F33E

:1000700041E06C17CCF7089488941795D79588942D

:100080001795D7950895C39ADCB51DB5D30F121FE8

:100090001BBDDABD44E0DBDFC39840E00895D2DF4A

:1000A00ОC498B22FC32F04D040FFFDCF40E0089585

:1000B00ОC39A82E370E0A80F971F9BBDAABDC7DF5C

:100ОC00040FD08C0C39882E370E0A80F971F9BBD56

:1000D000AABDBDDF0895CCB5BDB5C30FB21FACB589

:1000E0009DB504D040FFFDCF40E00895C49A82E35F

:1000F00070E0A80F971F9BBDAABDA9DF40FD08C0F7

:1001000ОC49882E370E0A80F971F9BBDAABD9FDF34

:100110000895С49ADCB51DB5D30F121F44E01BBD72

:10012000DABD95DF40E0C4980895DCB51DB5A3DFC6

:100130003D2F212FD0E010E090E0A0E0C0E0B0E043

:100140000895459BFECF40FFF0DF40E0A8DF9BDF36

:0A0150004599FECFC0DFDDDFF4CFDC

:00000001FF

Исходник:

INCLUDE "2313def.inc"

EQU HIGHTFREQ=4000

EQU HIGHTFREQTIME=4000000/HIGHTFREQ

EQU CDDRB=0b00011000; настраиваем входы/выходы

EQU CDDRD=0b00000000

EQU PUTTCCR1B=0b00000010; настраиваем контрольный регистр устанавливаем делитель

EQU FIRSTFREQ=10000/4; начальная частота

EQU SMALLPERIOD0=50;HIGHTFREQTIME; частота для промежуточных длительность нуля

EQU SMALLPERIOD1=50;HIGHTFREQTIME; частота для промежуточных длительность единицы

/Variable

DEF smallperiodh=r23.DEF smallperiodl=r24.DEF smallth=r25;

DEF smalltl=r26

DEF periodh=rl8; значение 1/4 периода

DEF periodl=rl9

DEF temp=rl6

DEF temph=r17

DEF tempi=r29

DEF tempi=r22

DEF timeh=r27; значение компаратора. DEF time1=r28

DEF flag=r20; need in for correct initilization

; Program

CSEG

ORG $00

rjmp RESET

ORG $10

RESET:

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,CDDRB; put in/out

out DDRB,temp

ldi temp,CDDRD

out DDRD,temp

ldi periodl,low(FIRSTFREQ); put Initial frequency

таймера, импульсов импульсов

ldi periodh,high(FIRSTFREQ)

ldi temp,PUTTCCR1B; put CK

out TCCR1B,temp

sbi P0RTB,4; extinguish diods

sbi PORTB,3

ldi flag,0b00000001

ldi smallth,0

ldi smallth,0

ldi temph,0

ldi tempi,0

rjmp MAIN

RSTTIMER:; reset's counter

ldi tempi,0

out TCNT1H,tempi

ldi tempi,0

out TCNT1L,tempi; RESET timeout timer

ret

WAITMATCH:

ldi temp,0b01000000; очищаем 7 бит

out TIFR,temp

LOOP:

in temp,TIFR; wait for matching flag

sbrc flag,2

rjmp LOOPT

in tempi, TCNT1H; сравнение старш. частей текущ. вр. и 1/4 пер.

ср timeh,temp1

breq Р

in tempi, TCNT1H

cp timeh,tempi

brio EXIT

LOOPT:; идем сюда из диодов, так как нам не надо сравнивать текущ. вр. с вр. тек. + 1/4 пер

sbrs temp,6

rjmp LOOP

EXIT:

ret

P:; сравнение младш частей

in temp1, TCNT11

cp temp1,time1

brio LOOP

ldi flag,1

cp tempi,time2

brge EXIT

DIV:; divide in 4

sec

clс

ror temph

ror temp1

clс

ror temph

ror tempi ret

FIRSTOPT:; process the first diode

sbi PORTB,3; light the diode

in tempi,TCNT11

in temph,TCNT1H

add tempi,period1

adc temph,periodh

out OCR1AH,temph; put the time of maching

out OCR1AL,temp1

ldi flag,0b00000100

rcall WAITMATCH; wait match

cbi PORTB,3;extinguish the diode

ldi flag,0

ret

WAIT0:; wait falling

rcall RSTTIMER

cbi PORTB, 4; init

mov timeh,periodh

mov timel,period1

WT:

rcall SMALLPULSES1 sbrs

flag,0

rjmp WT

ldi flag,0

ret

SMALLPULSES1:;forms the intermediate pulses

sbi PORTB,3; light the diode

ldi smallperiod1,low(SMALLPERIODO); put Initial frequency for intermediate pulses for 0

ldi smallperiodh,high(SMALLPERIODO)

add smallt1,smallperiod1

dc smallth,smallperiodh

out OCR1AH,smallth; put the time of maching

out OCR1AL,smallt1

rcall WAITMATCH

sbrc flag,0

rjmp EX

cbi PORTB,3/extinguish the diode

ldi smallperiodl,low(SMALLPERIOD1); put Initial frequency for intermediate pulses for 1

ldi smallperiodh,high(SMALLPERIOD1)

add smallt1,smallperiod1

adc smallth,smallperiodh

out OCR1AH,smallth; put the time of maching

out 0CR1AL,smalltl

rcall WAITMATCH

EX:

ret

WAIT1:; wait raising

in time1,TCNT11; init

in timeh,TCNT1H

add time1,period1

adc timeh,periodh

in smallt1, TCNT11

in smallth, TCNT1H

W1:

rcall SMALLPULSES2

sbrs flag,0

rjmp W1

ldi flag,0

ret

SMALLPULSES2:;forms the intermediate pulses

sbi PORTB,4; light the diode

ldi smallperiod1,low(SMALLPERIOD0); put Initial frequency for intermediate pulses for 0

ldi smallperiodh,high(SMALLPERIOD0)

add smallt1,smallperiod1

adc smallth,smallperiodh

out OCR1AH,smallth; put the time of maching

out OCR1AL,smallt1

rcall WAITMATCH

sbrc flag,0

rjmp EX1

cbi PORTB,4/extinguish the diode

ldi smallperiod1,low(SMALLPERIOD1); put Initial frequency for intermediate pulses for 1

ldi smallperiodh,high(SMALLPERI0D1)

add smallt1,smallperiod1

adc smallth,smallperiodh

out OCR1AH,smallth; put the time of maching

out OCR1AL,smallt1

rcall WAITMATCH

EX1:

ret

SECONDOPT:; process the second diode

sbi P0RTB,4; light the diode

in temp1,TCNT11

in temph,TCNT1H

add temp1,period1

adc temph,periodh

ldi flag,0b00000100

out OCR1AH,temph; put the time of maching

out OCR1AL,temp1

rcall WAITMATCH; wait match

ldi flag,0

cbi PORTB,4/extinguish the diode

ret

SAVEFAZA:; calculate new period

in temp1,TCNT11

in temph,TCNT1H

rcall DIV

mov period1,temp1

mov periodh,temph

ldi temp1,0

ldi temph,0

ldi smallth,0

ldi smallt1,0

ldi time1,0

ldi timeh,0

ret

MAIN:

sbis ACSR,5;wait rise

rjmp MAIN

sbrs flag,0

1 ... 188 189 190 191 192 193 194 195 196 ... 511
Перейти на страницу: