2015年1月19日

arduino測試電池電壓與內阻

週末看到SciCore社團裡,江老師出了一道問題,要用SciCore量測電池電量


一般大家家裡都有很多充電電池,乾電池,相機電池,如果能夠準確知道電量就可以更方便使用跟掌握充電時機。電池電量的量測不只是電壓還包括內阻的大小,本周使用SciCore有能力量出電池的狀態而也可以完美的顯示出來,期待有巧思跟願意解救大家的朋友能來解決這問題!


先前在《Arduino自造指南:從65個專案玩透Arduino》這本書裡看過量電池電壓的方式,基本上照著作就行,比較麻煩的是要量電池內阻,這我就從來沒經驗,因此上網找了一些資料。


1.電壓源內阻測量儀
2.電池內阻測試儀
第一篇和第二篇作的方法類似,就是先直接測量電池電壓(開路電壓),再把電池和一個電阻串聯之後再量電池有負載的時候的電壓(負載電壓)。因為那個電阻是已知的,所以就可以用這樣的公式去求得。

電池內阻=(開路電壓-負載電壓)/(負載電壓/負載電阻)


3.簡易電池內阻測試儀製作
而這第三篇是使用交流阻抗的方式來測電池。零件為555IC加上LM317定電流給予50mA,1K Hz的交流訊號,使用電錶的交流200mV檔,測量電池兩端的電壓降,如果測得10mV,則電阻就是100毫歐。不過我還不知道arduino怎麼測得交流電壓,所以就先記著,以後再做。


現在就來看成品,測量的結果會輸出到LCD上面,分別顯示電壓和電池內阻。電池老化,或是沒電,電池內阻就會越大。

電池測試


配線則是這樣,會用到的零件包括
10歐姆、1k歐姆、2.2k歐姆、10k歐姆兩個、一個2n2222的電晶體,還有一個100nF的電容

arduino製作電池測試器


這個電路分三個部份來看

分壓電路
右邊的部份是用兩個10k歐姆的電阻作分壓電路,目的在提供外部參考電壓2.5v給arduino(連接AREF)。因為arduino預設都是用5v來作參考電壓,把參考電壓減少,就可以增加解析度。兩個電阻務必用電錶先量過,確定兩個都一樣電阻。理論上我這樣作可以提供2.5v的電壓,不過我這樣分出來的電壓卻不到2.5v

液晶螢幕
使用I2C的LCD,連接SDA、SCL、VCC和GND

電池測量
一般使用A0的腳位測量開路電壓,當D13送出高電位的訊號後,會讓電晶體像開關一樣,讓電池和10歐姆的電阻串聯,這時候A0測的電壓就是負載電壓了。


Arduino的程式
就直接貼這了

************************************************
#include  
#include


//液晶顯示螢幕
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display


int controlPin = 13;  //電晶體開關pin
int analogValue = 0;
int sumOpen= 0;   //開路電壓多次計算總和
int sumLoad= 0;   //負載電壓多次計算總和
float voltageOpen=0;  //開路電壓
float voltageLoad=0;  //負載電壓
int loadR=10;  //負載的電阻值


void setup()
{
  //使用外部參考電壓
  analogReference(EXTERNAL);
  lcd.init();

  Serial.begin(9600);

  lcd.backlight();
  pinMode(controlPin, OUTPUT);

}

void loop()
{
  sumOpen=0;
  sumLoad  =0;
  digitalWrite(controlPin, LOW);
 
  //重複測量五次開路電壓
  for(int i=1;i<6 i="" p="">    analogValue = analogRead(0);
    sumOpen= analogValue+sumOpen;
  }
 
  //參考電壓為5/2=2.5v    2.5/1024=0.0024  因此將測量的類比值乘0.0024得到測量電壓
  voltageOpen = 0.0024*(sumOpen/5);
  delay(100);

  digitalWrite(controlPin, HIGH);
  delay(4000);
 
    //重複測量五次負載電壓
  for(int i=1;i<6 i="" p="">    analogValue = analogRead(0);
    sumLoad= analogValue+sumLoad;
  }
  voltageLoad = 0.0024*(sumLoad/5);
  digitalWrite(controlPin, LOW);
 
  //電池內阻的計算方式為(開路電壓-負載電壓)/通過電流
  float InR=1000*(voltageOpen-voltageLoad)/(voltageLoad/loadR);

  delay(1000);

  lcd.setCursor(0, 0);
  lcd.print(voltageOpen);
  lcd.print(" V                   ");
  lcd.print(" ");
  lcd.setCursor(0, 1);
  lcd.print(InR);
  lcd.print("  mOhm               ");
}

************************************************

搞這東西跟生物有關嗎?喔,當然有的,我學到了交流阻抗的測量方式,這可以用來測細胞膜的阻抗耶,之後就可以來玩玩囉。


2015年1月18日

用洗滌瓶測植物的呼吸作用

這個作法是從別的老師那學來的,不過我不知道是誰想到的,只記得是某個外校老師告訴我,他們學校生物老師會這麼作,然後我就這麼學來了。

這個實驗作的是檢測發芽綠豆是否產生二氧化碳,而取得瓶中氣體的方式,課本上的作法是用廣口瓶或是錐形瓶,弄個塞子塞住之後,上面插漏斗和一根玻璃管,藉由倒水進入瓶子後,把瓶內氣體擠出。

上述的作法,其實用到的工具很多,要塞子、玻璃管、廣口瓶、燒杯...,替換成用洗滌瓶就可以搞定了。

洗滌瓶

生物複習課-雙向連接的概念圖

要複習生物,也別總是老師一個人在講。怕是老師講了一整節,增長的只有老師對課程的熟稔而已,而學生沒有建立完整概念,聽也枉然。

既然我要複習,我想做的就是「幫助學生建立概念」,過去學的片段知識,就像是個別的神經細胞,我得創造機會讓學生把神經細胞串連起來。

這個複習活動就是要作這樣的事情。黑板中間畫一條線,左邊寫上光合作用,右邊寫上呼吸作用,每個名詞外面都要框起來,接下來分成四個階段進行。

全班分兩大組,一組負責光合作用,另一組則是呼吸作用。

一次一個人上台,在黑板現有的名詞旁邊拉線寫上直接相關的名詞,例如光合作用可以連葉子,呼吸作用可以連氧氣。而第二個上台的人,可以就黑板上已經有的兩個名詞連線寫新的名詞。看起來好像越後面越好寫是嗎?不過這不太一定。

整個進行的過程因為得不斷搜尋名詞尋找連結,我相信此時腦中應該也會建立一些真實的突觸連結吧?

雙向連接概念圖_04


雙向連接概念圖



當所有人輪完之後,第二階段就是兩組交換寫,並且改用黃筆來書寫,這也可以再度促進零碎概念的提取。
雙向連接概念圖_05

雙向連接概念圖_06



第三階段,把中間分隔線擦掉,抽籤請同學上台,一次一個,不寫字,只畫線,用紅筆把左右相關的名詞連線。
雙向連接概念圖_08

這步的規則可以很多種,一開始可以規定「連過的不能再連」,當最後都連不動時,可以開放「同一名詞可以連兩次」,或者允許「寫一組名詞,將左右名詞連結」

全班輪完之後,應該還有數個名詞沒連到,再進入第四階段,請自願學生找出沒連線的名詞組,將其串連起來。

在整體的進行過程中,學生一定會有寫錯的,所以我會規定一次都是一個人上台,這樣才能讓我即時指導,或是讓學生在台上直接說明連結的理由。

「尋找葡萄糖」的生物複習活動

學期到了最後,上完了全數六個單元,每個看似獨立的小單元,其實有著數條軸線貫穿整個生物課本。

有別於下冊談的個體之間的關係,生物上冊講的則是生物個體內的運作,而那條貫穿各單元的軸線在哪呢?其實就是「葡萄糖」,這是一個從第一章到第六章都在談的概念-生物需要能量才能活下去。


怎麼讓學生把這些散布各章節的概念抓出來統整呢?我試了不同的方法,剛開始是讓學生們分組去找整冊的概念寫在紙上,再分組上台報告。後來改讓各組找不同章節,由我來在黑板統整成這樣的圖。


葡萄糖


後來我改成每組自行上台寫黑板,寫出來的東西就密密麻麻一堆了。怎麼找關鍵字呢?直接翻找課本或筆記,找「葡萄糖」、「醣類」、「養分」就一堆了。


尋找葡萄糖_05


尋找葡萄糖_06

尋找葡萄糖_02

寫完了,然後呢?

重點在於提問引導思考,以下是我提問的順序與希望引導的概念,回答問題的同時我也從學生寫的黑板整理中,帶學生看這些答案。


  1. 為什麼我們需要葡萄糖?(需要葡萄糖來產生能量)
  2. 葡萄糖能產生的能量有多少?(4Kcal/g)
  3. 能量可以幹嘛?摸自己的身體感覺一下(提供熱能,維持體溫)
  4. 為什麼要維持體溫?(酵素活性)
  5. 你的哪裡在控制體溫恆定?(下視丘)
  6. 因為要維持體溫,所以你得一直作哪些事情(吃吃吃吃)
  7. 我們用什麼方式從葡萄糖裡得到能量?(呼吸作用)
  8. 呼吸作用是在細胞的哪裡進行?(粒線體,又稱細胞的發電廠)
  9. 呼吸作用需要哪些物質?(氧氣、葡萄糖)
  10. 呼吸作用是分解養分的過程,這是細胞的代謝作用之一。能夠促進細胞代謝的激素是?(甲狀腺)
  11. 葡萄糖怎麼進入細胞的?(通過膜上蛋白質通道)
  12. 氧氣怎麼進入細胞的?(擴散作用)
  13. 我們身體細胞需要的葡萄糖是從哪邊來的(血液運送來的)
  14. 是血液裡的血球還是血漿運送來的?(血漿)
  15. 呼吸作用的另一原料,氧氣又是怎麼送的?(紅血球)
  16. 血漿運送葡萄糖,那在血液裡的葡萄糖叫做什麼?(血糖)
  17. 我們需要什麼激素來促進血糖要進入細胞(胰島素)
  18. 血糖進入細胞,除了拿來用以外,還可以拿來幹嘛?(存起來)。存到哪裡去?(肝臟、肌肉)
  19. 存起來,如果要用的話,怎麼拿來用?哪些激素會促進把存起來的肝糖拿來用?(腎上腺、升糖素)
  20. 腎上腺素和升糖素作用時機、作用方式有什麼不同?(腎上腺素應付緊張、戰鬥...,還會影響心臟、血管)
  21. 血液裡頭的糖是怎麼來的?(肝糖分解、飲食)
  22. 飲食得到的糖,通常都是吃下醣類大分子來變成葡萄糖的。那個醣類的大分子是什麼?(澱粉)
  23. 澱粉怎麼變成葡萄糖?(酵素)哪些地方分泌的酵素?(唾腺、胰臟、腸腺)
  24. 變成葡萄糖以後,怎麼進入血裡變血糖?(小腸絨毛吸收)
  25. 回到澱粉的部份,澱粉是動物製造的還是植物?(植物)
  26. 你吃植物的哪些構造可以得到很多澱粉?從健康教育來想,課本有學過的六大類食物(五穀根莖類)
  27. 我們分開來講五穀根莖類,先講根莖類,植物把澱粉存在根莖幹嘛?(將來可以用)
  28. 植物的澱粉是怎麼來的?(葡萄糖變成的)
  29. 植物的葡萄糖怎麼製造出來的?(行光合作用)
  30. 植物行光合作用的器官是哪裡?(葉子)
  31. 葉子行光合作用,可是澱粉存在根莖,那是怎麼從葉子移動到根莖的?(維管束、韌皮部)
  32. 植物把葉子存在根莖,那將來怎麼拿來用?(維管束、韌皮部)
  33. 植物需要行光合作用,會有哪些對環境的感應現象?(向光性、向地性、向觸性)
  34. 剛講的五穀根莖類,五穀是什麼?(米、麥、玉米...)
  35. 米、麥、玉米粒那些是植物的什麼器官?(生殖器官,果實、種子)
  36. 植物把澱粉存在根莖,可以給自己用,那存在果實種子呢,是要幹嘛?(給小孩用)
  37. 植物行光合作用製造葡萄糖,只有變澱粉嗎?還可以變成什麼?(蛋白質、脂質、纖維素)
  38. 纖維素可以構成植物細胞的那個構造?(細胞壁)
  39. 你可以當葡萄糖是迷你小樂高積木,纖維素就像是這些迷你小積木組成的大積木,植物就拿這些纖維素大積木組成了細胞壁,所以植物幾乎可說是全身都是葡萄糖小積木組成的,那為什麼我們不能乾脆啃木頭來吃呢?(不能消化,缺纖維素酵素)
  40. 想想全世界最高的生物是什麼?(樹),憑什麼可以長這麼高?(細胞壁)
  41. 植物作葡萄糖出來,有哪些用途(給自己產生能量用,或是組成身體)
  42. 葡萄糖既然能產生能量,那葡萄糖裡頭的能量是哪裡來的?從光合作用想一想(太陽)
  43. 我們一開始學到的生命生存要素有哪些(水、空氣、陽光、養分)
  44. 回頭想一想,你學的生命現象,生殖、生長、感應、代謝,其中的代謝,我們學了哪些現象或是作用是代謝?(光合作用、呼吸作用)
  45. 哪些現象又是感應?(植物的向性、觸發運動、動物的驅性、感覺...)
  46. 現在請想想陽光對我們有什麼重要?(提供能量給植物合成葡萄糖,我們再利用葡萄糖裡的能量)
  47. 請再順一次流程,植物曬太陽,跟我們維持體溫/活下來有什麼關係?

2015年1月4日

Arduino+IR發射接收製作水波記錄器

這次的目標是要測水波的擾動,基本上是希望能把水波視覺化呈現出來。
本想用超音波發射和接收器,直接偵測水面的高低,不過想到解析度可能沒那麼高,於是換了別的想法。

用光線來偵測好了,基本原則就是光線水面下打上來,另外擺一個偵測器在水面上偵測光照的改變量。

第一個想到的是光敏電阻,不過光敏電阻的響應時間太長,我覺得不太適用。於是改用了兩種組合,

第一種水面下放超亮白LED燈,水面上用光電二極體SP1KL,呈現結果就如下面影片囉。

接法是參考這邊的簡單接法,SP1KL的Datasheet在此
測水波_04






第二種則是水面下放紅外線LED,水面上則是用紅外線接收的光電二極體,我覺得這個效果比較好。
測水波_03


測試的接法是這樣,用個固定夾子把IR接收抬高,底下則是用IR LED照射
測水波_02



LED要讓它放在水裡,一定要作防水,我找了相機的防水盒,就把光源放在裡頭。
測水波_06


不過目前還沒想到怎麼固定在水下,所以測試時暫時用手壓著。
測水波


至於Arduino裡的寫法,非常簡單,就這樣。最後用終端機接收後,把資料複製下來就可以作進一步利用了。


int sensorPin = 0;
int val =0;
unsigned long time;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  time=millis();
  val = analogRead(sensorPin);
  Serial.print(time);
  Serial.print(',');
  Serial.println(val);
}

你可能對這有興趣

Related Posts Plugin for WordPress, Blogger...