5 farklı frekansta Kare Dalga PWM

Başlatan oongit, 20 Kasım 2010, 22:14:43

justice_for_all

evet minimum yaklasik 62 Hz e kadar pwm alabilirsiniz...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit


OG

#17
Program 4MHz e göre yazılır, frekanslar da 4 katı yazılır, ancak pic 1MHz de koşturulur. Yani 1MHz lik kristal takılır. Simule ederken de PIC 1MHz e ayarlanır.

http://hotfile.com/dl/83894731/06287fa/dusuk_frekans_pwm.rar.html

[IMG]http://img641.imageshack.us/img641/6839/simc.png[/img]


[IMG]http://img194.imageshack.us/img194/649/47581271.jpg[/img]

Device = 16F628A
Config BOREN_ON, CP_ON, DATA_CP_OFF, PWRTE_OFF, WDT_ON, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT
Declare Xtal 4 
All_Digital = TRUE

TRISA =%11111111
TRISB =%11110111


OPTION_REG=%00001111



Dim frekans As Word
Dim x As Byte

Dim deger As Byte

Dim hiz As 15

Dim f_degis As PORTB.0
Dim arttir As PORTB.6
Dim azalt As PORTB.7

PORTB = 0

DelayMS 100
clrwdt


EData 400,127




Basla:
    frekans = ERead 0
    deger = ERead 2
    Goto cikisver2

bekle:
    clrwdt
    
    If arttir = 0 Then artiyor
    If azalt = 0 Then azaliyor
    
    If f_degis = 1 Then bekle    


cikisver:

    frekans = frekans + 200

    If frekans > 1200 Then frekans = 400
      
    

cikisver1:
    EWrite 0 , [frekans]
    
cikisver2:    
    HPWM 1,deger,frekans

cikisver3:
    For x = 1 To 50
        DelayMS 1
        clrwdt
        If f_degis = 0 Then cikisver3
    Next

GoTo bekle

'''''''''''''''''''''''''''
artiyor:
    If deger < 255 Then 
        deger = deger + 1
        HPWM 1,deger,frekans
        
    EndIf

    DelayMS hiz
    clrwdt
    
    If arttir = 0 Then artiyor
    
    For x = 1 To 50
        DelayMS 1
        clrwdt
        If arttir = 0 Then artiyor
    Next    

    EWrite 2 , [deger]
GoTo bekle

'''''''''''''''''''''''''''''''''''

azaliyor:
    If deger > 0 Then 
        deger = deger - 1
        HPWM 1,deger,frekans
    EndIf

    DelayMS hiz
    clrwdt
    
    If azalt = 0 Then azaliyor
    
    For x = 1 To 50
        DelayMS 1
        clrwdt
        If azalt = 0 Then azaliyor
    Next 
    EWrite 2 , [deger]
    
GoTo bekle

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

oongit

#18
Öncelikle çok teşekkür ederim... Bu yöntem cidden işe yarar mı?

Bir de; C'nin daha profesyonel olduğu ve hex'e çok daha az kayıpla çevrildiği için MCS öğrenmekten vazgeçip, C öğrenmeye çalışıyorum. Verdiğiniz Basic kodu için de ayrıca teşekkür ederim. Ama dediğiniz yöntemi C'de denemeye çalışacağım...

Eğer direkt olarak 1 MHz kristal takarak istediğim frekanslardaki PWM'leri alabiliyorsam, bu daha çok işime gelir... Umarım yanlış anlaşılmamışımdır...

Saygılarımla...

justice_for_all

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

Derlemede hata verdi...
İlk satırı #include <16f628a.h> olarak değiştirdim derledi... Ancak ISIS'te çalışmadı bu sefer... ???

justice_for_all

#21
derlemene gerek yoktu hex kodu icinde vardi zaten..

isis versiyonun ne acaba??

ilk satira asagidaki kodu eklermisin??

#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES RESERVED                 //Used to set the reserved FUSE bits

#use delay(clock=1000000)
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit


justice_for_all

bide yukarda mesajda yazdigim kodu ekleyip derlermisiniz...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

#fuses RESERVED satırı hata veriyor... O satırı çıkardım derledi ancak program çalışmıyor...

justice_for_all

benim gonderdigim dosyadaki hexi yuklermisin icine degistirilmemis olsun ama....

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

Gönderdiğiniz dosyadaki değiştirilmemiş olan hex'i yükledim, çalışmadı...

NOT: Devreyi aynen yukarıdaki şemada olduğu gibi çizdim... Tek fark kristali de ekledim ve 22pF kondansatörleri de çizdim... Özelliklerden hem PIC'in hem de kristalin frekansını 1MHz olarak ayarladım...

justice_for_all

benim gonderdigim dosyadaki isis dosyasini acmadimi peki...

hic pwm uretmiyomu yoksa butonlarmi calismiyo??
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

oongit

Alıntı yapılan: justice_for_all - 22 Kasım 2010, 00:45:01
benim gonderdigim dosyadaki isis dosyasini acmadimi peki...

hic pwm uretmiyomu yoksa butonlarmi calismiyo??

Hayır açmadı... Hiç PWM üretmiyor...

justice_for_all

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay