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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 05-03-2013, 07:41 PM المشاركة 1   
افتراضي مفتاح التحويل الأوتوماتيكى للقدرة من المصدر الرئيسى إلى المولد الاحتياطى للمستشفيات و Twitter FaceBook Google+



مفتاح التحويل الأوتوماتيكى للقدرة من المصدر الرئيسى إلى المولد الاحتياطى للمستشفيات والمصانع باستخدام الميكروكونترولر PIC16F877A
الخطوة الأولى والأساسية :
الاحساس وبيان جهد الدخل للشبكة العمومية Mains :
الدائرة الكهربية :





البرنامج :

كود:
///////////////////////////////////////////////////////////// // Project : ATS ( Automatic Transfer Switch) // 1- Mains voltage // PIC16F877A , 4MHz , Mikroc-Pro // Eng.F.Abdelaziz // http://www.eeecb.com/vb/index.php //5/3/2013 /////////////////////////////////////////////////////////// // LCD module connections sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB0_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D7_Direction at TRISB3_bit; // End LCD module connections ///////////////////////////////////////////////////////////////////////// unsigned int ADC_value ; char *text = "0000"; long volt_long ; char txt1[] = "Mains Voltage: " ; ///////////////////////////////////////////////////////////////////// void main(){ TRISA=0x01 ; //RA0 => analog input
Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,txt1); // Write text in first row //////////////////////////////////////////////////////////////////////////////////// while(1){
ADC_value = ADC_Read(0) ; // value from 0 to 1023 volt_long = (long) ADC_value * 220 /1023 ; // change to volt value from 0 to 220 ///////////////////////////////////////////////////////////////////////////////////////// ByteToStr(volt_long,text); // change volt value to text => 4 characters including null Lcd_Out(2,1,text); // display volt text => 0 to 220 ///////////////////////////////////////////////////////////////////////////////////////////// Lcd_Chr(2, 4, 'V'); // Write character "V" at row 2, column 4 after volt value
} }

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 06-03-2013, 12:17 AM المشاركة 2   
افتراضي


الخطوة الثانية :
برمجة دائرة بيان هبوط الجهد عن حد معين , 15% على سبيل المثال .
برمجة دائرة بيان السرعة , ومفتاح يعتمد على السرعة .
الدائرة الكهربية :




البرنامج :

كود:
///////////////////////////////////////////////////////////// // Project : ATS ( Automatic Transfer Switch) // 1- Mains voltage // PIC16F877A , 4MHz , Mikroc-Pro // Eng.F.Abdelaziz // http://www.eeecb.com/vb/index.php //5/3/2013 /////////////////////////////////////////////////////////////////// // LCD module connections sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB0_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D7_Direction at TRISB3_bit; // End LCD module connections ///////////////////////////VOLT ///////////////////////////////////////////// #define UNDER_VOLTAGE PORTD.B0 unsigned long ADC_value, VOLT_VALUE ; char *VOLT = "0000"; //////////////////////////////// RPM ///////////////////////////////// #define RPM_SWITCH PORTD.B1 #define ON 1 #define OFF 0 unsigned long RPM_Value; char *RPM = "00000"; void main(){ TRISA.B0=1 ; //RA0 => analog input TRISA.B4 = 1; // Inut at RA4/T0CKI PORTA.B4=0; TRISB=0; PORTB=0; TRISD=0; //RPM Switch Output PORTD=0; OPTION_REG=0b00101000; //Prescaler(1:1) , T0CKI=1 for counter mode Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off ////////////////////////////////////////////////////////////////////// while(1){ /////////////////////// ADC_value = ADC_Read(0) ; // value from 0 to 1023 VOLT_VALUE = ADC_value * 220 /1023 ; // change to volt value from 0 to 220 //////////////////////////////////////////////////////////////////////////////////////////// ByteToStr(VOLT_VALUE,VOLT); // change volt value to text => 4 characters including null Lcd_Out(2,1,VOLT); // display volt text => 0 to 220 Lcd_Out(2,5,"VOLT"); ////////////////////////////////////////////////////////////////////////////////////////////// //Lcd_Chr(2, 4, 'V'); // Write character "V" at row 2, column 4 after volt value ///////////////////////////////////////////////// if(VOLT_VALUE<=185) UNDER_VOLTAGE=ON ;else UNDER_VOLTAGE=OFF; /////////////////////////////////////////////////////////// /* The counter will be active for 1 sec and the number of pulses arrived during this interval will be recorded, and multiplied by 60 to get the RPM . */ TMR0=0; //The counter will be active for 1 sec, start Delay_ms(1000); // Wait for 1 sec RPM_Value = TMR0*60; /////////////////////////////////////////////////////////////// WordToStr(RPM_Value,RPM); // change RPM value to text => 6 characters including null Lcd_Out(1,1,RPM); //////////////////////////////////////////////////// Lcd_Out(1,7,"RPM"); ////////////////////////////////////////////////// if(RPM_Value > 600) RPM_SWITCH = ON ; else RPM_SWITCH = OFF; //////////////////////////////////////////////////////////// } }

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 06-03-2013, 10:41 AM المشاركة 3   
افتراضي


إضافة دائرة بيان تردد المصدر والتحكم من خلالها :
الدائرة الكهربية :



البرنامج :

كود:
/////////////////////////////////////////////////////////////
// Project : ATS ( Automatic Transfer Switch)
// 1- Mains voltage
// PIC16F877A , 4MHz , Mikroc-Pro
// Eng.F.Abdelaziz
// http://www.eeecb.com/vb/index.php
//5/3/2013
///////////////////////////////////////////////////////////////////
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
////////////////////////////////////////////////////////////
#define ON  1
#define OFF 0
///////////////////////////VOLT /////////////////////////////////////////////
#define UNDER_VOLTAGE PORTD.B0
unsigned int ADC_value  ;
long VOLT_VALUE ;
char *VOLT = "0000";
//////////////////////////////// RPM /////////////////////////////////
#define RPM_SWITCH PORTD.B1
unsigned long RPM_Value;
char *RPM = "00000";
//////////////////////////////////////////
#define FREQUY_SWITCH PORTD.B2
unsigned long FREQUENCY_VALUE ;
char *Hz = "0000";
//////////////////////////////////////////////////////////////////////
void main(){
TRISA.B0=1 ;    //RA0 => analog input
TRISA.B4 = 1; //  Inut at RA4/T0CKI
 PORTA.B4=0;
TRISB=0;
PORTB=0;
TRISD=0; //RPM Switch Output
PORTD=0;
OPTION_REG=0b00101000; //Prescaler(1:1) , T0CKI=1 for counter mode
Lcd_Init();                           // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);                 // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);            // Cursor off
//////////////////////////////////////////////////////////////////////
while(1){
///////////////////////
ADC_value = ADC_Read(0) ; //  value from 0 to 1023
VOLT_VALUE =  (long)ADC_value * 220 /1023 ; // change to volt value from 0 to 220
////////////////////////////////////////////////////////////////////////////////////////////
ByteToStr(VOLT_VALUE,VOLT);                 // change volt value to text => 4 characters including null
Lcd_Out(2,1,VOLT);    // display volt text => 0 to 220
 //Lcd_Out(2,5,"VOLT");
//////////////////////////////////////////////////////////////////////////////////////////////
Lcd_Chr(2, 4, 'V');   // Write character "V" at row 2, column 4 after volt value
/////////////////////////////////////////////////
if(VOLT_VALUE<=185) UNDER_VOLTAGE=ON ;else UNDER_VOLTAGE=OFF;
///////////////////////////////////////////////////////////
/* The counter will be active for 1 sec and the number of pulses arrived during this interval will be recorded,
and multiplied by 60 to get the RPM . */
   TMR0=0;              //The counter will be active for 1 sec, start
   Delay_ms(1000);      // Wait for 1 sec
   RPM_Value = TMR0*60;
FREQUENCY_VALUE = TMR0 ;
///////////////////////////////////////////////////////////////
WordToStr(RPM_Value,RPM);                 // change RPM value to text => 6 characters including null
Lcd_Out(1,1,RPM); 
////////////////////////////////////////////////////   
Lcd_Out(1,7,"RPM");
 //////////////////////////////////////////////////
   if(RPM_Value > 600) RPM_SWITCH = ON ; else RPM_SWITCH = OFF;
////////////////////////////////////////////////////////////
ByteToStr(FREQUENCY_VALUE,Hz);                 
Lcd_Out(2,6,Hz); 
////////////////////////////////////////////////////   
Lcd_Out(2,9,"Hz");
 //////////////////////////////////////////////////
   if(FREQUENCY_VALUE < 40) FREQUY_SWITCH = ON ; else FREQUY_SWITCH = OFF;
////////////////////////////////////////////////////////////
}
}


1 ابو الوليد
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 5
نشاط [ 1 ابو الوليد ]
قوة السمعة:0
قديم 06-03-2013, 02:50 PM المشاركة 4   
افتراضي


http://www.dbaasco.com/vb/showthread.php?t=2739
السلام عليكم اريد هذا المشروع ضرورى الاني بحث في المشاريع التي في الرابط ولم اجد الكود وجزاك الله كل خير وهل هذه الدائرة تعمل نفس العمل


عبدالله زهير
:: مهندس جيد ::
تاريخ التسجيل: Sep 2012
المشاركات: 272
نشاط [ عبدالله زهير ]
قوة السمعة:0
قديم 06-03-2013, 06:00 PM المشاركة 5   
افتراضي


جزاك الله خيرا مشروع أكثر من رائع هل يوجد تكملة


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 06-03-2013, 07:08 PM المشاركة 6   
افتراضي


http://www.dbaasco.com/vb/showthread.php?t=2739
السلام عليكم اريد هذا المشروع ضرورى الاني بحث في المشاريع التي في الرابط ولم اجد الكود وجزاك الله كل خير وهل هذه الدائرة تعمل نفس العمل
أخى الكريم

شكرا جزيلا لك

الملفات تم وضعها على الرابط :

http://www.eeecb.com/vb/showthread.php?p=3827#post3827

مع تمنياتى بدوام التوفيق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 06-03-2013, 07:10 PM المشاركة 7   
افتراضي


جزاك الله خيرا مشروع أكثر من رائع هل يوجد تكملة
أخى الكريم

شكرا جزيلا لك

المشروع مازال فى بدايته وإن شاء الله سوف يكتمل .

مع تمنياتى بدوام التوفيق


الصورة الرمزية هيثم العليمي
هيثم العليمي
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
الدولة: yemen
المشاركات: 236
نشاط [ هيثم العليمي ]
قوة السمعة:0
قديم 06-03-2013, 07:55 PM المشاركة 8   
افتراضي


جزاك الله خيرا عل الموضوع


لكن مشروع البي ال سي كيف يتم برمجته ..

إضافة رد

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

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

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


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

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