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

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

peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 800
نشاط [ peipo ]
قوة السمعة:123
قديم 22-06-2013, 02:05 PM المشاركة 1   
افتراضي -[تعلم] : كيفيه صناعه جهاز لقياس سعه المكثفات باحتراف بالبك - (16F628A) Twitter FaceBook Google+





عندما فكرت فى طرح هذا المشروع لم يكن الغرض من المشروع فقط تنفيذ جهاز يقوم بقياس سعه المكثف ولكن الغرض هو تعلم فكره مهمه ولها استخدامات كثيره جدا



سنتعلم معا الفكره التى يمكن ان يبنى عليها مشروع كهذا ... هذه الدائره التى سوف نقوم بتنفيذها تقوم بقياس سعات من
(1) نانو وحتى (90) مايكرو لكن ليست القيم هى الاساس ولكن الاساس هو ان نتعلم كيفيه تنفيذ فكره كهذه ويمكننا التعديل عليها كيفما نشاء بعد ذلك.



الفكره تعتمد على قياس الوقت المنقضى عندما يتم شحن المكثف الى قيمه جهد معلومه مسبقاً هذا المشروع مبنى على المبدا المعروف عن شحن المكثف من خلال توصيل مقاومه توالى معه كما بالرسم الاسفل



عند توصيل مقاومه ومكثف على التوالى فان الفولت على طرفى المكثف يزيد تدريجيا هذا شىء طبيعى حتى اكتمال عمليه الشحن ( الفولت فى تزايد والتيار فى نقصان) ولنفترض انه فى البدايه المكثف قد تم تفريغه تماما من شحنته فعندما يتم تسليط فولت على مدخل المقاومه من خلال الطرف VIN يبدا المكثف فى الشحن ويزيد الفولت على طرفيه من الصفر حتى يساوى قيمه VIN ولكن ليس بطريقه خطيه كما نعلم انما هى علاقه اسيه كما هو واضح من الرسم الاسفل



المعادله المكتوبه على الرسم اعلاه توضح كيف يتغير الفولت على طرفى المكثف بالنسبه للزمن بعلاقه اسيه ،، اذا ما عرفنا الوقت بالتمام والكمال اللازم لشحن المكثف لفولت معلوم مسبقاً (كما سبق وان قلنا) وايضا مع قيمه مقاومه معلومه مسبقاً فلن يصبح لدينا الا مجهول واحد فقط وهو قيمه السعه "C"



هذا رائع ولكن كيف يمكن حساب هذا الوقت او كيف يمكن ان نجعل البك يقوم بقياس الوقت المنقضى بعد اتمام عمليه الشحن
الحقيقه اى بك يمكنه قياس هذا الوقت ولكن هنا سنستخدم البك 16F628A فهذا البك يحتوى داخليا (مدمج معه) 2 مقارن انالوج سنستخدم المقارن رقم 2 من البك واطراف هذا المقارن يتم
الوصول اليها كالتالى
RA2 هو المدخل الغير عاكس للمقارن رقم 2
RA1 هو المدخل العاكس للمقارن رقم 2



وايضا سنستخدم موديول التايمر TIMER 2 -وذلك لحساب الوقت المنقضى لاتمام عمليه شحن المكثف من الـ"0V"وحتى "5." اى منتصف الجهد المسلط ولذا سنقوم بجعل المقارن يقارن بين قيمه معلومه اى مرجعى وقيمه اخرى كالتالى



تم وضع 2 مقاومه 2.2K ليعملا معا كمقسم للجهد على المدخل الغير عاكس ليجعلا بذلك جهد المدخل الغير عاكس RA2 للمقارن يساوى نصف الجهد المسلط على الطرف RA0


المدخل العاكس على الطرف RA1 يوصل مباشره بالطرف الموجب للمكثف المقصود ( المراد قياس سعته) من خلال مقاومه مقدارها 330 اوم وفائده هذا المقاومه هو القيام بعمليه تفريغ للمكثف قبل عمليه بدء قياسه وذلك بجعل RA1= LOW




اعلانات

mohamad mhm
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
المشاركات: 83
نشاط [ mohamad mhm ]
قوة السمعة:0
قديم 22-06-2013, 02:17 PM المشاركة 2   
افتراضي


اشكرك على هذه المعلومات القيمة ..

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

peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 800
نشاط [ peipo ]
قوة السمعة:123
قديم 22-06-2013, 02:37 PM المشاركة 3   
افتراضي


عندما يتم تطبيق جهد على الطرف RA0 فان خرج المقارن سيكون HI طالما ان المدخل الغير عاكس فى الحاله الاعلى او طالما ان المدخل العاكس فى الحاله الاقل عن نصف جهد التغذيه المسلط على الطرف RA0 وعندما يبدا المكثف الفارغ فى الشحن وذلك خلال المقاومه22كيلو اوم فهذا يعنى ان المدخل العاكس سيبدا جهده فى الارتفاع من الحاله LOW وتدريجيا وحتى منتصف جهد التغذيه وعليه يتحول خرج المقارن من الحاله المنطقيه HI الى الحاله المنطقيه LOW هنا ياتى دور موديول TIMER2 فيقوم بحساب الوقت المنقضى بين العمليتين( HI و LOW )
وساشرح دور التايمر والعمليات الحسابيه التى يقوم بها فى نهايه الموضوع



وبالتالى تمكننا من معرفه زمن الشحن ،، الان وبعد معرفه زمن الشحن وايضا معرفتنا السابقه لقيمه مقاومه الشحن وايضا معرفتنا المسبقه بقيمه VINيمكننا حل المعادله السابق ذكرها لحساب سعه المكثف وجعل المايكرو سى يقوم بالعمليات الحسابيه اللازمه..


وتصبح الدائره النهائيه كما ل بالرسم الهندسى التالى





تجربه الدائره على بروتس





الدائره على البريد بورد




بعض التجارب العمليه للدائره

مكثف 1 نانو فاراد


مكثف 15 نانو فاراد



مكثف 100 نانو فاراد




مكثفات اخرى بسعات اكبر


مكثف 10 مايكرو فاراد



مكثف 22 مايكرو فاراد




مكثف اكبر من 100 مايكرو فاراد (خارج النطاق)






mohamad mhm
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
المشاركات: 83
نشاط [ mohamad mhm ]
قوة السمعة:0
قديم 22-06-2013, 02:51 PM المشاركة 4   
افتراضي


شكرا لك
ولكن لدي سؤال هل نطاق الدارة فقط اقل من 100 مايكرو الا يمكن زيادة لتصبع ل 100 بيكو مثلا ؟؟
او انني استعجلت بالرد ؟


محمد حافظ الهوى
:: مٌشرف قُسمLCD/LED/PLASMA ::
تاريخ التسجيل: Oct 2011
الدولة: الاسكندريه-جمهورية مصر العربية
المشاركات: 3,295
نشاط [ محمد حافظ الهوى ]
قوة السمعة:183
قديم 22-06-2013, 03:33 PM المشاركة 5   
افتراضي


السلام عليكم...تحياتى للمهندس /ايهاب...رائع...خطوات عظيمه..لكن نتمنى أنا وكثير من الزملاء فى هذا المنتدى وخاصة فى ورشة التليفزيون..أن نتوصل لصنع جهاز يقيس سعة المكثفات من 1 بيكو الى4700ميكرو وياحبذا لويقيس فى نفس الوقت المقاومه الداخليه للمكثف (ESR) فهذه الأجهزة تخدم الصيانه....وشكرا...تقبل تحياتى وتقديرى


peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 800
نشاط [ peipo ]
قوة السمعة:123
قديم 22-06-2013, 03:34 PM المشاركة 6   
افتراضي


اشكرك على هذه المعلومات القيمة ..
شكرا على مرورك اخى الحبيب محمد

شكرا لك
ولكن لدي سؤال هل نطاق الدارة فقط اقل من 100 مايكرو الا يمكن زيادة لتصبع ل 100 بيكو مثلا ؟؟
او انني استعجلت بالرد ؟
اخى الحبيب الحقيه لم افهم سؤالك ،، وعموما لم انتهى بعد من المشروع وسارفق الكود و والمحكاه وبعد التعديلات التى يمكننا اجرائها على الدائره


peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 800
نشاط [ peipo ]
قوة السمعة:123
قديم 22-06-2013, 04:26 PM المشاركة 7   
افتراضي


السلام عليكم...تحياتى للمهندس /ايهاب...رائع...خطوات عظيمه..لكن نتمنى أنا وكثير من الزملاء فى هذا المنتدى وخاصة فى ورشة التليفزيون..أن نتوصل لصنع جهاز يقيس سعة المكثفات من 1 بيكو الى4700ميكرو وياحبذا لويقيس فى نفس الوقت المقاومه الداخليه للمكثف (ESR) فهذه الأجهزة تخدم الصيانه....وشكرا...تقبل تحياتى وتقديرى
اخى الحبيب م/محمد حافظ شكرا جزيلا على كلماتك الطيبه .. ان شاء الله المشروع قيد التطوير .. والله والمستعان .


peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 800
نشاط [ peipo ]
قوة السمعة:123
قديم 22-06-2013, 04:45 PM المشاركة 8   
افتراضي


ملحوظه :-المكثفات ذات الفولت العالى لابد من تفريغها اولا وقبل بدء عمليه قياسها وذلك تجنبا لتلف البك

بعد تركيب المكثف يتم الضغط على المفتاح START لبدء عمليه القياس

تحميل ملف الهيكس والمحاكاه على بروتس
http://www.4shared.com/rar/oYjSK4qs/peipo_Ehab.html





الكود لمن اراد المراجعه والتطوير
كود:
sbit LCD_RS at RB2_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB2_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit Va at RA0_bit; sbit Switch at RB0_bit; char message1[] = "Capacitance"; char message2[] = "Meter"; unsigned int T_Value, Num; unsigned short i, j, TimerValue, OverRange = 0; char Capacitance[] = "00.000 uF"; void interrupt(){ if(PIR1.TMR2IF){ TMR2 = TimerValue; Num ++; if(Num > 9999) OverRange = 1; // Range is 99.99 uF PIR1.TMR2IF =0; // Clear TMR0 interrupt flag } } void Display_Cap(unsigned int n){ Capacitance[0] = n/10000 + 48; Capacitance[1] = (n/1000)%10 + 48; Capacitance[3] = (n/100)%10 + 48; Capacitance[4] = (n/10)%10 + 48; Capacitance[5] = (T_Value*10)/153 + 48; Lcd_Cmd(_Lcd_Clear); Lcd_Out(1, 1, "C = "); Lcd_Out(1, 5, Capacitance); } void reset(){ TRISA = 0b00000100; CMCON = 7; RA1_bit = 0; Delay_ms(2000); TRISA = 0b00000110; CMCON = 5; } void main(){ char cap_size; TRISB = 0b00000001; PORTB = 0; TRISA = 0b00000110; OPTION_REG.T0CS = 0; INTCON.GIE = 1; //Enable global interrupt INTCON.PEIE = 1; //Enable peripheral interrupt // Configure Timer2 module PIE1.TMR2IE = 1; // Enable Timer2 interrupt T2CON = 0; // Prescaler 1:1, and Timer2 is off initially PIR1.TMR2IF =0; // Clear int bit // Configure Comparator module CMCON = 5; // Independent comparator between RA1 (-) and RA2(+) Lcd_Init(); Lcd_Cmd(_Lcd_Clear); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1, 1, message1); Lcd_Out(2, 1, message2); delay_ms(2000); Lcd_Cmd(_Lcd_Clear); Lcd_Out(1, 1, "C = "); Lcd_Out(1, 5, Capacitance); Va = 0; TimerValue = 108; // 104 + 4 clock delay on branching to ISR and others while(1){ if(!Switch) { Num = 0; OverRange =0; Lcd_Cmd(_Lcd_Clear); Lcd_Out(1, 1, "Testing."); Lcd_Out(2, 1, "..."); TMR2 = TimerValue; // Initial value of Timer2 for 30us delay Va = 1; //apply voltage T2CON.TMR2ON = 1; // start timer while(CMCON.C2OUT) { if(OverRange) break; } T2CON.TMR2ON = 0; // stop timer T_Value = TMR2 - TimerValue; Va = 0; //--------------------------------- if(!OverRange){ Display_Cap(Num*10); } else{ OverRange = 0; Lcd_Cmd(_Lcd_Clear); Lcd_Out(1, 1, "Out of Range!"); } reset(); } } }
ولى عوده اخرى باذن الله لاستكمال شرح بعض العمليات الحسابيه واتمنى المشاركه لتطوير هذا المشروع ليخدم الجميع باذن الله

إضافة رد

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

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

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


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

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