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

آموزش راه‌ اندازی سنسور ولتاژ با استفاده از آردوینو

اگر راه‌ اندازی سنسور ولتاژ برای تنظیم میزان ولتاژ ورودی میکروکنترلری چون آردوینو به چالش جدیدی برای شما تبدیل شده است یا در مراحل کدنویسی و ایجاد بازه ولتاژ ورود به مشکل برخورد نموده اید٬ پیشنهاد می کنیم پس از مطالعه و یادگیری این آموزش بار دیگر شانس خود را امتحان نمایید و این ماژول را راه اندازی کنید.

مهم است بدانید که آردوینو Uno مانند بسیاری از میکروکنترلرها دارای یک مبدل آنالوگ به دیجیتال (ADC) داخلی است که می‌تواند ولتاژ آنالوگِ روی یک پایه را به عدد دیجیتال تبدیل کند. با این حال، حداکثر ولتاژ پایه ورودی آنالوگ به 5 ولت محدود شده است. اگر پروژه شما به اندازه‌گیری ولتاژهای بزرگ‌تر از 5 ولت نیاز داشته باشد، ممکن است این محدودیت برای شما ناخوشایند باشد. در چنین مواردی می‌توانید با استفاده از دو یا چند مقاومت، یک مقسم ولتاژ ایجاد کنید.

آموزش راه‌ اندازی سنسور ولتاژ با استفاده از آردوینو

اما راه ساده‌تری برای اندازه‌گیری ولتاژ به خصوص ولتاژ کمتر از 25 ولت وجود دارد: از ماژول سنسور ولتاژ استفاده کنید. سنسور ولتاژ یک مدار مقسم ولتاژ از پیش ساخته شده است که از مقاومت‌های با دقت بالا برای خواندن دقیق مقادیر آنالوگ استفاده می‌کند.

برای اندازه‌گیری آسان‌تر و بهینه‌تر ولتاژ، نحوه استفاده از سنسور ولتاژ با آردوینو را به شما آموزش خواهیم داد. پس بیایید شروع کنیم!

بررسی کلی سخت‌افزار ماژول سنسور ولتاژ

سنسور ولتاژ، در اصل یک مدار مقسم ولتاژ ساده است که از دو مقاومت تشکیل شده است. به همین سادگی!

تقسیم ولتاژ در سنسور ولتاژ با استفاده از دو مقاومت

 ​ شماتیک ماژول سنسور ولتاژ در تصویر زیر نشان داده شده است.

شماتیک سنسور ولتاژ

در این مدار دو مقاومت وجود دارد. مقاومت متصل به ولتاژ ورودی یعنی R1، دارای مقدار 30 کیلواهم و مقاومت نزدیک‌تر به زمین یعنی R2، دارای مقدار 7.5 کیلواهم است. ولتاژ دو سر R2، ولتاژ تقسیم شده مدنظر ما است. این ولتاژ به پین هدری با اسم S متصل است.

این مدار ساده، ولتاژ ورودی را به 5 تقسیم می‌کند. به همین دلیل است که این سنسور ولتاژ می‌تواند به شما کمک کند تا ولتاژهای کمتر از 25 ولت را با آردوینو اندازه‌گیری کنید.

نحوه عملکرد سنسور ولتاژ برپایه معادله تقسیم ولتاژ

بررسی عملکرد سنسور ولتاژ یا هر مقسم ولتاژ دیگری، بسیار آسان است. برای این منظور می‌توان از معادله تقسیم ولتاژ استفاده کرد.

قسمت نمودن ولتاژ در سنسور ولتاژ با معادله تقسیم ولتاژ

معادله تقسیم ولتاژ فرض می‌کند که شما سه مقدار مدار فوق را می‌دانید: ولتاژ ورودی (Vin) و هر دو مقدار مقاومت (R2 و R1). با داشتن این مقادیر و با استفاده از معادله زیر می‌توان ولتاژ خروجی (Vout) را به دست آورد:

حاصل ضرب تقسیم میزان R2 بر R1+R2 در میزان ولتاژ ورودی برابر است با میزان ولتاژ در خروجی

با این حال، در مورد مد نظر ما، ولتاژ خروجی (Vout) را از مدار مقسم ولتاژ با استفاده از ADC آردوینو اندازه‌گیری می‌کنیم. بنابراین، مقدار مجهول ما Vin است.

بنابراین معادله بالا را برای به دست آوردن ولتاژ ورودی (Vin) بازنویسی می‌کنیم.

حاصل ضرب میزان ولتاژ خروجی در تقسیم R1+R2 بر R2 بربر است با میزان ولتاژ ورودی

این معادله بیان می‌کند که ولتاژ ورودی (Vin) مساوی است با ولتاژ خروجی (Vout) ضربدر مقاومت کل مدار (R1+R2)، تقسیم بر مقدار مقاومت دوم (R2).

نحوه اتصال پایه‌های سنسور ولتاژ

برای شروع راه اندازی سنسور ولتاژ و انجام اتصالات در هر پروژه نیاز است تا با پین های ورودی و خروجی این ماژول نگاهی بیندازید.

معرفی پایه های پین های خوجی در سنسور تقسیم ولتاژ

ترمینال ورودی

VCC به ترمینال مثبت منبع ولتاژی که می‌خواهید اندازه‌گیری کنید متصل است. محدوده ولتاژ مجاز برای این پایه 0 تا 25 ولت است.

GND به ترمینال منفی منبع ولتاژ ورودی متصل است.

هدر خروجی

S پایه خروجی سیگنال ماژول سنسور ولتاژ است که ولتاژ آنالوگی متناسب با سطح ولتاژ ورودی ایجاد می‌کند. معمولاً به یکی از پایه‌های ورودی آنالوگ آردوینو متصل می‌شود.

+ به جایی متصل نمی‌شود.

– پایه زمین مشترک است.

اتصال سنسور ولتاژ به آردوینو بسیار آسان است.

برای شروع، منبع ولتاژی را که می‌خواهید اندازه‌گیری کنید به پیچ ترمینال ورودی متصل کنید. سپس، پایه ‘S’ روی سنسور ولتاژ را به پایه آنالوگ ‘A0’ آردوینو و پایه ‘-‘ را به زمین وصل کنید.

تصویر زیر نحوه اتصال همه پایه‌ها را نشان می‌دهد.

نحوه سیم کشی مدار راه اندازی سنسور ولتاژ با استفاده از آردوینو

این مثال، ولتاژ آنالوگ اعمال شده به پایه آنالوگ A0 را می‌خواند، ولتاژ ورودی را با استفاده از معادله مقسم ولتاژ محاسبه و نتایج را در سریال مانیتور چاپ می‌کند.

// Define analog input
#define ANALOG_IN_PIN A0
 
// Floats for ADC voltage & Input voltage
float adc_voltage = 0.0;
float in_voltage = 0.0;
 
// Floats for resistor values in divider (in ohms)
float R1 = 30000.0;
float R2 = 7500.0; 
 
// Float for Reference Voltage
float ref_voltage = 5.0;
 
// Integer for ADC value
int adc_value = 0;
 
void setup(){
  // Setup Serial Monitor
  Serial.begin(9600);
}
 
void loop(){
  // Read the Analog Input
  adc_value = analogRead(ANALOG_IN_PIN);
  
  // Determine voltage at ADC input
  adc_voltage  = (adc_value * ref_voltage) / 1024.0;
  
  // Calculate voltage at divider input
  in_voltage = adc_voltage*(R1+R2)/R2;
  
  // Print results to Serial Monitor to 2 decimal places
  Serial.print("Input Voltage = ");
  Serial.println(in_voltage, 2);
  
  // Short delay
  delay(500);
}

مثال فوق را در آردوینو خود آپلود و نتایج را مشاهده کنید.

برای تأیید صحت اندازه‌گیری، ولتاژ موردنظر را با استفاده از مولتی‌متر دیجیتال نیز اندازه‌گیری کنید. مقدار نمایش داده شده روی مولتی متر باید با مقدار نمایش داده شده در سریال مانیتور مطابقت داشته باشد.

نتایج زیر با اعمال 5 ولت به سنسور ولتاژ به دست آمده است:

و با اعمال 12 ولت این نتایج به دست آمد:

توضیح عملکرد برنامه:

این یک مثال نسبتاً ساده است، بنابراین برای فهم آن مشکلی نخواهید داشت. مثال با تعریف چند متغیر سراسری (Global) که در سرتاسر برنامه استفاده خواهند شد آغاز می‌شود.

خط اول پایه ورودی آنالوگ آردوینو را مشخص می‌کند که از آن برای خواندن ولتاژ از مدار مقسم ولتاژ استفاده می‌شود. در این مورد از پایه A0 استفاده شده است.

#define ANALOG_IN_PIN A0

در مرحله بعد، دو متغیر float به نام‌های adc_voltage و in_voltage برای ذخیره ولتاژهای خوانده شده از ADC و ورودی مقسم ولتاژ تعریف می‌شوند.

float adc_voltage = 0.0;
float in_voltage = 0.0;

متغیرهای R1 و R2 مقادیر مقاومت‌های مقسم ولتاژ را ذخیره می‌کنند. اگر از مجموعه متفاوتی از مقاومت‌ها برای ساختن مقسم ولتاژ استفاده کرده‌اید، باید آن‌ها را تغییر دهید.

float R1 = 30000.0;
float R2 = 7500.0;

ref_voltage ولتاژ مرجع برای ADC است، که معمولاً برای آردوینو UNO، 5 ولت تعریف می‌شود.

float ref_voltage = 5.0;

آخرین متغیر adc_value برای ذخیره مقدار دیجیتال خام خوانده شده از ADC استفاده می‌شود.

int adc_value = 0;

در ()setup، ارتباط سریال با baud rate 9600 تنظیم شده است.

void setup(){
  Serial.begin(9600);
}

در تابع ()loop، تابع ()analogRead برای خواندن ولتاژ روی پایه A0 استفاده می‌شود. مقدار برگشتی در متغیر adc_value ذخیره می‌شود.

adc_value = analogRead(ANALOG_IN_PIN);

سپس این مقدار با ضرب در ولتاژ مرجع و تقسیم بر 1024 به یک ولتاژ (adc_voltage) تبدیل می‌شود (زیرا آردوینو دارای ADC 10 بیتی است، بنابراین ولتاژ خوانده شده، عددی بین ۱ تا 1024=2^10 می‌گیرد).

adc_voltage  = (adc_value * ref_voltage) / 1024.0;

سپس تبدیل ولتاژ ورودی به مقسم ولتاژ با استفاده از فرمول مقسم ولتاژ محاسبه می‌شود: ​

فرمول مقسم ولتاژ
in_voltage = adc_voltage*(R1+R2)/R2;

در نهایت، ولتاژ ورودی محاسبه شده تا 2 رقم اعشار در سریال مانیتور چاپ می‌شود. سپس، آردوینو برای 500 میلی‌ثانیه منتظر می‌ماند تا loop را تکرار کند.

Serial.print("Input Voltage = ");
Serial.println(in_voltage, 2);

delay(500);

مقالات مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات