السبت، 23 فبراير 2013

temperature and humidity Sensor DHT11


الحساس DHT 11 

حساس الحرارة و الرطوبة 

في هذه التدوينة الجديدة من سلسلة الحساسات و النواقل Sensors and Transducers سأتحدث عن الحساس DHT11 و هو حساس حرارة و رطوبة رقمي ,  اليوم سنتعلم كيفية التحكم بهذا الحساس و أهم القيم المتعلقة به .

قبل البدء باستعمال هذا الحساس , يجب قراءة النشرة الفنية لهذا الحساس لمعرفة البارمترات و القيم القياسية له .   Datasheet

و سنستخدم مكتبة خاصة في لغة أردوينو مخصصة للتحكم به ,  و يمكن تحميلها من خلال الرابط  DHT11 Library Download

حسناً لنرى ما هي المعدات التي سنحتاجها في هذه التجربة :

1) بطاقة اردوينو .
2) حساس DHT11 أنا سأستخدم هذا النوع الذي بالصورة 
3) اسلاك توصيل 
4) لوحة تعليمية مثقوبة BreadBoard .


هذا كل شي :)

التوصيل : 

الرسم التوضيحي يبين كيفية التوصيل .



قراءة في النشرة الفنية Datasheet

عند قراءة المعلومات الفنية للقطعة , نرى المعلومات التالية :


نرى أن هذا الحساس يمكنه قراءة الرطوبة بين 20-90% اقل أو أكثر من ذلك لن يستطيع الحساس قراءتها , و بالنسبة لدرجة الحرارة فهي بين 0-50C  .

كما يوجد في النشرة الفنية تفاصيل اكثر عن عمل هذا الحساس 



و طريقة التوصيل أيضاً موجودة كما في الرسم , أي طريقة توصيله مع اي متحكم MCU



مبدأ عمل هذا الحساس :

في البداية يرسل المتحكم MCU بنبضة بدء للحساس لينقله من وضع الأستعداد إلى وضع التشغيل Starting signal و بعد اكتمال وصول النبضه إلى الحساس و استجابته لهذه النبضة , يرسل الحساس موجه تضم 40Bit تضم اشارات الحرارة و الرطوبة , و يرسلها إلى المتحكم الذي يقوم بدوره بمعالجتها و إظهار النتائج 

و الفكرة موجوده في هذا المخطط الزمني :


كيف يعرف المتحكم أن هذا البت هو واحد 1 أو صفر 0 ؟

يستخدم هذا الحساس تقنية التواصل بالخط الواحد One wire و على ذلك يمكن معرفة أن النبضة هي اشارة  0 , حيث يقوم الحساس بارسال 1bit لمدة 50us ثم يرسل 1bit لمدة 26-30us تقريباً و هكذا يكون الحساس مرسل 0 signal bit


اما بالنسبة للhigh ,  يقوم الحساس بارسال 1bit لمدة 50us ثم يرسل 1bit لمدة 70us تقريباً و هكذا يكون الحساس مرسل 1 signal bit



حسناً الآن لننتقل للبرنامج .

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

يبقى فقط أن تذهب للمسار التالي داخل ملف الأردوينو و فتح هذا المثال كما في الصورة .


البرنامج dht11_functions هو برنامج يأتي مع المكتبة لتوضيح كيفية عمل المكتبة , و بعد تحميلها على المتحكم , يمكن فتح الSerial Port و رؤية النتائج فيها .



هذا بشكل عام كل ما قد تحتاجه للتعامل مع هذا الحساس .

أرجو أن تكون هذه التدوينة قد حققت الفائدة المرجوة .

إلى اللقاء .

        


السبت، 16 فبراير 2013

7 Segment and Shift register

المقطعات السباعية Seven segment  و مسجل الإزاحة 74595




تحدثت في أخر تدوينة لي تحدثت عن المقطعات السباعية 7Segment و طريقة التحكم بها مباشرة من خلال بطاقة الأردوينو , و سنتابع اليوم طريقة توصيل المقطعات السباعية مع مسجل الإزاحة Shift register 74595 




لنبدأ بالفكرة , ما هي الفكرة التي يرتكز عليها نقل البيانات بين مسجل الإزاحة و المقطع السباعي Seven segment ؟

مسجل الإزاحة يحتوي في خرجه على 8bit أي يمكن التحكم بخانة واحدة من المقطع السباعيSeven segment بسهولة , كل ما سنفعله هو تفعيل مخرج مسجل HIGH الإزاحة لتضيئ الخانة المربوطة معه , أو تقوم بتعطيل مخرج مسجل الإزاحة LOW لإطفاء الخانة المربوطة معه .

في حالة استعملنا مقطع سباعي 7segment CC ذو سالب مشترك فإن العملية تكون معكوسة .

للتذكير : مسجل الإزاحة يعمل كمنبع للتيار Current source و ليس كمصرف للتيار Current sink و في حالة استخدامه 
 كمصرف للتيار Current sink يجب وضع ترانزستور معه . 

حسناً لنبدأ بالمعدات :


المعدات اللازمة لتبدأ التجربة هي :
1) بطاقة أردوينو  Arduino .
2) اسلاك توصيل Solderless Jumper 
3)مقطّع سُباعي 7segment " تغذية مشتركة CA أو سالب مشترك CC "
4) لوحة تعليمية مثقوبة BreadBoard .
5) مقاومات 150 أوم 
6) مسجل إزاحة Shift Register 74959
7) ترانزستور 2n2222 أو ما يكافئه. عدد 4




حسناً لننتقل للتوصيل .

مسجل الإزاحة كما نعرف له 8 ارجل خرج مرقمة من D0-D7 , كل ما سنقوم به هو ربط هذه الأرجل مع أرجل المقطع السباعي حسب الترتيب التالي :

و الرسم يوضح أكثر هذا التوصيل .






حسناً مسجل الإزاحة 74595 يتم توصيله مع الأردوينو بأربعة خطوط , بحسب البروتوكول SPI و هي موصولة كالآتي :


حسناً ننتقل الآن للسؤال الأهم ... كيف سننقل الأرقام ؟ أو بالأحرى كيف لنا أن نضيئ أي خانة نريدها في المقطع السباعي ؟ 

الجواب على هذا السؤال هو ...جدول الحقيقة Look up table

نقوم ببناء جدول , نضع فيها أرجل المقطع السباعي Seven segment في مُرتبة حسب المنزلة MSB  و الأرقام أو الرموز التي نريد إظهارها في الشق الثاني من الجدول , ثم نقوم بعبئة الجدول بالقيم الثنائية Binary code ثم نحسب مجموع الأرقام بالنظام العشري Decimal . 

الجدول التالي يوضح الفكرة و فيه قمت بعمل واحد مشابه .

نقوم بأخذ هذه القيم" القيم العشرية Decimal " و وضعها في البرنامج على شكل مصفوفة .

البرنامج  ادناه يقوم بنقل الأرقام من 0-9 .






كما ستلاحظون قمت بوضع قيم الأرقام بالمصفوفة N ثم قمت باستدعائها في البرنامج داخل جملة الLoop كلما احتجت لها .

بهكذا ننتهي من الجزء الأول الخاص بربط مقطع سُباعي واحد .

لو اردنا توصيل أكثر من مقطع سُباعي واحد Multi seven  segment , فماذا سنفعل ؟

الأمر سهل و بسيط , فقط علينا توصيل كل المقطعات السباعية بنفس الطريقة التي ربطنا فيها المقطع السباعي الواحد Single 7segment و فقط نقوم بربط المدخل المشترك Common بمسجل إزاحة آخر "لا تنسى طبعاً الترانزستور ".

المخطط التالي يوضح توصيل اكثر من خانة معاً 



الخانة الأولى تربط مع ترانزستور قاعدته Base مربوطة مع Q0 , و الخانة الثانية 
تربط مع ترانزستور قاعدته Base مربوطة مع Q1  و هكذا ...

هذا الكود لمسجل أزاحة مربوط مع مقطعين سُباعيين 2digit  مربوطتان مع حساس على المدخل A0
 









ملاحظة , أن هذا البرنامج يمكنك تعديله عن طريق تعديل خيار ال  map الموجود فيه و جعل القيمة بين 0-1023 بدلاً من 0-854 .



 و اخيراً هذا البرنامج يقوم بنفس الوظيفة السابقة مع زيادة خانتين , أي أن هذا البرنامج ل 4 خانات 4digit seven segment





















يمكنك تعديل الكود كما تريد , و حتى تغيير طريقة التوصيل و ابتكار طريقتك الخاصة بالتحكم بالمقطعات السباعية .


أنا تمكنت من بناء حتى 6 مقطعات سباعية معاً , و ربطها بواسطة مسجلي ازاحة فقط   2shift register

اتمنى أن يكون هذا الدرس مفيداً , تحياتي لكم أعزائي .

الثلاثاء، 12 فبراير 2013

الألتراسونيك Ultrasonic

الألتراسونيك Ultrasonic


تصميم على الSolidworksبواسطة المهندس حسن البيتاوي 


اهلاً بمتابعي مدونتي الأحباء , الموضوع الذي سأتناوله في تدوينتي يعتبر مهم جداً نظراً لأستخداماته في العديد من التطبيقات , حديثي اليوم سيكون عن حساس الأمواج فوق الصوتية أو ما يعرف ب Ultrasonic




حسناً لنتعرف في بداية عن مبدأ عمل الأمواج فوق الصوتية .


 الفكرة مرتكزه على إطلاق موجات عالية التردد و التي عند اصطدامها بجسم ما ترتد هذه الموجات على شكل صدىEcho .




سرعة الموجات في الفراغ هي 345متر\ثانية  عند 25سيلسيوس  و تختلف من وسط لأخر حسب الوسط الناقل كالسوائل و الغازات و الأجسام الصلبة .

سنركز من الآن على انتقال الموجات فوق الصوتية في الفراغ .


لمعرفة المسافة , يكفي أن نعرف سرعة هذه الموجات , و أن نعرف الفرق بين زمن الارسال و زمن الأرتداد للصدى و بهذا يمكننا معرفة المسافة حسب قانون نيوتن :

المسافه = السرعه × الزمن 

ستجد تطبيقاته في الخفاش , الغواصات , الرادارات 


حسناً لننتقل إلى ما سنقوم اليوم بفعله , وما هي الإمكانيات التي يوفرها لنا هذا الحساس .

يمكننا هذا الحساس من معرفة المسافة بشكل دقيق بينه و بين الأجسام التي امامه , مما يعد خيار مفضل عند بناء روبوتات تفادي الأصطدام Avoiding Robot .

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

لنجهّز معداتنا .

المعدّات 

ستحتاج لتنفيذ هذه التجربة ما يلي :
1) بطاقة أردوينو 
2)التراسونيك HC SRF04
3) BreadBoard
4)اسلاك توصيل .
5)محرك سيرفو صغير"اختياري " .


حسناً لننتقل للتوصيل :

سنقوم بتوصيل الحساس مع الأردوينو كالآتي :
Trigger>>>> D12
Echo>>>> D13 
بالإضافة للتغذية و الأرضي Vcc+GND



 البرمجة 


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

الرسم التالي يوضح المخطط الزمني لعمل الألتراسونيك .


ليبدأ الالتراسونيك العمل , يتم قدحه Trigger بنبضة طولها 10us , ثم يقوم المرسل في الألتراسونيك بإرسال 8 نبضات بطول 40KHz , ثم ينتظر أن يصله صدى Echo للنبضات التي أرسلها , و تكون بين 100us-18ms اعتماداً على المسافة التي قطعتها الأمواج الصوت "في حال كان طول نبضة الصدى 36ms هذا يعني أنه لم يصطدم بجسم أمامه ! "



لكتابة الكود يلزمنا فقط اتباع الارشادات الوادة في المخطط الزمني .

الكود الأولي  بسيط و يعتمد على ارسال نبضات كل 10uS ثم قراءة الصدى الراجع إلى الحساس, ثم قسمتها على 58 لنحصل على المسافة بالسنتيمتر 

هذا الكود أولي , لكن أليكم هذه المفاجأة ! فهناك مكتبة سهلة جداً للتعامل مع هذا النوع 

 هذه المكتبة يمكن تحميلها من هنا 

بعد ان تقوم بفك الضغط عن الملف و وضعه في مسار المكتبات Libraries داخل مجلد الاردوينو قم  بتحميل البرنامج المرفق معاه .

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


الكود موجود بالأسفل :







لتهيئة المداخل التي سنربط عليها الألتراسونيك نستدعي الأمر :


Ultrasonic ultrasonic(Trigger_pin,Echo_pin);


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


;(ultrasonic.Ranging(CM

و البرنامج الأخير هنا يعرض التحكم بأكثر من التراسونيك واحد .

 
   






التطبيقات على هذا الحساس لا تنتهي , و في نهاية تدوينتي هذه أعرض عليكم تطيبق بسيط استخدمت فيه هذا الحساس في روبوتي G1

تحياتي للجميع .

السبت، 2 فبراير 2013

LM35

حساس الحرارة LM35 



ستكون تدوينتي اليوم مخصصة للحديث عن حساس للحرارة مشهور يدعى LM35 , ذو خرج دقيق و مدى عمل واسع, و يعطي مباشرة خرج بالسليسيوس C و بتغير فولتية المخرج شكل منتظم مع درجة الحرارة المُقاسة , و يأتي بأشكال مختلفة و بمواصفات مختلفة , لكن هذا التعليب Package TO46 هو الأكثر شيوعاً 

الشكل الخارجي لها كما في الصورة 

من الصورة يتبين لنا أنها تتكون من 3 أرجل و هي 

Vs : و هي مدخل تغذية الحساس .
Vout:  و هو مخرج درجة الحرارة , و الذي نقوم بوصله بالمتحكم .
Gnd: ارضي الدارة .

المواصفات القياسية لهذا الحساس يمكن معرفتها من النشرة الفنية Datasheet  لها و يمكن أن نلخص أهمها فيما يلي :

1) تتغير فولتية الخرج خطياً مع درجة الحرارة "10mV/C "
2) نسبة الخطأ في درجة الحرارة لا تزيد أو تنقص عن 0.5C 
3) مدى حراري واسع يبدأ من 55C-  سيلسيوس إلى 150C
4)مقاومة الخرج قليلة 
5) يمكن تغذيته ضمن مدى فولتية كبير "من 4- 30 فولت "

هذه أهم المعلومات التي يمكننا أن نستعرض بها ميزات هذا الحساس , و القيم الكهربائية الضرورية لهذا الحساس موجودة في الجدول أدناه :



المعدات :

لكي تنفذ تجربة اليوم  ستحتاج إلى ما يلي :
1) بطاقة أردوينو 
2) الحساس LM35
3) أسلاك توصيل 
4) BreadBoard .
5) وسائل إظهار رقمية " اختيارية في حال توافرها " مثل المقطعات السباعية Seven segment أو الشاشة الكريستالية LCD1602




التوصيل :

التوصيل سهل للغاية 


نأتي الآن لجانب البرمجة .

البرمجة :

المعلومة الأكثر أهمية  لهذا الحساس هو أنه يقوم بمعايرة الخرج مباشرة بالسيلسيوس , ومن النشرة الفنية Datasheet نعرف أنه 

أذن كل 10 ملي فولت على المخرج تساوي 1 سيلسيوس , رائع .


بعد أن تفتح السيريال Serial Monitor  سترى درجة الحرارة  على الشاشة .



لو أردنا تطوير المشروع , فما علينا سوى عرض قيمة الخرج Celsius على شاشة العرض المطلوبة .

هذا البرنامج يوضح عرض درجة الحرارة على 7sement

seven segment temperature display 






تحياتي 



 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.