5 saniye süre ile pic'in kendi elektriğini kesip vermesi nasıl olur?

Başlatan HAKKITANIR, 26 Aralık 2017, 15:09:53


rree

Maşallah gece yarısı bile cevapladınız. Beslemeyi aküden alıyordu. Esd  olayı Dc motordan kaynaklanıyordu. Sonuç rest devresinde hata yoktu. Pic normal çalışmaya başladığında reset işe yarıyordu. Esd den dolayı kilitlendiğinde reset işe yaramıyor.

HAKKITANIR

Alıntı yapılan: cetin1990 - 02 Ocak 2018, 01:34:14
Bir tek kafama takılan, negatif gerilim ile olan kilitlenme. Galiba bu durum elektriksel olarak ortaya çıkıyor. Bildiğimiz Reset işe yaramıyordu.
Pine negatif gerilim vermeseniz de besleme geriliminin üzerine çıkarsa, aynı durum.
Örneğin seri bir kondansatör varsa, buradan pine sinyal geliyorsa bu risk var. Ani darbelerde oluyor. Sinyaliniz kondansatör üzerindeki gerilim ile toplanarak beslemeyi geçebiliyor.
Muhtemelen sizin sorun böyledir.
Alıntı yapılan: mufitsozen - 02 Ocak 2018, 01:47:11

@cetin1990  pic mcular gibi cmos kullanilan elektronik devrelerde ESD ve/veya EMC ile ilgili besleme problemleri vbden kaynaklanan 'latch-up' denilen bir durum vardir. Bundan cikmak icin power off/on yapmak gerekir.
On seneden fazla bir zamandir forumda konusulur, bir suru bu konu ile alakali application note, pcb yapma ve guc kaynagi teknikleri vardir,
Alıntı yapılan: rree - 02 Ocak 2018, 02:06:06
Maşallah gece yarısı bile cevapladınız. Beslemeyi aküden alıyordu. Esd  olayı Dc motordan kaynaklanıyordu. Sonuç rest devresinde hata yoktu. Pic normal çalışmaya başladığında reset işe yarıyordu. Esd den dolayı kilitlendiğinde reset işe yaramıyor.

sorun aynen bu yazdığınız gibi, işlemciden biraz uzak noktaya, I2C hatları olan SDA ve SCL yi, picin besleme gerilimi olan +5V. / 0V. ile birlikte taşımak durumundayız.
biz de de DC fırçalı motor var. sanayi ortamında çalıma yapılıyor.
kısaca toplam 4 kablo ile SDA,SCL,+5V.,0V. lerin, picin biraz uzağına taşınması sırasında sorun yaşanıyor.
burada I2C hatları olan SDA ve SCL den mi yüksek-ters gerilim geliyordur, yoksa +5V. ve 0V. hatları olan besleme hatlarınamı yüksek ters gerilim geliyordur sorusunu sormak gerekir.
sorunun cevabınıda şöyle vereyim; pic' de sorun çıkaran yalnızca I2C modülü oluyor. pic diğer çalışmalarını yapabiliyor.
Bu durumda kesin olarak I2C kendini kitliyor ve elektrik kes ver haricinde uygulanacak tüm yöntemler işe yaramıyor diyebilirim.
I2C modülünü açıp kapatmak, I2C modülünü tekrar konfügüre etmek, programı tekrar I2C kodlarının-ayarlarının en başına döndürmek, watchdog-bekçi köpeğini döngü ile zorlamalı doldurtmak,pic'in mclr pininden reset atmak falan hiç biri fayda etmiyor. İllaki pic'in besleme elektriği kesilip tekrar verilecek. Ben başka çözüm bulamadım.
Ama burda I2C modülün kilitlendiğini tespit eden pic'in kendisi olduğu için, elektriği kapayıp-tekrar açma resetini de pic'in kendisi yapması gerekiyor.

elektriği kesip tekrar vermeden bu işin çözülemeyeceğine hem fikiriz artık değil mi? bu noktadan sonra buna itiraz eden olmaz artık herhalde.

rree , cetin1990 , mufitsozen

ne yapmamı tavsiye edersiniz? nasıl açıp kaparız elektriği 1-2 saniye zaman gecikmesi yaptırarak. Bu zaman gecikmesi yapılacak süre boyunca pic'in kendi besleme elektriği de komple gitmiş olacak.
röle ile kolay oluyorda çok yer kaplıyor ve röle kullanmak da istemiyorum. devreye sığmıyor. basit elektronik ufacık bir çözüm gerekiyor.


cetin1990

I2C modülü, program ile  açıp  kapatsak?
hatta pini önce analog yapalım sonra dijital 1 ve 0 yapalım. belki işe yarar.

HAKKITANIR

zaten üzerlerini çizmişsiniz.
bunları denedim işe yaramıyor.
ilgili SDA / SCL pinleri, analog giriş için kullanılamıyor, SPI haberleşmesi, Uart , CAN, ve digital giriş çıkış için kullanılıyor.
I2C modülü açıp kapama digital giriş çıkış konfigürasyonu arakasından I2C modülü ayarlaması SPI a dönüp tekrar geri I2C ye dönmek bunlar la sorun aşılamamıştı.
UART ve CAN den anlamadığımdan denememiştim.

Birhan

I2C modülünün kilitlendiğini nasıl tespit ettiniz?
I2C slave den ACK gelmeyince I2C komutu tekrarlayarak loop a girmiş olabilirmi?
I2C sinyalini skopla inceleme şansınız varmı? 

Bu kilitlenme olduğunda SDA ve SCL hangi durumda?
Her ikiside HIGH değilse problem muhtemelen bağlı slave/ler hattı meşgul tutuyor.
Yazılımda SDA ve SCL pinlerini manuple ederek slave i çözmek mümkün ama önce problemi bulmak gerek.
Mesela SCK düzenli clock verirken SDA sürekli HIGH kalıyorsa yazılımla SDA pin ini output yapıp bir süreliğine LOW a çekmek gibi.
En çok yaşanan problemlerden biri slave in SCK yı LOW da tutması. Böyle bir durum varmı?
I2C hızınız nedir? I2C hızı ve PIC çalışma hızı ile ilgili dikkat edilecek bazı durumlarda var.

Maxim

@HAKKITANIR
ben birşey sorabilirmiyim
bu hangi pic tam olarak?

ankyra

@HAKKITANIR Ben size çözüm yolunu sunmuştum. Üzerinde biraz uğraşılırsa sizin işinize yarayacağını düşünüyorum. @mehmet in uyarısı ve kondansarün çekeceği akım gözönüne alınarak uygun bir devre oluşturulabilir. Daha basit bir çözüm zor gibi...
Kolay gelsin...

devreci_

Smd Cmos 555   timer  5sn osilosyon yapıp  çıkışı direk pic beslemesine verebilirsin 100ma verebiliyor yeterli olur.

Osiloskopun varsa sck sda izleyebilirsin bence  iic pic pinlerini  korursan bunlara gerek kalmaz, Diyotla koruyabilirsin.





Diğer bir düşünce ise eğer iletişimi başaramıyorsa iic kitleniyor olabilirmi ?.


cetin1990

Burada optokuplör gerektiren durum nedir? Besleme kesilip açılacak.

sinus


cetin1990

Acaba   PIC,  bir mosfet veya bjt ile beslemeyi kısa devre etse sorun düzelmez mi?  Bir Kondansatör dolana kadar  kısa bir gecikme yapılabilir

aliveli

bence 5v besleme tarafı çöküyor, o taraf kapatıp açılmadan da düzelmiyor yani pic e değilde regülatore aç kapa yapıyorsunuz sanki.
yazılımla  pic e reset attırmanın kurtarmamasının sebebide bu yüzden gibi. yazılımla pic resetleniyor çalışma voltaj aralığıda genişse kendini kurtarıyor olabilir ama 5v hattındaki diğer kısımlar aynı dengesiz duruma maruz kalmaya devam edip cevap veremiyor olabilirler.


girişe filtre, regülatör olarakda LT1764 yada  otomotiv regülatörü iş görebilir


motordan gelen gürültüyü de bastırmaya çalışın

HAKKITANIR

şu anda optokuplörlü denemeler yapıyorum. henüz başaramadım.
işlemcim dsPIC, amacım yalıtım amaçlı optoyu kullanmak, işlemci beslemesi tam izole çünkü.
işlemci 100 mA. üzerinde çekiyor ve dc/dc tam izole kaynakla beslenmesi gerekli. buda dc/dc konverter kullanımını zorunlu kılıyor.
5V. tarafı çökmüyor. DC/DC güç kaynağı 3W. 600 mA. verir. sorun yalnızca I2C hattı uzatıldığında olduğundan programda sıkıntı yok.
yalnızca tek bir işlemci ve tek bir I2C haberleşmeli çip var. yalnızca ikisi haberleşiyorlar.
besleme çok güzel buraya takılmayalım.
24 V. SMPS güç kaynağından LM2575-5, bundanda Tam galvonik izoleli dc/dc 3 W. konverter besleniyor daha ne olsun.
SMPS ve LM2575-5 ile DC/DC nin girişinin toprakları ortak, DC/DC nin çıkışı ile işlemci ve I2C çipin beslemeleri komple ayrı ve ortak.

standart bir optokuplör düşünelim arkadaşlar, PC817 veya TLP521 olabilir.
optokuplörün diod tarafı olan bir ve iki nolu pinlerinin tarafı yani girişi, işlemci kontrollü ve beslemeli, opto kuplörün çıkışı ise ayrı bir besleme kaynağı tarafından beslenip, ayrı bir devreyi kontrol ediyor.
opto girişinden anlık bir pals verilip kesilecek ve opto çıkışı girişndeki anlık palse göre bir kaç saniye çalışıp tekrar eski konumuna dönecek.
yapamadığımız tam olarak işte bu. çok kolay gibi görünüyor ama optokuplör ile bunu henüz yapamadık ve buradan yardım almaya çalıştığımız, şematik çizim gönderdiğimiz halde yapamadık.
bunu yapabilirsek olayı çözeriz.

yazılım regüle slave master bunlarda sorun yok. devre kilitlenme sorunu belkide işin doğasında olup çözülmüyorda olabilir.
ama üstdeki gibi bir donanımsal reset devresi problemi ortadan kaldırıyor. bunu yapsak yetecek bize.
kendi adıma bu konuda çözüme odaklanabilirmiyiz lütfen.
bu devrede yardım ve önerilerinizi bekliyorum.