L297 + L298 ile çizgi izleyen araba

Başlatan command, 11 Mayıs 2007, 00:34:24

command

Arkadaşlar L297 ve L298 ikilisi ile 2 adet step sürücü yaptım..
CNY 70 kullanarak bu kartlarla çizgi izleyen araba yapmak istiyorum..
Nette hiç step sürücü ile yapılmış araba bulamadım..
hep dc motor kullanılmış

Bana bir örnek yollayabilirmisiniz..
Kodunu yazamadım.. pic baic pro kullanıyorum..

pinlerden kart CLK girişleri için gerekli kare dalga sinyali aynı anda alamadım

ete

Bütün yapacağın sürücüye bağlı ENBL ucuna HIGH vererek motor sürücüsünü aktif yapacaksın.  DIR  Yani Yön ucuna motorun dönmesini istediğin tarafa uygun olarak HIGH yada LOW vereceksin
Arkasından CLK girişine clock işaretleri vereceksin. LCK motorun devir sayısını değiştirir yada ayarlar. 1 sn de 200 pals uygularsan (motorun 1.8 derece/adım olduğunu varsayıyorum) ki bu 200 HZ lik bir sinyal olacaktır motor 1 sn de 1 tur atacaktır. 200 ün katları şeklinde vereceğin sinyaller motorun hızlanmasını daha yavaş sinyaller ise motorun yavaş dönmesini sağlayacaktır. Dönüşleri bu sistemle ayarlaman gerekiyor.
Clok Palslerini aşağıdaki şekilde verebilirsin.
1000 /200 = 5  ms süreye tekabül eder. SURE isimli bir değiken tut.
Örneği PortB den Clk çıkardığını var sayarak veriyorum.

SURE=5000 ' yani 5ms

BASLA:
HIGH PORTB.0
PAUSEUS SURE
LOW PORTB.0
GOTO BASLA

Burada sürekli 200 HZlik bir CLK palsi oluşturulur. Şimdi frkansı artırmak motoru hızlandırmak istersen;
SURE=1000  olarak değiştir bakalım ne oluyor. Hemen motor hızlanacaktır.
Tabiiki bu dediklerimi bir şarta bağlaman gerekir. Yani çizgi takip eden robot da her iki motoruda aynı anda sürmen gerekecek. O yüzden her ikisine aynı anda komut vermen gerekir. Bunun yolu ise KESME kullanmaktan geçiyor.  HPWM dah aiyi bir yöntem ancak frekans her iki port için aynı olacağından birine ayrı diğerine farklı frekans veremezsin. BU yüzden de dönüşleri yaptıramazsın. Ancak motorun birini durdurarak dönüş yapabilirsin. Anlık duruşlar robotun dönmesini sağlayabilir. Nasıl olsa motorların düz giderken aynı hızda dönmeleri gerek .

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

command

@ete hocam çok sağolasın ilgin için..
evt dediğin şekilde motoru istediğim hızalrda kontrol edebiliyorum..

ama sizinde son kısımda belirttiğiniz gibi benm asıl proglemim motorları aynı anda farklı devirlerde çecvirememek...

Bu konuda nasıl bir kesme kullanmam gerekiyor..
Mesela diyelim araba sağ tarafa kaydı , bende arabayı düzeltmek
ben sağ motorun sürücüsüne 500hz
sol motorun sürücüsüne 300 hz vermek istiyorum
bunu yapamadım :(

16f877 nin 2 pwm çıkışı var. şu şekilde yapabilirim diye düşündüm ama buda işe yaramadı
"
programın baş kısımında motorları
HPWM 1 , 255 , x
HPWM 2, 255 , y

şeklinde çalıştırsam... daha sonra prg nin neresinde olursa olsun x yada y değişkeni ile oynayarak motorların hızları ile oynayabilirmiyim

"
Ama siz demişsinizki "PWM dah aiyi bir yöntem ancak frekans her iki port için aynı olacağından birine ayrı diğerine farklı frekans veremezsin.
"

2 porttan farklı frekanslarda çıkış alamammı??

Motorun birini durdurup diğerini çalıştrmak çok kesikli harekete sebep olacaktır, buda işie yaramaz :(