osiloskopta görünen sinyalde geriye kayma ?

Başlatan emrah, 05 Temmuz 2012, 19:41:57

emrah

meraba ,  aynısnı yapmaya çalıstıgım bir yazılımla ugrasıyorum. pic16f628A dodanımsal pwm ile mosfet sürüyorum.

yapmak istedigim yazılım ürettigi pwm in frekansını tam ne oldugunu bılmıyorum ama 200- 300 hz arasında birşey.

yazmıs oldugum yazılımıda 250 hz olarak ayarladım

yazdıgım yazılımı, orjınal yazılımın çıkışı ile karşılastırmak için osiloskopta göruntulerını inceliyorum ve orjınal yazılımın  ekranda sabit dururken benım yazdıgım yazılımın ürettigi sinyal geriye dogru kayıyor. minumum duty degerınde va maksimum duty degerınde aynı sekılde gerıye kayarak gösteriyor. osiloskobun timediv potu ile oynuyorum ama sonuc aynı. neden olabılır bu geriye kayma olayı ?
frekaslar aynı olmasada yakınlar seviyedeler çünkü osıloskop ekrarnnda bakıldıgı zaman hemen hemen aynı karelere sıgıyolar.

osilokopta tecrubesı ıyı olan arkadaslardan fıkırlerını beklıyorum.

OG

Trig ile durdurman gerek.
Sinyal süreklü yüzüyorsa trigger işe yaramayabilir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

emrah

hocam durdurmak önemlı degılde neden öyle kayıyor gerıye dogru onu anlamadım. yapamak istedigm yazılım gibi sabit olmasını istiyorum hersey tamam gıbı tek fark bu  geriye kayma olayı

bulut_01

628 pwm portunu kullananırken nasıl algorıtma yazdın burda yayınlarmısın ?
YENİLMEZ..

emrah

pic basic olarak yazdım  ;


@ 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

bulut_01

harici krastal kullan  @ DEVICE PIC16F628A, XT_OSC_NOCLKOUT seklınde degıstır

bide en basa
DUTY=0
DTY=0
HAM=0
ekle ve dene düzelecek mi
YENİLMEZ..

OG

#6
Osilator ile ilgisi yok.

Pwm ünitesini sürekli sürmekten kaçın. Ancak değer değişti ise tekrar ssür,

Peşisıra değer değişiyorsa arada beklet,
PWM frekans değeri düştükçe sürme aralığın daha uzun olmalı.

250Hz e ayarlanan pwm in max duty oranı 1000 olabilir, onu aşmamalısın.

Şöyle,

@ 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

CCP1CON.2=1 
CCP1CON.3=1

HAM VAR WORD

HAM_YEDEK VAR WORD

DUTY VAR BYTE 
DTY VAR WORD 

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


X VAR BYTE

'READ 0,HAM : PAUSE 10 
HAM = 0
HAM_YEDEK = HAM
 
gosub AYAR  '' başlangıçta 0 değeri sürdük veya eepromdan

pause 300



MENU:

GOSUB SWICH




WHILE PORTB.1=0

HAM=HAM+1
PAUSE 7

IF HAM>dty THEN HAM=dty

IF HAM <> HAM_YEDEK THEN

GOSUB AYAR   ' Değer değişti ise yeni pwm sür. değişmedi ise pwm unitesi ile uğraşma.
ENDIF
WEND




WHILE PORTB.0=0

HAM=HAM-1
PAUSE 7

IF HAM>980 THEN HAM=0
IF HAM <> HAM_YEDEK THEN

GOSUB AYAR   ' Değer değişti ise yeni pwm sür. değişmedi ise pwm unitesi ile uğraşma.
ENDIF

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
HAM_YEDEK = HAM    ' değişen ve çıkışa sürülen değeri hafızaya alıyoruz.  Tekrar aynı değer sürülmesin diye
CCP1CON.4=Ham.0
CCP1CON.5=Ham.1
CCPR1L=Ham>>2   

return


FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

bulut_01

aslında OG bende onu dıyecekdım yazmayı unutmusum pwm ünitesi fazla yorarsanız cıkısda bagzen sacma sınyal sekıllerı görebilirsiniz.
YENİLMEZ..

emrah

OG,

hocam aslında orada butona basılmıssa zaten ham degerı degısıyo ve halıyle yedek hamdan farklı olacaktır ve ayar kısmına gideektir.
butona basılmadıgı sürece ayar kısmına gitmıyor zaten hocam? butona basılınca deger değişir ve ayara gidilir. benım programda sürekli ayar bölümüne gitmiyor ama ?

pisayisi

Bu if döngüsü switch: yapısı altında programa ciddi yük ve gelişigüzel bir geciktirme getiriyor. Tuşlarda değişim olmasa da program sürekli burayı taramak zorunda,

DTY=980 - (ABCD)x30

ABCD 4 bitlik sayının 10 tabanındaki karşıllığı olmalı...

Murat

OG

emrah sen skobu gercek uygulamada mı bakıyorsun, isis de mi?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

emrah


emrah

geriye dogru kayma olayı osiloskoptan kaynaklanıyormus aslında. iki sinyali aynı anda izlerken birisinde geriye yada ileri dogru kayıyordu. prob yerlerini değiştirdim buseferde diger sinyali kayarak gösteriyor.  cözüm olarak  ch1/ ch2 tuşu ile once ılk sinyalı goruyorum , tusa basınca ıkıncı sınyalı goruyorum . bu şeklıde karsılastırma yapabildim anca :)    osiloskop neden boyle yaptı anlamadım herneyse. cevaplar için teşekkür ederim

OG

Trig tek kanala hükmettiği için birisine kilitleniyor. Probe değiştirmeden trig öbür kanala alınabilmesi lazım.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

emrah

alınıyo hocam. osiloskobun ozellıgı yetmıyor demkkı ıkı sınyal için