組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路) 利用arduino製作電壓電流測試器 組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)
電路概念方塊圖 電壓量測: 接上arduino用origin顯示波形 原波形(110V-AC) 橋式整流 一定比例的變壓器 電流量測: 水泥電阻 霍爾IC
所需的材料: 霍爾IC(量測電流用),水泥電阻(20 Ω /100W) 交流變壓器(110V轉 3.3V),橋式整流器,1KΩ電阻,Arduino UNO板 電壓量測
電流量測
因為arduino無法讀到負半周,所以我們需要把負半週轉到正的, 因此我們需要橋式整流 橋式整流原理 因為arduino無法讀到負半周,所以我們需要把負半週轉到正的, 因此我們需要橋式整流 霍爾元件是一個換能器,將變化的磁場轉化為輸出電壓的變化。 電壓
因為我們需要測量比較大的電流,一般在實驗室的碳膜電阻無法 承受比較大的電流,因為它只有1/4W,因此我們使用了耐高電流 的水泥電阻。
電流量測部分的arduino程式編碼(這頁是給人看的): const int analogIn = A0; int mVperAmp = 198; // 198 for 5V & 66 for 30A Module int RawValue= 0; int ACSoffset = 2500; //回授電壓mV double Voltage = 0; double Amps = 0; void setup(){ Serial.begin(9600);} void loop(){ RawValue = analogRead(analogIn); Voltage = (RawValue / 1024.0) * 5000; // Gets you mV Amps = ((Voltage - ACSoffset) / mVperAmp);//霍爾元件所測量之電流量 Serial.print("Raw Value = " ); // shows pre-scaled value Serial.print(RawValue); Serial.print("\t mV = "); // shows the voltage measured Serial.print(Voltage,3); // the '3' after voltage allows you to display 3 digits after decimal point Serial.print("\t Amps = "); // shows the voltage measured Serial.println(Amps,3); // the '3' after voltage allows you to display 3 digits after decimal point }
電流量測部分的arduino程式編碼(這頁是給teraterm看的): #define G 8 //定義一個陣列有8行 float a[G]; int temp; const int analogIn = A0; int mVperAmp = 198; // 198 for 5V & 66 for 30A Module int RawValue= 0; int ACSoffset = 2500; //回授電壓 double Voltage = 0; double Amps = 0; void setup(){ Serial.begin(9600);} void loop(){ RawValue = analogRead(analogIn); Voltage = (RawValue / 1024.0) * 5000; // Gets you mV Amps = ((Voltage - ACSoffset) / mVperAmp);//霍爾元件所測量之電流量 a[G-1] = Amps; //arduino吃5V(浮點數),換算成0~1023的值後,就可以反推原始的電壓值 for(int i=0;i<G;i++) //陣列取值 {Serial.print(a[i]); Serial.print("\t"); } for(int i=0;i<=G-2;i++) {a[i]=a[i+1]; Serial.print("\n"); }
電壓量測部分的arduino程式編碼(這頁是給teraterm看的): #define G 8 //定義一個陣列有8行 float a[G]; int temp; void setup() { Serial.begin(9600);} void loop() { a[G-1] = 5*(float)analogRead(A0)/1023; //arduino吃5V(浮點數),換算成0~1023的值後,就可以反推原始的電壓值 for(int i=0;i<G;i++) {Serial.print(a[i]); Serial.print("\t"); } for(int i=0;i<=G-2;i++) // {a[i]=a[i+1]; Serial.print("\n");
TERATERM 利用teraterm 與電腦連接adruino的com 4 測量電流 將日誌檔存成 .txt 檔案 可以得到以下兩筆txt檔案 我們所抓取的資料大小為100 MB 所以每當開啟com 時日誌會自動更新 所以我們在開啟origin時 繪圖出來的圖形也會跟著檔案而改變。
電壓 電流
電壓V 大約每13個取樣點為一週期 透過teraterm 我們使用導入工具將teraterm 抓到的整列變成txt檔案再使用origin 編輯形成圖形匯出,縱向為電壓,橫向為取樣週期。 我們的橫向取值超過100點時圖形會變得很小。
電流A 大約每13個取樣點為一週期 透過teraterm 我們使用導入工具將teraterm 抓到的整列變成txt檔案再使用origin 編輯形成圖形匯出,縱向為電流,橫向為取樣週期。 我們的橫向取值超過100點時圖形會變得很小。
我們要改進的部分 1.選用即時更新且可同時顯示電壓電流的繪圖軟體 2.用一個arduino就可量取電壓電流