PIC ile basit Motor Kontrolü

yavuzz

Üye
Katılım
14 Eyl 2007
Mesajlar
483
Puanları
1
motor kontrol etmek için pic ile uygulama geliştirmek istiyoruz lakin proteus ile yaptığımız devrede anlamadığımız bir şekilde devre reset atıp duruyor ve led yada bağladığımız motor durarak çalışıyor sanırım mmarisinde bir sorun uygulamayı plaket üzerinde yapıncada devre ya çalışmıyor yada duradura çalışıyor kodalrı incelerseniz ve yardım ederseniz çok sevinirim.LED1 ilk motor LED2 ise ikinci motor
Kod:
TRISA=255                 
TRISB=%0000000 
PORTA=0
PORTB=0
SYMBOL TUS1=PORTA.0
SYMBOL TUS2=PORTA.1
SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTB.1
BASLA:
PORTB=0
   IF TUS1=1 THEN
   HIGH LED1
   ENDIF
   IF TUS2=1 THEN
   HIGH LED2
   ENDIF  
GOTO BASLA 
   END
 

Ekli dosyalar

  • D2.rar
    44.2 KB · Görüntüleme: 71
Bir kaç hata var.
Motor sürerken az daha çeşit bilgiler gerek !

Aşağıdaki dosyayı incele , farklara dikkat et.

Kod:
TRISA=%0011               
TRISB=%00000000
PORTA=0
PORTB=0
SYMBOL TUS1=PORTA.0
SYMBOL TUS2=PORTA.1
SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTB.1
BASLA:
IF TUS1=1 THEN
     HIGH LED1
   else
     LOW LED1
   ENDIF
   
IF TUS2=1 THEN
    HIGH LED2
   else
    low LED2
   ENDIF
  
GOTO BASLA
     
END
 
Sayın KAZIMUGUR

Öncelikle yardımlarınız için teşekkür ederim bunu çift yönlü harekte eden bir motor da kullanmak istiyoruz motor kendiliğinden bitiş noktalrında duruyor yapmak istediğimiz örneğin bir nolu tus aktifken yani motor sağ tarafa dönerken ikinic tusa basıldığnda durup sol tarfa dönmesini isitiyoruz toggle komutunu dendim lakin başarılı olamadım acaba bu konuda yardımcı olabilirmisiniz.

Saygılarımla

TRISA=%1111
TRISB=%00000000
tus var porta.0
SYMBOL LED=PORTB.0
basilan var byte
tus1 var porta.1
SYMBOL LED1=PORTB.1
basilan1 var byte
basilan=1
basilan1=1
PORTB.1=0
BASLA:
if tus=1 then
basilan=basilan+1
while tus=0:wend
endif
if basilan>2 then basilan=1
if basilan=2 then high led
if basilan=1 then low led
if tus1=1 then
basilan1=basilan1+1
while tus1=0:wend
endif
if basilan1>2 then basilan1=1
if basilan1=2 then high led1
if basilan1=1 then low led1
goto BASLA
 
Hedef tam olarak nedir ?
Motor kontrolü ise sadece switch lerle yapılabilecek bir şey.
Ödev ise ve ya pic programlama öğrenmek ise devam...

Basic, temelde , konuşulduğu gibi yani bir insanın diğer insana verdiği talimatlar gibi bir mantık çerçevesinde çalışan bir dil.
Yukarıda verdiğim kodlara küçük bir ek istediğin şartı sağlayabilir.

IF TUS1=1 THEN
HIGH LED1
else
LOW LED1

buton1 basılı ise led1 yak değilse söndür deniyor.
İstiyorsun ki bu durumda iken buton2 ye basılırsa led1 sönsün led2 yansın.
Buton2 basılı ise zaten led2 yanacak.
Tek gereken Buton1 basılı iken buton2=0 olduğunu şartını eklemek.
Yani buton1 basılımı diye bakarken birde buton2 basılı "değilse" diye kontrol edecek.
Ancak buton1 basılı ise ama buton2 de basılı ise şartı yerine getirmeyecek....
Mantık böyle basit olur.
Bunun için basit bir ek yeterli.

Kod:
 IF TUS1=1 THEN
     HIGH LED1
   else 
     LOW LED1

yerine

Kod:
    IF TUS1=1 AND TUS2=0 THEN
     HIGH LED1
    else 
     LOW LED1

Edit :
Pic kullanılacak ve uygulama yapılacaksa 16F84 yerine 16f628 daha uygundur.
Hem bulunabilir hemde kendi dahili osilatörü var ve dışarıdan kristale filan ihtiyaç olmaz.
Bütün uygulama bu kadarsa microchip seçeneklerinden daha az pinli dahili osilatörü olan ucuz çözümler aranabilir.
Bu kadar az şart olunca pic yerine logic kapılar ilede kontrol yapılabilir...
Ben eski tip dinasor olduğum için mecbur kalmadıkça içinde yazılım olan şeyler yerine içinde yazılım olmayan şeyler tercih ederim.
 
Sayın KAZIMUGUR

yardımlarınız için çok teşekkür ederim bir arkadaşın arabasındaki sunroof için kullanıcakmış lakin button tipi anahtarlama olduğu için cam açılana kadar basmak gerekiyor bizde bunu değiştirmeye karar verdik önce 555 tarzı entegre denedik lakin yapamadık PIC ile uğraştık bu seferde bir türlü ikinic poloriteyi bağladığımızda çalışmıyor yada açıp kapatıyor devreyi WDT ve MCLR den şüphelendik lakn bir sonuç alamadık.En son yazılımdan şüphelendik yardımlarınızla yazılımıda artık şüphemiz yok en kısa zamanda deneyeip sonucu yazarım.


Saygılarımla
 
Sorun sadece akım olabilir mi? Hele bi de BOR açıksa ufak dalgalanmalarda reset atabilir..
 
Merhaba
İşi baştan alalım.Step veya normal fırçalı motor hangisini kullanıyorsunuz?Step kullanırsanız yazılım ile kademe kademe çalıştırmanız mümkün.Fırçalı motorda da olur ama start stop swiçlerinin adedi artar.Sunroof 'un sürtünmesi ne kadardır?kullandığınız motorun gücü yetecek mi?Bu parametreleri bilirsek arkadaşlar daha kolay yardımcı olacaklardır.Not:Sunroof elle açıldığı zaman ne kadarlık bir güç harcıyorsunuz?Tahmini de olsa bir fikir verebilirsiniz.
 
Sayın GüvTek

Açıkcası akımdan reset atabileceğini hiç düşünmedim devrede çözmediğimiz yazılımın dışında proteusta çalışan devre ne oluyorsa iki yönlü kullanıldığında çalışmıyor lakin tek taraflı yani sadece ileri durdur başlat yada geri durdur başlatta çalışıyor.

Sayın kudretuzuner

12v motor kullanılıyor zaten motorun önünde kendine ait driver bulunmakta bu driverın 3 adet kablosu var ileri geri ve toprak.Malesef aracın orjinalinde gelen sunroof kontrolünde düğmeye basılı tutmanız gerekiyor ki ya tam açılsın yada tam kapansın elinizi çektiğiniz anda cam olduğu erde kalıyor bizim isteğimiz buttonları değiştirmeden bir basışta ileri yada geri hareleti sağlamak.İşte bu noktada 16f84a entegrsine sadece tek kablo bağlarsak çalışıyor(ileri yada geri) lakin ikinci kablo bağlandığında ya titreyerek çalışıyor yada hiç çalışmıyor.

Saygılarımla
 
Kablolar 12volt ise ve sen bunu pic ile kontrol ediyorsan tabi ki olmayacaktır. PIC yanmiyorsa şanslısın.. Bu tür devrelerde illa opto isolatör kullanmak gerekir. Bağladığın ayaklardan darbesel parazit geliyor demek ki ve pic resetleniyor. Ya da en azından ULN2003 filan kullan arada.
 
Merhaba
Bu aralar boş vakit bulabiliyorum.Sizin için basit bir devre tasarladım.İki sviç ve iki yönlü anahtar gerekli.Devre sunroof kapalı olarak düşündüm.Geri butonuna bir kaç defa basarsanız(kapalı olan ön swici açamak için)sviç açıldiktan sonraki ilk basışta devamlı olarak motoru döndürecektir ne zamana kadar diğer svici kapatana kadar.Aynı işlemin tersi de kapatmak için uygulanır.Yine de anlaşılmayan yer olursa daha kapsamlı(optolu,yüksek akımlı transistörler) ile de sürücü dahil devreyi çizebilirim.Not burada dikkat edilmesi gereken husus motor bir miktar buton ile hareket ettirildikten ve de svici açtıktan sonra otomatik olarak tüm yolu alacaktır.Kolay gelsin.
 

Forum istatistikleri

Konular
128,844
Mesajlar
920,945
Kullanıcılar
450,947
Son üye
sitroen91

Yeni konular

Geri
Üst