dc motor pwm kontrol pic basic yardım

ariah0010

Üye
Katılım
2 Nis 2011
Mesajlar
7
Puanları
1
Yaş
33
merhaba arkadaşlar
bir proje yapıyorum pwm ile dc motor kontrol ediyorum bu devreyi yaparken bir ileri geri anahtar bir tane hız artır bir tane hız azalt ve birtanede stop butonu kullanıyorum.
devrede p.c16f877a ve l293d kullanıyorum birde lcd çıkışı alıyorum.
benim elimde bir bic basic programı var ama hex formatına çeviremiyorum hata veriyor ve pic basic bilgimde çok az olduğu için düzeltemiyorum. eğer mümkünse bana yardım edebilirmisiniz. programın kodunu yazıyorum
Kod:
'LCD'ler
DEFINE OSC 4
DEFINE LCD_LINES               2
Define  LCD_DREG        PORTD
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTb
Define  LCD_RSBIT       1
Define  LCD_EREG        PORTb
Define  LCD_EBIT        0
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS          50
 
'Motor Hiz
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit  
DEFINE HPWM2_TIMER 1 'Hpwm 2 timer select
DEFINE HPWM3_TIMER 1 'Hpwm 3 timer select
'********************************
'Butonlar
input porte.0  
input porte.1
input porte.2
input portb.5
'Motor1
output portd.0  
output portd.1
output portd.2
output portc.0
'********************************
ADCON1=4    
TRISA = %00001011
CMCON=7  
a var byte
b var byte
x       var     byte
y       var     byte
Yon       var     byte
x=0
y=0
'********************************
low portd.0  
low portd.1
low portd.2
low portc.0
pause 500  'LCD Ekranin acilmasi icin gereken sure
baslama: 
low portd.0  
low portd.1
low portd.2
low portc.0  
Lcdout $fe, 1, "Hiz Kontrol"
LCDOut 254,192
LCDOut "Cift Yon PWM"
pause 750
 
Hiz:
HPWM 1,x,2000
HPWM 2,y, 2000
if porte.0=0 then
x = x +1 
Y = y +1
Lcdout $fe, 1, "Hiz Degeri"
LCDOut 254,192
LCDOut "Hiz:", #x, "/255"
pause 200
endif
 
if porte.1=0 then
x = x - 1 
Y = y - 1
Lcdout $fe, 1, "Hiz Degeri"
LCDOut 254,192
LCDOut "Hiz:", #x, "/255"
pause 200
endif
 
if portb.5=0 then
low portd.0
low portd.1
low portd.2
low portc.0
 
Lcdout $fe, 1, "Duruyor"
LCDOut 254,192
LCDOut "10 SN Durma"
pause 10000
endif
 
 
if Porte.2=0 then
Lcdout $fe, 1, "Ileri Donus"
LCDOut 254,192
LCDOut "Hiz:", #x, "/255"
pause 200
low portd.0
high portd.1
low portd.2
high portc.0
else 
Lcdout $fe, 1, "Geri Donus"
LCDOut 254,192
LCDOut "Hiz:", #x, "/255"
high portd.0
low portd.1
high portd.2
low portc.0
pause 1
endif
 
goto hiz



'***********************************
 
Moderatör tarafında düzenlendi:
Kod:
:10000000b2011d29a9004030a0004230a1000f30ec
:10001000a400a501e820aa012108031916282a1422
:100020005220fc3e031c1628aa1452202003ab00c9
:10003000280f1e28ff30a400a50029282808a500a5
:10004000a401a600a7012b0a03192928a200a301d5
:100050000221a90b42281708cf39a41b2038241be2
:1000600010380c3897002508950083160711831265
:100070002b088316920083121208fc392a040438d4
:1000800092001829a90b51281d08cf39a41b20382c
:10009000241b10380c389d0025089b008316871000
:1000a00037281829a10ca00ca10ca00c0800a50150
:1000b000a400b3172730a30010306a200330a30038
:1000c000e8306a20a30164306a20a3010a306a2064
:1000d00024087528a2002508a1002408a000e62015
:1000e0002008031db313b31b0800303ea700061001
:1000f0008610861083160610861086100f3088052d
:1001000083122708b218a1283a30a100fc30d2206f
:100110003330a600b5201030a1006830d220b520c1
:100120006430d1202230a600b5202830a0200c3029
:10013000a0200130a0200630a020b2142708a1285a
:100140003214a600321caf288610033c031cb428ce
:10015000b4200730a100d030d2200314080032149c
:10016000fe3c031918298614321c321006140f3075
:1001700088052608f03988040610a60e3218b5281e
:100180003230d12003140800a301a200ff30a207df
:10019000031ca307031c18290330a100df30d22061
:1001a000c628a101e83ea000a109fc30031cdb2801
:1001b000a0070318d828a0076400a10fd82820188a
:1001c000e128a01ce5280000e5280800a501a401fd
:1001d0001030a600210da40da50d2208a4022308ad
:1001e000031c230fa5020318fc282208a4072308d8
:1001f0000318230fa5070310a00da10da60bea28d5
:10020000200818291030a800a101a001a70ca60cf5
:10021000031c10292208a00723080318230fa10795
:10022000a10ca00ca50ca40ca80b062924081829c5
:1002300083130313831264000800831609148914be
:1002400009158616081088100811071004309f0041
:100250000b30850007309c008312ba01bb010810e7
:1002600083160810831288108316881083120811d1
:1002700083160811831207108316071083120130aa
:10028000a300f4308a01c5200810831608108312d9
:1002900088108316881083120811831608118312a0
:1002a000071083160710fe3083128a017620013072
:1002b0008a01762048308a01762069308a017620ca
:1002c0007a308a01762020308a0176204b308a01ec
:1002d00076206f308a0176206e308a017620743065
:1002e0008a01762072308a0176206f308a0176206a
:1002f0006c308a017620fe308a017620c0308a0177
:10030000762043308a01762069308a017620663073
:100310008a01762074308a01762020308a01762086
:1003200059308a0176206f308a0176206e308a013a
:10033000762020308a01762050308a01762057308e
:100340008a0176204d308a0176200230a300ee30fb
:100350008a01c5203a08a800d030a2000730a300c7
:1003600001308a0102203b08a800d030a2000730eb
:10037000a30002308a01022064008a110a120918bf
:100380000b2aba0abb0afe308a01762001308a01a4
:10039000762048308a01762069308a0176207a30ca
:1003a0008a01762020308a01762044308a01762026
:1003b00065308a01762067308a01762065308a01af
:1003c000762072308a01762069308a017620fe30ec
:1003d0008a017620c0308a01762048308a01762052
:1003e00069308a0176207a308a0176203a308a0193
:1003f00076203a088a0157202f308a017620323041
:100400008a01762035308a01762035308a017620bf
:10041000c8308a01c42064008a110a1289185a2a35
:10042000ba03bb03fe308a01762001308a017620b0
:1004300048308a01762069308a0176207a308a0134
:10044000762020308a01762044308a01762065307b
:100450008a01762067308a01762065308a0176200d
:1004600072308a01762069308a017620fe308a0156
:100470007620c0308a01762048308a0176206930a3
:100480008a0176207a308a0176203a308a017620f5
:100490003a088a0157202f308a01762032308a01ab
:1004a000762035308a01762035308a017620c830b2
:1004b0008a01c42064008a110a12861ab62a08101a
:1004c000831608108312881083168810831208116f
:1004d000831608118312071083160710fe3083124b
:1004e0008a01762001308a01762044308a01762004
:1004f00075308a01762072308a01762075308a0143
:10050000762079308a0176206f308a017620723029
:100510008a017620fe308a017620c0308a0176205a
:1005200031308a01762030308a01762020308a01ed
:10053000762053308a0176204e308a017620203092
:100540008a01762044308a01762075308a0176202f
:1005500072308a0176206d308a01762061308a01fe
:1005600076202730a30010308a01c52064008a114c
:100570000a120919192bfe308a01762001308a01ee
:10058000762049308a0176206c308a0176206530e9
:100590008a01762072308a01762069308a017620bd
:1005a00020308a01762044308a0176206f308a011b
:1005b00076206e308a01762075308a01762073307d
:1005c0008a017620fe308a017620c0308a017620aa
:1005d00048308a01762069308a0176207a308a0193
:1005e00076203a308a0176203a088a0157202f3047
:1005f0008a01762032308a01762035308a017620d1
:1006000035308a017620c8308a01c420081083164c
:100610000810831288148316881083120811831619
:100620000811831207148316071083128a110a1205
:10063000712bfe308a01762001308a017620473006
:100640008a01762065308a01762072308a01762010
:1006500069308a01762020308a01762044308a0170
:1006600076206f308a0176206e308a0176207530d0
:100670008a01762073308a017620fe308a01762046
:10068000c0308a01762048308a01762069308a019c
:1006900076207a308a0176203a308a0176203a082c
:1006a0008a0157202f308a01762032308a01762045
:1006b00035308a01762035308a0176200814831679
:1006c0000810831288108316881083120815831669
:1006d00008118312071083160710013083128a0154
:0606e000c4208a01aa29d2
:02400e00753ffc
:00000001ff
 
Moderatör tarafında düzenlendi:
program başlangıcına da alttaki satırı ekle
Kod:
@ DEVICE pic16F877a                     
@ DEVICE pic16F877a, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F877a, PWRT_ON             'Power on timer açık
@ DEVICE pic16F877a, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F877a, XT_OSC
 
Moderatör tarafında düzenlendi:
merhaba sizden bir iyilik daha isteyebilirmiyim ? dediğiniz gibi üstteki kodları ekleyip birkaç düzenlemeden sonra tekrar hex dosyasına çevirmeye çalıştım başaramadım. Aslında forumda direkt hex dosyasına çevirecek kadar iyi insanlarla karşılaşabileceğimide düşünmedim daha forumda yeni olduğum için :D
ben bir iki değişiklik yapmak istiyordum stop butonuna bastığımda 10 sn pause yapıyor ama ben stop butonuna bastığımda devrenin tamamen durmasını istiyorum yani x=0 oluyo galiba. birde hız butonlarının x=x+1 yerine x=x+10 yani hmotor hızını 10'ar 10'ar artıkmak istiyorum
eğer bu konuda yardım edebilirseniz size minnettar kalırım gerçekten şimdiden okumak için zaman ayırdığınız için teşekkür ederim
 
Son düzenleme:
Derleme sırasında karşılaştığınız hatayı yazarsanız size daha kolay yardımcı olabiliriz. Ayrıca dur butonuna basınca sistemin tamamen durmasını ve reset atılmadan çalışmasını istiyorsanız, dur fonksiyonunun içerisinda sonsuz döngüde tutabilirsiniz. Ancak dur butonuna basında duracak ve ileri butonuna basınca tekrar ileri gidecek derseniz, üstte yazmış olduğunuz fonksiyon içerisinde buton kontrolleri yaptırabilirsin ya da kesme kullanırsın.
 
Adsız.jpg
gönderdiğim resimde kırmızı ile işaretli olan yerlerde hata gösteriyor ayrıca birde syntax error veriyor onuda adcon1'de gösteriyor. sonsuz döngüde nasıl tutabiliriz peki tekrar ileri dediğimde kaldığı yerden devam ederse daha kullanışlı olur
 
Dur butonuna basınca call komutu ile bir fonksiyonun içine git ve orada for veya while döngüsü ile sonsuzda kal. While veya for döngüsü içerisinde de butonları kontrol et. Eğer herhangibir buton basılmışsa, break ile sonsuz döngüden çık ve fonksiyondan geri git. Algoritma bu şekilde olacak. PBP ile sen yazarsın artık :)
 
teşekkür ederim yardımın için yalnız şu üstteki sorunu hala çözemedim ben bi fikrin varmı bu konu ile ilgili
 
Son düzenleme:

Forum istatistikleri

Konular
130,074
Mesajlar
932,830
Kullanıcılar
453,075
Son üye
GpuAndCpu

Yeni konular

Geri
Üst