Pic ile zamanlı dc motor kontrolü

Katılım
23 Tem 2009
Mesajlar
346
Puanları
6
Yaş
41
Merhaba arkadaşlar.Bi kuluçka makinesi yapıyorum ve bu kuluçka makinesi her bir saatte bir yumurtaları yerinden oynatması gerekiyor. aşağıdaki resimdeki gibi bir düzenek hazırladım geriye sadece devre ve picin programı kaldı.Şimdi burdaki amaç her bir saatte bir motor 45 derecelik bi açıya kadar dönecek açıyı aşağıdaki resimdede görüldüğü gibi 2 adet sınırlama anahtarları vasıtasıyla ayarlıyacak yani motor tahtayı döndürmeye başladığı zaman tahta sınır anahtarının üstüne gelecek anahtarı kapatacak ve motor duracak 1 saat bekledikten sonra motor ters yöne dönecek ve tahta ters yöndeki anahtara ulaşınca anahtarı kapıyacak ve yine motor duracak.Yine 1 saat bekleyecek ve 1 saat sonunda yine motor ters yöne dönmeye başlayacak ve bu böylece sonsuz bi döngü içinde dewam edecek.Bu algoritmayı uygulayabilmek için bana nasıl bir pic lazım?tabi birde pici programlamak var programlama hakkında en ufak bi fikrim yok açıkçası pic programlamayı bilmiyorum bu algoritma için program yazabilecek veya yardımda bulunabilecek birilerininin acil cevap yazmasını bekliyorum.


Saygılarımla...
 
Usta gerekli pic i seçebilmek için Öncelikle belirtmeniz gereken olay şu motoru 3 fazlı mı seçeceksiniz tek fazlı mı yada doğru akım motoru mu yani motorun çeşit açısından belirtilmesi devre dizayn edilirken büyük kolaylık sağlar çünkü 3 fazlı sincap kafesli bir asenkron motor kullanırsanız devir yönünü değiştirmek çok ama çok kolay olacaktır iki tane de sınır anahtarınız olacağı için size toplamda 2 giriş 2 çıkış veren en küçük en kolay bulunan ve en ucuz pic entegresi olarak 12F675 entegresi yetecek hatta boşta da pin i kalacaktır fiyatı 2,5 tl gibi bir entegre...

Öncelikle kullanacağınız motoru belirtmeniz en güzel sonucu alabilmeniz için ilk adım olacaktır.

Ayrıca motorun yön değişmesi ve 1 saatlik bekleme yaptıktan sonra diğer yöne dönmesi ve bu şekilde sonsuz bir döngüye girmesi programsal olarak çok kolay olacaktır fakat şunu da belirtmeliyiz ki donanım olarak öyle al bir röle sür gitsin şeklinde olursa pek randımanlı olmaz özel izalasyon yöntemleri ile bu pic ile motor devresini yalıtmak gerekir ama donanımı doğru ve yöntemlere uygun yaparsanız çok güzel bir devre olacağından şüphem bile yok...

Siz öncelikle motorun özelliklerini belirtin gerisini tartışarak hallederiz...

Hadi çalışmalarınızda başarılar
 
Merhaba cevabınız için teşekkür ederim.Kullanacağım motor 5 voltluk dc bir motor.Röle kullanmayı düşünmüyorum.Motor 1 saatte bir yön değiştireceği için aşağıdaki devreyi kullanmayı planlıyorum.Transistör olarak bd911 kullanmayı planlıyorum.Pic olarak elimde 16f84,16f628,16f877 var ben 16f84 ü kullanmayı planlıyorum.Şimdi pic basic pro ile bu devreyi programlayacam ama daha timerın nasıl kullanıldığını bile bilmiyorum int. de pic basic pro ile ilgili dersler var onları araştırdım baya kolaya benziyor ama tabi ilk başlarda yardıma çok ama çok ihtiyacım olacak.

Yönetici Notu: Paylaşılan fotoğraf, fotoğraf paylaşım sitesinden silindiği için kaldırılmıştır.

Şemada gösterilen 1 nolu uca 1 verir 2 nolu uca 0 verirsek motor bir yöne dönüyor 1 nolu uca 0 2 nolu uca 1 verirsek bu sefer ters yöne dönüyor 1 ve 2 nolu uca sinyal vermessek motor duruyor tamda benim istediğim gibi.Aslında devrenin tümüyle çok basit vede yazılımıda çok basit bi yazılım olsa gerek.
 
Ustam dayanamadım pic basicte öğrendiğim komutları uygulayarak bi program yazdım 10 sn de bir motor yön değiştirecek şekilde ayarladım bi kontrol ederseniz sevinirim hatalar falan varsa bi yardımcı olursanız memnun olurum

TRISA=0 "PORTA YI ÇIKIŞ OLARAK AYARLADIM
TRISB=1 "PORTB Yİ GİRİŞ OLARAK AYARLADIM
PORTA=0 "PORTA ÇIKIŞLARINI LOW YAPTIM
PORTB=0 "PORTB ÇIKIŞLARINI LOW YAPTIM
SYMBOL C1=PORTA.0 "PORTA.0 A C1 İSMİNİ VERDİM
SYMBOL C2=PORTA.1 "PORTA.1 E C2 İSMİNİ VERDİM
SYMBOL A1=PORTB.0 "PORTB.0 A A1 İSMİNİ VERDİM
SYMBOL A2=PORTB.1 "PORTB.1 E A2 İSMİNİ VERDİM

BASLA:
HIGH C1 "C1 ÇIKIŞINI HİGH YAPTIM MOTOR A2 BUTONUNA İLERLİYOR
IF A2=1 THEN "A2 BUTONU 1 OLDUĞUNDA
LOW C1 "C1 İ KAPATTIM MOTOR DURDU
PAUSE 10000 "KAPALI DURUMDA 10 SN BEKLETTİM
HIGH C2 "C2 ÇIKIŞINI HİGH YAPTIM MOTOR A1 BUTONUNA İLERLİYOR
IF A1=1 THEN "A1 BUTONU 1 OLDUĞUNDA
LOW C2 "C2 ÇIKIŞINI KAPADIM MOTOR DURDU
PAUSE 10000 "10 SN BEKLETTİM
ENDIF "VE SORGULAMA BİTTİ
GOTO BASLA "PROGRAM TEKRAR BAŞA DÖNDÜ BÖYLECE SONSUZ SORGU BAŞLADI
Şimdi benim merak ettiğim denemek için 10sn lik periotlar halinde motoru ceviriyorum ama 1 saatlik periot nası olacak onu daha kavramış deilim.Bu arada programı denemedim mantık olarak böle bişey olması gibi geldi bana.
 
Programı ve motor sürücü devresini değiştirdim ustam program ve sürücü devresi aşağıda

bi kontrol edersen sevinirim.


TRISA=0
TRISB=1
PORTA=0
PORTB=0
SYMBOL C1=PORTA.0
SYMBOL C2=PORTA.1
SYMBOL A1=PORTB.0
SYMBOL A2=PORTB.1

BASLA:
HIGH C1
IF A2=1 THEN
LOW C1
PAUSE 10000
ENDIF
HIGH C2
IF A1=1 THEN
LOW C2
PAUSE 10000
ENDIF
GOTO BASLA
END
 
Yaw bu kodları bi türlü similasyonda çalıştıramadım kısacası yazdığım program çalışmadı nerde hata var acaba bi kontrol edermisiniz?
 
TRISB=1 derseniz 8 bitlik bir registera sadece 1 degerini atamis olursunuz ve A1 input olarak calisir. atamaniz gereken deger 3 tur. Binary konusunu incelemenizi tavsiye ederim.
High C1 dediginizde motora bir yonde yol veriyorsunuz ve ardindan A2 durumunu sarta bagli olarak kontrol ediyorsunuz. If bu sekilde kullanilirsa kosul karsilanmadigi takdirde blok ici islem yurutulmez ve blok bitimini takip eden ilk komut yurutulur ki bu durumda High C2 olur. Sonucta motora 2 yonde de yol vermis olusunuz ki Locked Anti-Phase PWM olarak literaturde gecen H Koprusu surme yontemlerinden birisini uygularsiniz farkinda olmadan. Bu yontem PWM ile surerkem fren amacli kullanilir.

C1=0
C2=0
BASLA:
HIGH C1
_A2L: IF A2=0 THEN _A2L 'A2 1 OLUNCAYA KADAR _A2L ETKIETINE DALLAN
LOW C1
DELAYMS 1000 'MOTORA YUKLENME OLMASIN DIYE KISA BIR ARA, ZORUNLU DEGIL
HIGH C2
_A1L: IF A1=0 THEN _A1L ''A1 1 OLUNCAYA KADAR _A1L ETKIETINE DALLAN
LOW C2
DELAYMS 1000 'MOTORA YUKLENME OLMASIN DIYE KISA BIR ARA, ZORUNLU DEGIL
GOTO BASLA

Boyle deneyin isinizi gorecektir...
 
katana çok saolasın yardımların için peki ben bu 1 saatli bekleme işini nası yapıcam bu senin yazdığın delayms le 1 saatlik bir bekleme zamanı yapabilirmiyim?
 
Çok saolasın katana peki bu for next döngüsünü program içnde hangi satırlar arasına eklemem gerekli? bu arada trisb=%11111111 yaptım b portu komple giriş olarak ayarladım.
 

Forum istatistikleri

Konular
129,878
Mesajlar
930,970
Kullanıcılar
452,747
Son üye
azad911

Yeni konular

Geri
Üst