Şimdi Ara

PIC 16F877, Proteus ve röle kullanımı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
28
Cevap
0
Favori
3.487
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Selam millet,

    Şirkette yaptığımız bir makinanın elektronik aksamında garip bir problemle karşılaştık ve bir çözüm bulamadık. Bir de size danışayım dedim.

    Pic 16F877 kullanarak bir kesme makinası kontrolörü yapıyoruz. Makinadaki bütün sensör girişleri ve sinyal çıkışlarını yazmayı gereksiz görüyorum ve direk problematik konuya geçiyorum.

    Devre şemasını Proteus'la çizdik, Pic programını yazdık. Ama Proteus'ta düzgün şekilde çalışan devrenin aynısını kurduğumuzda hatalarla karşılaştık. En basitinden, bir proximity'den sinyal gelince makinenin acil duruşa geçmesi gerekiyor ve Proteus'ta sistem bu şekilde işliyor. Yani Pic'e yüklediğimiz yazılımda bir hata yok. Ama gerçek devreyi kurduğumuz zaman çok alakasız zamanlarda makina acil duruşa geçiyor. Sensörden sinyal geliyor mu diye kontrol ettik, öyle bişey de yok. Yani, pic durup dururken sensörün bağlı olduğu ayaktan sinyal geldi sanıyor. Böyle bir hata neden kaynaklanabilir?

    Stabiliteyi sağlayabilmek için pic'in iki güç girişine de 5 V bağladık, iki girişi de 100 nF'lık bir kondansatörle toprakladık, devre regülatörüne (7805) soğutucu bir metal plaka ve ufak bir fan koyduk ama aynı hata devam ediyor.

    İkinci bir konu daha var. Normalde pic giriş ve çıkışlarını röle ile kullanmamız gerekiyor. Proteus'ta devrenin simülasyonunu yaparken proximity'den gelen sinyal yerine buton koyuyoruz ve sistem çalışıyor, ama bu butonun yerine röle kullandığımızda program hata veriyor. "Heralde programın rölelerle ilgili olan kısmında bir hata var" diye düşünüp gerçek devreyi kurduk ve gerçek devrede de yine dengesizlikler oluyor (yanlış sinyaller yanlış zamanlarda çıkyor)

    Tabi ki yazılı şekilde verebileceğim bilgiler sınırlı olduğu için soruma kesin doğru bir cevap çıkması zor. Ama yine de aklınıza gelen olası hataların hepsini yazarsanız sevinirim. Yeter ki elimizde deneyebileceğimiz birkeç fikir olsun. Şu anda kitlenmiş durumdayız

    Herkese şimdiden çok teşekkürler.







  • programlama esnasında seçilen bazı fuseler var bunlar yanlış ayarlanmış olabilir gibi geliyor bana :S
  • bu arada konuyla yakından uzaktan alakası yok ama "War is not nice" bir çok anlam ifade eden cümlesi Barbara Bush a ait olarak biliyodum yoksa Syn Taylor da bu olayı irdelemek mi istemiş
    kolay gelsin...
  • Bu ne çeşit bir sensör? Bazı girişlerin ek dirençlerle lojik durumlarının kararlı kılınması gerektiğini unutma. Mesela sensör aktif şekilde 0'a çekiyor olsun ama diğer lojik durumda açık kollektör özelliği gösteriyor olsun. (yüksek empedans) O zaman ortalama 2 k ohm'luk bir direncin bir tarafını bu port düğümüne diğer tarafını Vcc'ye bağlamak gerekir, yani "pull-up" dedikleri.. Aynı şekilde "pull-down" olayı da var tabi. Eğer öyle olmazsa yüksek empedans durumunda bunu öngörülen lojik seviyede tutacak bişey olmaz ve elektrostatikten bile etkilenir.
  • @r2d2droids: Hocam, programlama sırasında benim karşıma çıkan tek ayar osilatör seçimi. Zaten bu seçimde bir hata olsa Proteus'ta da hata ortaa çıkar diye düşünüyorum. Yanlış mı?

    Bu arada özlü söz konusunda haklısın. Ben zamanında bir oyunda savaş konusunda ünlülerin sözlerini okurken niyeyse aklımda bu sözü Elizabeth Taylor söyledi diye kalmış. Uyardığın için sağol

    @NickFury: Sistemimizde 4 adet manyetik proximity sensör, 1 adet fotosel kullanıyoruz. Daha program çalışır halde fotoselin kullanıldığı aşamalara gelemediği için fotoselde sorun olup olmadığını bilmiyorum. Ama dediğim gibi, proximity'lerde bir sorun var.

    İlk olarak bahsettiğin gibi I/O port'larında direnç kullanmayı deneyeceğiz. Peki 16F877'de hangi port'larda direnç kullanılması gerektiğini biliyor musun kardeş? A, B, C, D, E ? Maalesef hepsini kullanıyoruz.

    Birşey daha soracam, benim bildiğim buna benzer, stabilite amaçlı devre korumaları için direnç değil, kondansatör kullanılıyor. Direnç kullanıldığı takdirde sinyal geldiğinde + ve - arasında kısa devre olmaz mı?

    Not: bu soruyu soranın aslında makina mühendisi olduğunu, elektronikle uğraşının biraz hobi, biraz da yüksek lisansta aldığı temel elektronik dersleri olduğunu lütfen unutmayalım. Ve bu aciz arkadaşınızın anlayacağı dilden cevaplar vermeye çalışalım



    < Bu mesaj bu kişi tarafından değiştirildi Hasbi 81 -- 23 Mart 2006; 15:04:11 >




  • Hasbi 81 programda WDT, PWRT, BODEN, LVP, CPD, WRT, DEBUGGER gibi fuse ayarları olmalı. fuselerde sıkıntı olabilir diye düşnüyorum. bunun yanıda devreyi birde bataryadan besleyerek ve çeşitli donanım bileşenlerinden alalınan sinyallerin yerine butonlar koyup tekrar denemenizde yarar var eğer ki devrenin beslemesinden kaynaklanan veya dış ortam parazitlerinden şüpheleniyorsanız PIC besleme pinlerine en yakın yerlerden bypass kapasitesi bağlamalısınız. bunun dışında PIC programında input olarak gösterdiğiniz veya I/O olarak belirlemediğiniz pinleri dirençlerle toprak potansiyeline çekmelisiniz eğer bu durumdada çalışmaz ise programlanma sırasında bir sıkıntı var demektir özellikle fuseler! aksi halde PIC ve programı tamamdır deyip sensörlerle ilgili bir sıkıntı olmalı diyebiliriz...
  • Aslında anlatmaya çalıştığım şey çok basit ama şekil olmadan laf salatasıyla anlatmak da zor anlamak da.. Grafikte (!) dijital sensörleri mekanik anahtar gibi gösterdim, bu davranış olarak birbirlerine benzedikleri için, yoksa karışmasın akıllar. Hade kolay gelsin..

     PIC 16F877, Proteus ve röle kullanımı
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Ayrıca röle kullanımında koruma diyotu kullanmayı ihmal etme. Yani bobin tepkisini kısa devre etmek için gereken diyottan bahsediyorum. Mikrokontrolörlerle nasıl röle kullanılıyor araştır işte, birçok yerde vardır bu konu.
  • quote:

    Orjinalden alıntı: r2d2droids

    Hasbi 81 programda WDT, PWRT, BODEN, LVP, CPD, WRT, DEBUGGER gibi fuse ayarları olmalı. fuselerde sıkıntı olabilir diye düşnüyorum. bunun yanıda devreyi birde bataryadan besleyerek ve çeşitli donanım bileşenlerinden alalınan sinyallerin yerine butonlar koyup tekrar denemenizde yarar var eğer ki devrenin beslemesinden kaynaklanan veya dış ortam parazitlerinden şüpheleniyorsanız PIC besleme pinlerine en yakın yerlerden bypass kapasitesi bağlamalısınız. bunun dışında PIC programında input olarak gösterdiğiniz veya I/O olarak belirlemediğiniz pinleri dirençlerle toprak potansiyeline çekmelisiniz eğer bu durumdada çalışmaz ise programlanma sırasında bir sıkıntı var demektir özellikle fuseler! aksi halde PIC ve programı tamamdır deyip sensörlerle ilgili bir sıkıntı olmalı diyebiliriz...

    Yaw, bahsettiğin ayarlar benim kullandığım ic-prog yazılımında yok. Eve gittiğimde tekrar bir göz atayım ama ne sonuç çıkar bilemiyorum. Bu bahsettiğin fuse ayarları tam olarak neyi etkiliyor? Eğer bu ayarlar yanlış yapılmış olsa program simülatörde doğru şekilde çalışır mı? Yoksa ancak devreye bağlandığı zaman etkisi görülebilecek ayarlar mı?

    Bütün sensörler ve çıkışlar yerine zaten butonlar bağlayıp sistemi o şekilde çalıştırmayı deniyoruz. Tamamen çalışan bir sistem ortaya çıkarmadan devreyi makinaya bağlamak gereksiz diye düşünüyorum. Ama ilk mesajımda dediğim gibi orada da garip bir problem var. Simülatörde butonla çalışan sistem, röleyle çalışmıyor. Gerçekte ise butonla bile çalışmıyor.

    Devreyi bataradan değil, regülatörlü bir adaptöden besliyoruz. Hatta devrenin farklı kısımlarını farklı kaynaklardan beslemeyi bile denedik. Ama zaten voltajlarda gözle görülür bir düşüş olmuyor. Yani beslememiz yeterli gibi görünüyor.

    Pic beslemesinde oluşabilecek parazitlere karşı girişi kondansatörle topraklamayı denediğimi zaten söylemiştim. Ve 3 port hariç bütün portları kullanıyorum, dolayııyla topraklanmayı gerektirecek de pek portum yok. Ama o kalan portları da topraklamayı deneyecem...




  • @NickFury: Hocam, sağol ya... Hakkaten çok uğraşmışın, eline sağlık. Bugün biraz zor artık ama yarın verdiğin bilgiler ışığında birşeyler yapmaya çalışacağız. Sorun bu şekilde hallolmasa bile önemli kapı açtın bize
  • quote:

    Orjinalden alıntı: Hasbi 81


    quote:

    Orjinalden alıntı: r2d2droids

    Hasbi 81 programda WDT, PWRT, BODEN, LVP, CPD, WRT, DEBUGGER gibi fuse ayarları olmalı. fuselerde sıkıntı olabilir diye düşnüyorum. bunun yanıda devreyi birde bataryadan besleyerek ve çeşitli donanım bileşenlerinden alalınan sinyallerin yerine butonlar koyup tekrar denemenizde yarar var eğer ki devrenin beslemesinden kaynaklanan veya dış ortam parazitlerinden şüpheleniyorsanız PIC besleme pinlerine en yakın yerlerden bypass kapasitesi bağlamalısınız. bunun dışında PIC programında input olarak gösterdiğiniz veya I/O olarak belirlemediğiniz pinleri dirençlerle toprak potansiyeline çekmelisiniz eğer bu durumdada çalışmaz ise programlanma sırasında bir sıkıntı var demektir özellikle fuseler! aksi halde PIC ve programı tamamdır deyip sensörlerle ilgili bir sıkıntı olmalı diyebiliriz...

    Yaw, bahsettiğin ayarlar benim kullandığım ic-prog yazılımında yok. Eve gittiğimde tekrar bir göz atayım ama ne sonuç çıkar bilemiyorum. Bu bahsettiğin fuse ayarları tam olarak neyi etkiliyor? Eğer bu ayarlar yanlış yapılmış olsa program simülatörde doğru şekilde çalışır mı? Yoksa ancak devreye bağlandığı zaman etkisi görülebilecek ayarlar mı?

    Bütün sensörler ve çıkışlar yerine zaten butonlar bağlayıp sistemi o şekilde çalıştırmayı deniyoruz. Tamamen çalışan bir sistem ortaya çıkarmadan devreyi makinaya bağlamak gereksiz diye düşünüyorum. Ama ilk mesajımda dediğim gibi orada da garip bir problem var. Simülatörde butonla çalışan sistem, röleyle çalışmıyor. Gerçekte ise butonla bile çalışmıyor.

    Devreyi bataradan değil, regülatörlü bir adaptöden besliyoruz. Hatta devrenin farklı kısımlarını farklı kaynaklardan beslemeyi bile denedik. Ama zaten voltajlarda gözle görülür bir düşüş olmuyor. Yani beslememiz yeterli gibi görünüyor.

    Pic beslemesinde oluşabilecek parazitlere karşı girişi kondansatörle topraklamayı denediğimi zaten söylemiştim. Ve 3 port hariç bütün portları kullanıyorum, dolayııyla topraklanmayı gerektirecek de pek portum yok. Ama o kalan portları da topraklamayı deneyecem...


    anlattıklarınıza göre problemin fuse ayarlarından kaynaklandığını düşünüyorum. icprogda bu ayarların olması gerek :S özellikle de BODEN ve WDT yi ayarlamanız gerekiyordu eğer yok ise programın içerisinde tanımlamalısınız. PICin datasheetine bakarsanız programlanmayan fuselerin tüm değerlerinin 1 olarak alındığını yani tüm fuselerin PWRTE hariç hepsinin aktif olacağı yazıyor. (bkz datasheet 12.1) bu durumda PIC in sapıtması normal gözüküyor en azından ben böyle düşünüyorum...

    fuseler hakkında detaylı bilgi ww1.microchip.com/downloads/en/devicedoc/config.pdf adresinde var




  • Proximity'lerden aldığın çıkışlar TTL seviyesinde mi acaba? NickFury arkadaşımızın yaptığı uyarı fazlasıyla doğrudur. Yani girişleri pull-up ya da pull-down yapmak. Ben ayrıca Pic'in proximity girişlerini bağladığın pinleri ile şase arasına 100 nf seramik kondansatörler bağlamanı tavsiye edeceğim. Tabii programının doğru çalıştığını varsayarak bunu söylüyorum.
  • Proximity'lerden aldığın çıkışlar TTL seviyesinde mi acaba? NickFury arkadaşımızın yaptığı uyarı fazlasıyla doğrudur. Yani girişleri pull-up ya da pull-down yapmak. Ben ayrıca Pic'in proximity girişlerini bağladığın pinleri ile şase arasına 100 nf seramik kondansatörler bağlamanı tavsiye edeceğim. Tabii programının doğru çalıştığını varsayarak bunu söylüyorum.
  • @r2d2droids: Hocam, şimdi eve geldim ve bahsettiğin ayarları gördüm Daha önce bu ayarlara hiç dokunmadığım için varlığından bile haberdar değilmişim. Bende PWRT, CPD ve DEBUGGER seçili durumda değil ve program pic'e bu şekilde yüklenmişti. Şimdi dediğin şekilde yükleyecem ama ancak yarın şirkette deneyebilirim. Sağolasın

    @elitel: Proximity'leri bağlamasam bile (şu an için bu noktalarda sadece buton kullanıyorum) sistemin düzgün çalışması için bu girişleri kondansatörle topraklamak gerekir mi? Eğer öyleyse devrede biraz daha değişiklik yapmak gerekecek. Yeter ki doğru sonuca ulaşalım.

    @NickFury: Hocam, ben senin söylediğin önemli bir noktayı daha yeni gördüm: röleye koruma diotu bağlamak! Böyle bişeyden haberdar değildim valla, ne yalan söyleyeyim. Büyük ihtimalle proteus'taki denemelerimizde röle kullandığımız zamanki problem bu şekilde çözülecek. Ama gerçek devrede röle yokken oluşan problemi engellemek için pull-up konusuna eğilmek lazım gibi görünüyor.

    Herkese çok teşekkürler




  • iyi haberlerini bekliyoruz
    kolay gelsin...



    < Bu mesaj bu kişi tarafından değiştirildi r2d2droids -- 23 Mart 2006; 20:43:20 >
  • Naayııır!! Debugger'i seçemezsiiin! Hehehe.. Programlayıcı yazılımı destekliyorsa direkt ayar yap, yaz 3F32 keyfine bak..



    < Bu mesaj bu kişi tarafından değiştirildi NickFury -- 23 Mart 2006; 22:13:38 >
  • yanlız şunu ekleyeyim, yanlış anlaşılmasın; WDT, PWRT, BODEN, LVP, CPD, WRT, DEBUGGER fuselerini işaretle demiyorum, programına uyumlu şekilde ayarla diyorum!!!
  • Nası ya? Arkadaşlar, ben programlama için PicBasic Pro kullanıyorum. Ve programı yazma aşamasında bahsettiğiniz gibi bir konfigürasyon ayarı gerekmiyor. Bu durumda bu ayarları programa uyumlu şekilde ayarlamak nasıl oluyor?

    Elektronik konusundaki cahilliğimi her geçen saniye biraz daha iyi anlıyorum . Makina çalışırsa bir mucize olacak gibi görünüyo Zaten microcontroller ile bu işin içinden çıkamazsak direk rölelerle kurulmuş mantık sistemine dönüş yapacağız. Şu anda fabrikamızdaki bütün makinalar bu şekilde kurulmuş durumda ama artık bi değişikliğin vakti geldi demiştik, o yüzden böyle bir olaya giriştik. Umarım pişman olmayız ve eski sisteme geri dönmek zorunda kalmayız.




  • Kardeşim bak hemen su koyverme. Bu iş biraz da sağlam sinir gerektirir. Teknik bilgiler beynimize vahiy şeklinde inmiyor, emek edeceksin boşverme. Çok mu dramatize ettim meseleyi?

    Bak şimdi, şu fuse işi varya (config word) sen bunu yazdığın program içinde ayarlama henüz başlangıç için zor bir seçenek bu. Kullandığın programlayıcı programın içinden ayarla, mutlaka vardır. Yazdığın programın ve devrenin önemli özelliklerini az çok tahmin ediyorum. Şu fuse deyi icadın özeti ve önerilerim:

    BOR = Brown-Out Reset: Gerilim dalgalandığında işlemcinin sağlam çalışmasını garantilemek için reset atar.

    Yeri gelmişken mutlaka anlatmam gerekir. Bu BOR ile ilgili berbat bir durum olmuştu, akla hayale gelmez bir facia. Şeytan nasıl da ayrıntıda gizlidir görün de ibret alın. Dijital ayarlı bir güç kaynağı yapmıştım kendime, basitçe bir DAC ile istediğim bir voltaj seviyesine ayarladığım bir güç kaynağı. Bu güç kaynağı içindeki işlemciyi BOR=1 olarak kullanıyordum, önemli bir sebebi yoktu ama ne olacak zararı yok yararı var diyordum. Sonra bir gün bir protobord üstünde 16f877 kullandığım bir proje vardı işte bu kaynak yardımıyla devreyi çalıştırıyordum. Gayet iyi çalışıyordu. Neyse sonra gece olmuştu herşeyi kapatıp gittim zıbardım. Sabah uyanır uyanmaz projeyle ilgilenmeye başladım. Protobord üstündeki devre çalışmıyordu! Yav daha dün akşam çalışıyordu ne oldu böyle dedim kurcaladım sonuç yok, devre yapısında herhangi bir sakatlık kesinlikle yoktu. Dijital mukadderat dedim geçtim. Sonra bir tane daha 16f877 programlayıp koydum devreye. Çalışıyordu. Rahat ettim iyi kahvaltıya gideyim dedim ve kaynağı kapattım yine. Geri geldim çalıştırdım (çalıştırmaya çalıştım) devreyi, eyvah ki ne eyvah devre yine göçmüş tıs yok. Az önce işlemciyi değiştirdiğimde çalıştığına göre demek ki önceki bozuktu, demek ki bu da bozuldu derken kafayı sıyırmak üzereydim valla az değil 30 lira havaya uçmuştu durduk yerde. Küçük bir ampülü kaynak uçlarına bağlayıp kapattım kaynağı, aniden aşırı parlayıp söndü mesele anlaşıldı.. 30 Voltluk bir skalası vardı kaynağın. Trafonun iki ayrı çıkışı vardı biri 30 V civarı diğeri 5 V civarı. Tabi 5 V'a yakın olan çıkışı kaynak içindeki işlemci için kullanıyordum. 30 V ise DAC çıkışı için. Fazla uzatmadan kısaca özetleyeyim tespit ettiğim durumu ve çözümü. Kapattıktan sonra milisaniyeler içinde 30 volttan 0'a düşerken 25 volt gibi bir yerde, işlemcinin voltajı simetrik olarak 4 volt civarına düşmüş olur ve bu noktada kontrolü kaybeder ve DAC portları karambole gelip kondansatörlerdeki bütün voltajı küt diye uygular dışarı. Durum buydu. BOR=1 yüzünden işlemci kontrolü çok erken kapatıyor dedim BOR=0 yaptım ve artık problem yok. Olan iki tane 16f877'ye oldu ama zararın neresinden dönülse kârdır ne diyelim..

    PWRT: Bu PIC başlar başlamaz çalışmasın da önce şöyle bir 1024 saykıl geçsin, osilatör kararlı hale gelsin, sağlıklı bir başlangıç olsun diye uydurulmuş bir seçenek. PWRT'nin işaretli olması önemle tavsiye edilir.

    LVP: İki çeşit entegre programlama yöntemi var. İlki (standart yöntem) MCLR'ye 13 volt uygulanması ile programlama moduna geçilen yöntem, diğeri rb3 portuna 5 volt uygulanmasıyla programlama moduna geçilen yöntem. İkinci yöntem kolaydır ama rb3'ten vazgeçmek gerekir ki bu yüzden tavsiye etmem. Zaten çok büyük ihtimalle programlayıcın standart yöntemle çalışıyordur. Bu yüzden banko 2, LVP=işaretsiz..

    DBG (debugger): Her işlemci adımı sonrasında bir hata ayıklayıcı aygıta rapor gönderilen mod. ICD gibi cihazlar kullanmıyorsan bu her zaman işaretsiz olmalı.

    OSC: Kristal kullanıyorsan XT değil HS'yi seç.

    WDT: Periyodik reset. Muhtemelen çok işe yaradığı uygulamalar vardır. Uğraşma. WDT=işaretsiz

    CP ve CPD: Program ve data eeprom bölgelerini okunmaya karşı korur. Ticari birşey yapmadıkça gereksizler.
    Yani CP=CPD=işaretsiz.


    Fazla uzatmışım galiba, umarım yardımcı olur kolay gele..




  • Konuya fazla katkım olmayacak ama kendi yaşadığım bir durumu da belirteyim.Proteus similasyonlarına çok da güvenmemek gerekiyor.PC'de canavar gibi çalışan şeyler gerçek hayatta sorun çıkarabiliyor.Ben de LCD'de menü sistemi oluşturmak istemiş ve C'de bir program yazmıştım.Similasyonda gayet güzel çalışmasına rağmen devrede ya kitlenmiş ya da alıp başını gitmişti menü.
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.