Parazitik / geri besleme beslemesini önlemek için düşük güç durumlarında IC'leri çıkarmanın uygun yolları


10

Neopiksel şerit ve Adafruit pixie de dahil olmak üzere birkaç farklı cihazı entegre eden düşük güçlü pil tabanlı AVR tabanlı bir proje üzerinde çalışıyorum . Genel cihaz hareketsiz olduğunda, LiPo pil ömrünü en üst düzeye çıkarmak için 0.1mA'dan daha az çizmesini istiyorum.

Bunların hepsinin çalışmasını sağladım (0.035mA ölçüldü) ama mutlaka “doğru” şekilde yaptığımdan emin değilim ve buna dayalı bir ürün yapmayı planlıyorum, bu yüzden doğru yapmak istiyorum.

resim açıklamasını buraya girin (Gösterilmemiştir: röle için bir geri dönüş diyotu)

Sahip olduğum temel endişe, VCC'nin veri pinlerinden akan akım ile bağlantısı kesildiğinde cihazların “parazitik” güçlenmesidir. Örneğin, Pixie (seri üzerinden iletişim kurar), güç kapatma moduna sahip değildir ve “kapalı” miliamperde boşaltıldığında bile. Bu yüzden VCC'sinin bağlantısını kesmek için küçük bir röle yerleştirdim ve seri pinin aslında hala pixie'ye güç verdiğini keşfettim. Başka yerlerdeki ipuçları , birçok çipin dijital giriş pimlerini güç koruması olarak VCC'ye çeviren bir diyota sahip olduğunu öne sürdü. Bunu çözmek için, uyku sırasında seri kitaplığı ve aslında digitalWrite'ı (PIN, LOW) askıya almak zorunda kaldım.

WS2812b şeridi ile aynı şey - VCC'nin çıkarılması, cihazın veri pininden güç almasına izin verir. Ve diğer tasarımlarda GND'yi N-Kanallı bir MOSFET ile ayırdığımda, tersini gördüm - veri hattından toprağa bir akım geri akışı! (Bu , PJRC'deki bir gönderi başına bir diyot ile çözülmek zorundaydı.) WS2812b, aslında aydınlatılmadığında bile her biri yaklaşık bir miliamper alıyor,

Yani soru: Karışımda veri pinleri olduğunda sistem uykusu sırasında VCC ve GND'yi projenin bölümlerinden ayırmanın genel, “temiz” bir yolu var mı? En iyi uygulama nedir?

Bazı fikirler:

  1. VCC'yi GND'ye zorla (nasıl emin değilim? Hbridge?). (Bunu yaparsam, yüksek veri pinlerine ne olur?)
  2. Tüm veri pinleri ve bu cihazlar arasına bir üç durumlu tampon yerleştirin ve uyku sırasında üç durumlu tamponu yüksek empedans durumuna getirin, VCC veya GND'yi sadece P veya N mosfet ile ayırın
  3. GND'yi yalnızca N mosfet ile ayırın ve tüm veri pinlerine diyot yerleştirin
  4. Hem VCC hem de GND'yi ayıran ve onları “yüksek empedans” durumuna getiren (güç için üç durumlu bir tampon gibi) bir tür güç mandalı var mı? Bu şekilde akımın veri hatlarından "dışarı akması" mümkün değildir.

Birisi beni bu tür bir "yük bağlantı kesme" sorunu ele en temiz, en tekrarlanabilir yolu aydınlatabilir miyim? (Söylemeye gerek yok , yük değiştirme konusunda bu teknik notu buldum, ancak geri besleme ve parazit gücünü ele almama rağmen, bu sorunu az şansla googling harcadım saat geçirdim )


Ya bu çok can sıkıcı, aslında bir GPIO pinine ulaşan gücün, VCC pinlerine ulaşan hiçbir güç olmadan bile bir
AVR'yi açabildiği

2
Komik gözlem: Bu soruyu gönderdikten sonra biraz daha google araması yaptım ve SE'deki bu soru en üst sıralarda yer aldı. Google bu sayfayı 10 dakikadan daha kısa bir sürede dizine ekledi.
Jeremy Gilbert

Yalnızca yorum: Diğerlerinin önerdiği gibi uygun yalıtım anahtarları, uzaktan voltaj ortadan kaldırılamadığında en iyi çözümdür. İzolasyon istendiğinde yaygın olarak ve genellikle Vcc'de katotlarla giriş pimleri için Schottky diyotlarının kullanılması, yüksek empedans voltajlarının yeterli şekilde ortadan kaldırılmasını sağlayabilir. Açıkçası, Schottky düşük empedanslı bir güç besleme hattını kelepçelemek gününüzü mahvetmekle yükümlüdür.
Russell McMahon

Muhtemelen tüm bağlantılarınızı bir şekilde Hi-Z-ing (üç durumlu µC pinleri, üç durumlu tamponlar, analog anahtarlar, ne olursa olsun), Peter Smith ve CL'nin önerdiği gibi, en iyi seçenektir. Hangi yöntemlerden daha iyi, emin değilim. Her durumda: neden anahtarlama için bir röle kullanıyorsunuz, bir P-MOSFET (veya bu konuda düşük bir N-MOSFET değil) kullanıyorsunuz, ancak düşük anahtarlama muhtemelen burada biraz daha zor olacak)?
FlashCactus

Yanıtlar:


5

Bunu yaptığımda, genellikle etkilenen veri hatlarında CMOS analog anahtarları kullanıyorum .

ADG812 gibi bir şey , oldukça hızlı mantık için kolayca uygun olan 4 kanallı SPST anahtarına sahiptir ve kapalı durumdayken anahtar düğümleri arasında gerçekten yüksek bir empedans sağlar.

ADG812 kaçak

Bu konuda güzel bir şey tekniği hem tek yönlü çalışır olmasıdır ve çift yönlü veri hatları.

Bu parçalar da parlak bir gülümseme ile çalışır:

ADG812 güç gereksinimleri

Kapanma için olağan sıra:

  1. Veri yolu anahtarlarını kapatma

  2. Gücü kapatın.

Güç, elbette bunun tam tersidir.

[Güncelleme]

Bunlar gerçekten geçiş kapıları ve iletim kapıları gibi diğer isimlerle bilinir .

Bunlar gerçek bir üç durumlu tampondan (yukarıdaki bağlantıdaki şemada görebileceğiniz gibi) önemli ölçüde farklıdır, ancak sıradan mantık için, etki daha iyidir (bu doğal olarak çift yönlü bir cihazdır), ancak daha düşük güçle.


Sorunun cehaletini affedin, ancak bu üç durumlu bir arabellekten önemli ölçüde farklı mı? (Ve cevap için teşekkürler!)
Jeremy Gilbert

Bunlar "geçit kapıları" olarak da bilinir
vicatcu

3

Veri sinyalleri mikrodenetleyicinize bağlıysa, bu pinleri giriş olarak yapılandırarak bunları yüksek empedans yapabilirsiniz. (Diğer çip çok az güç kullanıyorsa, Vcc'ye veri sinyali gibi davranabilirsiniz.)

Aksi takdirde, bağlantılarını kesmek için analog anahtarları (74x66 mantık yongaları) kullanabilirsiniz. Tek yönlü sinyaller için 74x125 de işe yarar.


Aslında onları yüksek Z yapmanıza gerek yok, sadece mikro GPIO hatlarını düşük sürebilirsiniz.
DoxyLover

1
Diğer çip sinyali daha yükseğe çıkarabilirse bu daha tehlikeli olur.
CL.

Tam olarak anlayabildiğim gibi, pimleri girişlere geçirmek her zaman yüksek empedanslı duruma getirmekle aynı mıdır? Bu, çoğu MCU veya sadece AVR'ler için genelleştirilmiş mi? Bu durum, OE devre dışı bırakıldığında 74x125'ten alacağınız durumla aynı mıdır?
Jeremy Gilbert

@JeremyGilbert Tüm CMOS girişleri yüksek empedansa sahiptir (çok küçük kapasitörler gibi davranan MOSFET kapılarıdır). Devre dışı bırakılmış bir 125 çıkışının kapısı yoktur, ancak fark göz ardı edilebilir.
CL.

1
@ JeremyGilbert Girişleri çoğu uygulamada genellikle yüksek Z'dir; sonuçta, hattı sürerken bir şey hissetmek zor. Bununla birlikte, en azından AVR'lerle (ve muhtemelen başkaları da, ancak özellikleri bilmiyorum), dahili pullup'lara dikkat etmelisiniz: pim giriş modundaysa (DDRx ile yapılandırılmışsa) ve DÜŞÜK'e yazarsanız (PORTx üzerinden), normal Hi-Z modunda. Ancak, giriş modundayken YÜKSEK yazarsanız, dahili çekme etkinleştirilir ve pim dışından kayan bir hat yerine VCC'ye ~ 50K direnç gibi görünür.
FlashCactus

1

Ne yazık ki tüm stratejiye uyan tek bir boyut olduğunu sanmıyorum. Daha önce yaptığınız gibi gücü alt sistemlere geçirin. Yazılımda, düşük güç durumları için düşük tahrik pimleri, aksi takdirde yüksek güç sabit durum durumuna neden olmaz. Bu durumda, pimi yüksek sürün. Girişlerin asla yüzmesine izin vermeyin. Güvenli başlangıç ​​koşulları oluşturmak için gücü gerektiği gibi sıralayın.


1

Mikrodenetleyicilerin çok garip şeyler yapmasına neden olabilecek kötü bir problem.
Güzel çözüm, gibi açılan seri I / O kullanmaktırben2C

Bu seçeneğe sahip değilsiniz - eşzamansız seri I / O kullanmak zorundasınız. Bazı mikrodenetleyiciler sorunu çözmek için I2C ile benzer bir yaklaşıma izin verir. Seri çıkış pimini, 1 için daha yaygın çekme, 0 için çekme yerine yalnızca aşağı çekilecek şekilde programlayabilirseniz, anahtarlamalı Vcc'ye bir çekme direnci ekleyebilirsiniz. yüksek bir mantık oluştur. Bu çözüm, mevcut yaklaşımınız kadar gürültüye dayanıklı değildir, ancak G / Ç modüllerinizi AVR'den geri besleme sorununu çözmelidir. Gerçekten "temiz" bir çözüm değildir, ancak IO modüllerinizdeki mikro denetleyici (ler) için çok daha güvenlidir.

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.