痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 11106|回復: 41

[實做與討論] 有漏电的自制红外线遥控器

[複製鏈接]
發表於 2016-12-7 14:34:25 | 顯示全部樓層 |閱讀模式
据说有需要, 做了只有8个键的一个遥控器, 第一版设计, 阻容放电延时切断电源, 用 N-CH MOSFET 做开关, 手边就只有这一种, 成功的, 用了一年. 不过延时长度不能确定, 所以随便加长, 不按也必然无谓的费电, 工作电流26mA. 断电后漏电流是0.

IR remote

IR remote



小改版, 去掉电容, 加用一只 I/O 控制 MOSFET, 按键过后马上自行关断电源, MCU是不动了, 也成功, 不过还是有 3mA 漏电流.

电路图这样,

MOSFET power switch

MOSFET power switch



高手给支个招, 如何使漏电流降到 0

谢谢

評分

3

查看全部評分

發表於 2016-12-7 17:46:54 | 顯示全部樓層
這時強迫把 mosfet G 接地放電後再放開,還會有 3mA嗎?
發表於 2016-12-7 17:59:17 | 顯示全部樓層
本文章最後由 jojoling 於 2016-12-7 06:35 PM 編輯

可能是20M電阻放電過慢,你可以手動切斷控制線測試,看它需時多久才會放完電。
改硬體的話,20M電阻改小。
改軟體的話,直接進 power down  mode,讓 mcu 關掉內部會吃電的電路,就算外面 mosfet 沒關完。
第2種改軟體的方法,關掉時,把 GPO改成 GPI並把 pull-up resistor關掉~
發表於 2016-12-7 19:45:59 | 顯示全部樓層
1.  BAT 3.7V 供電 , 可見 N_MOS  G極為低壓控制

2. MCU  的 GND 腳 接  N_MOS_D極  ; V_MCU_GND  = V_MOS_D
   當OFF 時  I/O_ (LOW) => V_MOS_G= V_MCU_GND  = V_MOS_D
   看到了嗎 V_MOS_G=V_MOS_D  相當於 DG接在一起   MOS處在線性區

3. 改P_MOS(PNP)  於 MCU VCC前方 控制供電
   MCU I/O用 OpenCollect or OpenDrain (無pull high 電阻/無靜電保護二極體)

發表於 2016-12-7 20:15:12 | 顯示全部樓層
SIMON1016 發表於 2016-12-7 07:45 PM
1.  BAT 3.7V 供電 , 可見 N_MOS  G極為低壓控制

2. MCU  的 GND 腳 接  N_MOS_D極  ; V_MCU_GND  = V_MOS ...

報告SIMON哥~

其實就算mosfet在電阻區,Vgs的電荷也應該被電阻放光而進入 off~
此問題有幾個沒說明的地方~
如 Vgs 此時電壓為何?經過長時間是否有降低?
如沒降低,應該是 mcu 經由Vcc慢慢降而進入了無法預測的當機狀態了,然後 pin 腳的電就mcu保持住了。
如有降低,應該就是 20M的電阻放電太慢了。
發表於 2016-12-7 21:58:44 | 顯示全部樓層
jojoling 發表於 2016-12-7 07:15 PM
報告SIMON哥~

其實就算mosfet在電阻區,Vgs的電荷也應該被電阻放光而進入 off~



......,Vgs的電荷也應該被電阻放光而進入 off~....

....這句我持保留態度,

  得看MCU I/O 結構是否會因負壓( I/O相對於 POWER_MOS_S) 而漏過去 給 R_GS成 為補充Vgs的電荷
譬如說: MCU I/O 有靜電逆壓防護二極體, 堤供路徑給R_GS成 為補充Vgs的電荷

MCU_MOS.jpg


 樓主| 發表於 2016-12-7 23:03:05 | 顯示全部樓層
本文章最後由 xiaolaba 於 2016-12-7 11:06 PM 編輯
jojoling 發表於 2016-12-7 05:46 PM
這時強迫把 mosfet G 接地放電後再放開,還會有 3mA嗎?


是的, 短路马上变0, 20M 换成39K 电阻, 情况一样
 樓主| 發表於 2016-12-7 23:04:23 | 顯示全部樓層
jojoling 發表於 2016-12-7 05:59 PM
可能是20M電阻放電過慢,你可以手動切斷控制線測試,看它需時多久才會放完電。
改硬體的話,20M電阻改小。
...

MCU IO 设成 HIGH. 断电时设成 HI-Z 的 INPUT MODE.
 樓主| 發表於 2016-12-7 23:08:47 | 顯示全部樓層
本文章最後由 xiaolaba 於 2016-12-7 11:20 PM 編輯
SIMON1016 發表於 2016-12-7 09:58 PM
......,Vgs的電荷也應該被電阻放光而進入 off~....

....這句我持保留態度,


S大, 这个看不懂, 可以说明什么情况呢

N-CH MOSFET 是这支
http://www.mouser.com/ds/2/427/71876-244660.pdf

MCU是 ATMEGA328P, IO 是 PB0
http://www.atmel.com/Images/Atme ... -328P_datasheet.pdf

因为有空就修订一下设计, 看看有没有进步的地方, 不过一直不得其法, 所以几个月就要充电一次.
發表於 2016-12-7 23:54:38 | 顯示全部樓層
本文章最後由 jojoling 於 2016-12-8 12:13 AM 編輯
SIMON1016 發表於 2016-12-7 09:58 PM
......,Vgs的電荷也應該被電阻放光而進入 off~....

....這句我持保留態度,


報告 Simon哥,You are right.

Sorry我應該沒說清楚。
那句話是說,"理想上如果 MCU 那端沒有問題的話(漏電),就算 mosfet 進入了三態區也應該要被放完電"~
你的圖是正確的,在硬體設計裏如果是 pure GPO design的話~
不過現今的 mcu/cpu 的 I/O腳通常是 multi-function pin design~意指軟體可以干預它在關機時的非預期狀態,韌體很常幹這種事。

ATmega328p內部圖一:如你所畫
2016-12-07_234424.png

ATMega328p內部圖二:gpio block
2016-12-07_234450.png


由圖二來看,應該就是SLEEP啟動內部 mosfet ~
難怪直接切換成 GPI後的放電好像沒效,還需經過 SLEEP 信號啟動對地mosfet放電~
以此電路圖來看,千萬不要設成GPI,直接設成 power down mode來試。

可用別人寫的"庫"來進 power down mode~
http://playground.arduino.cc/Code/Enerlib

我這篇有用,懶的放在標準路徑,直接放在project code及可~
http://bbs.pigoo.com/thread-58357-1-1.html
發表於 2016-12-8 00:25:17 | 顯示全部樓層
如果上述還不行的話,表示:mcu不夠時間進入睡眠就被強迫外部拉電拉掉了~
最後一招不改太多的大絕招就是:

1. 100uF 電容加回,確保進入睡眠時 mcu 可以跑完完整的 cycle~
2. PB0->GPO->HIGH,此控制信號不適合轉態成 LOW or GPI
3. 進入 power down mode~
發表於 2016-12-8 08:25:20 | 顯示全部樓層
怎麼不做硬體開關  
 樓主| 發表於 2016-12-8 10:53:55 | 顯示全部樓層

人人都會忘記關的
 樓主| 發表於 2016-12-8 11:08:34 | 顯示全部樓層
本文章最後由 xiaolaba 於 2016-12-8 11:43 AM 編輯

為了理解為什麼這樣會漏電, 參照前輩提示, 以MCU的GND為參考點, 量了自動關機後的兩個點,
Vd = 0V, 參考點, GND
I/O = -0.27V
Vs = -2.0V, 電池負極

把20M電阻改小到20K也是無效, 只是漏電流從3mA降低了一些到2mA, 但是這個不能無限減少, 不然就永遠無法上電工作了, 而且按START會短路電池.

也證明 Vg > Vs, 所以 Vd 和 Vs 之間有通道, 形成漏電, 但是原因呢, 肯定跟 CPU 有關, 但是實際成因呢...

IR remote self power off why leakage

IR remote self power off why leakage

發表於 2016-12-8 15:03:49 | 顯示全部樓層
實際成因喔,個人認為就是 MCU的 Vcc to GND電壓,呈現曲線的慢慢掉下來,然後低到 mcu 所能工作的電壓以下,就不動了。斷電斷太慢就會變成這樣。

ic不動了,此時的漏電的問題,就是專門的課題了。可參考一些討論 leakage 的文章
http://www.mpedram.com/Papers/IEICE-leakage-review-journal.pdf

ATMega328p的電源管理,請參考文件第10章
10. Power Management and Sleep Modes,此部份就是實作管理那些 leakage 在 ic 內部的。
可用 sleep mode 去啟動內部隔電的 gate~

解決這類型的問題,如需自己外部做一些 gate 來隔離不同區塊。底下為 gate /光偶 的example~
相片 2016-12-8 下午2 56 21.jpg
發表於 2016-12-8 17:06:32 | 顯示全部樓層
本文章最後由 SIMON1016 於 2016-12-8 04:26 PM 編輯

既然已經用 N_MOS  那就jojoling 樓上電路 該是夠用


不然就改 PMOS  ---- 之前 第3 項  說的  改P_MOS
缺點 注意VGS開啟電壓  是否足夠

MCU PWR.jpg

改PNP BJT 延時效果有限


也是很有機會遇上  jojoling 說的
供電下降  VS  MCU電壓不足當機  鎖在不上不下的位置
這顆MCU 我不懂

MCU 斷電時的  debug  
注意DVM電壓表內阻 10M  

量V_MOS_G/GND   與 20MR   分壓  誤動
請直接量 V_GS
-------------------------------

還有個 簡單的大招
拿 舊行動電源有  觸動開關+自動關電的 ....
條件是 系統待機電流 低到足以 使 行動電源 認為 可以自動關電...


 樓主| 發表於 2016-12-9 08:20:49 | 顯示全部樓層
jojoling 發表於 2016-12-8 03:03 PM
實際成因喔,個人認為就是 MCU的 Vcc to GND電壓,呈現曲線的慢慢掉下來,然後低到 mcu 所能工作的電壓以下 ...

J大好
為了最深入理解這個現象, 昨午飯休息試驗一下. 確認了兩個問號的答案.
MCU刷乾淨, 沒了程序控制, 現象一樣
另外把20M電阻換成10K左右, NPN串入, IO控制NPN, 總體漏電從3mA掉到0.5mA
因此確認了此現象跟MCU本身的結構有關.
看來還是需要像S大提議的, 有時間需要外出買 P MOS 做 HIGH SIDE 控制了
 樓主| 發表於 2016-12-9 08:23:13 | 顯示全部樓層
SIMON1016 發表於 2016-12-8 05:06 PM
既然已經用 N_MOS  那就jojoling 樓上電路 該是夠用

謝謝S大, 看來這個方案是最可靠的.
除非改了不用ARDUINO的板子, 單純MCU 加上 sleep & key press wake-up
發表於 2016-12-9 12:47:02 | 顯示全部樓層
xiaolaba 發表於 2016-12-9 07:23 AM
謝謝S大, 看來這個方案是最可靠的.
除非改了不用ARDUINO的板子, 單純MCU 加上 sleep & key press wake-up ...

我畫的圖 有點問題  
P_MOS 的R_GS 迴路 可能 會經由 MCU I/O內部  二極體  走到 MCU_VDD 去
這樣問題還是會發生

解法 就是 I/O  增加NPN 到 R_GS 迴路
==> 其實跟jojoling 15# 上圖是一樣的

發表於 2016-12-9 14:39:51 | 顯示全部樓層
ATMega328應該可以降低到 uA級~ (BOD在ATMega328P可以用軟體關閉)
http://www.home-automation-commu ... -coin-cell-battery/
https://github.com/rocketscream/Low-Power
發表於 2016-12-9 16:22:43 | 顯示全部樓層
本文章最後由 upchome 於 2016-12-9 08:13 PM 編輯

不必MCU浪費一個I/O PORT來控制,現成的線路就有。
原理圖摘錄至對岸論壇。

一鍵電子延遲開關.jpg
發表於 2016-12-13 01:53:48 | 顯示全部樓層
本文章最後由 jojoling 於 2016-12-13 01:55 AM 編輯

xiaolaba大大好~

atmega328p的省電功能,在純電池無 LDO下其實還不錯用說,量測數據如下:

環境:
1.外接  5V供電連進 Vcc,無 LDO靜態消耗。
2.Arduino MCU Vcc 前端切開串接電流表。
3.使用 arduino D2 腳叫醒( 連一個電阻到地,我設定 hight voltage to wake up system)
4.程式閃滅各1sec,共3次後會自動睡覺, wake up 後清除 count 重新計數3次後再睡覺。
5.測試程式。 PowerDown.zip (6.2 KB, 下載次數: 11)

量測:
Fluke 3位半便宜電表,active mode 電流約為 16mA,power down mode with ADC_OFF  , BOD_OFF 電流為 0.00uA  (電表測不出來)


使用 HP 34401A 6位半電表量測,active mode 電流為 15.3mA,power down mode with ADC_OFF , BOD_OFF 電流約為 0.40uA(5V測試環境)


以鋰電一般常見的數據來看,電池充飽後每月自放電率 1%-2%,有保護版加 3%來看,待機電流已遠小於自放電率。

以0.4uA計算,每月耗電量為,0.4uA * 24 * 30 = 288u (Ah)~
以 1000mAh電池來說為 0.028%
以 2000mAh電池來說為 0.014%


另外你電路用的 Si7888 ,在小電流與低壓系統對 power consumption的影響比例到還好。
可以用簡單的 pmos /nmos 就好了,如 AO34xx之類的就可以了。
大電流再考慮這類型的就好~ 一般上 NMOS 在這類型比 PMOS 多樣與便宜,在保護電路上可以用 cmos (p+n) gate 去控制達到省電與低Rds-on。缺點就是比 PMOS 設計麻煩一點。

依據 #15 圖1插的,功率 mosfet 可正常被斷電。這樣 power n mosfet 就可共用料了。



ps: cmos gate 在現今的設計滿常用的,省電,又可以快速的信號轉態,個人實驗還不錯,可以不用為了大電流而買特殊整合 IC ,可使用外部 p+n gate 去控制power mos 的 on/off 來減少發熱與提升效率。



評分

3

查看全部評分

 樓主| 發表於 2016-12-13 10:18:18 來自手機 | 顯示全部樓層
jojoling 發表於 2016-12-13 01:53 AM
xiaolaba大大好~

atmega328p的省電功能,在純電池無 LDO下其實還不錯用說,量測數據如下:

j大
這個太專業的分析了讚一個
偶沒有那些高級儀器
不過確定是uno板子和CPU有關
出差回去再看看bod
發表於 2016-12-13 16:10:54 | 顯示全部樓層
哈哈哈, 再加一個電源開關~~~
 樓主| 發表於 2016-12-22 14:56:30 | 顯示全部樓層
本文章最後由 xiaolaba 於 2016-12-22 02:57 PM 編輯

有空實驗了一下, J大的原碼很給力
328P 睡覺時大約5.5mA, 動作是大約19mA
看來要閹割一下板子把不需要的IC都去掉再來確認一次

328P Nano current

328P Nano current

發表於 2016-12-22 15:25:33 | 顯示全部樓層
xiaolaba 發表於 2016-12-22 02:56 PM
有空實驗了一下, J大的原碼很給力
328P 睡覺時大約5.5mA, 動作是大約19mA
看來要閹割一下板子把不需要的IC ...

報告~~你板上的 power LED 在耗電中~
 樓主| 發表於 2016-12-23 09:43:32 | 顯示全部樓層
jojoling 發表於 2016-12-22 03:25 PM
報告~~你板上的 power LED 在耗電中~

谢谢J大提示, 这个理解.
不过手边没有 拆/焊 的工具
DIP也没有 M328P, 只有2颗 DIP 的ATMega8P, 想插面包版实验
所以使用你的源码, 编译选用M8
结果有不兼容的状况, 没有工具只能暂时卡关了

M8 BOD test NG

M8 BOD test NG

發表於 2016-12-23 12:00:29 | 顯示全部樓層
xiaolaba 發表於 2016-12-23 09:43 AM
谢谢J大提示, 这个理解.
不过手边没有 拆/焊 的工具
DIP也没有 M328P, 只有2颗 DIP 的ATMega8P, 想插面包 ...


我改了一下這個 Power Down library~ PowerDown-M8-Mod.zip (5.39 KB, 下載次數: 9)
修改了3個地方,加入 __AVR_ATmega8__ 編譯選項使其編譯成功。
1.  M8 不支援 Extended Standby。
2.  M328 的暫存器TCCR2B 在M8裏該為TCCR2
3.  M8 的 watchdog 不支援 Interrupt and Wake-up on Pin Change

 樓主| 發表於 2016-12-23 12:33:50 | 顯示全部樓層
jojoling 發表於 2016-12-23 12:00 PM
我改了一下這個 Power Down library~
修改了3個地方,加入 __AVR_ATmega8__ 編譯選項使其編譯成功。
1.  ...

J大, 你對這個MCU好像甚麼都會, 厲害
文件先下了,待晚上可以試驗.
你的意思是說 M8 沒有睡覺的功能和不行像328P一樣接D2就會被叫醒再閃3次嗎.

發表於 2016-12-23 13:57:52 | 顯示全部樓層
xiaolaba 發表於 2016-12-23 12:33 PM
J大, 你對這個MCU好像甚麼都會, 厲害
文件先下了,待晚上可以試驗.
你的意思是說 M8 沒有睡覺的功能和不行 ...

應該可以。
我那個測試程式是用 INT0 產生 wake up 動作。

M328的 wake up sources:
2016-12-23_134733.png

M8的 wake up sources:
2016-12-23_134753.png
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-3-28 11:16 PM , Processed in 0.263777 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.