pic nasıl takılıp kalır?

Başlatan fkg2003, 04 Mayıs 2012, 11:54:47

fkg2003

Herkese merhaba,
   Pic 18f4550 ile bir dc motor sürüyorum. Motor sürücü entegresi olarak L293 kullanıyorum. Kodlar da aşağıdaki gibi. Bunu yaparken belli bir adım sonra durması gereken motor bazen durmuyor.  Yani bir süre normal kontrol yapabiliyorum ama an geliyor takılıp kalıyor. Entegreyi de söküp kontrol yapıyorum. Kontrol biti 0 olması gerekirken 5 voltta duruyor. Yani up konumunda kalıyor. Bunun sebebi ne olabilir? Yardımcı olursanız sevinirim.
kodlar:
   case 0x39:
         {   
                adimlar= ReceivedDataBuffer[7];
                adimlar =(adimlar<<8 ) | ReceivedDataBuffer[6];
            //motor kontrol kısmı
         if(ReceivedDataBuffer[5]==0x01)
            {
            
               while(adimsayisi<adimlar)
               {
               adimsayisi++;
               motorileri_on();
               gecikme(ReceivedDataBuffer[25]);
            
               motorileri_off();
               gecikme(ReceivedDataBuffer[25]);
               }
               adimsayisi=0;
               
               ToSendDataBuffer[9]= 0x05;
               USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64);
            }
         else if(ReceivedDataBuffer[5]==0x02)
            {
               while(adimsayisi<adimlar)
               {
               adimsayisi++;
               motorgeri_on();
               gecikme(ReceivedDataBuffer[25]);
            
               motorgeri_off()
               gecikme(ReceivedDataBuffer[25]);
               }   
               adimsayisi=0;
               ToSendDataBuffer[9]= 0x05;
               USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64);
            }

         }
         break;   

tmhzkhzhz

iyi gunler

program kismi icin : programin hepsi yok ve bilgisayarla usb den haberleserek calisiyor o yuzden , devre  , bilgisayar ve mikrodenetleyicinin programi ni gormeden yorum yapmak zor
aklima ilk gelenler eger siz bilgisayardaki ve mikrodenetleyicideki programdan emin iseniniz ve devre uzerinde bazen olusan temassizliklar
veya devre beslemesindeki regule saglam diyorsaniz

geriye gurultu etkeni kaliyor kaynaklari:
dc motor calistirdiginizi yazmissiniz dc motorunuz fircali motorsa cok fazla gurultu uretir motor tarafinda olusan gurultunun hic bit sekilde
mirodenetleyicinin oldugu bolume ulasmamasi gerekiyor sase hatti da dahil bunun icin motor ve motor surucusunun oldugu bolumu izole etmelisiniz ornek motor ve motor surucu bolumunun beslemesini ayri bir guc kaynagi ile yapin ve motor surucu kart ile mikrodenetleyicinin
baglantilarini 4n25 gibi optocoupler kullanarak izole edin ve motor tarafindaki sase baglantisi ni mikrodenetlayici tarafindaki sase baglantisi
ile kesinlikle birlestirmeyin bu yazdigim motor surucu karti ile mikrodenetleyici digital olarak haberlesiyorsa gecerlidir eger analog bir haberlesme varsa analog kismi motor surucu kartina tasiyin digital gecisler yine izole olsun ornegin pwm kullanarak analog voltaj elde ediyosaniz yada r2r yontemiyle yapiyorsaniz. bu yazdiklarim fircasiz motor veya devre yakininda role , veya kontaktor , kullaniyorsanizda  gecerlidir

birde mikrodenetleyicinin devresini gormedigim icin varmi bilmiyorum fakat aklima gelmisken yaziyim kristal bagalantilarinda 22pf lari kullandinizmi

fkg2003

Merhaba,
  yanıtınız için teşekkür ederim. motoru tek bir entegre(L293) ile sürüyorum, motor da fırçalı dc motor. güç kaynakları ve topraklar ortak. programın düzgün çalışan başka kısımları da var. sadece motor sürerken bu sorun ortaya çıkıyor. o da her zaman ortaya çıkmıyor. ilginç bir not daha söyleyeyim picin çalışmakta olup olmadığını anlamama yarayan bir led var. o da yanıp sönüyor. yani pic çalışmaya devam ediyor. ancak bu entegreyi kontrol eden bacağı up konumda kalıyor. bahsettiğim entegrenin girişi de logic. yani normalde doğrudan pic ile sürülebiliyor. bir not daha picin elektriğini kesip tekrar verdiğimde yine up konumda kalmaya devam ediyor. bu devreye bağlı bir de analog devre var. onunla da bağlantı adc girişi şeklinde. adc gidişinden ters birşeyler geliyor olabilir mi?

tmhzkhzhz

iyi gunler
devreyi mikrodenetleyici takilip kaldiginda elektrigini kesmeden ilgili ayagini devreden tamamen ayirip olcebilecek hale getirebilirmisiniz
mikrodenetleyici takilip kaldiginda ilgili ayagini devreden tamamen ayirin ve olcun belkide daha devrenin sonrasinda sorun var
ve siz mikrodenetleyicinin ayagi takildi kaldi seklinde degerlendiriiyorsunuz deneyebilrmisiniz ilgili ayakta bagli hicbirsey kalmasin olcerken

tabi sorun cozulmezse gurultu etkeni halen gecerli

tmhzkhzhz

tekrar iyi gunler
sonradan aklima geldi bende bazen devreye lehim yaptiktan sonra alkol le yikamayi unutuyorum
siz de belki unutmus olabilirsiniz dusuncesiyle  yazdim alkolle temizleyip kuruttunuzmu onemli gozukmeyebilir fakat bu tip devrelerde
lehim sonrasi kalan artiklar devreyi cok etkiliyor ve bazen kararsiz hale getirebiliyor

fkg2003

Merhaba,
   takılıp kaldığında devrenin kalanını ayırıp bacağın durumunu kontrol etmiştim. buna rağmen takılı duruyor. devreyi temizlememekten kaynaklanan büyük bir sıkıntı yaşamıştım daha önce. bu da onunla alakalı olabilir aslında. bunu da deneyip kontrol edeyim.

fkg2003

yok hocam mesele temizlik değilmiş. alkolle güzelce temizledim bir değişiklik olmadı. L293 kullanımı ile ilgili deneyimi olan var mı başka? ya da @tmhzkhzhz hocam sizin başka bir fikriniz var mı?

serhat1990

Pic tıkanmasının nedenlerinden biriside program belleğinin şişmesidir bank0 bank1 hafızası dolmak üzereyse işlemci donabilir , ayrıca l293 kullanımı demişsin evet kullandım sormak istediğin nedir . in1 in2 'den motor yönünü belirle enable'dan pwm sinyali gir motorun hızını ayarla bunlarımı demek istiyorsun iyi çalışmalar.

Tagli

Alıntı yapılan: serhat1990 - 07 Mayıs 2012, 08:50:11
Pic tıkanmasının nedenlerinden biriside program belleğinin şişmesidir bank0 bank1 hafızası dolmak üzereyse işlemci donabilir
Bu yorumu neye dayanarak yapıyorsun? Bana çok mantıksız geldi.
Gökçe Tağlıoğlu

fkg2003

arkadaşlar, yanıtlarınız için teşekkürler. mesele picin belleğinin şişmesi değil. çünkü pik çalışmaya devam ediyor. bunu da yakıp söndürdüğüm ledle anlayabiliyorum. başka yerlerde de arattım birşeyler buldum gibi. L293 ile ilgili sormak istediğim şey picin çalışmasını etklilememesi için alınabilecek önlemler olup olmadığı. başka bir yerde motordan indüklenen akımın ters akım vermesi nedeniyle toprağın seviyesini oynattığını, bundan korunmak için de Vdd ve Vs'ye kapasitör bağlanması gerektiği yazıyor. aradığım şey tam olarak böyle birşey. ancak bağlanacak kapasitörle ilgili bilgi verilmemiş. Vdd ile toprak arasına 0,1 uF lık bir kapasitör takacağım ancak Vss'ye kapasitör takılmasından neyi kastettiğini anlayamadığım için kafamda hala soru işaretleri var. bu şekilde bir deneyimi olan var mı? yani L293 ile ilgili.

serhat1990

#10
Alıntı yapılan: Tagli - 07 Mayıs 2012, 09:36:58
Bu yorumu neye dayanarak yapıyorsun? Bana çok mantıksız geldi.

Deneyime dayanarak yapıyorum hocam , benzer bir sorun başıma geldi programda hatayı ararken hi-tech derleyicinde program memory'den baktığım kadarıyla program çok fazla büyüktü programdan bir kaç özellik çıkardım program boyut olarak biraz daha küçük bir hal aldı ve sorun çözüldü diğer türlü program çalışıyor belli bir süre sonra donup kalıyordu işlemci kendine bile reset atamaz hale geliyordu.

Tagli

En garanti çözüm PIC'in devresi ile L293 ve motor devresini topraklar da dahil olmak üzere tamamen ayırmak. Beslemeler de farklı olsun. Optocoupler ile izolasyon yapılacak. Buna rağmen sorun devam ediyorsa, hata büyük ihtimalle yazılımdadır.
Gökçe Tağlıoğlu

gkimirti

Ben bir projede pic + l293 aynı besleme uzerinden kullandım, regulayor olarak ta lm2940T kullandım. l293 un Vs ve VSS bacaklarını direk 12v ile besledik, regulator ısınıyor ama sorun cıkmadı calısmada. Bu sekilde bir gariplik yasamadık, enable ucunu besleme(5v) ve input bacaklarınada 10k direnc ile topraga bagladık,direnc ile in1 ve in2 arasından pic in bacagına baglı, normalde in1-in2 0 0  olmus oluyor. pic ile in1 in2 ye 0 1, 1 0, 0 0 degerler gonderek motoru istedigimiz yonde dondurduk.

fkg2003

gkimirti hocam input bacakları ile toprak arasına neden direnç bağladınız? "direnc ile in1 ve in2 arasından pic in bacagına baglı" bir de bu sözünüzle ne demek istediniz anlayamadım.