2017年5月3日 星期三

零下世界-電子電路的狀態

我們分為幾個地方進行討論:在單晶片系統當中,包含了幾個元件
1.MCU
2.晶體震盪器
3.電池
下面就各個元件的狀態來說明零下的時候各個元件效應

1.MCU的工作狀態:資料來源,STM32F103 Datasheet

The devices operate from a 2.0 to 3.6 V power supply. They are available in both the –40 to +85 °C temperature range and the –40 to +105 °C extended temperature range. A comprehensive set of power-saving mode allows the design of low-power applications.

根據STM32F103的datasheet所寫,該微處理機可以適用於-40度到+85度的環境下,仍可以維持正常的操作。


2.晶體震盪器:資料來源:維基百科
晶體震盪器的溫度效應[編輯]
石英晶體的頻率特性取決於形狀或切割方式。音叉型晶體通常會切割成溫度特性是以25℃為中心的拋物線。這意味著,音叉晶體振盪器在室溫下產生的共振頻率接近其目標頻率,當溫度或增加或減少時頻率都會降低。頻率-溫度曲線為拋物線的常見32.768千赫音叉晶體的溫度係數是負百萬分之0.04/℃²。
也就是說,如不考慮製作誤差,以這種石英晶體控制頻率的時鐘,如運作在比室溫低10°C的環境下,每年會比運作在室溫下慢2分鐘;如運作在比室溫低攝氏20°C的環境下,則每年會比運作在室溫下慢8分鐘。

3.電池:詳情請見行動電源的極限:零下溫度的效應

4.結論

會被影響的元件:電池【最嚴重】、晶體震盪器【有專用SMD元件可補償溫度係數】
不會被影響的元件:微處理器晶片本身

2017年4月23日 星期日

行動電源的極限:零下溫度的效應

資料來源:https://kknews.cc/zh-tw/tech/kall5q.html

作為一種比手機和平板都要簡單的產品,移動電源應該更能適應較低的環境溫度,必經由看起來簡單的電路板和電芯組成的產品,肯定要比手機和平板這些複雜的智能產品要皮實很多。而實際情況並非如此,移動電源在低溫環境下受到的影響並不比其他智能設備少,而且由於其內在的龐大電能,其因為低溫,意外發生的危害更大。

低溫對移動電源的影響主要表現在三個方面,第一,影響電芯內導電性和物質活性,降低電池容量;第二,讓電路板容易形成霧水導致短路,第三,長時間低溫會影響鋰電池容量。

鋰電池的基本結構基本上就是正負兩級以及中間的電解液,電荷隨著化學反應的遷移和填補讓電池實現正負極的電勢差而產生電流。

鋰離子電池:以18650為例的剖面圖
電解液
電解液在低溫環境下回變稠甚至凝結,充電效率會變低

在眾多環境要素中,溫度對電池性能的影響最大。鋰電池所用的電解液作為有機液體,如同油脂,會在低溫下變粘稠甚至凝結。此時,導電的鋰鹽在裡面的活動大大受到限制,這樣的話充電效率很低,從而會導致鋰電池在低溫下充電慢,充不滿,放電亦是如此。

聚合物電芯

鋰聚合物電池也是這樣,鋰聚合物電池的正負極和電解液至少有一項使用的是高分子材料,電解質則可以使用固態或膠態高分子電解質。因此,低溫環境對鋰聚合物電池同樣有影響。
鋰電池在各種溫度下的放電行為
在雖然很多移動電源標稱的正常使用溫度都較為寬泛,但是隨著溫度的降低,鋰電池放電性能顯著下降,放電平台明顯降低,放電容量明顯減小。當溫度降至-30 ℃時,電池的放電容量為室溫放電容量的87.0%,放電平均電壓比室溫時降低了0.598V,而起存儲的能量僅為普通環境的70%左右。鋰離子電池的恆流充電容量僅為充電總容量的14%,恆壓充電時間則會變得很長。

鋰電池在-40℃低溫以下會徹底凍壞

-20度以下,0.5C與1.0C的放電曲線,低溫條件下,
高倍率放電性能惡化(岡山大學學報)
而當你長時間在低溫環境中使用,或者在-40℃ 超低溫環境中,移動電源會被「凍壞」造成永久損害。

iPad鋰電池在低溫狀態下會禁用充電功能

這是因為,理論上鋰離子電池不能在溫度低於0℃的環境下對電池充電。雖然短時間沒有什麼影響, 但是鋰電池依舊會在陽極表面上會有金屬鋰析出。而且這個過程不可逆。因此,如果在低溫下重複充電, 對電池造成損害,降低電池的安全性,特別是在受到外界的擠壓、衝擊等。

改善作法
1.自加熱電池


近日,美國EC Power公司和賓州州立大學華人團隊發明了一種新穎的高性能鋰離子電池:全氣候電池(All Climate Battery)。他們的研究成果刊登在1月20號的世界最頂級期刊《自然》上。

這種電池在零下30度的動力性能是常規鋰離子電池的10倍以上,而常溫和高溫性能不受影響。全氣候電池巧妙地利用了一種自發熱電池結構而無需複雜的外部加熱系統,使處於零下30度環境的鋰離子電池在短短30秒內迅速自加熱到零度左右,使其放電功率提高6倍以上,充電功率則提高10倍以上。而且自加熱效率高達90%。此技術有望進一步提高:自熱可縮短在幾秒之內完成。消耗電池本身的能量在1%之內。
自加熱電池
這種自加熱系統對電池的循環壽命沒有太大影響,而且增加的成本不到1美金/kW,額外增加的重量不超過電池整體重量的1.5%。全氣侯電池目前已由EC Power公司批量生產。





2017年4月20日 星期四

Arduino 筆記 Lesson 5 - 當既有IC已成極限,如何土法煉鋼-電容式按鈕-DIY

1.TTP229的極限...外接大電容的時候

BUT.......
由於友人的需求在於想要連結外部電容,透過按壓外部電容的方式進行開關的設計
因此搜尋了下一篇文章:基于 "TTP229 的电容式触摸键盘设计与实现"

手指觸摸按鍵枝等效電路圖

時間函數之公式(已經簡化的Setting Time)

這邊的t正確的定義叫做Setting Time,上述的公式是該文簡化過Setting Time後,"近似"得到的解答。

上式中,t表示振盪器的充放電時間,R 表示下拉電阻,C表示按鍵等效電容,V2 表示振蕩器充電和放電的初始電壓,V1表示振盪器充電和放電的截止電壓,而Vt則代表了振盪器在振蕩週期 t時刻時電容上的電壓值。

當電源的開關斷開時,按鍵所構成的感應電容 C電壓被 下拉電阻R 拉低,此時按鍵所構成的電容的電壓為0。當將開關閉合時,由電源為按鍵所構成的電容C充電。待其充電穩 定後,開關斷開,此時電容C通過電阻R,進行放電,直至電量 完全放盡,電壓再次歸零。利用計時器 T記錄這個充電和放電的時間,反復進行該過程。如果手指未觸摸按鍵其充放電時間t不變! 如果手指觸摸按鍵,那麼上述公式中的 C 變化為 C+ΔC,所得充放電時間變會變為t+Δt,通過Δt來判定按鍵 是否被按下"


為什麼在本次任務當中,無法使用TTP229這款晶片呢?

原因就出在C的部分。由於本次的專案當中,電容的部分都非常的龐大,然而對TTP229而言,其掃描的頻率以及R值都已經是被固定的了,因此他們的電容範圍可選擇有限,不敷本次專案所需要的目標。

所以可能要朝向土法煉鋼來進行。

2. DIY 電容感測

資料來源:電容式觸控開關實驗(一):RC延時電路應用

這邊綜合一下這篇原文以及改用STM32F103C8T6板子來做相同的事情

本實驗將使用簡單的材料製作電容式觸控開關控制LED。
自製的觸控板


實驗材料
Arduino Uno控制板一片
電阻:1MΩ, 10MΩ, 22MΩ,為了要測試所以選擇不同的電阻
公對母連接線×3
原文當中採用鋁箔紙,然而鋁箔紙其實非常的不容易焊接,很容易掉
因此後來筆者與原文不同的地方,這邊採用銅箔的方式進行焊接

實驗電路與麵包板組裝示範

本單元的實驗電路如下,全部的1MΩ電阻的一端都連接到同一個數位腳(此處為第4腳,可改用其他腳位),電阻的另一端連接到不同的數位腳,以及充當「觸控感測端」的鋁箔紙,你可以嘗試其他導體,像銅箔或香蕉芭樂之類的東東。
電容觸控感測電路
使用麵包板組裝電路的示範如下,用迴紋針固定電阻的一端和鋁箔紙:
麵包板組裝電容式觸控電路
筆者把觸控電路焊接在PCB板,鋁箔紙用白膠黏貼:
焊接好的電容式觸控介面


這是我自己做的....

電容觸控與RC電路的原理

本實驗程式將在電阻的一端(數位第4腳)發送脈衝訊號,在沒有人體碰觸感測介面情況下,該脈衝訊號幾乎原封不動地傳送到電阻的另一端:
單一電阻
當手指靠近感測端時,手指和感測端的導體(鋁箔)之間會形成電容,相當於電阻的另一端接了一個電容器:
人體觸摸電阻
電容的基本結構像下圖一樣,用兩片導體、中間以絕緣介質(如:空氣、雲母、陶瓷…)隔離。當兩端導體通電時,導體就會聚集正、負電荷,形成「電的容器」。
電容的結構
左下圖是用電阻(R)電容(C)組成的基本RC電路。對電容通電時,電容將開始儲存電荷,直到注滿到電壓的相同準位;斷電時,電容會開始放電,直到降到0(亦即,「接地」的準位)。
電容充、放電
在充電過程中,電流與電容電壓的變化量受到電阻與電容值影響。電阻R與電容值C的乘積稱為時間常數(time constant),寫成希臘字母τ(唸作“tau”),有時也直接用英文字母t代表:
τ= RC
電容充電到約70%(實際為63.2%)僅需花費一個時間常數,充到飽和(約99.3%)需要5個時間常數;電阻或電容值愈大,充電所需時間也愈長。電容放電時,在一個時間常數之後,約剩下40%(實際為36.8%)。
因此,向電阻的一端輸入脈衝訊號,當手指接觸電阻另一端時,輸出脈衝的高、低電位時間將被「延後」。程式透過比對輸入和輸出的脈衝時間,就能得知是否有人碰觸到感應器(鋁箔)。
電容充、放電影響脈衝訊號
感測端的電容量,與手指和感應器的距離成反比。本單元程式採用Paul Stoffregen撰寫的Captivative Sensor程式庫,此程式庫的說明頁指出,電路中的電阻值可介於100KΩ~50MΩ,阻值越大越靈敏但反應變遲鈍:
  • 若要偵測手指是否碰觸到感測面,請使用1MΩ
  • 若要偵測4~6吋(註:1吋=2.54公分)的距離,請使用10MΩ。
  • 若要偵測12~24吋的距離(視感測面的金屬片尺寸而定),請使用40MΩ。市面所能買到的最大電阻值為10MΩ,請自行串連4個電阻。
說明頁也提到,在感測端加上一個100pF的電容(標示為101),可增加檢測的穩定性。
連接100pF電容

觸控開關實驗程式

下載CaptivativeSensor程式庫、解壓縮之後,筆者將它重新命名成“CaptivativeSensor”,存入Arduino的libraries資料夾:
CaptivativeSensor程式庫資料夾
開啟Arduino IDE,選擇「檔案→範例→CapacitiveSensor→CapacitiveSensorScketch」,開啟程式庫提供的範例程式。此範例程式的感測脈衝訊號發射腳是4,接收腳是2, 6和8,請將它們改成5, 6, 7:
CapacitiveSensor指令
這邊又要來比對一下Arduino UNO以及STM32F103C8T6的PIN腳位





其餘程式碼不用改。編譯並上傳到Arduino控制板之後,開啟序列埠監控視窗,這是尚未碰觸任何感應介面的輸出:
未碰觸任何感應接點的輸出
碰觸感應介面的結果:
碰觸感應介面的輸出

CapacitiveSensor程式庫的方法

CapacitiveSensor程式庫包含3個主要方法以及一些工具方法:
CapacitiveSensor CapacitiveSensor(byte 脈衝發射腳, byte 感測腳)
CapacitiveSensor用於建立程式庫的物件實體(請留意大小寫)。
long capacitiveSensorRaw(byte 取樣數)
capacitiveSensorRaw將傳回長整數類型的原始電容值,「取樣數」參數可用於增加傳回值的解析度,其代價是處理效能降低。傳回的電容值並非取樣數的平均,也不包含總電容量數。
capacitiveSensorRaw將傳回-2,若電容值超過CS_Timeout_Millis(偵測超時)定義的毫秒值。CS_Timeout_Millis預設為2000毫秒(2秒)。
long capacitiveSensor(byte 取樣數)
capacitiveSensor將傳回長整數類型的感應電容值,capacitiveSensor會紀錄未感測到碰觸時的最低電容值,並且用碰觸時的電容量與之相減。
最低容量值每隔一段時間(由CS_Autocal_Millis定義)重新校正一次,預設校正間隔時間是200000 毫秒(20秒)。此重新校正機制可透過設定一個很大的數值(0xFFFFFFFF)給CS_Autocal_Millis來關閉。
void set_CS_Timeout_Millis(unsigned long 超時毫秒數)
set_CS_Timeout_Millis方法用於設定CS_Timeout_Millis的值,來設定等待感測端訊號跟著發射端高、低變化的超時毫秒值。在等待感應脈衝變化之間,程式會暫停運作,所以必須設定超時,預設為2000毫秒(2秒)。
void reset_CS_AutoCal()
立即校正capacitiveSensor函式的電容值
void set_CS_AutocaL_Millis(unsigned long 自訂校正的毫秒數)
設定capacitiveSensor函式超時間隔。給定”0xFFFFFFFF”數值可關閉自動校正功能。

觸控LED開關

底下的程式將能在感測到使用者碰觸時點亮LED,筆者設定的電容臨界值是1500,請依照你的測試結果調整此值。

零下世界-電子電路的狀態

我們分為幾個地方進行討論:在單晶片系統當中,包含了幾個元件 1.MCU 2.晶體震盪器 3.電池 下面就各個元件的狀態來說明零下的時候各個元件效應 1.MCU的工作狀態:資料來源, STM32F103 Datasheet The devices operate f...