2016年11月18日 星期五

自製奈米塗層自動充放電機

跟大家分享我(楊以宏)最近研發的「自動充電放電機」(如下圖)


我知道大家對於冷(或熱)鹼液奈米塗層需要每六個小時放一次電都感到困擾。畢竟大家還是想要一覺到天亮,何況還得連續進行1~2週。

在之前的教學中,我使用了我自己發明的偷懶方法,把 LED 長時間接在與奈米塗層銅片連接的電線上(如下圖),不過後來跟同好邱先生聊過之後,我認為這個做法不是很妥當。


我的理解是,即使LED可以幫奈米塗層銅片放電,但是在放電之後,銅片會需要那六小時的時間慢慢從環境吸收和累積 Plasma 能量,如此下次才會有電可以放。持續放電而不讓它吸收累積似乎會讓奈米塗層銅片無法「換氣」。

所以目前我們嘗試的做法有二:
  1. 製作每六小時放電一次的「自動放電機」(之前公開的《實驗紀錄短片:奈米塗層與甘斯生產製程優化 》展示的就是這一款)。
  2. 製作可以放電及充電的「自動充放電機」(現在要介紹的是這一款)。
這裡分享的是第二種做法,用人為的電力幫奈米塗層銅片充能,如此就能在短時間內(如每十秒,而不用等六小時)就幫銅片進行一輪充電及放電。

這樣的做法銅片是否奈米塗層品質較佳,其實我們也還在測試,不過,有興趣的朋友們可以照我們的做法自己自製一台充放電機親自實驗看看。

要製作充放電機,最重要的部分就是一塊名叫 Arduino 的電路板 (請參考文章《什麼是「Maker」與「Arduino」?》)。簡單說,這塊電路板是很簡易的小型電腦,可以代替人類控制機械的運作,讓各種工作可以變得自動化。

它的詳細使用方式這裡不會介紹。只會講到與製作充放電機相關的部分。剩下請自己上網查詢。目前Arduino 被很多DIY愛好者使用,並且在網路上有很多的學習資源和範例。只要勤勞動動手使用 Google 搜尋就能找到很多教學。


要讓 Arduino 幫我們自動完成事情的前提是,我們必須先給它明確的指令,讓它知道怎麼幫我們完成事情。所以我們需要進行以下步驟:

1.用 USB 線把 Arduino 跟電腦連接在一起。
2.使用電腦上的 Arduino 專用軟體(可在 Arduino 官網下載到)寫一個指揮 Arduino 的程式。
3.把這支程式傳輸到 Arduino 上,讓它記住並從此按照程式的指示完成我們要求的工作。

這是概略的步驟,至於詳細的做法請自己上網查。

以下提供我所寫的 Arduino 程式,讓不會寫程式的朋友也可以複製貼上使用:
// 程式作者:楊以宏
// 以創用CC 「姓名標示-相同方式分享 3.0」授權發佈(詳見:https://creativecommons.org/licenses/by-sa/3.0/tw/)
const int PIN_RELAY_DISCHARGE=13;
const int PIN_RELAY_CHARGE=12;
const int PIN_LED1=11;
const int PIN_LED2=10;
const int PIN_LED3=9;
const unsigned long SEC=1000;
const unsigned long MIN=SEC*60;
const unsigned long HOUR=MIN*60;
unsigned long timeStamp=0;
unsigned long periodMs=SEC*10;//週期時間
unsigned long dischargeMs=SEC*1;//放電時間
unsigned long chargeMs=SEC*1;//脈衝時間
unsigned long halfTime=periodMs*.5;
unsigned long bothMs=dischargeMs+chargeMs;
bool firstRun=true;
void setup(){
pinMode(PIN_RELAY_DISCHARGE, OUTPUT);
pinMode(PIN_RELAY_CHARGE, OUTPUT);
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
randomSeed(analogRead(0));
Serial.begin(9600);
delay(100);
Serial.print("periodMs="+String(periodMs)+"\n");
Serial.print("dischargeMs="+String(dischargeMs)+"\n");
}
void loop(){
unsigned long currentMs=millis()-timeStamp;
if(firstRun){
currentMs=periodMs;
firstRun=false;
}
if(currentMs>=periodMs){ if(currentMs<=(periodMs+dischargeMs)){
discharge();
}else if(currentMs<=(periodMs+bothMs)){
charge();
}else{
timeStamp=millis();
clear();
}
}
delay(500); }
//放電
void discharge(){
digitalWrite(PIN_LED1,LOW);
digitalWrite(PIN_LED2,HIGH);
digitalWrite(PIN_RELAY_DISCHARGE,HIGH);
}
//脈衝
void charge(){
digitalWrite(PIN_RELAY_CHARGE,HIGH);
digitalWrite(PIN_LED1,LOW);
digitalWrite(PIN_LED2,LOW);
}
//清除所有動作
void clear(){
digitalWrite(PIN_LED1,HIGH);
digitalWrite(PIN_LED2,LOW);
digitalWrite(PIN_RELAY_CHARGE,LOW);
digitalWrite(PIN_RELAY_DISCHARGE,LOW);
}
這支程式會讓 Arduino 每十秒就放電 1 秒,然後再充電 1秒,充放電的時間不算在十秒當中,所以正確來說是 12 秒一個週期。

當然除了程式的部分外,我們還需要幫 Arduino 進行周邊的電路配線還有加裝各種零件。不然就像是一個人只有腦沒有手腳仍然什麼事情都做不成。

以下是我畫的簡易的電路圖:


其中的 D2 和 D3 腳位指的分別是我程式當中的 12 和 13 腳位。線路接好之後長得就像這樣:


盒子內部的電路:


實際的電路跟電路圖不完全一樣,因為我又多加了幾條電線及信號燈(在程式中腳位為 9、10、11),用來告訴我 Arduino 目前在什麼狀態。等候時會亮紅燈,放電時會亮黃燈,充電時則會亮藍燈(那顆透明的發出的光是藍色)。充電指示燈只有在裝置(黑色和黃色鱷魚夾)有接上奈米塗層銅片時才會亮,沒有連接時不亮。

因為奈米塗層銅片本身有電阻,尤其是好的奈米塗層電阻會特別高,如果串聯很多盒奈米塗層銅片,就可能電阻大到藍燈不亮,這是正常現象。

Arduino 左邊的板子叫做「麵包板」,是很好用的東西,我們可以把電子零件插在上面不用焊接就能形成電路。麵包板上兩個黑黑方方的東西是「繼電器」。而電阻則是使用「紅黑棕金」的200歐姆電阻兩顆(抓大概隨便挑的。照片其中有一顆搞錯弄成 1k的電阻,但反正不妨礙運作)。

好了,這就是這台自動充電放電機的構造解說。這個裝置目前也還在實驗階段,我們也還在感受和測試它的效果當中,有興趣的人就自己做一台來試試看吧。

PS:電子不是我的強項,我只擅長程式的部分,若有懂電子的高手有發現什麼瑕疵或者有更好的方案,也請多指教哦~