الخميس، 30 مايو، 2013

حساس التيار الكهربائي Current Sensor ACS712

حساس التيار الكهربائي ACS712

Current sensor ACS712 



في كثير من التطبيقات العملية في الدوائر الكهربائية , نحتاج لمعرفة التيار الكهربائي المار في الدارة الكهربائية , في البداية التيار الكهربائي يعرف بعدد الشحنات الكهربائية المارة في موصل خلال زمن قدره 1 ثانية .

يستخدم جهاز الأميتر Ammeter لقياس التيار الكهربائي , حيث يوصل الأميتر على التوالي في الدارة الكهربائية لمعرفة التيار المار في الدارة .

و يوجد هنالك نوعان من هذا الجهاز , فهنالك الرقمي و التناظري 



حديثي اليوم سيتناول الحساس ACS712 الذي يُعد تطبيقاً مهماً على نظرية ال Hall effect .


يتميز هذا الحساس بأن له عزل كهربائي بين دارة التحكم و الدارة التي نريد قياس التيار عندها .
 مجال واسع من التيارات التي يمكننا قياسها بواسطته"تصل لغاية 30 امبير ! " .
مقاومة الدخل متدنية , مما يجعل الطاقة المتبددة خلاله قليلة .
قيمة مقاومة المخرج Vout تكون كنسبة لفولتية التغذية , مما يسهل الحسابات في هذا الحساس .












هذا الجدول يوضح حساسية هذا الحساس , حيث يعطي هذا الحساس على مخرجه فولتية تساوي 185ملي فولت\ امبير " للنوع الذي يقيس 5 امبير كحد اقصى " يمر خلاله , على سبيل المثال , لو كانت الفولتية على المخرج تساوي 200 ملي فولت نعرف وقتها ان التيار المار في الدارة هو :

I=(200mV)/(185mV/A) = 1.08 A

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


والقيم القياسية التي تلزمنا للتعامل مع هذا الحساس في هذا الجدول 

فولتية التغذية Vcc لهذه القطعة هي 5 فولت , و في حالة عدم مرور تيار في هذا الحساس  Zero current Output voltage تساوي Vcc*0.5 اي كمثال اذا كانت فولتية التغذية 5 فولت , فإن الفولتية الخرج تساوي  
Vout= Vcc*0.5 = 5*.5 = 2.5 V
اذن هذه الفولتية هي الفولتية المرجعية في الحسابات .

لنأخذ مثالاً : كانت قراءة الخرج  للحساس ACS712-05BT هي  3.2 فولت ,فولتية التغذية VCC=5V فإن التيار المار في الدارة هو :

I =  (Vout - 2.5) /Sensitivity =(3.2-2.5)/.185=3.78A

ACS712 Module sparkFun
يمكن قياس هذه الفولتية باستخدام الفولتميتر على المخرج .

ما سنحتاجه لتنفيذ تجربة اليوم :

1) بطاقة اردوينو 
2) الحساس ACS712-BT05 الموديول 5A max
3) اسلاك توصيل Solderless Jumper
4)BreadBoard
5) حمل كهربائي " محرك DC كمثال "

طريقة التوصيل :
يوصل الحمل مع هذا الحساس على التوالي كما في الشكلين ادناه 





البرمجة :

هذا الكود ادناه يبين الكود المستخدم في البرمجة 




في خلال التجارب التي قمت بها على هذا الحساس , هناك بعض الملاحظات التي يمكن لأي مستخدم لهذا الحساس أن يلاحظها , حساسية هذا الحساس ذات مجال صغير لا يتعدى مجال التغيير 185 ملي فولت لكل أمبير , و في المتحكم ATMEGA328 الموجود في اغلب بطاقات الأردوينو , نجد بأن المبدل ADC هو سعته 10Bit اي يقرأ من 0-1023 , بحساسية قراءة مقدارها :
S= (Vcc-0)/(1024) = 5/1024=4.88E-3V/reading
و لمدى قراءة هذا الحساس , فان القراءة التي سيقرأها المبدل لقيمة تيار يتراوح بين 0 - 1 أمبير هو  :

Analog read= 0.185/4.88E-3=38 ! 

بمعنى ان التغيير من 0 - 1 امبير سيأقرأه المتحكم ما بين (511-549 ) و هو يعد قليل اذا اردنا قياس القيم الصغيرة للتيار بدقة عالية .

أمر أخير هو الأنتباه إلى أن Zero current Output voltage  فولتية الخرج في حالة عدم مرور تيار تساوي نصف فولتية التغذية , فاذا كانت فولتية التغذية 4.9 فولت , فإن فولتية الخرج في حالة عدم مرور تيار تساوي 2.45 فولت , اذاً تغيير فولتية المصدر يؤثر على دقة البرنامج المكتوب .

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


الجمعة، 24 مايو، 2013

تحميل برنامج الاقلاع Bootloader

Bootloader arduino 

تحميل برنامج الإقلاع في لغة الأردوينو 

عند شراءك لبطاقة اردوينو Arduino Board فانك تنفذ كل مشاريعك على هذه البطاقة , لكن عندما تريد نقل المتحكم 

"الميكروكنترولر" لتضعه في مشاريع خارجية على بورد مطبوع أو BreadBoard فإنك ستحتاج لشراء متحكم جديد لتضعه في بطاقة الأردوينو , لكن ستفاجئ بأن هذا المتحكم الجديد لا يستجيب و يعطيك رسالة خطأ أسفل البرنامج تفيد بخطأ حدث اثناء تحميل البرنامج

المشكلة هنا ليست في المتحكم الذي اشتريته , بل بأن كل متحكم جديد تشتريه يحتاج لتحميل برنامج يسمى برنامج الإقلاع Bootloader و هو موضوعنا اليوم , حيث سنتعرف على مفهوم  برنامج الإقلاع Bootloader و كيفية تنصيبه على المتحكمات التي لا يتوافر فيها هذا البرنامج .

مفهوم 
 برنامج الإقلاع Bootloader :

ابسط تعريف لبرنامج الإقلاع Bootloader هو أنه  برنامج صغير  يسمح للاردوينو بتنصيب البرنامج على المتحكم دون الحاجة لمبرمجات خارجية , و ايضاً يسمح بتحميل برامج جديدة على المتحكم بسرعة كبيرة .

كيفية تنصيب  برنامج الإقلاع Bootloader :

لتنصيب برنامج الإقلاع Bootloader يمكن استخدام بطاقة أردوينو اخرى تحتوي متحكماً فيه  برنامج الإقلاع Bootloader , أو باستخدام مبرمجة خارجية "STK500,parallel programmer "  .



سأقوم بتوضيح طريقة التنصيب خطوة بخطوة باستخدام بطاقتي اردوينو , حيث أن الأردوينو ممكن ان تتحول الى ما يسمى IN System programmer ISP  بحيث نحمل برنامج الأقلاع من بطاقة اردوينو إلى اخرى .
ستحتاج لتنفيذ هذه التجربة إلى :

1) بطاقتي أردوينو 

2) اسلاك توصيل 
3)مكثف 10uF


سنقوم أولاً بتحميل برنامج ArduinoISP الذي يسمح للأردوينو بالعمل كمبرمجة , ستجد هذا البرنامج موجود في المسار 
File>> example>>arduinoISP

اذا كنت تستخدم الأصدار 1.0 أو الأقدم فإن عليك تغيير زمن التأخير من 40ms إلى 20ms داخل جملة heartbeat

ثم قم بتحميل البرنامج و عند انتهاء التحميل بنجاح , ننتقل للتوصيل

التوصيل مبين كما في الشكل .

أهم شيء أن تنتبه لقطبية المكثف و أن تربط الطرف الموجب للمكثف بالReset و الطرف السالب بال GND






و في النهاية هذا الفيديو يشرح العملية بالكامل .





تحياتي

الجمعة، 17 مايو، 2013

برمجة الشاشة الكريستالية lcd1602 باستتخدام البروتوكول I2C



LCD1602 I2C Module 




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

في البداية لا بد لك أن تأخذ لمحة عن الI2C , لتكن بدايتك من هذه التدوينة هنا


و أيضاً لا بد لك من الإطلاع على كيفية التعامل مع الشاشة الكريستالية1602 و كيفية برمجتها بواسطة الأردوينو هنا


حسناً  بعد الإطلاع على الرابطين أعلاه ... يمكننا البدء الآن .


ماذا سنحتاج في تجربتنا اليوم ؟


معدات :

1- بطاقة أردوينو 





2) LCD 1602 I2C Interface Module



3)شاشة كريستالية 1602





الموديل الذي سأستخدمه قائم على القطعة PCF8574 و هي من شركة فيليبس و تستطيع التحكم ب 8Bit دفعة واحدة .




كل ما عليك القيام به هو وضع الموديل LCD1602 I2C بهذا الشكل و القيام بعملية اللحام حتى تتصل مع الشاشة الكريستالية .


بعدها قم بتوصيل المدخل الأول في الموديل I2C كالأتي


1) تغذية Vcc
2)المدخل SDA مع المربط A4  ببطاقة الأردوينو
3)المدخل SCL مع المربط A5 ببطاقة الأردوينو
4) الأرضي Gnd



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


ضع موديل الI2C و قم بعملية اللحام 






الآن نأتي لجزء...


 البرمجة Software:

بالنسبة للبرمجة سنستعين بمكتبتين :
1) wire.h و هي متوافرة في المكتبة الرسمية للأردوينو , أي لا حاجة لتحميلها
2) LiquidCrystal_I2C.h  وهذه المكتبة هي التي ستحتاج لتحميلها و وضعها في مسار المكتبات داخل مجلد الأردوينو . لتحميلها من هنا

في بداية يجب عند بداية كتابة الكود وضع اسم المكتبتين اللتان ننوي أستعمالها و تكون على الصيغة 

ثم نقوم بكتابة الكود المعتاد الذي نستخدمه مع مكتبات Liquid crystal الرسمية .

الجديد هو تعين العنوان لشريحة الI2C ألا وهو 0x20 .

هذا العنوان هو الموقع الذي سيتواصل معاه المتحكم Atmega و يعطي له الأوامر .

و يكتب على الصيغة :


و أبعاد الشاشة المستخدمة تكتب في الخانتين التاليتين (16,2) 

لو اردنا تحميل أكثر من شاشة واحدة , فقط نقوم بتعريف الشاشتين , كلاً على حدا و بأسم مختلف و العنوان يكون مضافاً له 1 كمثال :


و أيضاً في جملة void setup نضيف هذا السطر لتهيئة الشاشة للعمل .


و الباقي كما هي الأوامر في المكتبة العادية تماماً .


هذه أهم الأوامر كما يلي في الرابط   :


سأعرض هنا مثال بسيط  , سأقوم بطباعة جملة Genotronex على الشاشة 






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

تحياتي


الجمعة، 10 مايو، 2013

التحكم بالأردوينو عن طريق الصوت

تحكم بمشاريعك بواسطة الصوت عن طريق 

Voice recognition  Module "Arduino Compatible "



اليوم سأتطرق لموضوع متقدم نوعاً ما في مجال البرمجه ألا و هو تحويل الصوت إلى وسيلة للتحكم , فكيف يتم ذلك ؟ و ما الأدوات التي سنحتاجها لذلك ؟ كل هذا ستتعرف عليه بعد قراءتك للمقال .



لفهم الآلية التي سنقوم بها  لتمييز الصوت و ربطه مع الأردوينو , سأشرح باختصار ما يلي :
1) ستحتاج في البداية لمعرفة ما هو التطبيق الذي تريد التحكم به .
2)سنقوم بتسجيل للصوت الذي نرغب بأن يكون أداة التحكم بهذا التطبيق .
3)اخيراً كتابة الكود و ربط أمر الصوت الذي سجلناه مع الوظيفة التي نرغب في التحكم بها عن طريق الأردوينو 


حسناً لنبدأ بالآلية الأولى : 
التطبيق الذي نريد التحكم به :

لنفرض أن لدينا التطبيق التالي : سنقوم بتشغيل و اطفاء الLED المربوطة مع المداخل D8,D9,D10,D11,D12  .

المخطط سيكون كما في الشكل :

حدد الأوامر الصوتية التي ستستخدمها للتحكم بهذه الLED 
أنا حددت أرقام المداخل كوسيلة للتحكم بها , فعندما اريد إضاءة الباعث الضوئي الموصول مع المدخل رقم 9 , أقول الرقم 9 فيضيئ ال LED .

لننتقل للخطوة التالية : تسجيل الصوت .

سنستخدم هذا الموديل لتمييز الصوت 


هذه القطعة تحتوي على متحكم , هذا المتحكم مقسم داخلياً إلى عدة  قطاعاتSection  لتخزين الأوامر الصوتية , كل 5 قطاعات تكون مجموعة واحدة و عدد المجموعات الكلي فيها هو 15 مجموعة .

لمعلومات أكثر عن هذه القطعة يمكن مراجعة نشرتها الفنية 

و سيلزمنا أيضاً مبرمجة TTL تكون مرفقة معه لنوصله بالحاسوب , تدعى USB-TTL Module .

سنقوم بالبداية بتوصيله كما في الصورة :

TX>>RX .......RX>>TX



ثم ستحتاج إلى برمجية AccessPort و يمكن تحميلها من هنا

قم بفك ضغط البرنامج  و قم بتشغيله .

ستظهر لك الواجهة الرئيسية له 

اذهب إلى Configure  و اضبط  الإعدادت فيها كما في الشكل أدناه :



قم  بضبط الcom الخاص بك كما هو موجود في جهازك .

Voice recognition  Module عندما يتم وصله بالشكل الصحيح يضيء الباعث الضوئي ذو اللون الأحمر فيه و يرمش , هذا دليل على أن توصيلاتك صحيحة , عكس ذلك تأكد من توصيلاتك جيداً .

عندما يرش الLED الأحمر نعرف أن الجهاز مستعد للبرمجة .
في حالة لم يكن يضيء فهناك مشكلة .
بعد ذلك نقوم بالرجوع للبرنامج و نكتب الأمر AA 11 في الشاشة السفلية وننقر send 


بعدها ستظهر كلمة START في الشاشة العلوية و ستتغير إضاءة الLED  الأحمر و البرتقالي 

عدة أوامر ستظهر لك خلال عملية التسجيل , و يطلب منك دائماً إعادة تسجيل الجملة كتأكيد للصوت المُسجل .


يمكن التسجيل على المجموعة الثانية باستدعاء الأمر AA 12 أو على المجموعة الثالثة AA 13 

ثم نقوم بحفظ التسجيل عبر كتابة الأمر AA 21 للمجموعة الأولى  لحفظها على القطعة .


ثم نقوم بوصلها مع الأردوينو كما في الشكل 


و هذا الفيديو يوضح كيفية العمل 




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

تحياتي 

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