osiloskopta pwm ölçümü

Başlatan efor, 05 Temmuz 2012, 12:33:58

efor

hocam merhaba,

daha önce bahsettigim vafl kontrol cihazının ürettigi pwm frekansını osılokopta ölçüyorumfakat sürekli geriye dogru kayıyor şekil. bu neden kaynaklanır?

esas istenilen yazılımda böylebirşey olmuyor. ıkı cihazında sınyalını osıloskopta aynen inceledigimde frekanslar bırbırıne cok yakın sayılır fakat benım yazılımın ürettigi pwm göruntusu sureklı gerıye kayıyor.

yazılımı sızın önerdiginiz biçimde düzenledim hocam ;

@ DEVICE PIC16F628A                                                      
@ DEVICE PIC16F628A, WDT_OFF       
@ DEVICE PIC16F628A, PWRT_ON             
@ DEVICE PIC16F628A, PROTECT_ON         
@ DEVICE PIC16F628A, MCLR_OFF             
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
DEFINE OSC 4



PORTA=0:TRISA=%00000000
PORTB=0:TRISB=%11110011
CMCON=7
OPTION_REG.7 = 0
T2CON =%00000110     ' 1/16
PR2=249

HAM VAR WORD
DUTY VAR BYTE 
DTY VAR WORD 

pause 300

symbol A = PORTB.7
symbol B = PORTB.6
symbol C = PORTB.5
symbol D = PORTB.4


X VAR BYTE
READ 0,HAM : PAUSE 10                 

CCP1CON.2=1 
CCP1CON.3=1


GOSUB AYAR





MENU:

GOSUB SWICH




WHILE PORTB.1=0

HAM=HAM+1
PAUSE 7

IF HAM>dty THEN HAM=dty
GOSUB AYAR
WEND




WHILE PORTB.0=0

HAM=HAM-1
PAUSE 7

IF HAM>980 THEN HAM=0
GOSUB AYAR
wend



GOTO MENU




SWICH:

IF A=0 AND B=0 AND C=0 AND D=0 THEN DTY=980
IF A=0 AND B=0 AND C=0 AND D=1 THEN DTY=950
IF A=0 AND B=0 AND C=1 AND D=0 THEN DTY=920
IF A=0 AND B=0 AND C=1 AND D=1 THEN DTY=890
IF A=0 AND B=1 AND C=0 AND D=0 THEN DTY=860
IF A=0 AND B=1 AND C=0 AND D=1 THEN DTY=830
IF A=0 AND B=1 AND C=1 AND D=0 THEN DTY=800
IF A=0 AND B=1 AND C=1 AND D=1 THEN DTY=770
IF A=1 AND B=0 AND C=0 AND D=0 THEN DTY=740
IF A=1 AND B=0 AND C=0 AND D=1 THEN DTY=710
IF A=1 AND B=0 AND C=1 AND D=0 THEN DTY=680
IF A=1 AND B=0 AND C=1 AND D=1 THEN DTY=650
IF A=1 AND B=1 AND C=0 AND D=0 THEN DTY=620
IF A=1 AND B=1 AND C=0 AND D=1 THEN DTY=590
IF A=1 AND B=1 AND C=1 AND D=0 THEN DTY=560
IF A=1 AND B=1 AND C=1 AND D=1 THEN DTY=530

RETURN



AYAR:

'ham=(PR2+1)* DUTY /25

CCP1CON.4=Ham.0
CCP1CON.5=Ham.1
CCPR1L=Ham>>2   

return

ete

Sinyalin neden geriye kaydığı konusunda en ufak bir bilgim yok maalesef.
Muhtemelen frekansları aynı olmayabilir.
Mutlaka bir frkeansmetre ile frekans ölçümü yapman gerekir diye düşünüyorum.
Gerçi frekans bu işte fazlaca etkili olmamalı şayet bir birlerine yakın iseler tabiiki.

Ete

Powered by EzPortal