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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 18-02-2015, 03:06 PM المشاركة 1   
x4 الجزء الثاني من تطوير بوردات قابله للبرمجه (( جزء البرمجه وتحديث البوردات )) Twitter FaceBook Google+



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

على عموم تمت تجربه 5 بوردات وهي تعمل بنجاح
سوف اذكر تفاصيل لاحقا

الان تذكير بالموضوع الاصلي
http://www.qariya.info/vb/showthread.php?t=156039

وهذه هي البوردات الي راح يتم اعطاء الاكواد البرمجه وبلغه مايكروسي برو

http://up.top4top.net/downloadf-top4...bbfc1-rar.html

او

https://www.mediafire.com/?x5gaglge583272x

================================
وهذه بعض مشاكل الي تحدثت عنها في مواضيع منفصله
http://www.qariya.info/vb/showthread.php?t=161349
http://www.qariya.info/vb/showthread.php?t=161421


ملاحظه مهمه // موضوع قد يتم تحديثه الى الافضل
علما موضوع مفتوح للنقاش وسعطيكم جميع ملفات الي عندي

سأرفق لكم قريبا ان شالله كود لخمس بوردات وهي شغاله عمليا


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 18-02-2015 الساعة 03:36 PM
اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 19-02-2015, 09:27 AM المشاركة 2   
Thumbs up المشروع الاول التحكم بعدد N من مخارج ومداخل


السلام عليكم
في هذه مشروع الاول كود لكيفيه التحكم بعدد كبير من مداخل ومخارج
البوردات المستخدمه هي
1- board_main-CPU
2- board_output - control 16 output
3-board_v10_input
4-LCD
5-STATE LED

=========================
http://up.top4top.net/downloadf-top4...ab6e1-rar.html

https://www.mediafire.com/?41cwe2h7nn5khl0
=============================
الكود

كود:
#define Check_bit(var,pos)  (var&(1<<pos))
#define set_bit(var,pos)  (var|=(1<<pos) )
#define clear_bit(var,pos) ( var&=~(1<<pos) )
#define high   0
#define  low   1


const char max_input=2;// number of switch input
const char max_output=2;// number of output

//******************************************************//
 sbit  clk_pin at LATC1_bit;// for 74hc165
 sbit  SH_pin at LATC0_bit;
 sbit  so_pin at RA4_bit;

 sbit  clk_pin_dir at TRISC1_bit; // for 74hc165
 sbit  SH_pin_dir  at TRISC0_bit;
 sbit  so_pin_dir  at TRISA4_bit;

//**************init 74hc595**********//

sbit ds  at LATE2_bit;
sbit sh_cp at LATE0_bit;
sbit st_cp at LATE1_bit;
sbit ds_dir at TRISE2_bit;
sbit sh_cp_dir at TRISE0_bit;
sbit st_cp_dir  at TRISE1_bit;
//*********************************//
 //w3Lcd0 pin definitions:
sbit w3Lcd0_EN    at LATC5_bit;
sbit w3Lcd0_DATA  at LATC3_bit;
sbit w3Lcd0_CLOCK at LATC4_bit;
sbit led_lcd   at LATC2_bit;
sbit w3Lcd0_EN_Direction    at TRISC5_bit;
sbit w3Lcd0_DATA_Direction  at TRISC3_bit;
sbit w3Lcd0_CLOCK_Direction at TRISC4_bit;
sbit led_lcd_Direction      at TRISC2_bit;
//************************************//

char x,y , location=0 , init=0 ,time_display ,facter=0 ;

unsigned char char switch_input[max_input];
unsigned char char switch_input_store[max_input];
unsigned char char data_ic_74hc595[max_output];
unsigned char data_ic_display[max_output];

//Timer0
//Prescaler 1:1; TMR0 Preload = 15536; Actual Interrupt Time : 25 ms

//Place/Copy this part in declaration section
void InitTimer0(){
  T0CON         = 0x88;
  TMR0H         = 0x3C;
  TMR0L         = 0xB0;
  GIE_bit         = 1;
  TMR0IE_bit         = 1;
}

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit = 0;
    TMR0H         = 0x3C;
    TMR0L         = 0xB0;
    //Enter your code here
     if(init< 40)init++;
     time_display++;
    check_switch_74hc165(switch_input);
  }
}
//****************************************************//
void init_pic()
{
   ansela=0;
   anselb=0;
   anselc=0;
   anseld=0;
   ansele=0;
   SLRCON = 0; // Set output slew rate on all ports at standard rate
   // clear all arrays
   for(x=0;x<max_input;x++)switch_input_store[x]=0;
   for(x=0;x<max_input;x++)switch_input[x]=0;
   for(x=0;x<max_output;x++)data_ic_74hc595[x]=0;
    //***LCD ***//
   led_lcd_Direction=0;// lcd led
   led_lcd=1;// on led for lcd
    w3Lcd0_Init();
   w3Lcd0_Command(_lcd_cursor_off);   // to turn off Cursor
   w3Lcd0_GotoYX(0,0);
   w3Lcd0_CstrOut("welcome");
   Delay_ms(1000);  /* One second pause */
   w3Lcd0_Command(_lcd_clear);  // to turn off Cursor
}
//**************************************************//
void main()
{
 init_pic();
   //ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
   init_74hc165(max_input);// max_input  is number of ic 74hc165
    InitTimer0();
    init=0;
 while(1)
   {
     if(init>=40 && init<60 ) // must be check switch before init  74hc595 this very nessary for flashing in the first start
                              // and wait some time for example 1000ms
               {
                ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
                init=100;// random value
               }
    for(y=0;y<max_input;y++)
        {

         for(x=0;x<8;x++)
           {
             location=(y*8)+x;
             if( switch_input[y]&(1<<x))
                {
                 ic_74hc595(location+1,high,&data_ic_74hc595,&data_ic_display); // high is 0
                }
             else
                {
                 ic_74hc595(location+1,low,&data_ic_74hc595,data_ic_display);// low is 1
                }
           }

         }
         
         
         if(time_display>=80)
            {
              GIE_bit=0;
              time_display=0;
             if(facter==0){
                            w3Lcd0_GotoYX(0,0); // row 0 and column 0
                            w3Lcd0_CstrOut("output1= ");
                            w3Lcd0_GotoYX(1,0);// row 1 and column 0
                            w3Lcd0_CstrOut("input1 = ");
                           }
              else {
                    w3Lcd0_GotoYX(0,0); // row 0 and column 0
                    w3Lcd0_CstrOut("output2= ");
                    w3Lcd0_GotoYX(1,0); // row 1 and column 0
                    w3Lcd0_CstrOut("input2 = ");
                   }
              w3Lcd0_GotoYX(0,9); // row 0 and column 9
              w3Lcd0_Hex2out(data_ic_display[facter]);
              w3Lcd0_GotoYX(1,9);// row 1 and column 9
              w3Lcd0_Hex2out(switch_input[facter]);
              facter++;
              if(facter>=2)facter=0;
              GIE_bit=1;

            }
    }
}
ملاحظه ملف البروتيس هو لمحاكاه فقط

مشروع شغال عملي

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً Omar Mekkawy ( شكر العضو على هذه المشاركة )
اعجاب Omar Mekkawy ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 19-02-2015, 09:57 AM المشاركة 3   
افتراضي شرح ممبسط عن مشروع


السلام عليكم
الهاردوير
في بورده الرئيسي CPU تجد
1- سوكت O/P EX لربط سلسله 74hc595 ملاحظه وضعت مقاومه في الاطراف الثلاثه للمتكامله 74hc595 مقدارها 10k لغرض حمايه البيك من ربط الخاطئ او توصيل الاطراف الى الارضي سواء اثناء الربط او عند تلف 74hc595
2- سوكت I/P EX لربط سلسله 74hc165 طبعا هنا انا نسيت ربط مقاومات لغرض حمايه البيك
3- سوكت SPI هنا أستخدمته للشاشه مع الاضاءه مستمره للشاشه











==========================================
بالنسبه للبرمجه
يجب اضافه هذه مكتبات الى البرنامج كي يعمل
1- 74hc165.mcl
2- 74hc595.mcl
3- p18_w3Lcd-4.mcl

عن طريق project ==> add file to project
========================================
بالنسبه للشاشه مشروحه في احد مواضيع
اما
هذا كود يعني تعريف مكتبه مخارج ومداخل
كود:
init_74hc165(max_input);
كود:
ic_74hc595_init(max_output)
ملاحظه max_output و max_input هو عدد ايسيات موجوده في دائره
مثلا انا أستخدمت 74hc595 عدد 2 اذن max_output=2
====================================
اما هذا الكود للمكتبه 74hc165
كود:
check_switch_74hc165(switch_input);
طبعا طالما اريد التاكد من سويجات بأستمرار وضعتها في داله الانتربت كل 25ms
طبعا داله check_switch_74hc165 محتاجه مني مصفوفه عدد عناصرها هي عدد ايسيات او max_output مثلا عدد مداخل 16 يعني عدد ايسيات 74hc165 هو 2 معناها مصفوفه تحتاج الى عنصرين فقط لان كل بت يمثل دخل
وبالطبع ينطبق الحال عل مخارج
وهنا نستخدم هذه داله لتحكم بمخارج
كود:
ic_74hc595(  char pin_,char states_ , char *data_ic_74hc595 , char *data_ic_74hc595_display )
واضحه داله تحتاج منك طرف الي تريد تحكم به ومن ثم حالته هل هو فعال ام لا
ومن ثم مصفوفه لخزن قيمه مخارج واخرى لغرض عرض قيمتها على الشاشه
طبعا لانستطيع أستخدام مصفوفه data_ic_74hc595 في عرضها على شاشه لكون البيانات تم تشفيتها للتلائم مع هاردوير

طبعا هنا نتعامل مع 0 كأعطاء اشاره ON للمخرج اما 1 هو يعني OFF
====================================
تعاريف الارجل المخصصه لل 74hc595 , 74hc165 هي ثابته لكون نتعامل مع بورد مطبوع وجاهز
كود:
//******************************************************//
 sbit  clk_pin at LATC1_bit;// for 74hc165
 sbit  SH_pin at LATC0_bit;
 sbit  so_pin at RA4_bit;

 sbit  clk_pin_dir at TRISC1_bit; // for 74hc165
 sbit  SH_pin_dir  at TRISC0_bit;
 sbit  so_pin_dir  at TRISA4_bit;

//**************init 74hc595**********//

sbit ds  at LATE2_bit;
sbit sh_cp at LATE0_bit;
sbit st_cp at LATE1_bit;
sbit ds_dir at TRISE2_bit;
sbit sh_cp_dir at TRISE0_bit;
sbit st_cp_dir  at TRISE1_bit;
سؤال هل يمكنني تغير الاطراف ؟ نعم لان بورد فيه عده الاطراف يمكن أستعمالها

مثلا يمكن ربط شاشه في سوكت CH


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 19-02-2015 الساعة 10:28 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 19-02-2015, 10:40 AM المشاركة 4   
Unhappy اهم مشاكل في مشروع الاول


1- عندي مشكله بالاناره الشاشه حسب مخططات شاهدت وضع مقاومه صغيره حجم يعني 56 اوم يعني اشلون اعرف قيمه صحيحه



==========
2- لحظه تشغيل الاولى يشتغل بعض مخارج لجزء بسيط ثم تنطفئ رغم أني عملت تصفير لكل مخارج
لذا اضطريت عمل تأخير زمني لتعريف مكتبه الشاشه
كود:
if(init>=40 && init<60 ) // must be check switch before init  74hc595 this very nessary for flashing in the first start
                              // and wait some time for example 1000ms
               {
                ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
                init=100;// random value
               }
========================================
3- عند أختيار تردد 32Mhz حيث فعلت نظام PLL حيث دائره تعمل عدا داله مخارج لاتستجيب رغم انها تعمل على البروتيس


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 19-02-2015 الساعة 01:33 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 20-02-2015, 06:16 AM المشاركة 5   
افتراضي


1- عندي مشكله بالاناره الشاشه حسب مخططات شاهدت وضع مقاومه صغيره حجم يعني 56 اوم يعني اشلون اعرف قيمه صحيحه



==========
2- لحظه تشغيل الاولى يشتغل بعض مخارج لجزء بسيط ثم تنطفئ رغم أني عملت تصفير لكل مخارج
لذا اضطريت عمل تأخير زمني لتعريف مكتبه الشاشه
كود:
if(init>=40 && init<60 ) // must be check switch before init  74hc595 this very nessary for flashing in the first start
                              // and wait some time for example 1000ms
               {
                ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
                init=100;// random value
               }
========================================
3- عند أختيار تردد 32Mhz حيث فعلت نظام PLL حيث دائره تعمل عدا داله مخارج لاتستجيب رغم انها تعمل على البروتيس
السلام عليكم
تمت حل مشكله رقم 3 حيث عدلت في كود مكتبه 74hc595
وهي في كود نبضات يعني مثلا
;st_cp=0 ; st_cp=1 هذا خاطئ في ترددات عاليه تكون نبضه سريعه فلا يستجيب مايكرو لهذه النبضه لذا فقط نضع تاخير زمني مثلا 1us

;st_cp=0 ; delay_us(1); st_cp=1

لاتنسى تضغط عل save لحفظ التغيرات

تحياتي


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 20-02-2015 الساعة 02:01 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 20-02-2015, 05:44 PM المشاركة 6   
win


1- عندي مشكله بالاناره الشاشه حسب مخططات شاهدت وضع مقاومه صغيره حجم يعني 56 اوم يعني اشلون اعرف قيمه صحيحه



==========
2- لحظه تشغيل الاولى يشتغل بعض مخارج لجزء بسيط ثم تنطفئ رغم أني عملت تصفير لكل مخارج
لذا اضطريت عمل تأخير زمني لتعريف مكتبه الشاشه
كود:
if(init>=40 && init<60 ) // must be check switch before init  74hc595 this very nessary for flashing in the first start
                              // and wait some time for example 1000ms
               {
                ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
                init=100;// random value
               }
========================================
3- عند أختيار تردد 32Mhz حيث فعلت نظام PLL حيث دائره تعمل عدا داله مخارج لاتستجيب رغم انها تعمل على البروتيس
السلام عليكم

تم حل مشكلتين 2 و3
اليكم الكود الجديد
http://up.top4top.net/downloadf-top4...d6051-rar.html

https://www.mediafire.com/?1lvlsi2vsnyqm9v


بالنسبه للمشكله رقم 2 (( أنظر مشاركه مقتبسه)) متكامله 74hc595 قيمه الاوليه لها هي أصفار وبالطبع انا أحتاج 0 لتشغيل وليس لاطفاء وهذه تسبب لي مشاكل
لذا الخطأ كان في الكود هو اني وضعت تهيئه او تعريف متكامله بعد داله init_pic وهذه داله فيها زمن تأخيري 1 ثانيه اضافه الى وقت الي تحتاجه لكي يتم تهيئه 74hc595
لهذا وضعت تهيئتها في البدايه وبتالي سوف يتم تنفيذها اولا وبتالي ستتحول بسرعه الى 1 ولن يتم تشغيل ريلي بشكل لحظي لحظه تزويد البيك بالكهرباء
كود:
void main()
{
  ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
  init_pic();
  init_74hc165(max_input);// max_input  is number of ic 74hc165
  InitTimer0();


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 22-02-2015, 12:34 PM المشاركة 7   
افتراضي


السلام عليكم

تم حل مشكلتين 2 و3
اليكم الكود الجديد
http://up.top4top.net/downloadf-top4...d6051-rar.html

https://www.mediafire.com/?1lvlsi2vsnyqm9v


بالنسبه للمشكله رقم 2 (( أنظر مشاركه مقتبسه)) متكامله 74hc595 قيمه الاوليه لها هي أصفار وبالطبع انا أحتاج 0 لتشغيل وليس لاطفاء وهذه تسبب لي مشاكل
لذا الخطأ كان في الكود هو اني وضعت تهيئه او تعريف متكامله بعد داله init_pic وهذه داله فيها زمن تأخيري 1 ثانيه اضافه الى وقت الي تحتاجه لكي يتم تهيئه 74hc595
لهذا وضعت تهيئتها في البدايه وبتالي سوف يتم تنفيذها اولا وبتالي ستتحول بسرعه الى 1 ولن يتم تشغيل ريلي بشكل لحظي لحظه تزويد البيك بالكهرباء
كود:
void main()
{
  ic_74hc595_init(max_output) ;// max_output  is number of ic 74hc595
  init_pic();
  init_74hc165(max_input);// max_input  is number of ic 74hc165
  InitTimer0();
طبعا توجد حمايه أضافيه وهي أستخدام طرف 13 من متكامله حيث يمكن جعل هذا طرف =1 في البدايه عندها مخارج متكامله تكون ممانعه عاليه وبعد ذلك نجعل هذا طرف =0 وبتالي حمايه مخارج من تشغيل لحظي واليكم الكود الجديد
http://up.top4top.net/downloadf-top4...98801-rar.html
تحياتي


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 22-02-2015, 03:06 PM المشاركة 8   
افتراضي


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

في صوره مرفقه بور سبلاي ممتاز يصل قدره الى 3 امبير ويمكن التحكم بجهد الخارج من 1.23 الى 37 فولت و يتحمل جهد الادخال الى 40 فولت

الفائده جيده في هذا البور وجود البن رقم 5 وهو ON/OFF فاذا كان جهد عليه يكون منظم OFF اي لايخرج شيئ اما اذا تم ربط هذا الطرف الى الارضي فسيعمل منظم
اذن يمكن ربط هذا طرف بمايكروكنترولر وبتالي سيتم اعطاءه بالبدايه 5 فولت فلن يعمل منظم وبعد استقرار وضع وستقرار عمل متكاملات 595 يقوم البيك بأعطاء أشاره 0 الى طرف ON/OFF ليعمل عندها بورد ريلي

يفضل طبعا عزل بور سبلاي للمايكروكنترولر عن كارت الريلاي لكي لايحدث هبوط في جهد
وبالطبع بأستخدام هذا البور سبلاي قطعه للكونترول cpu او اي بور وقطعه اخرى لبورد ريليات مع التحكم بطرف ON/OFF عندها يمكننا أستخدام بطاريه لتغذيه النظام في حاله انقطاع التيار الكهربائي



https://www.google.iq/search?q=lm259...U%3B1471%3B640

إضافة رد

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

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

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


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

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