pcbway

16F877a motor kontrol ?

Başlatan mustafacil38, 23 Mart 2015, 21:44:49

mustafacil38

Ustalarım bu çizimi yaptım ama programlamayı pek beceremiyorum.
Mantık şu
başlangıç butonuna basıldığında;
2li olan display 30 dan geri sayacak, 4lü display sayaç olacak ve  1 sayı artacak, motorlara hareket kabiliyeti verilecek,
Onay butonuna basıldığında;
geri sayım duracak iptal olacak, motorların hareket kabiliyeti bitecek, 3. motor yani dışardan kontrolsüz motor belirli bir tur dönecek, 3. motor durduğunda, d7 bacağındaki selenoid çalışacak (çekili kalacak)(isis\'de selenoid\'i bulamadım led koydum yerine),3. motor eski haline geri dönecek, 1. ve 2. motor belirli bir tur dönecek , 1. ve 2. motor durduğunda selenoid bırakacak işlem başa dönecek.
bu devreyi simulasyonda çalıştırdığımda ve programlama mantığını kavradığımda programlamayı devre tasarımını bir miktar öğrenmiş olmayı umuyorum. Yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim. Proteus dosyası ekte

[mergedate]1427073703[/mergedate]
Kimse birşey demiycek mi bu devrede bütün bağlantılar doğru mu acaba ?

pwm.c

Devre için iki satır bile kod yazmamışın. daha hangi programlama dilini kullanacağını bile bilmiyoruz. bu şekilde kimse yardımcı olamaz.
şemada ise butonları PULL-DOWN yapmışın. bu bağlantıda gürültü sorunları yaşarsın. onun yerine PULL-UP mantığını kullan. yani butonları GND ye bağlayıp dirençle +5v a çek. butona basınca PIC lojik "0" olarak algılasın.
diğer sorun ise, displeyleri sürmek için 74HC595 kullanmalısın. ayrıca segmentlere uygun değerde direnç bağlaman gerekiyor. proteusta sorun olmaz ama gerçek devrede direnç olmazsa displeylere ve sürücü entegreye zarar verirsin.
son olarak, devreyi beslemek için iyi regüleli bir 5v kaynak bulmalısın. 7805 bağlamayı düşünmüş olabilirsin ancak displeylerin toplam akımı yaklaşık 500ma olacağı için 7805'de aşırı ısı sorunları yaşarsın. bunun yerine LM2575 gibi SMPS entegrelerinden kullanabilirsin.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

mustafacil38

Sayın Nazmi hocam cevabınız için çok teşekkür ederim 2 gündür cevabınız üzerinde uğraşıyorum devrede değişiklikler yaptım servo motordan dc motora geçtim. hocam PULL-UP mantığında devreyi tasarlıyorum fakat kodlamada default lojik 0 olduğu için devamlı lojik 1 geliyor zannediyor devamlı hepsini iki yönde çalıştırmaya çalışıyor sapıtıyor :)
Hocam birde L298 ile 12v 2-3 amperlik bir dc motor sürülebilir mi ?
Displayden LCD ye geçtim Display parça yer yol açısında çok zahmetli gibime geldi. 16x2'lik bir displayi sürmek için extradan 74HC595 gibi bir eleman kullanmamız gerekir mi yoksa 6 bacak direk bağlantıda ki gibi olabilir mi ?
Hocam son olarak lcdde boşta devamlı yazı dönmesini istiyorum başlat butonuna basınca yazının kesilip numaratörün 1 sayaç atmasını ve 30dan geriye saymasını düşünüyorum. Bunun İçin yazıyı döngüde dönderirken başlat butonunu kesmeye mi koymam gerekir?

Hocam Proteus ve CCS S dosyalarını yüklüyorum bir hata varsa gidişatta yardımcı olabilir misiniz?

Proteus ve CCS C kodları

veli dayı

lcdyi sürmek için herhangi bir şeye ihtiyacın yok picteki program yeterli olur.l298 en fazla 2 amper verir diye geçiyor katologlarda 3 amperi unut hatta 2 amperi bile tavsiye etmem.yüksek amper istiyorsan mosfetli yada transistörlü bir h köprüsü yapmanı tavsiye ederim.
[mergedate]1427360982[/mergedate]
Hocam son olarak lcdde boşta devamlı yazı dönmesini istiyorum başlat butonuna basınca yazının kesilip numaratörün 1 sayaç atmasını ve 30dan geriye saymasını düşünüyorum. Bunun İçin yazıyı döngüde dönderirken başlat butonunu kesmeye mi koymam gerekir?   

     Rb.0 kemesi de olur yada farklı bir yöntem de olur ben pic basic kullanıyorum.pic basic de yazarsan yardımcı olabilirim programlama kısmına fakat c den pek anlamam.

mustafacil38

Veli dayı teşekkür ederim verdiğin bilgiler için ama dur gadanı alıyım ccs yi daha yeni yeni öğrenmeye başladım :)
Dayı birde 48v 2amper'lik bir selenoid var elimde bunun beslemesini ne ile yapabiliriz aynı şekil h köprüsü mü gerekir.
Çok Teşekkürler

veli dayı

selenoid elektriği verince açılıp kestiğin zaman kapanmıyor mu e o zaman bir mosfet işini fazlasıyla görür.

pwm.c

L298 entegresinin 4 bağımsız çıkışı mevcut. bunları paralel bağlayarak çıkış akımını arttırabilirsin. Datashette şu şekilde gösterilmiş:


ayrıca, yaptığın şemada L298 "sense" girişlerine 100R direnç bağlamışın. 3A motor için fazla gelebilir. eğer akım sensörü kullanmayacaksan bunlara gerek yok. kısadevre et gitsin.

PULL-UP için program yazılımınıda değiştirmen gerekiyor elbette. C dilinde buton girişini test ederken input fonksiyonunun başına ünlem "!" işareti koyman yeterli. örneğin:
if (!input(buton_ileri))
eğer bunu yapmazsan program istediğin gibi işlemez.

74HC595 gibi entegreleri ençok port çoklayıcı olarak kullanıyorlar (genel üretim amacı bu değil). PIC'de pin sayısı yetersiz geldiğinde başvurursun. bunun dışında ihtiyacın yok. PIC'e ne yazılım atarsan aynen onu yapar.

selenoid sürmek için röle kullanman yeterli. en sağlıklısı bu.

son olarak, motorlu çalışan sistemler beslemeye yoğun parazit gönderir ve PIC resetlenmesine neden olur. bundan kurtulmak için Motor ve PIC beslemesini ayrı kaynaklardan yapacaksın yada 5v için LM2575 regülesini kullan. birde, motor çıkışlarına belli bir değerde kondansatör bağlayarak bu parazitleri azaltabilirsin.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

mustafacil38

Hocam Power Supply ile beslememin bi sakıncası var mı devreyide motorlarıda