
به نام خدا
پروژه ی ساخت آمپر متر دیجیتال با استفاده از آردوینو

در این پروژه قصد داریم تا یک آمپرمتر دیجیتال با استفاده از آردوینو و یک ال سی دی ۱۶ در ۲ طراحی کنیم. همچنین نحوه ی اندازه گیری جریان گذری از یک مقاومت را با آن که به صورت موازی با آن قرار داده شده است را یاد خواهیم گرفت. آمپر متر ارائه شده در این جا می تواند جریانی از ۰ تا ۲ آمپر را با دقتی قابل قبول اندازه گیری کند.
نحوه ی کار کرد :
دو نوع آمپر متر وجود دارد. یکی دیجیتال و دیگری آنالوگ که نحوه ی کار کرد این متفاومت است. اما همه از یک اساس مشترک یعنی مقاومت موازی استفاده می کنند. مقاومت موازی یک مقاومت بسیار کوچک است که منبع و بار در هنگام اندازه گیری قرار می گیرد. ولتاژ دوطرف مقاومت موازی متفاوت است بنابراین با مقایسه ی ولتاژ دو طرف آن و تقسیم آن بر مقدار مقاومت می توان جریان گذری از مقاومت موازی را محاسبه کرد.
اکنون به بررسی شیوه ی انتخاب مقاومت موازی مورد نظر می پردازیم. آردوینو بر اساس تبدیل ۱۰ بیتی آنالوگ به دیجیتال ساخته شده است. همچنین آردوینو می تواند ولتاژی بین ۰ تا ۵ ولت را بین ۰ تا ۱۰۲۳ سطح ولتاژ متفاوت تبدیل کند. بنابراین رزولوشن این مبدل آنالوگ به دیجیتال چیزی در حدود ۱٫۸۸ میلی ولت بر هر سطح است. پس
(حداقل رزولوشن آمپرمتر)۴٫۸۸/۲= ۲٫۴۴ یا ۲٫۵ اهم
بنابراین مقاومت مورد نظر ما ۲٫۵ اهم است که می توان با موازی کردن مقاومت ۱۰۰ اهمی با توان ۲ وات به آن رسید.
شماتیک مدار و اتصالات آن:

همان طور که مشاهده می شود در شکل بالا شماتیک و اتصالات مدار آمپرمتر با استفاده از آردوینو را مشاهده می کنید. اتصلات بسیار ساده هستند . ابتدا پتانسیومتر ۱۰ کیلویی را برای دست یابی به کنتراست مناسب ال سی دی تنظیم کنید. اتصالات را همانند بالا ببندید و سپس کد برنامه ی زیر را در آردوینو بریزید. توجه کنید که پلاریته ی تغذیه ی بار ورودی را عوض نکنید.
دانلود کد برنامه آمپر متر دیجیتال با استفاده از آردوینو:
دانلود فایل
#include <LiquidCrystal.h>
#define input_1 A0
#define input_2 A1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int AnalogValue = 0;
int PeakVoltage = 0;
float AverageVoltage = 0;
float input_A0 = 0;
float input_A1 = 0;
float output = 0;
float Resolution = 0.00488;
unsigned long sample = 0;
int threshold = 1000;
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
}
void loop()
{
PeakVoltage = 0;
for(sample = 0; sample < 5000; sample ++)
{
AnalogValue = analogRead(input_1);
if(PeakVoltage < AnalogValue)
{
PeakVoltage = AnalogValue;
}
else
{
delayMicroseconds(10);
}
}
input_A0 = PeakVoltage * Resolution;
PeakVoltage = 0;
for(sample = 0; sample < 5000; sample ++)
{
AnalogValue = analogRead(input_2);
if(PeakVoltage < AnalogValue)
{
PeakVoltage = AnalogValue;
}
else
{
delayMicroseconds(10);
}
}
input_A1 = PeakVoltage * Resolution;
output = (input_A0 - input_A1) * 100;
output = output * 4;
while(analogRead(input_A0) >= threshold)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reached Maximum");
lcd.setCursor(0,1);
lcd.print("Limit!!!");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Disconnect now!!");
delay(1000);
}
while(analogRead(input_A0) >= threshold)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reached Maximum");
lcd.setCursor(0,1);
lcd.print("Limit!!!");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Disconnect now!!");
delay(1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DIGITAL AMMETER");
lcd.setCursor(0,1);
lcd.print(output);
lcd.print(" mA");
Serial.print("Volatge Level at A0 = ");
Serial.println(analogRead(input_A0));
Serial.print("Volatge Level at A1 = ");
Serial.println(analogRead(input_A1));
Serial.println("------------------------------");
delay(1000);
}
دیدگاهها (0)