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

   

ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 22-06-2016, 05:17 PM المشاركة 17   
افتراضي



أشكرك أخ ahmed idris على تعبك

قمت باستعمال LM35 مع الاردوينو وقراءة النتائج باستعمال الشاشة Serial Monitor فكانت النتائج غير مستقرة اي تتغير ضمن قيم كبيرة وصغيرة



وهذا هو الكود:
كود:
float temp;
int tempPin = 0;

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

}

void loop() 
{
temp = analogRead(tempPin);
temp = temp * 0.48828125;
temp = temp / 10 ;
Serial.print("Temperature = ");
Serial.print(temp);
Serial.print("*C");
Serial.println();
delay(1000); 

}
أهلا بك أخ Sallam
أعتقد أن المتغير temp أعلى الكود يجب أن يكون عددا صحيحا ويكتب هكذا:
كود:
int temp;
ولا يحول إلى float إلا بعد هذا السطر:
كود:
temp = analogRead(tempPin);

اعلانات

الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
نشاط [ Sallam ]
قوة السمعة:
قديم 23-06-2016, 02:20 AM المشاركة 18   
افتراضي


أشكرك أخ ahmed idris على ردك

قمت بتجربة ما ذكرته حضرتك ولكن النتائج ايضا بقيت عشوائية



هل من الممكن أن يكون الحساس فيه خلل وكيف أتأكد من عمله

وشكرا

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

ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 23-06-2016, 03:25 AM المشاركة 19   
افتراضي


أخي
1/ اختبار ثبات LM35 بدون أردوينو سهل بدائرة بسيطة (لافرق في التجربة بين LM34 و LM35 ) :

2/ إذا ممكن ترفع الكود حتى أقارن طريقتك مع طريقة كود وجدتها على النت .
3/ لو ممكن حاول تضيف للكود تعليمات عرض على شاشة LCD وتحاكي البرنامج على بروتوس .


الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
نشاط [ Sallam ]
قوة السمعة:
قديم 23-06-2016, 11:46 AM المشاركة 20   
افتراضي


أخي
1/ اختبار ثبات LM35 بدون أردوينو سهل بدائرة بسيطة (لافرق في التجربة بين LM34 و LM35 ) :

2/ إذا ممكن ترفع الكود حتى أقارن طريقتك مع طريقة كود وجدتها على النت .
3/ لو ممكن حاول تضيف للكود تعليمات عرض على شاشة LCD وتحاكي البرنامج على بروتوس .
كود:
#include <LM35.h>

int temp;
int tempPin = 0;

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

}

void loop() 
{
temp = analogRead(tempPin);
temp = temp * 0.48828125;
temp = temp / 10 ;
Serial.print("Temperature = ");
Serial.print(temp);
Serial.print("*C");
Serial.println();
delay(1000);  

}


الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
نشاط [ Sallam ]
قوة السمعة:
قديم 23-06-2016, 11:50 AM المشاركة 21   
افتراضي


سأحاول تجريب ما تفضلت به وهو عرض النتائج على شاشة LCD وضمن البرتوس واخبرك بالنتائج.

شكرا لتعاونك


الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
نشاط [ Sallam ]
قوة السمعة:
قديم 23-06-2016, 02:18 PM المشاركة 22   
افتراضي


قمت بتجريب الدارة على بروتوس فكانت النتائج جيدة وبدون اية مشاكل



هل يعني أن القطعة LM35 قد تكون معطوبة

أشكرك لمتابعتك


ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 23-06-2016, 02:27 PM المشاركة 23   
افتراضي


السلام عليكم
أخي بالنسبة لسلامة الحساس فكما ذكرت لك سابقا يمكنك قياسه بالافومتر.
لكن قد يكون مشكل ما في الكود ويجب التأكد منه أولا ..
جرب هذا الكود ولاحظ النتائج :
كود:
int val;
int tempPin = 0;

void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(tempPin);
float mv = ( val/1024.0)*5000; 
float cel = mv/10;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C");
Serial.println();
delay(1000);
}
ملحوظة: في هذا الكود لا وجود لتعليمة إدماج المكتبة : #include <LM35.h>
فلا داعي لإضافتها ..
المصدر:
http://www.instructables.com/id/ARDU...E-SENSOR-LM35/


التعديل الأخير تم بواسطة : ahmed idris بتاريخ 23-06-2016 الساعة 02:32 PM

الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 515
نشاط [ Sallam ]
قوة السمعة:
قديم 23-06-2016, 04:23 PM المشاركة 24   
افتراضي


السلام عليكم
أخي بالنسبة لسلامة الحساس فكما ذكرت لك سابقا يمكنك قياسه بالافومتر.
لكن قد يكون مشكل ما في الكود ويجب التأكد منه أولا ..



قمت بتعديل الرقم 5000 الى 500 فكانت النتائج كما يلي



وهذا هو الكود الذي كتبته بناء على مشاركتك وتوصيتك

كود:
int val;
int tempPin = 0;


void setup() 
{

  Serial.begin(9600);
}

void loop() 
{
  val = analogRead(tempPin);
  float mv = (val/1024.0 )* 500;
  float cel = mv /10;

  Serial.print("Temperature = ");
  Serial.print(cel);
  Serial.print("*c");
  Serial.println();
  delay(1000);

}
أشكرك مجددا



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