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

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

أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 17-04-2009, 08:43 PM المشاركة 1   
افتراضي فولتميتر باستخدام البيك Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته

تم بفضل الله ثم بمساعداتكم عمل دائرة لقياس جهد حتى 200 فولت باستخدام البيك 16f877a
وتمت البرمجة بالميكروسى

الكود
كود:
void main() { float volt ; char* x[13] ; trisb = 0 ; portb = 0; trisa = 0xff ; // A/D CONVERTER Configuration adcon1 = 0b00100000; // lcd configuration lcd_init(&portb) ; lcd_cmd(lcd_cursor_off) ; // endless loop while(1) { volt = adc_read(0) ; volt = volt*5/1023 ; volt = volt*40 ; floatToStr(volt,x) ; lcd_out(1,4," VOLTAGE = ") ; lcd_out(2,1,x) ; lcd_out(2,13,"VOLT"); delay_ms(500) ; } }
الدائرة



أرجو من أهل الخبرة إبداء الملاحظات للتعديل إن أمكن

والله الموفق............................................ ....


التعديل الأخير تم بواسطة : أشرف الخطيب بتاريخ 20-04-2009 الساعة 10:02 AM
اعلانات

HugE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
المشاركات: 73
نشاط [ HugE ]
قوة السمعة:0
قديم 17-04-2009, 11:03 PM المشاركة 2   
افتراضي


ما شاء الله وبالتوفيق باذن الله

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

الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:109
قديم 19-04-2009, 07:46 AM المشاركة 3   
sun


السلام عليكم ورحمه بركاته
ما شاء الله ولا قوه الا بالله
ممكن استاذ اشرف تشرح الكود بالتفصيل اكثر

بالتوفيق
السلام عليكم


أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 20-04-2009, 09:59 AM المشاركة 4   
افتراضي


السلام عليكم ورحمة الله وبركاته

كود:
float volt ;
تم تعريف المتغير volt من النوع float حتى يتسنى لنا إظهار قيمة كسرية على شاشة lcd
حيث أن المتغير من النوع float له range
1.17549435082 * 10-38 إلى 6.80564774407 * 1038

كود:
char* x[13] ;
تم تعريف مصفوفة من النوع char بها 12 عنصر حتى يتم عرضها على ال lcd
حيث أنه لعرض نص على ال lcd لابد أن يكون من النوع char
لاحظ أمر العرض على شاشة lcd

كود:
void Lcd_Out(unsigned short row, unsigned short col, char *text);
أى أنه يأخذ رقم الصف ورقم العمود ومتغير من النوع char

ثم نضبط المحول التماثلى الرقمى عن طريق الأمر
كود:
adcon1 = 0b00100000;
الصورة التالية توضح كيفية ضبط المسجل adcon1



البتات رقم4 و 6 و 7 توضع بأصفار
البت adfm توضع بواحد لعمل right justified
أى نضع الناتج من المحول التماثلى الرقمى ( وهو فى حالة استخدام p16f877a ي عبارة عن عشرة بت ديجيتال) فى مسجلين adresl , adresh


البتات 0و 1و 2و 3 توضع بأصفار
انظر الصورة التالية



يتبع...............................


التعديل الأخير تم بواسطة : أشرف الخطيب بتاريخ 20-04-2009 الساعة 10:02 AM

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 3,062
نشاط [ زكي شاكر ]
قوة السمعة:183
قديم 20-04-2009, 10:17 AM المشاركة 5   
افتراضي


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


أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 20-04-2009, 10:25 AM المشاركة 6   
افتراضي


كود:
volt = adc_read(0) ;
هذا الأمر يقرأ القيمة الأنالوج الموجودة على البن an0 ويضعها فى المتغير volt

كود:
volt = volt*5/1023 ;
هذا الأمر يضرب القيمة الموجودة فى المتغير volt فى 5 /1023
لأن المحول التماثلى الرقمى عند عمله يقوم بقسمة القيمة الأنالوج الموجودة على البن على تلك القيمة
القيمة الديجيتال الناتجة من المحول = القيمة الأنالوج / resolution

resolution= analog range/digital range = 5volt/1023
(طبعا 1023 لأن المتحكم يخرج 10 بت ديجيتال )

كود:
volt = volt*40 ;
هذا الأمر يضرب القيمة volt( والتى تحوى القيمة الفعلية الأنالوج الداخلة على البيك ) فى 40
لأننا وضعنا عند رسم الدائرة مقسم جهد بنسبة 1:40
أى أنه إذا وصلنا 200 فولت فإن البيك سيقرأ 5 فولت أى بنسبة 1:40
وتم عمل ذلك بوضع مقاومتين 390 اوم وأخرى 10 أوم

كود:
floatToStr(volt,x) ;
هذا الأمر يحول القيمة الموجودة فى المتغير volt إلى string باسم x
حتى يتسنى لنا عرضها على ال lcd

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

وجزاك الله خيرا والله الموفق إلى مايحب ويرضى


أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 20-04-2009, 10:29 AM المشاركة 7   
افتراضي


أشكرك أستاذنا زكى بارك الله فيك

لقد تعلمت الكثير من هذا المنتدى العزيز على قلبى

وحان الوقت لكى أرد شيئا قليلا من هذا الدين


الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:109
قديم 20-04-2009, 10:39 AM المشاركة 8   
sun


السلام عليكم ورحمه الله وبركاته
اخى اشرف جزاك الله كل خير
واكثر الله من امثالك
شرح ممتاز ويا ريت تستمر فى الشرح فى اى مشروع
خاص بالميكرو سى اخوانك محتاجين الكثير
السلام عليكم


التعديل الأخير تم بواسطة : ahmad72 بتاريخ 20-04-2009 الساعة 02:01 PM
إضافة رد

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

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

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


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

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