IoT, ESP8266, IP address of api.thingspeak.com

http://wp.me/ph3BR-25b

 

昨日做科學展示時, 原來的那組 Dummy Temperature logger 無法傳送資料到 api.thingspeak.com, 因此畫面都沒有更新, 俺們的展示 CHANNEL 在這裡 https://thingspeak.com/channels/230726

所有軟件硬件都沒動過, 甚麼問題 ? 除了換了地點和 WIFI 帳密 還有 API Keys, 檢查 SERIAL 輸出, 也看不見字串. 正常的時候會看到這個 post string 字串,

 

很可能是 DNS 或 NAT 有問題, 不過這個超越了一般使用者的管理範疇和能耐, 因為需要 ISP / WIFI 管理員解決問題. 那試試看直接用 IP 地址, 用了兩個方法找出 api.thingspeak.com 的 IP 地址,

1) 用網路工具查,
2) 用WINDOWS 自帶的 PING 或 TRACERT 的小工具,

網路工具查詢的結果,

https://website.ip-adress.com/api.thingspeak.com

 

PING 或 TRACERT 查詢的結果

 

兩個方法都指出 api.thingspeak.com 的 IP 地址,
52.1.229.129
52.7.7.190

 

所以改了一下源碼, 用 52.1.229.129 替代 api.thingspeak.com, 試試看,

 

再編譯一次, 運行就連上可以輸送資料了. 看來這個地點的網路環境有問題, 原因不詳, ESP8266 沒辦法透過 DNS 知道 api.thingspeak.com 正確的 IP 地址或連結不成功, 但是 ESP8266WiFi 程序庫沒有除錯功能也沒有顯示任何資訊, 因此沒有任何報錯反應, 也不會送資訊到 api.thingspeak.com, 實際上看不到任何 post string.  API Keys 理論上是不要對外公開的, 因為其他有心人看了可以濫用, 所以建議每次展示都重新修訂 API Keys, 重新編譯源碼, 這樣的話源碼每次都要配對 API Keys, 展示完畢以後下一個展示時就不會被別人誤用或干擾, 因為 API Keys 一旦修訂, 這個時間點以前所有的展示品都會失效, ESP8266 不再傳送成功.

 

 

修訂後的程序運行正常了, 有最新資料顯示,

https://thingspeak.com/channels/230726

廣告

Samsung SR-21NME 冰箱下層漏水

http://wp.me/ph3BR-24s

 

原來沒有做筆記, 還是找不到筆記 ? 首次學習修復電冰箱, 補上一個筆記. 事後才明白, 原來冰箱每天都在循環動作中, 發熱-融冰-漏出冰水-制冷.

總結:

Samsung SR-21NME 冰箱下層漏水.

原因, 門縫封條不夠密合, 過多潮濕空氣進入, 湯水食物曝露, 過多水份進入冰箱的箱體內;

排水管被鐵鏽塵垢雜物賭塞, 排水不良, 更多水份累積;

除霜發熱管不良, 冷凍調節器故障, 冰凍室送冷風到保鮮室的風口累積的更多冰塊賭塞;

最終下層不冷, 上層冷風輸送管結冰累積越來越多, 除霜期間或停機期間, 部份融冰水滿從前出風口滴漏;

 

開始理解問題, 漏水中, 漏水的位置

 

外觀,

 

冰箱門內, 看看規格, 網路圖書館找資料,

 

冰箱背部看到電路圖

 

冰箱背部, 底下的水盤, 接受除霜時漏出的水份, 黑色的那個壓縮機的熱力會自然把它蒸發.

 

網上找了一下, 有著型號的 SERVICE MANUAL
Samsung SR-21NME Manuals
http://www.manualslib.com/products/Samsung-Sr-21nme-440896.html

 

停機, 過了一天再開, 好像好了, 結果幾天過去後, 問題再次出現. 到府給他拆機看看, 壓縮機運轉電流大約 1.5A, 比標牌寫的0.95A 有差別, 但是就是一堆冰. 拆來看, 結果還是塞住, 看來要通管, 但是漏水管估計是有轉角的, 因為機底出口在中間, 而冰格內出水口在左邊, 到底為甚麼塞住呢….

冷凍室儲水槽內很多鐵鏽, 還有滿滿的冰. 退去一部分冰後還看到有兩顆掉落的生鏽嚴重的螺絲, 出水圓孔有堵死, 看來是前人修理過留下的. 每個塑膠隔板都有手寫的日期, 看來也是前人修理遺留的痕跡. 冷排全部融冰後, 看來還是很新.

 

冰箱冷定室, 拆掉調溫板, 拆掉冷排蒸發器, 看到除霜的水槽, 鐵鏽真多.

 

鉗子電表測量 AC 電流

 

電熱管電阻 380 ohm, 算起來應該 220V, 130W 左右, 不知道是被冰的應力逼迫裂開還是其他原因, 看起來已經裂開了好些時間. 必須換新, 10多塊錢的零件, 就不修了.

 

 

最有趣的是這個全機械式的溫度控制閥門, 透過溫感膨脹管控制下層閥門的開闔角度, 以適當送風量來控制保鮮冷流量, 沒拆開以前覺得挺神秘的. 拆了看了一下才猜到她的設計原理. 送風口堵滿冰塊, 所以下層不冷了.

 

融冰的加熱時計 6H / 12 MIN. 就是轉一圈6小時, 然後12分鐘切斷壓縮機和風扇的電源. 拆了單獨測試, 接點的電阻和開關順序都很正常. 不過看不太明白加熱器的動作原理. 純粹猜測, 時間到, 3-4 切斷, 3-2接通, 因為 BI-METAL 很冷在接通狀態, 所以融冰的加熱時計的馬達被短路不轉了, 停止計時. 同時, THERO FUSE 通電給加熱器, 加熱到某個程度, BI-METAL 熱了斷開, 融冰的加熱時計的馬達有電開始轉動, 再次接通壓縮機和風扇的電源. 這時候, 融冰的加熱時計的馬達串聯在加熱器, 電流很小, 發熱量很低………做下一個融冰計時的循環………..是這樣嗎 ?

 

怎樣測試或確定問題點呢…

漏水的問題得到解決, 淘寶來的, 20元換過新的除霜電熱管就好了, 220V / 130W的. 證明除霜計時器功能很正常, 也會融冰, 有冰水從排水管漏出來了, 當然先通了排水管的鐵鏽和汙垢.

 

冷凍室的風扇, 冷氣循環就靠它.

 

邊看維修手冊, 邊學習這種冰箱的原理, 確認他的除霜設計有感溫雙金屬片 (BIMETAL THERMO), 貼在冷排旁邊那個有塑膠管密封的東西, 低溫會接合通電, 高溫會跳開斷電.

冷排蒸發器和組件,

 

除霜的時候, 冰室的冷排融冰了.

 

 

先來理解除霜計時器的馬達的運轉原則. 220V的計時器的馬達和除霜發熱絲串聯在一起, 有電流就開始轉動計時. 下圖內, 黃色-3-M-1-白色WHT-RED-THERMO FUSE 的那個通路, 因為發熱絲電阻很低 (380 Ohm), 對比馬達的線圈很高的電阻值, 因而幾乎所有電力都用在馬達轉動上, 熱絲幾乎可以認為是一條普通的導線, 因為電流很小很小, 安培級的鉗子表顯示為0.00A, 所以熱絲不發熱, 因此除霜計時器馬達轉動, 同時熱絲不熱或更準確說微微微微熱而以, 沒有融冰也沒有加熱冷凍室的疑慮. 其實也就是電阻的分壓原理 (Voltage Divider).

如果把計時器馬達的兩個腳短路接起來, 就是上圖3-2接起來, 同時3-4斷開, 壓縮機沒電就停了. 計時器馬達因為3-2接通被短路就不轉動, 沒有計時功能, 並且220V的電源就直接給了除霜發熱絲, 130W的發熱管在全功率加熱, 融冰開始. 冰箱是要冷的, 那加熱管不停地通電加熱, 到何時停止呢 ? 所以在熱絲的迴路裡面, 加了一個感溫雙金屬片 (BIMETAL THERMO), 低溫時在接合狀態, 等到除霜計時到點, 計時器接點 3-2 接合, 等於計時器馬達馬達不轉, 純粹熱絲發熱. 溫度慢慢升高, 融冰了. 一段時間後感溫雙金屬片 (BIMETAL THERMO) 感受到高溫而跳開, 因此計時器馬達再次開始動轉計時循環, 熱絲沒了大電流所以又不熱了. 然後接點 3-4 恢復接合, 壓縮機開始製冷, 進入6小時的製冷循環.

沒看過除霜計時器裡面長啥樣, 順道拆開, 也檢查接點有沒有因大電流燒毀或者日久氧化. 還好, 除了輕微氧化的痕跡, 擦拭後沒有異狀, 那就是壓縮機也正常. 運轉電流大約在0.7A, 表示製冷量進入穩態, 冰箱夠冷了.

 

除霜計時器, 除霜定時器, 據說是同步馬達, 鴻運扇轉動送風方向的馬達同一類

 

除霜定時器的接腳編號, 對應電路圖上的1/2/3/4, 拆了研究過, 明白的動作的原理和除霜供電熱絲的原理

 

完成了除霜恢復正常這一步, 有待觀察甚麼時候停機, 不可能24時全速運轉製冷, 結果冰箱冷到-18C, 幾個小時以後壓縮機還在轉, 沒有要停止的意思. 冰室的溫度控制調最大最小都一樣的狀況. 這樣嘛…..根據冰箱自己的電路圖, 剩下唯一一個會影響停機的零件就是那個 F-THERMOSTAT, 估計全寫應該是 FREEZER THERMOSTAT, 冷凍控制器.

 

修整後的FREEZER THERMOSTAT, 冷凍控制器

 

搜尋網路, 說這種 FREEZER THERMOSTAT 有好幾種設計, 不知道壞了漏氣沒有冷媒, 還是被調整不當, 或者是機械故障, 也不知道屬於哪一種, 不過也就是10元8塊的普通零件, 通常運費比較貴. 那就拆來研究一下內容. 很有可能是機械故障, 外蓋釦子鬆脫斷裂, 引起壓力開關的設定點跑掉, 拿來園藝鐵線, 物主種花用的緊箍一下, 調節那個拉力的螺絲, 順時針提高彈簧拉力, 停機的溫度升高, 反之, 溫度點變低. 因為現況是-18*C都沒動作, 所以直接把感溫體貼到冷排, 調高溫度點, 先確認一下好壞, 結果重複幾次後, -26*C就停機了, 大概確認溫度範圍12*C, 就是-26*C停壓縮機, -14*C 再啟動, 轉一圈約1*C. 熱冷開停這兩點的溫度距離大概一樣, 調高調低也可以, 所以有便利再買新零件, 現時加減用, 等到壞再說了.

FREEZER THERMOSTAT, 動作原理的理解和解構,

 

測溫最好用熱電耦, 臨時沒工具就人工監察, 要花時間. 有 LOGGER 功能的更好, 人可以離開, 回頭看紀錄就一目了然. 裝設FREEZER THERMOSTAT 後, 驗證溫控和壓縮機停車的關係, 必須看溫度與時間的關係.

 

如果有了 logger 就省事很多, 例如用這個也可以, 留待日後改進.

https://xiaolaba.wordpress.com/2017/03/01/iot-internet-of-thing-a-dummy-logger/

Philips Sonicare AirFloss HX-8140, 怎樣拆換電池

http://wp.me/ph3BR-23P

 

媽媽說洗牙縫的小雞雞按下去不噴水, 應該是壞了. 確實按了沒有噴水壞了, 估計電池也老化了. 按鍵長期在濕度高的環境底下, 霉了接觸不良大概很好解決, 剔開按鍵的蓋子, 撕開膠膜, 看到 DOME SWITCH, 清潔氧化發黑的接點, 再加點凡士林防水氣防氧化就弄好了, 可以再次噴水.


Philips Sonicare AirFloss HX-8140 malfunction

 

不過怎樣拆開換電池呢 ? 找不到資料, 不過網上看到有人用這支
https://iristim.tian.yam.com/posts/62472466

所以按照關鍵字搜尋, 下載了一個 PDF.
https://www.manualslib.com/manua … irfloss-Hx8111.html

結果看到一頁有關鎚子的示意圖…..破壞開蓋看來是唯一的說明, 基本是建議製造一個垃圾, 沒其他了.

那試試看用力拆, 再用 Sonicare AirFloss 關鍵字找一下, 這裡有噴水機構的拆解原理, 所以不必繼續拆下去, 只要修復就可以. 拆開後剪線拔矽膠管, 就可以抽出整組PCB和馬達PUMP, 她是用馬達壓縮彈簧, 儲存能量, 盡頭鬆開扣機, 彈簧爆發彈力推動針筒噴水.

Philips Sonicare AirFloss HX-8140 disassemble

 

https://wp.josh.com/2014/02/11/whats-inside-the-sonicare-airfloss/

h_ttps://youtu.be/tSPD6O64rYI

 

 

電池是最後才能拿出來, 3.7V 1.85W, 算約 500 mAh, BYD 的鋰聚合物電池, 體積約 6mm x 24mm x 44mm,

型號 BYD Li-ion, 11CP6/25/47

SL602444

3.7V 1.85W

拆出來單獨充電, 速度只能選 300 mAh, 750 mAh的話可能會爆炸.

1.45小時充滿到4.2V, 看來還有很多容量, 大約還有350-400mAh.

Philips Sonicare AirFloss HX-8140 bat and water leakage

 

再單獨看看, 沒接電池, 來電 4.1VAC, 輸出的電池接點 B+/B- 有 7VDC. 綠燈恆亮表示充滿電力, 綠燈閃表示充電中, 黃燈閃表示沒力氣要補充. 隨便接一個18650的筆電芯, 看來充電停充都很正常, MCU 是 PIC16F726.

Philips Sonicare AirFloss HX-8140 charger

 

這玩意的設計並不是防進水的, 起碼開關的按鈕是可以進水很多的地方, 看來很多人都這樣壞. 媽媽用這個應該是十分小心也不曾泡水里, 所以進水PCB受潮的情況很輕微, 齒輪的狀態也很好, 保固期內都沒有送修過, 除了掉地上斷了噴嘴要買新, 大約超過3年. 買個新的也不便宜約80美元, 所以繼續撐一下, 能用多久算多久.

 

2017年省電燈泡購買指南, 試用樞紐分析表的結果

http://wp.me/ph3BR-1YE

公布省電燈泡壽命及光束維持率檢測結果

http://www.ey.gov.tw/News_Content.aspx?n=49559B255B3B9F27&s=D22243E5A388AC80

106-03-31

2017-MAR-31

看過新聞, 也整理了一下公佈的資料, 其實看到就是霧裡看花, 完全沒清楚到底它在說啥. 這裡只是實驗性質, 嘗試運用 PIVOT TABLE 之類的分析工具, 看看這些資料.

引用消保處和行政院有公告統計及測試的數字, 不妨用自己的方法解讀一下裡面的內容, 雖然不會常買省電燈泡, 引用人家做好的統計數字, 用自行分析的方法, 看看這堆數字和文字到底表達了更深層的意義在哪裡. 分析過後, 得到了一些比較有趣資訊, 如果不是作者筆誤, 大概就是真有其事.

首先, 之前看完了新聞, 也看過行政院網站, 坊間的一般的新聞報導就類似, 壽命 亮度不足 26款省電燈泡 騙人…..等等, 對呀, 騙人的就不買. 而俺希望看的是另外一端, 若標示符合的燈泡, 賣價或排列有怎樣呢? 於是就下載了這個統計表格,

「省電燈泡」(第二階段)市場購樣檢測結果彙整表.pdf

http://www.ey.gov.tw/DL.ashx?s=A7BCF6DE0B0FB21B6BC913A7D6029EA50D4ED73A454E6065794330EF72007EA98DEA583F0FB58AD2AA744DC758E2FE8AFF2594ABDCC03F7A7DE5B564BD3DCFE26B7A397D9702296D&u=%2fUpload%2fRelFile%2f1513%2f748793%2f1710f1b6-39a3-4364-8406-cf93429d06b2.pdf

老師常說, 記錄資料不難, 花時間和精神就做到, 但是得到一堆數據以後, 要從裡面找到想看的內幕, 不是每個人都有的功力, 就像葵花寶典, 沒練過就莽談開天闢土, 基本就廢話. 有了人家統計的資料表格, 例如上面提到的那個 PDF 檔案公告公開給下載的, 那就先來努力給他變成一個試算表格式, 有電腦和工具, 半分鐘就完成. 相信原作者也是利用類似的試算表工具來做資料輸入, 最後打印成PDF檔案, 現在要做的就是把它倒轉回去, 不然自己手工輸入一次嗎, 別傻了.

有了試算表的資料, 最簡單不是靠你的眼睛去分析數據, 而是用類似 PIVOT TABLE 的工具幫助分析, 如果不知道甚麼是 PIVOT TABLE, 那聽過 EXCEL [樞紐分析表], 其實就是類似的工具, 它可是協助你成為武林高手的工具之一, 但到底還只是工具, 要依靠運用得宜, 才會有功效.

有了資料, 有了工具, 還是不行, 需先訂下目標, 如果亂鳥投林, 到底要看甚麼都不知道, 那不要繼續. 目標很清晰, 既然人家都做說明了, 其中有部分樣品測試結果不合格壽命達不到2000小時, 那沒必要死盯一盤豆豉找蒼蠅 (拜託, 豆豉, 不要寫成豆鼓好不好), 試試看白麵粉裡找幾顆黑芝麻不是比較容易嗎! 設定目標, 看看合格產品中, 價格品牌型號排列, 如何 !?

所以呀, 就用那個樞紐分析表的結果, 挑選全部項目合格的, 再自動排列一下價格, 就看到期望的統計結果了, 很簡單呀.

看到兩個比較特殊的地方, 其中一點, 兩個不同廠牌的燈泡, 居然用到HLX-23WLT3完全相同型號. 這個沒法解釋. 另外一個, 最底下幾欄 B&Q 的產品單價是0元, 這個容易解釋, 單價的原始資料不是純粹的數字 (例如 129/組), 自動分析抓不到純粹數字, 就給他顯示0元, 自行修訂一下單價就能再作自動分析, 這裡留作家課作業, 喜歡做的就自己試試看. 如果想看標示放光時數和價格的關係, 可能還要自行細分品質結果才可以作自動分析, 不然用眼睛看, 還是霧裡看花.

「省電燈泡」(第二階段)市場購樣檢測結果彙整表-price-list

這裡只是實驗性質, 嘗試運用 PIVOT TABLE 之類的分析工具作功課.

「省電燈泡」(第二階段)市場購樣檢測結果彙整表 樞紐分析表.xls

「省電燈泡」(第二階段)市場購樣檢測結果彙整表.pdf

以上可下載, 打開樞紐分析表不需要密碼, 改動樞紐分析表的話需要密碼.

所有統計資料的來源和統計資料版權屬於行政院, 此處純粹引用做為課業的題材.

-end

 

REF:

http://www.bsmi.gov.tw/wSite/ct?xItem=68968&ctNode=1510

Philips 14W LED, US$0.8 per Watt, 5 year warranty

http://wp.me/ph3BR-1Yo

 

去年的5年保固銷售策略, (http://wp.me/ph3BR-1DX) 效果可能不彰顯, 自己也過不了零買的心理關口, 沒零買.

過了一年, 現在的菜場價格到了 0.8美元每瓦特以下, 14W最新出品並且標示保固5年, 目前應該是最高的市場價, 不是"便宜貨", 不過, 旁邊賣的螺旋燈管23W也是差不多250元一顆, 不寫也不知道保固多久, 那這個270元保固五年的LED泡泡, 相較起來就是有吸引力的可以嘗鮮的, 畢竟很久以前已期望有誰家敢出口號保固5年 (https://xiaolaba.wordpress.com/2012/10/04/7-11-and-led-light-bulb/)

第一次買的 OSRAM 泡泡 (http://wp.me/ph3BR-1DX), 現在都還健在, 所以保固兩三年沒有假的, 超過他寫的且邁入第5年的壽命. 那這次買了兩顆敢寫5年保固的來實驗, 燈泡壞了只能換新, 順道換這個目前CP值和保固信心最優的照亮我們美好的夜生活, 自我感覺良好, 並且助力這波五年保固的銷售策略一下下, 而且今天所賣的好多品牌, 都改成 110V – 240V 的世界泛用電壓規格, 應該是 AC-DC 驅動器有所改良, 希望買到好貨, 不要出保固, 這算是最尖端的民用產品, 環保與否, 真的不知道, 不過跟CFL螺旋燈管的市價開始靠攏了.

Philips 14W LED bulb 5 years warranty

 

而且, 今天也很閒閒的給 WORPRESS 發了個意見回應, 可能是來亂, 忽略就好. 不然改一下程序吧, 因為實在看不懂它常常自動跳出來的那兩個統計數據代表什麼, BUG 嗎 ?

wordpress_stat_bug ?

 

 

-end

 

Arduino, 改良那八個按鍵的特製遙控器

 

http://wp.me/ph3BR-1QB

 

I have a pen I have an apple, 據說是某小孩突然著迷的口水歌, 他要把人生裡面遇到這個讓其驚喜的 YOUTUBE 片段與人分享, 多數長輩看過, 一般都認為是很無聊的洗腦歌, 然後某爸爸很感冒, 因為小孩看了又看播了又播. 不過回頭看, 人生不是很多時候很多人都是做自己很得意但是外人看來很無聊的事情嗎 !? 自我感覺良好就可以了, 不太干擾他人的話, 其實也不需要太多干涉. 成長過程大都有這樣得行為.

同樣因為自認為有需求, 搞了一個只有八個按鍵的特製遙控器, 用的是 Arduino Uno 的板子, 不是因為愛用, 是因為快速和現成山寨, 容易上手就用了, 半天就趕製了一個 [很好用] 的遙控器, 一鍵開機, 是同時開電視機, 機上盒, 音響等等, 自動轉到預定的電視節頻道, 自動打開電視盒轉台到預定的電視節目, 自動接通對應的音響設備, 日後想要怎樣改良都可, 換了其他機器也不怕, 就這三個自動的行為, 外面付錢也買不到, 量少也太專門了, 沒商家會大量生產.

不過有個問題, 就是費電池, 用筆電的壞電池閘拆除來的一個18650電池, 大約半年需要給充電池一次, 因為初步設計匆忙只用了RC延時斷電 (原理參考這篇), 停止後是完全不漏電的, 這個設計已經在很多台沒有自動關機功能的DMM, 成功改機並使用多年的結果得到證實. 20M 電阻加上 100uF 電容, 好像15分鐘才自動斷電, 把電容換成47uF, 大概也要7分鐘, 還有是要先按 [上電], 再按 [開機], 兩個按鈕動作, 給MCU供電, 然後再按 [開機] 鍵執行程序, 也是這個原因所以必須設計用了 8個按鍵, 不然7個就好. 就這兩點已經不夠人性化或便利性, 比對一般的紅外線遙控器, 用者都是隨用隨按任意按鍵, 起碼一年不用換電池的. 費電池的原因是, Arduino Uno 的板子除了 CPU 在運作, 還有其他IC和LED, 沒有按鍵動作也在耗電, 整體運作大約要 26 mA, 算是第一版的設計, 總體來說比拿著5個不同廠牌的遙控器還要記住個別的開機程序, 這個特製遙控器是真的很好了.

為了更好, 實驗, 修改設計, 用 MCU的一個腳控制 N-MOSFET 斷電, 按鍵處理完畢馬上由MCU指令斷電, 因此立刻沒有了26mA耗電, 比第一版的設計改良很多了, 可是, 故事並非那麼簡單. 實驗完畢, 必須確認成果, MCU 雖然控制斷電成功, 但是依然耗電 0.5mA, 一直到電池沒電, 長期來看, 這個第二版的設計其實很糟糕, 因為 N-MOSFET 必須安裝在 LOW-SIDE 作為電源開關, 所以怎樣改變零件的參數都會有漏電, 沒有 P-MOSFET, 不想花錢買, 也沒有用 PNP 做 HIGH-SIDE 控制, 原因是, 必然會成功僅僅解決上面提到的兩個問題的其中一點, 不夠好. 這個第二版的設計並沒有實際使用.

第一版或第二版的設計, 整體的硬件並沒有改變, 純粹是接線多了一根或缺少一根. 樣子就這樣醜醜的, 不過堪用也實用.

Arduino IR transceiver upgrade
Arduino IR transceiver upgrade

 

 

繼續為了更好, 參考別人的建議, 這次實驗, 直接讓 MCU 睡覺, 按鍵就醒來做點事情, 完畢後繼續睡覺, 這樣一來, 就會很省電, 也不再需要8個按鍵的那個 [上電] 的動作了, 同時廢掉 Arduino 那些用不上的 LED 或 IC 等等, 整個系統就只有 MCU 本身和必要的按鍵. 沒有插麵包板的 DIP, 所以用不了 ATmega328, 退而求其次, 用了一個 ATmega8, 實驗睡覺功能, 還有耗電流的測試. 比對人家的測試結果, 用一個很陽春的砲灰表, 測電流, 居然很準確, MCU 睡覺是僅僅耗電大約 0.6uA, 比對第二版的設計實驗那個 0.5mA, 降低了約 1000 倍.

實驗的電路, 結果都說明這個方法可行,

ATmega8-sleep-wakeup
ATmega8-sleep-wakeup
ATmega8-sleep-wakeup
ATmega8-sleep-wakeup

 

源嗎是抄來的, 修改了一些, 配合 Arduino Uno 的 D13 的 LED


/* ATmega8 with internal 8Mhz clock (6cycle + 64ms) */
// lfuse = 0xd4
// ref : https://gist.github.com/mkleemann/1712180
// if need to bootload Arduino, lfuse = 0xdf, set to external 16MHz xtal
// 2016-DEC-23, xiaolaba

#include <avr/io.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <util/delay.h>

int main(void)
{
//   DDRC |= (1 << PC2) | (1 << PC1);     // leds for testing
// arduino Uno, LED = D13, m328p pin 19, PB5
// uses Mega8 MCU, the same, pin 19, PB5
DDRB |= (1 << PB5); // LED for testing

DDRD &= ~(1 << PD2);    // INT0: input...
PORTD |= (1 << PD2);    // ...with pullup.

// level interrupt INT0 (low level)
MCUCR &= ~((1 << ISC01) | (1 << ISC00));

// infinite main loop
while (1)
{
// trigger leds for testing
blinkLED();
blinkLED();
blinkLED();
blinkLED();

// enable external interrupt
GICR |= (1 << INT0);

// set sleep mode
set_sleep_mode(SLEEP_MODE_PWR_DOWN);

// sleep_mode() has a possible race condition
sleep_enable();
sei();
sleep_cpu();
sleep_disable();

// waking up...
// disable external interrupt here, in case the external low pulse is too long
GICR &= ~(1 << INT0);

// disable all interrupts
cli();
}
}

void blinkLED(void)
{
PORTB ^= (1 << PB5);
_delay_ms(500);
PORTB ^= (1 << PB5);
_delay_ms(500);
}

ISR(INT0_vect)
{
// ISR might be empty, but is necessary nonetheless
//   PORTC ^= (1 << PC2);    // debugging
}

 


:1000000012C034C018C017C016C015C014C013C029
:1000100012C011C010C00FC00EC00DC00CC00BC06C
:100020000AC009C008C011241FBECFE5D4E0DEBF5E
:10003000CDBF26D043C0E4CF98B380E2982798BBC9
:100040002FEF39E698E1215030409040E1F700C0B1
:10005000000098B3892788BB2FEF39E688E121504B
:1000600030408040E1F700C0000008951F920F92D9
:100070000FB60F9211240F900FBE0F901F9018957E
:10008000BD9A8A98929A85B78C7F85BFD5DFD4DFD9
:10009000D3DFD2DF8BB780648BBF85B78F78806268
:1000A00085BF85B7806885BF7894889585B78F7739
:1000B00085BF8BB78F7B8BBFF894E8CFF894FFCFC9
:00000001FF

 

最後看看實際的運作, 這個砲灰表真的很給力, 跟人家用 HP 34401A 6位半電表量測結果 0.40uA 其實沒差多少, 當然只針對這個用途還有0.5mA降低1000倍的目標而已. 耶誕大餐早早結束, 實驗很快也做完, 紅色LED閃亮4次, MCU就睡覺了, 耗電00.6uA.

h_ttps://youtu.be/dwfQcKLv00E

 

 

下一步, 整合這些新的設計到韌體, 在自己做個比 Arduino Uno 更簡潔的硬體, 省電是最大的目標.