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

در این پروژه قصد داریم تا یک آمپرمتر دیجیتال با استفاده از آردوینو و یک ال سی دی 16 در 2 طراحی کنیم. همچنین نحوه ی اندازه گیری جریان گذری از یک مقاومت را با آن که به صورت موازی با آن قرار داده شده است را یاد خواهیم گرفت. آمپر متر ارائه شده در این جا می تواند جریانی از 0 تا 2 آمپر را با دقتی قابل قبول اندازه گیری کند.
نحوه ی کار کرد :
دو نوع آمپر متر وجود دارد. یکی دیجیتال و دیگری آنالوگ که نحوه ی کار کرد این متفاومت است. اما همه از یک اساس مشترک یعنی مقاومت موازی استفاده می کنند. مقاومت موازی یک مقاومت بسیار کوچک است که منبع و بار در هنگام اندازه گیری قرار می گیرد. ولتاژ دوطرف مقاومت موازی متفاوت است بنابراین با مقایسه ی ولتاژ دو طرف آن و تقسیم آن بر مقدار مقاومت می توان جریان گذری از مقاومت موازی را محاسبه کرد.
اکنون به بررسی شیوه ی انتخاب مقاومت موازی مورد نظر می پردازیم. آردوینو بر اساس تبدیل 10 بیتی آنالوگ به دیجیتال ساخته شده است. همچنین آردوینو می تواند ولتاژی بین 0 تا 5 ولت را بین 0 تا 1023 سطح ولتاژ متفاوت تبدیل کند. بنابراین رزولوشن این مبدل آنالوگ به دیجیتال چیزی در حدود 1.88 میلی ولت بر هر سطح است. پس
(حداقل رزولوشن آمپرمتر)4.88/2= 2.44 یا 2.5 اهم
بنابراین مقاومت مورد نظر ما 2.5 اهم است که می توان با موازی کردن مقاومت 100 اهمی با توان 2 وات به آن رسید.
شماتیک مدار و اتصالات آن:

همان طور که مشاهده می شود در شکل بالا شماتیک و اتصالات مدار آمپرمتر با استفاده از آردوینو را مشاهده می کنید. اتصلات بسیار ساده هستند . ابتدا پتانسیومتر 10 کیلویی را برای دست یابی به کنتراست مناسب ال سی دی تنظیم کنید. اتصالات را همانند بالا ببندید و سپس کد برنامه ی زیر را در آردوینو بریزید. توجه کنید که پلاریته ی تغذیه ی بار ورودی را عوض نکنید.
دانلود کد برنامه آمپر متر دیجیتال با استفاده از آردوینو:
[maxbutton id=”226″ url=”http://avatrobo.ir/wp-content/uploads/2018/05/ammeter.txt” ]
#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);
}
پست های مرتبط
اردیبهشت 9, 1398
اسفند 5, 1397
بهمن 2, 1397
دیدگاهتان را بنویسید