Bir düğmeyi algılamanın akıllı yolları (daha az güç tüketen)


28

Belirli bir proje için bir toplantı sırasında, bir MCU ile bir düğmeye basmanın tespit edilmesinin yolunu düşünmem istendi. Algılama, olabildiğince az güç tüketmelidir. İlk bakışta, çekme veya çekme özellikli tipik devreyi düşündüm:

şematik

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

Buradaki bazı sıçrama önleme özelliklerini hesaba katmıyorum, çünkü bu sorunun kapsamı dışında. Her iki durumda da, düğmeye basıldığında, akan toplam akım değeri direnç değerine bağlıdır. En aza indirgemek için (akım), direnç değerini artırabilirim ama çok fazla değil, çünkü eğer haklıysam, giriş pimi kaçak değerine de bağlı. Ayrıca, büyük bir direnç yavaşça iyileşir.

Benim sorum şudur: Güç tüketmeyen bir düğmeye basmanın akıllı yolları nelerdir (genellikle yüksek güç tüketen bir uygulama için)? Düğmeye basıldığında güç tüketen herhangi bir yöntem var mı?


5
10k değerinin düşürülmesi neredeyse hiç güç tüketmiyor. 3.3V, 330uA verir. Ve çoğu modern MCU'da, bir tane daha dahili direnç gösterme seçeneğine sahipsiniz. Söylendiği gibi, düğme beslemesini bir MCU pininden BJT veya MOSFET ile aktif hale getirebilirsiniz. Sadece okuma sırasında aktive edin ve yoklama ile okuyun.
Lundin

27
@Lundin "Modern" terimlerle, 330 A, yüksek bir akım olabilir ...μ
awjlogan

6
Gerçekten de, birçok mikrodenetleyici, 2-10 asA kadar düşük bir uyku akımı alabilir. Tek bir açılmada 30 katını boşa harcayarak, özellikle pille çalışan bir durumda üzücü.
whatsisname,

1
Çekme sırasında kullanabileceğiniz rezistörün büyüklüğü pimin empedansına ve hangi voltajda değiştiğine bağlıdır. Diyelim ki yüksek empedanslı bir durumda 2,4v'de 2,4v'ye geçiyor, ihtiyacınız olan tek şey girdiden biraz daha düşük empedans. Potansiyometre takmanızı ve pimin güvenilir bir şekilde çalışmaya devam etmesini sağlamak için pimin ne kadar yüksek bir değer kullanabileceğini ölçmek ve daha sonra bir marjı tutmak için değer olarak% 20 daha düşük olmanızı tavsiye ederim.
Sarhoş Kod Maymun

Yanıtlar:


29

Bir kez kullandığım düşük akım yöntemi, iki mikrodenetleyici G / Ç pini arasındaki bir anahtarı bağlamaktı.

Bir G / Ç çıkış olarak yapılandırıldı (SWO). İkinci programlanabilir dahili pull-up etkinken bir giriş (SWI) olarak yapılandırıldı.

Anahtar durumu, nadiren (her 10 ms'de) bir yazılım kesme rutini ile örneklenmiştir. Okuma dizisi şuydu: sürücü SWO düşük, SWI okuma, sürücü SWO yüksek.

Bu, basılan bir anahtarın tarama sırasında yalnızca SWI çekme akımını tarama sırasında kendimiz ve SWO'yu 1 bizden daha az süre boyunca çektiği anlamına gelirken, sıkıştırılmamış bir anahtar hiç akım çekmedi. Her 10 ms'de <1 us için yapılan bu akım, küçük ortalama bir cari tüketim sonucunu verdi.


Bu tekniği kullanarak neden çekilme gerektiğine dair şüpheli. Sıra SWO Düşük, SWI Oku, SWO Yüksek, SWI Okuma, pinlerin birbirine bağlı olup olmadığını söylemek için yeterli olabilir. SWO'yu çok sayıda anahtar arasında da paylaşabilirsiniz.
Trevor_G

8
@Trevor Anahtar açıkken giriş yüzerini bırakmak özellikle iyi bir fikir değildir. Teknolojiye bağlı olarak, girişi orta seviyede ise, giriş arabelleğinin güç tüketmesine neden olabilir.
RoyC

1
@Trevor Yukarı çekme direncini sw1 sw2 görev döngüsü ile etkili şekilde çarpma. Bizi OP’in 1. şemasına geri götüren hala bir güçlük çekiyor. Düşük gürültülü bir ortamda çalışabilir.
RoyC

2
MCU’nun bir kesintiye güvenmek yerine yoklama yapmak için uyanık kalmak zorunda olması, daha kısa anahtarlama görev döngülerinden tasarruf etmeyi tamamen iptal etmiyor mu?
AndreKR

5
Merhaba @AndreKR, bataryayla çalışan bir mikrokontrolör uygulamamız vardı ve bağlı olan birkaç anahtara ihtiyaç duyduğundan, bu tekniği oldukça zahmetsiz olduğu için kullandık. Sadece anahtar tespiti için bir MCU takmamıştık. MCU, uyku modunda 10ms'lik kesintiler arasında 900nA gibi bir şey çizdi, bu nedenle çekme tasarrufları faydalı oldu.
TonyM

23

Bir SPDT ( S ingle p ole D ouble T düğmesi derece verimli düğme olabilir hRow).

görüntü tanımını buraya girin

Kaynak: http://www.ni.com/white-paper/3960/en/

Senin durumunda 1P MCU’ya, 1T’den VCC’ye, 2T’den GND’ye gidecekti.


+1 .. her zaman beni küçümseyen SPDT'lerin bulması çok zor ya da çok fazla maliyetli olduğunu
düşündürdü

1
@Trevor Evet ... bazı şeyler ne yazık ki çok pahalı. Diğer öğeler düşük fiyatlandırılırken (örneğin MCU). Hepsine sahip olamazsın.
Harry Svensson

Bu harika bir fikir. Ne yazık ki ihtiyaçlarıma uygun bir SPDT CMS düğmesi bulamadım. Bu devreyi aklımda tutacağım
viyonist

10

Düğmeye ne kadar basılır? Açma / kapama düğmesi (durumunu koruyan) değil anlık bir anahtar ise, düğmeye basıldığında akan akım, düğmenin gerçekte kapalı olduğu kısa süre nedeniyle büyük ölçüde önemsizdir.

Gösterdiğiniz iki devrenin herhangi biri tamam, önemli değil.

Bir MCU girişindeki giriş sızıntısı ve / veya akımın önemsiz olduğunu varsayabilirsiniz . Bugünlerde tüm MCU'lar CMOS teknolojisindedir ve pratik olarak sıfır giriş akımına sahiptir. Bu yüzden düşünmeyi bırak, orada değil.

Harici bir direnç kullanmak yerine, birçok MCU girişinde dahili çekme dirençini de kullanabilirsiniz. Bu direnç nispeten düşük bir değere sahip olabilir (belki 50 kohm), bu nedenle düğmeye basıldığında küçük bir akım akacaktır.

Bir pull-up / pull-up için 1 Mohm'luk direnci bile güvenle kullanabilirsiniz. Sadece çok "kirli" (elektrik konuşan) ortamlarda daha düşük bir değere ihtiyacınız olabilir. Ayrıca yakındaki diğer devrelerin girişimini engellemek için anahtara paralel olarak 100 nF'lik bir kapasitör yerleştirebilirsiniz.

Profesyonel ipucu: PCB üzerindeki böyle bir kapasitör için bir yer ayırın, ancak bir başlık takmayın. Henüz. Sorun durumunda: yerleştirin ve bunun yardımcı olup olmadığına bakın.

Anahtarın durumunu algılamak için yoklama kullanın (TonyM'in cevabında olduğu gibi) veya bir kesme kullanın . Hangisinin güç tüketimi için daha iyi olduğuna (MCU'nun) uygulanmasına bağlıdır.


Aslında düğme anlık olacak ama basılacağı zaman yeterince uzun olabilir (dakika)
vionyst

Cihaz 7/24 açıksa, birkaç dakika hala çok fazla bir şey ifade etmeyebilir. Önemli olan görev döngüsü, saatte 5 dakika 5 x 60/3600 =% 8,3. Böylece 100 uA akımda bile, anahtar senaryomda ortalama 8,3 uA tüketecektir . Mesajım: Anahtarın, sistemin tüm tüketimini karşılaştırmadan basıldığında kullandığı akıma çok fazla odaklanmayın. Yalnızca katkılar aynı olduğunda, anahtarın mevcut tüketimini iyileştirmek mantıklı olur. MCU sürekli olarak 1uA kullandığında 0.1 uA geçiş yapmanın faydası yoktur.
Bimpelrekkie

"MCU sürekli olarak 1uA kullandığında 0.1 uA geçiş yapmanın faydası yok." Bu kulağa hoş geliyor. Sanırım 1uA zirvesi demek istiyorsun. Sadece geçiş için% 10 aşırı olurdu;)
Trevor_G

@Trevor Tepe değil , MCU için ortalama 1uA ortalama akımı , ancak düğmeye basıldığında 0.1uA demek . Sadece (göreceli olarak) kısa süreler için basılacak olan 0.1 A anahtar ile birleştirildiğinde, ortalama akım şu şekilde olacağından, toplam güç tüketimine neredeyse hiçbir şey katılmaz:% 100 x 1 uA +% 8.3 x 0.1 uA = 1.0083 uA (% 8,3 yukarıdaki yorumdan yeniden kullanılmıştır).
Bimpelrekkie

2
Evet, sadece anahtarda 0.1uA ortalama demek istediğin gibi oku. Bu bir dip anahtarı gibi mantıksız olmazdı.
Trevor_G

10

Kullandığım bir yöntem, CMOS girişlerinin kapasitif doğasından faydalanıyor.

şematik

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

Anahtarın üzerindeki devrede, kapalıyken, aşağı çekme direncinin GPIO'nun giriş kapasitanslarını toprak seviyesine kadar şarj etmesine / deşarj etmesine izin verir.

Bu devrenin püf noktası, anahtar açıkken girişin bir mantık yüksek seviyede tutulması için bir GPIO'nun çift yönlü yapısını kullanmaktır.

Kontrol rutini, pimi periyodik olarak yüksek bir seviye olarak açar veya kısa bir süre, kapakları şarj etmek için yeterince uzun bir şekilde çekmeye olanak sağlar. Giriş pimi daha sonra dinamik bir bellek biti gibi davranır ve çoğu cihazla bu şarjı önemli ve kullanılabilir bir süre boyunca tutar.

Düzgün yapılandırıldığında, düğmeye basıldığında pim üzerindeki şarj yenileme hızından daha hızlı boşalır. Bu durum daha sonra yenileme işleminden önce okunan bir yenileme algoritması parçası olarak algılanabilir veya bir kesme işlemini gerçekleştirmek için kullanılabilir.

Yenileme atımı sırasında güç, hem kapasitörleri hem de direnç aracılığıyla şarj etmek ve kapalıysa anahtarlamak için kısa bir süre kullanılır. Bununla birlikte, yenileme darbesinin uzunluğu kısadır ve yoklama frekansı, yenileme akımının nispeten önemsiz olmasına neden olur.

Açıkçası bu yöntem aktif bir yöntemdir. Mikro uykuya geçerse, şalterin durumu uyanma üzerinde belirsiz olacaktır. Uyandıktan sonraki ilk yenileme döngüsü, pim okumasını dikkate almamalıdır. Ayrıca, bu yöntem mikroyu uyandırmak için kullanılmamalıdır. Yatmadan önce, pimin sıfır akım durumunda park etmesini sağlamak için pimin alçak bir çıkış olarak etkinleştirilmesi akıllıca olacaktır.

Daha fazla statik şalter okumak için, kurulum dip şalterleri gibi, sürekli bir yenileme döngüsü yerine özel bir rutin kullanılabilir. Okuduktan sonra, GPIO pinleri değişken giriş sorununu önlemek için aktif düşük çıkış durumunda (sıfır akım) "park etmelidir".

NOT: İz uzunluğu uzunsa ve gürültülü bir alanda ilerliyorsa, bu teknik gürültü duyarlılığından biraz muzdariptir. Gibi R1 giriş pimine yakın olmalıdır. Bununla birlikte, pime yakın bir kapasitans eklemediğiniz sürece, ön paneldeki bir mesafeden uzaktaki bir düğmeyi bir yere asmak için tavsiye etmem.


1
Bu gerçekten EMI'ye karşı çok savunmasız görünüyor. Herhangi bir şekilde radyo enerjisinin bu devreye girmesi ve tüm bahislerin kapalı olduğunu düşünüyorum. Kablosuz olan iyi bir şey bugünlerde yaygın değil :)
Lundin

@ Lundin düşündüğünüz kadar kötü değil. 30pF ve meg oldukça iyi bir filtredir.
Trevor_G

8

Eğer düğmeniz bir piezo şalter ise, gereken tek güç düğmesine basılarak oluşturulan güçtür.

Örneğin: R2 / C1, piezoya basılarak üretilen enerjiyi toplar. D1, C1 voltajının çok yükselmesini önler. Düğme serbest bırakıldığında R1 C1'i boşaltır. MCU GPIO girişi olmalı, çekme modu yok. Voilà, düğme, beslemeden sıfır akım çekerek tespit eder.

şematik

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


3
Bunun çalışma prototipini yapabilir / tasarlayabilir ve son 30 yıldır kullandığımız normal bir anahtarla çözümlerden fayda gösterebilir misiniz?
Bimpelrekkie

Emin. Bir örnek şematik ekledim. Basitçe şunu yap. Avantaj, kapalı veya açık durumda beslemeden sıfır akım çekmesi olmasıdır. Dezavantajlar, şalterin aktif hale getirilmesi için gereken çabanın zayıf bir şekilde kontrol edilmesini içerir (aktif bir devre daha iyi olurdu, ancak bu, devrenin çok marjinal faydasını ortaya çıkarır) ve 30 (300?) Yıllık normal anahtar tasarımına kıyasla yeni bir tasarımdır.
Heath Raftery

Yine de, hesap makinemde çok fazla düğme var ve bir madeni para hücresinde en az 5 yıl çalışıyor. Yine de çözümünüzün buna nasıl bir fayda sağlayacağını görmedim. Hala var olmayan bir problemin "çözümü" olduğunu düşünüyorum. Ve daha pahalı.
Bimpelrekkie

1
Oh katılıyorum! Özgün kriterleri karşılar "mümkün olduğunca az güç tüketin", ancak neden bir milijoule'den daha az tasarruf etmenin gerçekten yararlı olduğunu düşünmek zor.
Heath Raftery,

MCU’nun giriş empedansı, piezonun yüksek çıkış empedansı nedeniyle kötü şeyler yapmaz mı?
Scott Seidman

5

Aygıtın her iki durumda da sürekli olarak kalması gerekiyorsa, bir SPDT anahtarının kullanılması, en düşük güç yaklaşımı olacaktır, çünkü kendi iç sızıntısı ve anahtarınkinin ötesine akım çekmemek için statik bir devre yapılabilir. SPDT switch'lerin ek bir avantajı, yalnızca bir kontağın ilk önce kapanmadan okunmadan önce zıplamayı durdurması koşuluyla, ne kadar çabuk çalıştırıldıkları veya kontakların ne kadar kırılgan olursa olsun, neredeyse mükemmel şekilde ayrılabilmeleridir.

Bu tür anahtarların kablolanması için iki iyi yaklaşım vardır:

şematik

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

İlk yaklaşım, ikinciden bir daha az direnç gerektirir, ancak ikincisi iki kutup arasında üst üste binmeye karşı daha toleranslı olacaktır (normal akımdan daha yüksek olacaktır, ancak arz boyunca ölü bir kısa devre yapmaz). Anahtar, uzun bir süre boyunca orta derecede dirençli olan bir duruma girebilirse, normalden önemli ölçüde daha fazla akım yakabilecek bir durum girebilir, ancak normal kullanım sırasında dirençlerin hiçbiri kısa süreler dışında önemli bir akım taşıyamaz. anahtarın durumu değiştirdiği zaman ve çıkış yanıt verir.


2

Mikrodenetleyicinin dahili yukarı çekmesini kullanın ve baskı tespit edildiğinde yukarı çekmeyi devre dışı bırakın. Ardından, düğmenin durumunu kontrol etmek için zaman zaman kısaca yeniden etkinleştirin.

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.