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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 27-11-2019, 12:52 PM المشاركة 25   
افتراضي



مقياس فولت رقمى 0V-30V باستخدام الاردوينو :
الدائرة الكهربية :






كما تعلم جيدًا ، يمكن استخدام مدخلات Arduino التناظرية لقياس جهد التيار المستمر بين 0 و 5V (عند استخدام الجهد المرجعي التناظرى القياسي 5V ) ويمكن زيادة هذا النطاق باستخدام مقاومتين لإنشاء مقسم للجهد. مقسم الجهد يقلل الجهد الذي يتم قياسه في نطاق مدخلات Arduino التناظرية. ثم يتم استخدام برنامج اردوينو لحساب الجهد الفعلي الذي يجري قياسه.



يستشعر المحول من تناظرى إلى رقمى الموجود على لوحة Arduino الجهد الكهربي الموجود على الطرف التناظرى ويحوله إلى تنسيق رقمي يمكن معالجته بواسطة المتحكم الدقيق. هنا ، نقوم بتغذية جهد الدخل التناظرى إلى الطرف التناظرى (A0) باستخدام دائرة مقسم جهد بسيطة تشتمل على المقاومات R1 (100K) و R2 (10K) . من خلال القيم المستخدمة في مقسم الجهد ، يمكن تغذية الجهد من 0V إلى 55V . إن الوصلة الموجودة على شبكة مقسم الجهد المتصلة بالطرف التناظرى للاردوينو تعادل جهد الدخل مقسومًا على 11 ، وبالتالي فإن 55V ÷ 11 = 5V . بمعنى آخر ، عند قياس 55 فولت ، سيكون طرف Arduino التناظرى عند أقصى جهد له وهو 5V . لذلك ، في الممارسة العملية ، من الأفضل تسمية هذا الفولتميتر بأنه “0-30V DVM” لإضافة هامش أمان!

ملاحظات
• إذا لم تتطابق قراءة العرض عند المقارنة مع مقياس جهد معملى ، فاستخدم مقياس معملى دقيق لإيجاد المقاومة الفعلية R1 و R2 ، واستبدل R1 = 100000.0 و R2 = 10000.0 في الكود بتلك القيم. تحقق بعد ذلك من مصدر 5V بجهاز معملى بين الطرف 5V والأرضى على لوحة Arduino. قد يعطيك أقل (على سبيل المثال 4.95V ) ، استبدل القيمة في التعليمة البرمجية vout = (value * 5.0) / 1024.0 (أي استبدل القيمة 5.0 بقراءة الفولت الفعلية ، في هذه الحالة 4.95V ). علاوة على ذلك ، حاول دائمًا استخدام مقاومات تسامح بدقة 1٪ من أجل R1 و R2.
• توفر قيم المقاومات (R1 و R2) في مخطط الدائرة بعض الحماية من الجهد الزائد ومن ثم قياس فولتية منخفضة. ضع في اعتبارك أن أي جهد دخل أعلى من حوالي 55 فولت يمكن أن يتلف Arduino. لم يتم دمج أي حماية أخرى (لارتفاعات الجهد spikes ، الفولتية العكسية أو الفولتية العالية) في هذه الدائرة!

البرنامج :


كود:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
int analogInput = A0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // resistance of R1 (100K) 
float R2 = 10000.0; // resistance of R2 (10K) 
int value = 0;
void setup(){
   pinMode(analogInput, INPUT);
   lcd.begin(16, 2);
   lcd.print("DC VOLTMETER");
}
void loop(){
   // read the value at analog input
   value = analogRead(analogInput);
   vout = (value * 5.0) / 1024.0; 
   vin = vout / (R2/(R1+R2)); 
   if (vin<0.09) {
   vin=0.0;//statement to quash undesired reading !
} 
lcd.setCursor(0, 1);
lcd.print("INPUT V= ");
lcd.print(vin);
delay(500);
}

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 27-11-2019, 08:56 PM المشاركة 26   
افتراضي


مقياس مقاومة (أوم ميتر) باستخدام الاردوينو Arduino Ohm Meter :
قد نجد صعوبة في قراءة كود الألوان على المقاومات للعثور على قيمة مقاومتها. للتغلب على صعوبة العثور على قيمة المقاومة ، سنقوم ببناء مقياس أوم بسيط باستخدام Arduino. المبدأ الأساسي وراء هذا المشروع هو مقسم الجهد. يتم عرض قيمة المقاومة غير المعروفة على شاشة LCD 16 * 2.

الدائرة الكهربية :



حساب المقاومة باستخدام أوم ميتر الاردوينو :
لمقسم جهد مكون من المقاومات R1 , R2 :

كود:
Vout = Vin * R2 / (R1 + R2 )

ومن هذه المعادلة نجد :

كود:
R2 = Vout * R1 / (Vin – Vout)

حيث R1 : مقاومة معلومة .
و R2 : المقاومة المجهولة .
و Vin : هو الجهد الناتج على الطرف 5V بالاردوينو .
و Vout : هو الجهد على المقاومة R2 بالنسبة للأرضى .

ملاحظة :
المقاومة المعلومية تم أخذها 3.3K ، لكن يمكن استخدام مقاومة مناسبة أخرى .


البرنامج :

كود:
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);   //rs,e,d4,d5,d6,d7
int Vin=5;        //voltage at 5V pin of arduino
float Vout=0;     //voltage at A0 pin of arduino
float R1=3300;    //value of known resistance
float R2=0;       //value of unknown resistance
int a2d_data=0;    
float buffer=0;            
void setup() 
{
 lcd.begin(16,2);
}
void loop()
{
  a2d_data=analogRead(A0);
  if(a2d_data)
  {
    buffer=a2d_data*Vin;
    Vout=(buffer)/1024.0;
    buffer=Vout/(Vin-Vout); 
    R2=R1*buffer;
    lcd.setCursor(4,0);
    lcd.print("ohm meter");
    lcd.setCursor(0,1);
    lcd.print("R (ohm) = ");
    lcd.print(R2);
    
    delay(1000);
  }
}

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 27-11-2019, 11:29 PM المشاركة 27   
افتراضي


مقياس تيار (أميتر) رقمى باستخدام الاردوينو Arduino Based Digital Ammeter :
يستخدم مقياس التيار الكهربائي Ammeter لقياس التيار المار من خلال أي حمل أو جهاز. هنا ، سنشرح قياس التيار باستخدام قانون أوم.
معادلة قانون أوم :

كود:
 V = IR
حيث : V هو الجهد عبر موصل (حمل) بالفولت (V) ، و I هو التيار المار خلال الموصل بالأمبير (A) ، و R مقاومة الموصل (ثابت التناسب) بالأوم (Ω) .
لإيجاد التيار المار خلال الجهاز ، فقط نعيد ترتيب المعادلة على النحو التالي :

كود:
 I = V / R
لإيجاد التيار ، نحتاج إلى بعض البيانات:
1. الجهد .
2. المقاومة .
سوف نقوم ببناء مقاومة "توالى" مع الجهاز . بما أننا بحاجة إلى إيجاد انخفاض (هبوط) الجهد عبر الجهاز ، لذلك نحن بحاجة إلى قراءات الجهد قبل وبعد انخفاض الجهد ، وهذا ممكن في المقاومة بسبب عدم وجود قطبية.



كما هو مبين بالشكل أعلاه ، يتعين علينا العثور على اثنين من الجهود عبر المقاومة . الفرق فى الجهد (V1-V2) على طرفي المقاومة يعطينا انخفاض الجهد عبر المقاومة (R) ونقسم انخفاض الجهد على قيمة المقاومة نحصل على التيار (I) المار من خلال الجهاز.

الدائرة الكهربية :



دائرة الإحساس بالتيار :
تتكون هذه الدائرة من مقاومة ، و ليد LED كحمل load . يتم توصيل المقاومة على التوالى مع الليد ويتم تعيين انخفاض الجهد عبر المقاومة . الأطراف V1 ، V2 سوف تتصل مع المداخل التناظرية للاردوينو .
الحسابات :
جهد المرجع يكون 0-5V ، ونتيجة التحويل تكون فى المدى 0-1023 ، ودقة التحويل تكون 0.00488 .
فمثلا:
إذا كانت قيمة نتيجة التحويل V1 = 710 ، V2 = 474 و R = 22 ، فإن الفرق بين الجهود يكون 236. نحولها إلى جهد عن طريق ضربها فى 0.00488 ، نحصل على 1.15V . وبالتالي فإن فرق الجهد هو 1.15 فولت ، بقسمته على 22 نحصل على قيمة التيار 0.05A . هنا استخدمنا المقاومة 22ohm قيمة منخفضة كحساس للتيار .

البرنامج :

كود:
#include<LiquidCrystal.h>
LiquidCrystal lcd (12,11,5,4,3,2);
 
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.clear();
}
 
void loop() {
// put your main code here, to run repeatedly:
int voltage_value0 = analogRead(A0);
int voltage_value1 = analogRead(A1);
 
 int subraction_value =(voltage_value0 - voltage_value1) ;
 float temp_val = (subraction_value*0.00488);
 
 float current_value = (temp_val/22);
lcd.setCursor(0,0);
 lcd.print("current value=");
 lcd.setCursor(0,1);
 lcd.print (current_value);
 lcd.print("A");
 delay(1000);
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 28-11-2019, 09:47 PM المشاركة 28   
افتراضي


مقياس قدرة كهربية (واتميتر) Wattmeter يقيس الجهد والتيار المستمر والقدرة المستهاكة باستخدام الاردوينو :

الدائرة الكهربية :







تتكون الدائرة الكهربية من قسمين : دائرة القياس (التحسس) ، ودائرة الحساب (الاردوينو) والعرض (LCD) .
الدائرة مصممة للعمل مع نظام بجهد 0-24V وتيار 0-1A ، وبسهولة يمكن توسعتها للعمل على جهد وتيار آخر .
المبدأ الأساسي وراء الدائرة هو قياس الجهد عبر الحمل والتيار المار خلاله لحساب القدرة المستهلكة به. سيتم عرض جميع القيم المقاسة على شاشة LCD 16*2 .

دائرة القياس :
تتكون دائرة القياس من مقسم جهد للمساعدة في قياس الجهد ، ويتم استخدام مقاومة shunt (مجزىء تيار) مع مكبر عمليات "غير عاكس" Non-Inverting Op-amp للمساعدة في قياس التيار المار خلال الحمل .

دائرة قياس الجهد :
الدائرة مصممة للعمل على جهد 0-24V . مقسم الجهد مكون من المقاومات R1 و R2 .

العلاقة بين جهد الخرج وجهد الدخل هى :

كود:
Vout = (Vin × R2) / (R1 + R2)
Vin = Vout * ((R1+R2)/R2)
Vin = Vout * ((10+2.2)/2.2)
Vin = Vout * 5.55
يتم تغذية جهد الخرج Vout إلى طرف الدخل التناظرى للاردوينو . هذا الجهد يتم تحويله بالمحول ADC حيث يكون :

كود:
Vout = ADC Reading * (5/1023)
Vin =  ADC Reading * 0.00488 * 5.55
Vin =  ADC Reading * 0.027

دائرة قياس التيار :
بعد ذلك علينا قياس التيار المار خلال الحمل . كما نعلم أن الميكروكنترولر يمكنه قراءة الجهد التناظري فقط ، لذلك نحن بحاجة إلى تحويل قيمة التيار إلى جهد بطريقة أو بأخرى. يمكن القيام بذلك ببساطة عن طريق إضافة مقاومة مجزىء التيار shunt resistor في المسار ووفقا لقانون أوم سوف يحدث هبوط فى قيمة الجهد عبرها بما يتناسب مع التيار الذي يتدفق خلالها . ستكون قيمة انخفاض الجهد صغيرة جدا ، لذا نستخدم مكبر عمليات لتضخيمه .
هنا قيمة مقاومة مجزىء التيار RSH هي 0.22 أوم. كما ذكرنا سابقًا ، الدائرة مصممة للعمل من أجل تيار 0-1A ، لذا استنادًا إلى قانون أوم ، يمكننا حساب انخفاض الجهد عبر هذه المقاومة والذي سيكون حوالي 0.2 فولت عندما يمر 1A كحد أقصى خلال الحمل. هذا الجهد صغير جدًا بالنسبة لقراءة الميكروكونترولر ، لذلك نستخدم مكبر عمليات فى وضع مكبر غير عاكس لزيادة الجهد من 0.2 فولت إلى مستوى أعلى لكى يستطيع الاروينو قراءته .
مكبر العمليات مصمم ليكون له كسب (معامل تكبير) gain قدره 21 ، بحيث يكون 0.2*21 = 4.2V . صيغة كسب مكبر العمليات هى :

كود:
Gain = Vout / Vin = 1 + (Rf / Rin)

هنا في حالتنا ، تكون قيمة Rf هى 20k وقيمة Rin هي 1K والتي تعطينا قيمة كسب قدره 21. ثم يتم إعطاء الجهد الكهربي المضخم من مكبر العمليات لمرشح RC بالمقاومة 1K والمكثف 0.1uF لترشيح أي ضجيج مقترن. أخيرًا يتم تغذية الجهد إلى طرف تناظرى للاردوينو .

كود:
 I = Vsh/Rsh 
Vsh = Vout / Gain = Vout /21
Vout = ADC Reading * (5/1023) = ADC Reading * 0.00488
I = ADC Reading * (0.00488/ 21) /0.22 = ADC Reading * 0.0011

وحدة الحساب والعرض
في وحدة القياس ، قمنا بتصميم دائرة لتحويل بارامترات الجهد والتيار إلى 0-5V والتي يمكن تغذيتها إلى أطراف الاردوينو التناظرية . الآن في هذا الجزء من الدائرة ، سوف نقوم بتوصيل إشارات الجهد هذه إلى الاردوينو وأيضاً نربطه مع شاشة عرض أبجدية 16×2 حتى نتمكن من عرض النتائج كما هو مبين أدناه :

البرنامج :

كود:
/*
 * Wattmeter using Arduino
* Potetnital divider to measure voltage -> A3
 * Op-Amp output to measure current -> A4
 */
 
#include <LiquidCrystal.h>  //Default Arduino LCD Librarey is included 
int Read_Voltage  = A3;
int Read_Current  = A4;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //Mention the pin number for LCD connection
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
  lcd.begin(16, 2); //Initialise 16*2 LCD
  lcd.print(" Arduino Wattmeter"); //Intro Message line 1
  lcd.setCursor(0, 1);
  lcd.print("  With Arduino  "); //Intro Message line 2
  delay(2000);
  lcd.clear();
}
void loop() {
 
 float Voltage_Value = analogRead(Read_Voltage);
 float Current_Value = analogRead(Read_Current);
 Voltage_Value = Voltage_Value * 0.027;
 Current_Value = Current_Value * 0.0011;
 lcd.setCursor(0, 0);
 lcd.print("V="); lcd.print(Voltage_Value); 
 lcd.print("  "); 
 lcd.print("I=");lcd.print(Current_Value); 
 float Power_Value = Voltage_Value * Current_Value;
 lcd.setCursor(0, 1);
 lcd.print("Power="); lcd.print(Power_Value); 
 
delay(200);
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 28-11-2019, 10:11 PM المشاركة 29   
افتراضي


مقياس درجة حرارة (ثرموستات) رقمى باستخدام الاردوينو وحساس درجة الحرارة LM35 :



مقاييس درجة الحرارة (الثرموستاتات) هي أجهزة مفيدة تستخدم منذ وقت طويل لقياس درجة الحرارة. في هذا المشروع ، نقوم بعمل مقياس حرارة رقمي قائم على Arduino لعرض درجات الحرارة المحيطة الحالية وتغيرات درجة الحرارة على وحدة LCD . يمكن وضعه في المنازل والمكاتب والمصانع وغيرها لقياس درجة الحرارة. يعتمد هذا المشروع على Arduino الذى يتصل هنا بجهاز استشعار درجة الحرارة LM35 ووحدة عرض 16x2 . يمكننا تقسيم مقياس الحرارة هذا المستند إلى الاردوينو إلى ثلاثة أقسام – القسم الأول يستشعر درجة الحرارة باستخدام مستشعر درجة الحرارة LM 35 ، أما القسم الثاني فيحول قيمة درجة الحرارة إلى أرقام (أعداد) مناسبة لمقياس بالدرجة المئوية يتم بواسطة Arduino ، ويعرض الجزء الأخير من النظام درجة الحرارة على LCD




يتم استخدام Arduino Uno للتحكم في العملية برمتها. يتم استخدام مستشعر درجة الحرارة LM35 لاستشعار درجة حرارة البيئة والذى يعطي 10mV على طرف الخرج لكل تغييرفى درجة الحرارة بمقدار واحد درجة مئوية . يمكنك التحقق من ذلك بسهولة باستخدام الفولتميتر عن طريق توصيل الجهد Vcc إلى الطرف 1 والأرضى إلى الطرف 3 ويكون جهد الخرج على الطرف 2 من المستشعر LM35. على سبيل المثال ، إذا كان جهد الخرج لمستشعر LM35 هو 250m volt ، فهذا يعني أن درجة الحرارة حوالي 25 درجة مئوية (بالقسمة على 10 ملى فولت كل درجة مئوية) .



يقوم Arduino بقراءة جهد خرج مستشعر درجة الحرارة باستخدام الطرف التناظرى A0 ويقوم بحساب لتحويل هذه القيمة التناظرية إلى قيمة رقمية لدرجة الحرارة الحالية. بعد العمليات الحسابية ، يرسل الاردوينو هذه الحسابات أو درجة الحرارة إلى وحدة شاشة LCD مقاس 16x2 باستخدام الأوامر المناسبة لشاشات الكريستال السائل LCD .

الدائرة الكهربية :



حسابات التحويل من قيمة التحويل ADC العددية (0-1023) إلى درجة حرارة مئوية :
• نحصل على نتيجة التحويل ADC كقيمة لعدد صحيح يقع بين (0-1023) نقوم بتخزينه فى المتغير reading

كود:
 int reading=analogRead(sensor);

• نحصل على جهد الدخل التناظرى بضرب القيمة السابقة فى نسبة التحويل (5/1023) ، ويكون بالفولت ، نحوله إلى ملى فولت بضرب النتيجة فى (1000) لتكون (5/1023) * 1000 ( أصبح لدينا كسور لذلك سوف نخزنها فى متغير من نوع float .
• حساس درجة الحرارة LM35 يعطى 10 ملى فولت لكل درجة مئوية ، للحصول على قيمة درجة الحرارة بالدرجات المئوية نقسم النتيجة السابقة على 10 لنحصل على :

كود:
float temperature=reading*(5.0/1023.0)*100;

البرنامج :

كود:
/*-----------Arduino LM35 Code-------------*/
/*-----------Digital Thermometer Using Arduino-------------*/
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
#define sensor A0
byte degree[8] = 
              {
                0b00011,
                0b00011,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000
              };
void setup()
{
  lcd.begin(16,2);
  lcd.createChar(1, degree);
  lcd.setCursor(0,0);
  lcd.print("    Digital    ");
  lcd.setCursor(0,1);
  lcd.print("  Thermometer   ");
  delay(4000);
  lcd.clear();
}
void loop()
{
  /*---------Temperature-------*/
     int reading=analogRead(sensor);
     float temperature=reading*(5.0/1023.0)*100;
     delay(10);
  
  /*------Display Result------*/
    lcd.setCursor(2,0);
    lcd.print("Temperature");
    lcd.setCursor(4,1);
    lcd.print(temperature);
    lcd.write(1);
    lcd.print("C");
    delay(1000);
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 28-11-2019, 10:19 PM المشاركة 30   
افتراضي


جعل المحول ADC للاردوينو أكثر دقة لقراءة الجهد الصغير

أحيانا عندما ننجز مشروعًا ، يجب أن نستخدم مستشعرًا به جهد خرج صغير. الجهد الصغير يجعل الاردوينو أقل دقة لقراءة الإشارة. نحن نعلم أن الاردوينو UNO لديه "قدرة على تمييز" resolution التحويل ADC بقيمة 10 بت. هذا يعني أن اردوينو يمكنه قراءة الجهد 0-5V بعدد 0-1023 أى 1024 خطوة . لذلك ، 5000mv/1024 = 4,88Mv . لذا ، لا يمكن للاردوينو قياس تغير فى إشارة ADC إلا إذا زاد الجهد الكهربائي أو انخفض حوالي 5 مللي فولت. فماذا إذا كان خرج المستشعر أصغر من 5v ؟ هناك بعض الحلول لهذا ، أولاً يمكننا استخدام مكبر amplifer للمستشعر ، لذلك سيتضاعف خرج المستشعر ويصبح أكبر. ولدينا الحل الثاني ، وهذا أبسط. لا نحتاج إلى تكبير المستشعر ، ولكن بدلاً من ذلك سنقوم بنقصان (خفض) "مرجع الجهد " voltage reference .الجهد 5V هو مرجع الجهد.



arduino analog input

خفض مرجع الجهد للمحول ADC
الاردوينو UNO أو atmega328 لديه مرجع جهد داخلي بقيمة 1.1V . يمكننا استخدام هذاالجهد عن طريق تعيين مرجع جهد المحول ADC إلى "داخلى" INTERNAL. يمكننا ضبط المرجع التناظرى في الدالة setup .


كود:
 void setup()
{
analogReference(INTERNAL);
}

المرجع الخارجي للمحول ADC
والسؤال التالي ، هل يمكننا استخدام مرجع تناظرى آخر لا يوفره الاردوينو؟ نعم يمكننا أن نفعل ذلك!. طالما كانت قيمة الجهد في المدى 0-5V . أكبر من 5 فولت ممنوع منعا باتا ، لأن جهد تشغيل الاردوينو هو 5 فولت. إذن كيف يمكننا أن نفعل ذلك؟

كود:
 void setup()
{
analogReference(EXTERNAL);
}

استخدم الكود أعلاه ، وضع الجهد على الطرف AREF. لا تنس استخدام الارضى المشترك للمرجع التناظرى .


arduino uno AREF pin

مثال
استخدام المستشعر LM35 لقراءة درجة الحرارة. من الداتا شيت ، نعلم أن هذا المستشعر سوف يعطي خرج 10mV لكل درجة مئوية °C . للمرجع التناظرى العادي (5V) ، يمكننا الحصول على دقة قراءة accuracy بنصف درجة مئوية.
بالنسبة للمرجع التناظرى العادى ، سيكون الكود:

كود:
Temperature = (adc*5000/1023)/10;

النتيجة : كل وحدة تحويل ADC تكون نتيجة (5000/1023 = 4.89 mV) فى دخل الاردوينو أى حوالى نصف درجة مئوية عند دخل الحساس LM35 .
وإذا قمنا بتغيير المرجع التناظرى إلى 1.1V ، فيجب أن يتغير الكود إلى:

كود:
Temperature = (adc*1100/1023)/10;

هذا سيعطينا نتيجة أكثر دقة لدرجة الحرارة عند القراءة بواسطة LM35. يمكن لاردوينو الآن قراءة تغيير بوحدة واحدة كل حوالى واحد ملى فولت في دخل المحول adc ومن ثم يمكننا الحصول على القدرة على التمييز resolution بحوالي 0.1 درجة مئوية .


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 29-11-2019, 05:20 AM المشاركة 31   
افتراضي


السلام عليكم ورحمه الله

شكرااا جزيلا أخي ومهندسنا الفاضل " F.Abdelaziz " علي هذة السلسله لشرح اردينو فهيا مفيده جدااا
بارك الله فيك ونفع بك وجعل علمك هذا في ميزان حسناتك ..


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 29-11-2019, 04:15 PM المشاركة 32   
افتراضي


السلام عليكم ورحمه الله

شكرااا جزيلا أخي ومهندسنا الفاضل " F.Abdelaziz " علي هذة السلسله لشرح اردينو فهيا مفيده جدااا
بارك الله فيك ونفع بك وجعل علمك هذا في ميزان حسناتك ..
أخى الكريم شكرا جزيلا لك

تقدير أعتز به

مع تمنياتى بدوام التوفيق



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