قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

abdallah.araby
:: مهندس ::
تاريخ التسجيل: Apr 2012
الدولة: Egypt
المشاركات: 39
نشاط [ abdallah.araby ]
قوة السمعة:0
قديم 11-06-2013, 12:33 PM المشاركة 1   
افتراضي كيف تصنع مقياس جهد رباعى القنوات (فولتميتر VOLTMETER) باستخدام اردوينو Twitter FaceBook Google+



يعتبر الفولتميتر من أشهر ادوات القياس الالكترونية المستخدمة لدى المهندسين و الهواة على حد سواء حيث يعمل على قياس فرق الجهد بين اى طرفين يمر بهما تيار كهربى

اليوم سنتحدث عن كيفية صناعة فولتميتر بسيط باستخدام اردوينو و يمكنك من قياس حتى 4 نقاط مختلفة و تحديد فرق الجهد المطبق عليها و عرض النتيجة على شاشة كريسال من نوع 16×2

لتعلم اساسيات استخدام اردوينو راجع كتاب "اردوينو ببساطة"
http://simplyarduino.com/?page_id=5


مبدأ العمل:

تتميز معظم المتحكمات الدقيقة المستخدمة فى اردوينو بوجود عدة مداخل للجهد التماثلى analog voltage يصل عددها الى 6 فى حالة arduino uno و يصل الى 14 فى حالة arduino mega و يصل اقصى فرق جهد يمكن قياسة الى 5 فولت تقريبا لكن مع بعض التعديلات يمكن استغلال هذه المداخل لعمل نقاط لقياس فرق الجهد اكبر

خصائص الفولتميتر:

يمكن لهذا الفولتميتر قياس الجهد المستمر DC voltage
اقصى فرق جهد يمكن قياسة يصل الى 50 فولت و تتحدد هذه النسبة من قيم المقاومات التى تعمل كمقسم للجهد voltage divider


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



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


arduino voltmeter

الدائرة عبارة عن:

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


ثانيا الكود البرمجى:

يمكنك تحميل الملف المحتوى على الكود من الرابط التالى

http://www.mediafire.com/download/xu..._voltmeter.zip

أو قراءة الكود

/*--------------------------------------------------------------
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;
}
}




المصادر:
http://simplyarduino.com/?p=671

اعلانات

الصورة الرمزية mar7aba_01
mar7aba_01
:: مهندس متميز ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 746
نشاط [ mar7aba_01 ]
قوة السمعة:0
قديم 17-06-2013, 12:42 AM المشاركة 2   
افتراضي


ألسلام عليكم ورحمة الله وبركاته
تحية طيبة أخي الكريم
وجعل الله هذا العمل في ميزان حسناتك
--أتمنى منك أخي أن تشرح لنا الكود البرمجي بما تيسر لديك من التفصيل فضلا منك لا أمرا أخي العزيز , لأني أود برمجته ببرنامج الفلوكود ,
-- وهل هناك إمكانية لزيادة قنوات الجهد من 4 إلى ما أكثر ؟
وشكرا لكم

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية mar7aba_01
mar7aba_01
:: مهندس متميز ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 746
نشاط [ mar7aba_01 ]
قوة السمعة:0
قديم 19-06-2013, 11:56 PM المشاركة 3   
افتراضي


السلام عليكم ورحمة الله وبركاته
أتمنى أن لا أثقل عليك

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 10:37 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025