كيف تصنع مقياس جهد رباعى القنوات (فولتميتر voltmeter) باستخدام اردوينو


يعتبر الفولتميتر من أشهر ادوات القياس الالكترونية المستخدمة لدى المهندسين و الهواة على حد سواء حيث يعمل على قياس فرق الجهد بين اى طرفين يمر بهما تيار كهربى
اليوم سنتحدث عن كيفية صناعة فولتميتر بسيط و يمكنك من قياس حتى 4 نقاط مختلفة و تحديد فرق الجهد  المطبق عليها و عرض النتيجة على شاشة كريسال من نوع 16×2
 مبدأ العمل:
تتميز معظم المتحكمات الدقيقة المستخدمة فى اردوينو بوجود عدة مداخل للجهد التماثلى analog voltage يصل عددها الى 6 فى حالة arduino uno و يصل الى 14 فى حالة arduino mega و يصل اقصى فرق جهد يمكن قياسة الى 5 فولت تقريبا لكن مع بعض التعديلات يمكن استغلال هذه المداخل لعمل نقاط لقياس فرق الجهد اكبر
خصائص الفولتميتر:
  • يمكن لهذا الفولتميتر قياس الجهد المستمر DC voltage
  • اقصى فرق جهد يمكن قياسة يصل الى 50 فولت و تتحدد هذه النسبة من قيم المقاومات التى تعمل كمقسم للجهد voltage divider

 لنبدأ على بركة الله 🙂

أولا عناصر الدائرة:

arduino voltmeter
 الدائرة  عبارة عن:
  • 4 مقاومات بقيمة 1 ميجا اوم
  • 4 مقاومات بقيمة 100 كيلو اوم
  • مقاومة واحدة بقيمة 10 كيلو اوم
  • مقاومة بقيمة 47 اوم
  • شاشة كريستال 16×2
  • لوحة اردوينو (اى نوع)

ثانيا الكود البرمجى:
يمكنك تحميل الملف المحتوى على الكود من الرابط التالى
 أو قراءة الكود
/*--------------------------------------------------------------
  Program:      voltmeter_LCD

  Description:  4 channel DC voltmeter with voltages displayed
                on LCD to 1 decimal place

  Hardware:     Arduino Uno with voltage dividers on A2 to A5.
                2 x 16 LCD connected to standard pins used in
                Arduino example sketches from IDE.

  Software:     Developed using Arduino 1.0.5 software
                Should be compatible with Arduino 1.0 +

  Date:         27 May 2013

  Author:       W.A. Smith, http://startingelectronics.com
--------------------------------------------------------------*/
#include <LiquidCrystal.h>

// number of analog samples to take per reading, per channel
#define NUM_SAMPLES 10
// voltage divider calibration values
#define DIV_1    11.1346
#define DIV_2    11.1969
#define DIV_3    11.0718
#define DIV_4    11.0718
// ADC reference voltage / calibration value
#define V_REF    4.991

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sum[4] = {0};                // sums of samples taken
unsigned char sample_count = 0;  // current sample number
float voltage[4] = {0.0};        // calculated voltages
char l_cnt = 0;                  // used in 'for' loops

void setup()
{
    lcd.begin(16, 2);
}

void loop()
{
    // take a number of analog samples and add them up
    while (sample_count < NUM_SAMPLES) {
        // sample each channel A2 to A5
        for (l_cnt = 0; l_cnt < 4; l_cnt++) {
            sum[l_cnt] += analogRead(A2 + l_cnt);
        }
        sample_count++;
        delay(10);
    }
    // calculate the voltage for each channel
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
    }
    // display voltages on LCD
    // each voltage is multiplied by the resistor network
    // division factor to calculate the actual voltage
    // voltage 1 - A (pin A2)
    lcd.setCursor(0, 0);
    lcd.print("A ");
    lcd.print(voltage[0] * DIV_1, 1);
    lcd.print("V ");
    // voltage 2 - B (pin A3)
    lcd.setCursor(8, 0);
    lcd.print("B ");
    lcd.print(voltage[1] * DIV_2, 1);
    lcd.print("V ");
    // voltge 3 - C (pin A4)
    lcd.setCursor(0, 1);
    lcd.print("C ");
    lcd.print(voltage[2] * DIV_3, 1);
    lcd.print("V ");
    // voltage 4 - D (pin A5)
    lcd.setCursor(8, 1);
    lcd.print("D ");
    lcd.print(voltage[3] * DIV_4, 1);
    lcd.print("V ");
    // reset count and sums
    sample_count = 0;
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        sum[l_cnt] = 0;
    }
}

التعليقات
0 التعليقات

No comments:

Post a Comment

فيديوهات

كـيــف ؟

عداد المتابعين

هدفنا

طموحنا هو جعل موقع المدرسة الالكترونية منصة علمية و تقنية، ناطقة باللغة العربية، تكون مرجعاً يعتمد عليه لكل طلاب العلم، و الباحثين عن الإبداع و التميز

من نحن

نحن مجموعة من الشباب العربي، بعضنا لايزال على مقاعد الدراسة، و بعضنا الآخر أنهى تعليمه الجامعي الأساسي. نشترك جميعنا بكوننا نتملك شغفاً بالهندسات و العلوم التقنية، خصوصاً الالكترونية و الحاسوبية منها.

إشترك في نشرتنا البريدية

جميع الحقوق محفوظة © 2016