أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الأحد أبريل 10, 2016 11:35 pm

أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects
المرجع الأساسى :
http://microcontrollerslab.com/pic-microcontroller-projects-for-eee-students/

تحظى مشاريع الميكروكونترولر PIC بانتشار واسع بين طلاب الهندسة الكهربائية والإلكترونية . الميكروكنترولر PIC هي عائلة من الميكروكنترولر صممت بمعرفة شركة ميكروشيب وهى تستخدم البناء المعمارى المعروف ببناء هارفارد ، وتتوفر في مجموعة واسعة بدءا من الميكروكونترولر 8 بت إلى الميكروكونترولر 32 بت . كما أن الميكروكونترولر من العائلة Dspic مشهورة جدا في مجال معالجة الإشارات الرقمية . العائلة PIC16F من من الميكروكونترولر PIC مشهورة جدا بين طلاب الهندسة والمحترفيين (المهنيين) . سوف نستخدم السلسلة PIC16F من ميكروكنترولر في جميع المشاريع . الميكروكنترولر PIC سهل الاستخدام بسبب سهولة استخدام المترجم ميكروسى Mikro C . سوف يحتوى كل مشروع على الدائرة الكهربية ، والمحاكاة ، والبرمجة ، مع تغطية التفاصيل الكاملة .
قياس جهد التيار المتردد AC Voltage باستخدام الميكروكونترولر PIC16F877A ومكبر العمليات :
ربما تكون قد تعرفت على قياس الجهد المستمر المنخفض باستخدام الميكروكونترولر ، لكن نحن هنا فى هذا المشروع بصدد قياس جهد التيار المتردد المرتفع باستخدام الميكروكونترولر PIC وليكون مقدمة لمشاريع أكثر تقدما فى وقت لاحق .
1- قياس جهد التيار المتردد المرتفع :
لقياس الجهد 220V AC ، تحتاج إلى خفض هذا الجهد . الميكروكنترولر لا يمكنه قياس جهد أكبر من 5V . إذا أعطيته جهد أكبر من 5V على المداخل التناظرية ، وسوف يحدث له ضرر دائم . لضمان حماية الميكروكونترولر ، وسوف تحتاج إلى خفض الجهد المتردد 220V AC إلى جهد متردد آخر والذي ينبغي أن تكون قيمة ذروته أقل من 5V . على سبيل المثال ، الجهد 220V AC يعنى قيمة RMS ، وقيمة ذروته تساوي Vp = Vrms/0.707 أى 311 V AC . وبالمثل عليك خفض الجهد المتردد المرتفع بنفس الطريقة بحيث ينبغى ألا تتغدى قيمة ذروته قيمة أكبر من 5V .
هناك طريقتان لخفض الجهد 220V AC إلى جهد متردد منخفض بحيث لا تتعدى قيمة ذروته أكبر من 5V :
• استخدام محول للجهد Potential Transformer .
• استخدام مكبر الفرق Difference amplifier .
لكن لماذا تريد أن تنفق المزيد من المال باستخدام محول الجهد ؟ فى حين يمكنك ان تفعل نفس الشىء بمساعدة مكبر العمليات ، فى نظام مكبر الفرق ، الرخيصة الثمن مع بعض المقاومات . طريقة مكبر الفرق تكون أكثر اقتصادا من طريقة محول الجهد عندما تريد خفض جهد أقل من 400V AC .
مكبر الفرق DIFFERENCE AMPLIFIER :
تمهيد :
مكبر الفرق هو نوع من المكبرات الإلكترونية والتى تكبر الفرق (حاصل طرح) بين جهدى دخل ولكنه يخمد (يتخلص) أى جهد مشترك لجهدى الدخل . هذا المكبر هو دائرة تناظرية بدخلين : الدخل السالب Vin- والدخل الموجب Vin+ وبخرج واحد Vout وفى هذا المكبر يتناسب الخرج مع الفرق بين جهدى الدخل تناسبا مثاليا أى :



الكود:

Vout = A ( Vin+  - Vin- )

حيث A هو كسب (ربح) المكبر Gain . الشكل التالى يبين الدائرة الكهربية الأساسية ومعادلة جهد الخرج :



الاستخدام العملى :



يستخدم مكبر الفرق فى تكبير الفرق فى الجهد بين مستويين من الجهد . في حالة التيار المتردد يكون لدينا اثنين من مستويات الجهد أحد المستويان يكون موجب بالنسبة للجهد المحايد neutral (المشترك) والمستوى والآخر يكون سالب بالنسبة للجهد المحايد .
يمكنك ضبط كسب (ربح) مكبر الفرق وفقا لمتطلباتك عن طريق تحديد القيم المناسبة للمقاومات. في هذا المشروع يكون الكسب :


الكود:

Gain A =  R8/(R1+ R2+ R3)

في حالة التيار المتردد يكون مستوى الجهد الثانى هو الصفر ، لأنه خلال الدورة الموجبة وخلال الدورة السالبة يعتبر الجانب الآخر هو جهد الصفر أو المحايد . لذلك فسوف يكون جهد الخرج :


vout = gain * Vinput

في الشكل أعلاه مقاومات الدخل R1، R2، R4، R5 لها قيمة مرتفعة 1M2 والتي لا تسمح بظهور جهد مرتفع عبر مكبر العمليات .ونظرا لأنه يتم استخدام مقاومات دخل مرتفعة فإن التيار الذى يمر يكون منخفض جدا وفى حدود الميكروأمبير وبهذه الطريقة فإن فقدان الطاقة سوف يكون في حدود المللى وات . وفقا لصيغة كسب مكبر الفرق يكون لدينا :


gain= (22K)/( 1.2M + 1.2M + 2.2K) = 0.009158271584381

ملاحظة :
يجب إجراء الحسابات وفق قيمة ذروة الموجة الجيبية . لأن ذروة الجهد هى الحد الأقصى لجهد طرف الدخل التناظرى . لذلك مع كسب بالقيمة 0.0092 فإنه بالنسبة لقيمة جهد الذروة للموجة الجيبية بقيمة 220 * 1.414 = 311V AC يكون أقصى جهد خرج لمكبر العمليات هو :


Vout = .0092 * 311 = 2.8612 volt (peak output voltage)




كما ترى فى الدائرة الكهربية المبينة أعلاه قمنا بتوصيل الطرف الآخر للمقاومة R7 بالجهد الموجب 5V بدلا من الأرضى (بالدائرة الأساسية) ، كما نفعل عند استخدام مكبر الفرق في العديد من التطبيقات . تستخدم المقاومة R7 لزيادة مستوى الجهد المستمر DC level فى خرج مكبر العمليات . الموجة الجيبية يكون لها مستوى جهد مستمر بالقيمة صفر ولها دورة جهد سالبة . المكروكونترولر لا يمكنه قراءة الجهد السالب . لذلك قمنا بزيادة مستوى الجهد المستمر للموجة الجيبية بقيمة 5V لإزاحة النصف السالب من الدورة إلى الجزء الموجب ، وبهذه الطريقة لن يظهر جهد سالب عبر الميكروكونترولر . الآن ، فإن جهد ذرة الخرج من مكبر العمليات يكون 5 + 2.8612 = 7. 8612 volt ولكن كما ذكرت ، الميكروكنترولر لا يمكنه قياس جهد أكبر من 5V . لذلك وكما هو موضح في الشكل أعلاه استخدمنا مقسم جهد ، مكون من R9 , R10 لتقسيم الجهد إلى النصف كما يلى :


Vout = 7. 8612/2 = 3.93

تستخدم المكثفات C1، C2 و C3 كمرشحات للتخلص من التوافقيات المرافقة لجهد الدخل وتوفير الحماية للميكروكونترولر الآن ، يمكن توصيل الطرف AN إلى طرف دخل تناظرى للميكروكونترولر لقراءة الجهد بسهولة .

الدائرة الكهربية :


كود برنامج قياس الجهد المتردد بلغة السى مع المترجم ميكروسى :

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 10:10 am

كود برنامج قياس الجهد المتردد بلغة السى مع المترجم ميكروسى :


الكود:

/**************************************
Programs for AC parameters  measurements
1-Measurement of AC Voltage
MCU: PIC16F877A  X-Tal: 8MHz
Date : 10/4/2016
****************************************/
// LCD module connections
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;
// End LCD module connections
//////////Variables////////////////////
float v;
char rms_text[] = "RMS:000V";
///////////////Functions////////////////////////
void init(){
ADCON1=0;
CMCON=7;
TRISA  = 0xFF;
/////////
Lcd_Init();                        // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_out(1,1,"AC parameters");
Lcd_out(2,1,"measurements");
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
}
////////
void voltage_READ(void){
 float max;
 int i,temp;
 char rms;
 max = 0;
            for(i=0;i<5000;i++)//get max reading in the ac period
            {
                temp = ADC_Read(0); //read and convert
              if(temp>max)//compare
                {
                  max = temp; // assign
                }
                Delay_us(5);
            }//repeat to get max reading in the ac period

 // calculate peak and rms values
 max = max*5.0/1023.0;  //input volt to PIC AN pin
 max = max*2; // input volt to voltage divider
 max=(max-5.0);//remove added DC  5v level to get AC signal
 max = max *109.2;  // input voltage to op-amp v * 1/0.009158271584381(gain)
 max=max*0.707107; // to get RMS value Vrms
 rms = max; //to get integer value
 ///////text modification///////////
 rms_text[4] = rms/100 + 48;  // convert value into ASCII
 rms_text[5] = (rms/10)%10 +48;  // convert value into ASCII
 rms_text[6] = (rms)%10 +48;  // convert value into ASCII
Lcd_Out(1,5,rms_text);  // Display rms_text on LCD
 }
 /////////////////Main function/////////////////////////
 void main()
{
init();
 while(1)
 {
 voltage_READ();
 }
}

النتيجة :



الطريقة الثانية لقياس جهد التيار المتردد :

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 10:32 am

الطريقة الثانية لقياس جهد وتردد التيار المتردد :
فى هذه الطريقة سوف نستخدم محول جهد ومقسم جهد لخفض الجهد 220V AC إلى أقل من 5V AC .
المكونات :
• محول جهد .
• قنطرة توحيد التيار المتردد .
• دائرة مقسم جهد .
• ميكروكونترولر PIC16F877A .
• وحدة عرض LCD .
محول الجهد Potential transformer (PT)
محول الجهد هو نوع من المحولات يستخدم لخفض جهد التيار المتردد بغرض قياسه . على سبيل المثال ، فى هذا المشروع سوف نستخدم محول جهد لخفض الجهد 220V AC إلى 12V AC . الملف الثانوى لمحول الجهد يكون له عدد لفات أقل من عدد لفات الملف الابتدائى بقيمة نسبة التحويل أى يكون :


Ns/Np = Vs/Vp

قنطرة التوحيد Bridge rectifier



قنطرة التوحيد هى دائرة إلكترونية تستخدم فى تحويل جهد التيار المتردد إلى جهد مستمر نبضى . بمعنى أنها تحول نصف الدورة السالبة إلى نصف دورة موجبة . والسؤال هو لماذا نحتاج قنطرة التوحيد فى هذا المشروع ؟ الإجابة : لأن الميكروكونترولر لا يمكنه قياس الجهد السالب . لذلك نحتاج لتحويل نصف دورة الجهد المتررد السالب إلى نصف دورة موجب . يتم عمل قنطرة التوحيد من دايودات توحيد متصلة فى شكل قنطرة ، مثل الدايودات 1N4007 .
مقسم الجهد :
مقسم الجهد ، كما هو ظاهر من الاسم ، يستخدم لتقسيم الجهد . يتم استخدام مقاومتين كمقسم جهد . يقوم محول الجهد بخفض الجهد 220V AC إلى الجهد 12V AC . بعد ذلك تستخدم قنطرة التوحيد لتحوبل الجهد 12V AC إلى تيار مستمر نبضى . لكن الميكروكونترولر لا يمكنه قراءة الجهد الأكبر من 5V . لذلك يقوم مقسم الجهد بتخفيض أخر للجهد ليكون الجهد عبر طرف الدخل التناظرى للميكروكونترولر أقل من 5V .
الدائرة الكهربية :




برنامج قياس جهد وتردد التيار المتردد بلغة السى مع المترجم ميكروسى :

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 10:37 am

برنامج قياس جهد وتردد التيار المتردد بلغة السى مع المترجم ميكروسى :


الكود:

/**************************************
Program for AC parameters  measurements
2-ac voltage and frequency measurements
MCU: PIC16F877A  X-Tal: 8MHz
Date : 10/4/2016
****************************************/
// LCD module connections
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;
// End LCD module connections
char peak_text[] = "PK:000V";
char rms_text[] = "RMS:000V";
char frequency_text[] = "FREQUENCY:00Hz";
/////////////////////
void init(){
TRISA = 0xFF; // set all pins of PORT A as input
ADCON1=0x00; // set all Analog
OPTION_REG = 0b00101000; // set TOCKI as clock counter , PS2:PS0: Prescaler Rate 1:2
 /////////////////////////
 Lcd_Init();
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Cmd(_LCD_CURSOR_OFF);
 /////////////////////
 Lcd_Out(1,1,"Measurement of");
 Lcd_Out(2,1,"AC parameter ");
 Delay_ms(2000);
 Lcd_Cmd(_LCD_CLEAR);
 }
 //////
 void voltage(){
 unsigned int i,peak,rms,temp;
 float max1 ;
 // Find the peak amplitude of the sine wave...
            max1 = 0;
            for(i=0;i<5000;i++)
            {
              temp = ADC_Read(0);
              if(temp>max1)
                {
                  max1 = temp;
                }
                Delay_us(5);
            }

              max1 = max1*(5.0/1023.0) ;//Input voltage to PIC AN pin
           max1 = max1*11.0 ;//Input voltage to voltage divider circuit
              max1 = max1+1.4; // voltage drop on bridge
              max1 = max1* 220.0/12.0;//Input voltage to voltage transformer
              peak = max1; //peak as integer value
              rms = peak*0.707; // find the rms value of the line voltage

            peak_text[3] = peak/100 + 48; // convert into ASCII
            peak_text[4] = (peak/10)%10 +48; // convert into ASCII
            peak_text[5] = (peak)%10 +48; // convert into ASCII
            Lcd_Out(1,1,peak_text); // Display message on LCD

            rms_text[4] = rms/100 + 48;  // convert into ASCII
            rms_text[5] = (rms/10)%10 +48;  // convert into ASCII
            rms_text[6] = (rms)%10 +48;  // convert into ASCII
            Lcd_Out(1,9,rms_text);  // Display message on LCD
   }
         //////////

void frequency(){
unsigned int Hz;
TMR0=0; // clear TMR0
Delay_ms(1000);  // Delay 1 Sec to measure Hz
/////
Hz=TMR0/2;// divide by 2 , full wave double the frequency
frequency_text[10] = (Hz/10) + 48;    // Extract tens digit as ASCII
frequency_text[11] =  (Hz/1)%10 + 48;    // Extract ones digit as ASCII
Lcd_Out(2,1,frequency_text);  // Display message on LCD

TMR0=0;
}

///////////////////////////
void main()
{
 init();
  while(1)
  {
    voltage();
   frequency();

  }// while
}// void main



النتيجة :



Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 12:51 pm

قياس التيار المتردد AC باستخدام الميكروكونترولر PIC :
محول التيار Current Transformer :
يستخدم محول التيار لقياس التيار المتردد المرتفع والذى يمكن أن يصل مداه إلى ألف أمبير ، وهذا يعتمد على معدل محول التيار ونسبة تحويل التيار (خفض التيار) الخاصة به .
افترض أن لديك محول تيار بنسبة تحويل للتيار (100 : 10 Amper) ، هذا يعني أن تيار الجانب الابتدائى للمحول هو 100 أمبير وتيار الجانب الثانوي هو 10 أمبير . لا يمكنك استخدام هذا المحول لقياس تيار أكثر من 100 أمبير . عن طريق قياس تيار الجانب الثانوي المنخفض ، نستطيع تحويله بسهولة إلى قيمة تيار الجانب الابتدائى باستخدام صيغة نسبة تحويل التيار .

كيفية قياس تيار الجانب الثانوى :
هناك العديد من الطرق لقياس التيار المتردد ، يمكنك قياسه باستخدام مقياس التيار المتردد AC Ammeter ، ولكن إذا كنت ترغب في إجراء بعض عمليات التحكم والمراقبة وتريد ان ترسل قيمة التيار المقاس إلى مكان آخر يجب أن تستخدم نوع من النظام الذكي .
على سبيل المثال ، إذا كنت تريد أن تصنع دائرة حماية للتيار بالمواصفات التالية : إذا كان التيار المار فى خط أكبر من 100 أمبير ، يجب إجراء فعل تحكم لتشغيل ريلاى ، فإذا زاد التيار عن 100 أمبير يتم فتح تلامسات الريلاى ، أما إذا كان التيار أقل من 100 أمبير يتم غلق تلامسات الريلاى .
لعمل مثل هذا النوع من النظام الذكي ، قد نستخدم الإلكترونيات التناظرية والرقمية ، ولكن من الأفضل استخدام الالكترونيات الرقمية إذا كنا مهتمين بمسألة التكلفة . في هذا التدريب سوف نستخدم الميكروكونترولر PIC لقياس التيار المتردد .
المكونات المادية (الهاردوير) لقياس التيار المتردد :
• الميكروكونترولر PIC16F877A .
• مكبر الفرق difference amplifier .
مكبر الفرق :
لقياس التيار المتردد باستخدام الميكروكونترولر PIC ، يجب علينا أن نستخدم وحدة محول من تناظرى لرقمى ADC والمدمجة ضمن الميكروكونترولر PIC . لاستخدام وحدة المحول ADC سنقوم بتحويل التيار إلى شكل الجهد باستخدام مقاومة توازى shunt ( مجزىء أو مقسم تيار) بقيمة 0.1 أوم يتم توصيلها عبر محول التيار CT ، وسوف نقوم بقياس الهبوط فى الجهد عبر هذه المقاومة ، حيث يمكن بسهولة تحويله إلى تيار مرة أخرى . على سبيل المثال : إذا كان هبوط الجهد عبر المقاومة 1 أوم هو 8V ، عندئذ فإن التيار ، تبعا لقانون أوم ، يكون
V=IR
I=V/R
I=8/1=8A

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




Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 12:54 pm

البرنامج :

الكود:

 ///////AC CURRENT MEASUREMENT///////////////
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;
///////////////////////////
char current_text[] = "CURRENT:000A";  // FORM OF CURRENT
///////////////Functions////////////////////////
void init(){
ADCON1=0;
CMCON=7;
TRISA  = 0xFF;
/////////
Lcd_Init();                        // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);

}
/*************************current measurement function****************************/
void current_READ(void){
 float max,current;
 unsigned int i,temp ;
 char pri_current ;
 

 max = 0;
            for(i=0;i<5000;i++)//get max reading in the ac period 
            {
                temp = ADC_Read(0); //read and convert 
              if(temp>max)//compare
                {
                  max = temp; // assign
                }
                Delay_us(5);
            }//repeat to get max reading in the ac period
                       
 // calculate peak and rms values
 max = max*5.0/1023.0;  //input volt to PIC AN pin
 max = max*2.0; // input volt to voltage divider
 max=(max-5.0);//remove added DC  5v level to get AC signal
 max = max *10.0;  // input voltage to op-amp (gain)
 max=max*0.707; // to get RMS value Vrms
 current = max / 1.0 ; //  secondry current through resistor 1 ohm
 current = current * 10.0 ; // primary current , CT ratio
 pri_current =  current ;
 ///////text modification///////////
 current_text[8] = pri_current/100 + 48;  // convert value into ASCII
 current_text[9] = (pri_current/10)%10 +48;  // convert value into ASCII
 current_text[10] = (pri_current)%10 +48;  // convert value into ASCII
Lcd_Out(1,1,current_text);  // Display rms_text on LCD
 }

/***********************************main function********************************/
void main()
{
init();
          while(1)
        {
               
            current_READ();
          }
}


Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الإثنين أبريل 11, 2016 9:34 pm

أفو ميتر رقمى لقياس الجهد والتيار المستمر :
الدائرة الكهربية :


البرنامج :


الكود:

/**************************************
Program for DC Voltage and Current measurements
MCU: PIC16F877A  X-Tal: 8MHz
****************************************/
// LCD module connections
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;
// End LCD module connections

unsigned int i,peak,rms,temp;
float max1 ;
char volt_text[] = "VOLTAGE:00.0V";
char current_text[] = "CURRENT:00.0A";
///////////////Functions////////////////////////
void init(){
ADCON1=0;
CMCON=7;
TRISA  = 0xFF;
/////////
Lcd_Init();                        // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_out(1,1,"DC parameters");
Lcd_out(2,1,"measurements");
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
}
/////////////////////
void voltage_READ(void){
 float max;
 unsigned int i,temp ,volt;
 max = 0;
 for(i=0;i<50;i++)//get max reading in the ac period
 {
  temp = ADC_Read(0); //read and convert ch 0
  if(temp>max)//compare
    {
    max = temp; // assign
    }
 Delay_us(5);
}//repeat to get steady DC reading

 // calculations
 max = max*5.0/1023.0;  //input volt to PIC AN pin
 max = max*11.0; // input volt to voltage divider
 max = max*10.0; // to get one digit fraction
 volt = max; //to get integer value
 ///////text modification///////////
 volt_text[8] = volt/100 + 48;  // convert value into ASCII
 volt_text[9] = (volt/10)%10 +48;  // convert value into ASCII
 volt_text[11] = (volt)%10 +48;  // convert value into ASCII
Lcd_Out(1,1,volt_text);  // Display volt_text on LCD
 }
 //////////////////
 void current_READ(void){
 float max;
 int i,temp,current;
 max = 0;
 for(i=0;i<50;i++)//get max reading in the ac period
 {
  temp = ADC_Read(1); //read and convert ch 1
  if(temp>max)//compare
    {
    max = temp; // assign
    }
 Delay_us(5);
}//repeat to get steady DC reading

 // calculations
 max = max*5.0/1023.0;  //input volt to PIC AN pin
 max = max*10.0;  // to get one digit fraction
 current = max/1.0;//I=V/R
 
 //////text modification///////////
 current_text[8] = current/100 + 48;  // convert value into ASCII
 current_text[9] = (current/10)%10 +48;  // convert value into ASCII
 current_text[11] = (current)%10 +48;  // convert value into ASCII
Lcd_Out(2,1,current_text);  // Display volt_text on LCD
 }

///////////////////////////
void main()
{
init() ;

  while(1)
  {
    voltage_READ();
   current_READ();

  }// while
}// void main

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: أفضل مشاريع الميكروكونتولر PIC لطلاب الهندسة الكهربية والإلكترونية Top EEE students projects

مُساهمة من طرف Admin في الثلاثاء أبريل 12, 2016 10:35 am

دائرة كاشف العبور بالصفر zero crossing detector باستخدام الميكروكونترولر PIC
يتم تصميم دائرة كاشف العبور بالصفر للكشف عن عبور الصفر فى الموجة جيبية . إذا كنت مهندس الكترونيات أوكنت تعمل على مشاريع اإلكترونيات القدرة ، فقد تتعرض إلى العديد من الحالات التي ينبغى عليك قراءة تردد موجة جيبية أو كنت ترغب في الكشف عن عبور الصفر فى الموجة الجيبية ، أى كلما عبرت موجة الجيبية من نصف الدورة الموجب مرورا إلى نصف الدورة السالب أو من نصف الدورة السالب مرورا إلى نصف الدورة الموجب . يمكنك أيضا الكشف عن عبور الصفر من موجة جيبية بمساعدة مكبر عمليات بسيط . هنا سوف نستخدم الميكروكونترولر PIC16F877A وبعض المكونات الالكترونية البسيطة. هناك العديد من مشاريع الالكترونيات والكهرباء التي يستخدم فيها كشف عبور الصفر ، فعلى سبيل المثال قياس تردد موجة جيبية وعرضه على وحدة عرض LCD ، عنئذ يتم قياس الزمن اثنين متتاليين من عمليات كشف عبور الصفر ، هذا الزمن يمكن استخدامه لقياس تردد الموجة الجيبية بعد بعض المعالجات في البرنامج .
المكونات الرئيسية المستخدمة فى دائرة كاشف عبور الصفر :
مصدر الجهد :
مصدر الجهد المستخدم هو 220V AC فى شكل الموجة الجيبية والمطلوب كشف عبور الصفر له باستخدام دائرة عبور الصفر والميكروكونترولر PIC .
مقاومات تحديد الجهد :
يتم استخدام مقاومتين لتحديد الجهد ، بحيث يطهر جهد أقل من 5VAC عبر قنطرة التوحيد . السبب هو أن الميكروكونترولر لا يمكنه قراءة جهد أكبر من 5V وإلا تلف . يتم استخدام مقاومتين 220K ، ربع وات ، لتحديد الجهد .
قتطرة التوحيد :
بعد تحديد الجهد يصل إلى قنطرة التوحيد والتى تستخدم لتحويل النصف السالب من الدورة إلى نصف موجب أى تحويل الجهد المتردد إلى جهد مستمر نبضى . بعد ذلك يتم استخدام ترانزستور NPN كمفتاح والذى يتم فصله OFF فقط عند نقطة عبور الصفر .
الترانزستور نوع NPN :
يستخدم ترانزستور نوع NPN كمفتاح ليوفر للميكروكونترولر حافة مقاطعة موجبة أثناء لحظة كشف عبور الصفر . يمكنك استخدام أى ترانزستور NPN ، على سبيل المثال 2N3904 .
الميكروكونترولر PIC16F877A :
وهو الجزء الرئيسى فى المشروع لأنه يقوم بقياس عبور الصفر عن طريق المقاطعة الخارجية . فعند كل نقطة عبور بالصفر يتم انتاج نبضة ذات حافة موجبة عند خرج الترانزستور NPN . يقوم الميكروكونترولر بقياس هذه المقاطعة ويولد نبضة صغيرة على الطرف RD0 للمنفذ PORTD .
الدائرة الكهربية :


البرنامج :


الكود:

//ZERO CROSSING DETECTOR
unsigned char FlagReg;
sbit ZC at FlagReg.B0;
void interrupt()
{
if (INTCON.INTF){ //INTF flag raised, so external interrupt occurred
ZC = 1;
INTCON.INTF = 0;
}
}
void main() {
PORTB = 0;
TRISB = 0x01; //RB0 input for interrupt
PORTD = 0;
TRISD = 0; //PORTD all output
OPTION_REG.INTEDG = 0; //interrupt on falling edge
INTCON.INTF = 0; //clear interrupt flag
INTCON.INTE = 1; //enable external interrupt
INTCON.GIE = 1; //enable global interrupt
while (1){
if (ZC){ //zero crossing occurred
PORTD.f0 = 1; //Send a 1ms pulse
delay_ms(1);
PORTD.f0 = 0;
ZC = 0;
}
}
}

النتيجة :

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى