Presentation is loading. Please wait.

Presentation is loading. Please wait.

組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)

Similar presentations


Presentation on theme: "組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)"— Presentation transcript:

1 組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)
利用arduino製作電壓電流測試器 組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)

2 電路概念方塊圖 電壓量測: 接上arduino用origin顯示波形 原波形(110V-AC) 橋式整流 一定比例的變壓器 電流量測:
水泥電阻 霍爾IC

3 所需的材料: 霍爾IC(量測電流用),水泥電阻(20 Ω /100W) 交流變壓器(110V轉 3.3V),橋式整流器,1KΩ電阻,Arduino UNO板 電壓量測

4 電流量測

5 因為arduino無法讀到負半周,所以我們需要把負半週轉到正的, 因此我們需要橋式整流
橋式整流原理 因為arduino無法讀到負半周,所以我們需要把負半週轉到正的, 因此我們需要橋式整流 霍爾元件是一個換能器,將變化的磁場轉化為輸出電壓的變化。 電壓

6 因為我們需要測量比較大的電流,一般在實驗室的碳膜電阻無法 承受比較大的電流,因為它只有1/4W,因此我們使用了耐高電流 的水泥電阻。

7 電流量測部分的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 / ) * 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 }

8 電流量測部分的arduino程式編碼(這頁是給teraterm看的):
#define G //定義一個陣列有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 / ) * 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"); }

9 電壓量測部分的arduino程式編碼(這頁是給teraterm看的):
#define G //定義一個陣列有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");

10 TERATERM 利用teraterm 與電腦連接adruino的com 4 測量電流
將日誌檔存成 .txt 檔案 可以得到以下兩筆txt檔案 我們所抓取的資料大小為100 MB 所以每當開啟com 時日誌會自動更新 所以我們在開啟origin時 繪圖出來的圖形也會跟著檔案而改變。

11 電壓 電流

12 電壓V 大約每13個取樣點為一週期 透過teraterm 我們使用導入工具將teraterm 抓到的整列變成txt檔案再使用origin 編輯形成圖形匯出,縱向為電壓,橫向為取樣週期。 我們的橫向取值超過100點時圖形會變得很小。

13 電流A 大約每13個取樣點為一週期 透過teraterm 我們使用導入工具將teraterm 抓到的整列變成txt檔案再使用origin 編輯形成圖形匯出,縱向為電流,橫向為取樣週期。 我們的橫向取值超過100點時圖形會變得很小。

14 我們要改進的部分 1.選用即時更新且可同時顯示電壓電流的繪圖軟體 2.用一個arduino就可量取電壓電流


Download ppt "組長:林政燁(程式) 組員:戴子又(程式) 廖章祺(實接電路) 蔡振星(實接電路)"

Similar presentations


Ads by Google