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

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

احمد_
:: مهندس ::
تاريخ التسجيل: Jun 2013
المشاركات: 31
نشاط [ احمد_ ]
قوة السمعة:0
قديم 17-08-2018, 05:22 AM المشاركة 1   
افتراضي الرجاء المساعدة هذا الكود لايعمل Twitter FaceBook Google+



السلام عليكم
تم كتابة هذا الكود ولكن السفن سكمن واقف اصفار فقط لايتغير
هو مقياس تيار بالحساس ACS712 والبك المستخدم 16F677

كود:
long u0;  long u1;   long u2;
unsigned long temp=0;

unsigned long seg[]={64,121,36,48,25,18,2,120,0,16};
void s7 ()
    {
        u0=(temp%10);
     u1=((temp%100)/10);
     u2=(temp%1000)/100;
     PORTB=32;PORTC=seg[u0];Delay_ms(4);
     PORTB=64;PORTC=seg[u1];Delay_ms(4);
     PORTB=128;PORTC=seg[u2];Delay_ms(4); }


   char message[]  = "ACS712-05 Sensor";
       unsigned int ADC_Value, Factor;

void main( ) 
{
 TRISA=0b00000111;
 TRISB=0b00010000; TRISC=0;  PORTC=0;  portb=0;

 while(1)
 
 {   ADC_Value = ADC_Read(0);
    ADC_Value = ADC_Value + ADC_Read(0);
    ADC_Value = ADC_Value + ADC_Read(0);
    ADC_Value = ADC_Value/3;
    temp = (ADC_Value-512)*Factor ;
    ADC_Value = temp/10;
       s7 ();   Delay_ms(10);   }}

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 17-08-2018, 06:21 AM المشاركة 2   
افتراضي


كم قيمة factor ؟

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

احمد_
:: مهندس ::
تاريخ التسجيل: Jun 2013
المشاركات: 31
نشاط [ احمد_ ]
قوة السمعة:0
قديم 17-08-2018, 10:33 AM المشاركة 3   
افتراضي


شكرا لك استاذي
512
[IMG][/IMG]


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 17-08-2018, 11:03 AM المشاركة 4   
افتراضي


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


احمد_
:: مهندس ::
تاريخ التسجيل: Jun 2013
المشاركات: 31
نشاط [ احمد_ ]
قوة السمعة:0
قديم 17-08-2018, 01:19 PM المشاركة 5   
افتراضي


شكرا استاذي طبعا منقولة من احد المواقع لن خبرتي قليلة في كتابة الكواد
http://embedded-lab.com/blog/a-brief...sensor-part-2/


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 19-08-2018, 03:53 AM المشاركة 6   
افتراضي


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


تفضل أخي لقد صممت لك هذا المشروع وهو يتوافق مع طلبك ...








واليك الكود ...


كود:
 
 
 
     //  ENG / ABDALLA HYGAZY  //
     //  DATA / 2018 / 8 / 18  //

     unsigned short mask(unsigned short num);
     unsigned int  SEGMENT_1=0,SEGMENT_2=0,SEGMENT_3=0,SEGMENT_4=0,pot=0,adc_rd=0;
     long  tlong=0;

   //===========================================================**
         void SEGMENT()
      {
      
         PORTB = 16;  PORTC = mask( SEGMENT_1 ); delay_ms(2);
         PORTB = 32;  PORTC = mask( SEGMENT_2 ); delay_ms(2);
         PORTB = 64;  PORTC = mask( SEGMENT_3 ); delay_ms(2);
         PORTB = 128; PORTC = mask( SEGMENT_4 ); delay_ms(2);
    
     }
     
  //===========================================================**
        void main()
  {
        TRISA = 1;
        TRISB = 0; PORTB = 0;
        TRISC = 0; PORTC = 0;

           while(1)
         {

            adc_rd = ADC_Read(0);
            tlong = (long)adc_rd * 5000;
            tlong = tlong / 1023;
            
            SEGMENT_1 =(tlong/1000);
            SEGMENT_2 =((tlong%1000)/100);
            SEGMENT_3 =(tlong%1000)%100/10;
            SEGMENT_4 =(tlong%1000)%100%10;
            
            SEGMENT();

      }
  }
  
  
 //===========================================================**
  
   unsigned short mask(unsigned short num){
   switch (num){

   case 0 : return 0xC0;
   case 1 : return 0xF9;
   case 2 : return 0xA4;
   case 3 : return 0xB0;
   case 4 : return 0x99;
   case 5 : return 0x92;
   case 6 : return 0x82;
   case 7 : return 0xF8;
   case 8 : return 0x80;
   case 9 : return 0x90;

}
}

يستطيع قياس حتي 9000 ميلي أمبير ....


ملحوظه من خلال هذا الكود تستطيع ضبط الميلي أمبير الأقصي وهنا انا اخترت 5000 ميلي أمبير يمكنك التعديل علي هذا الرقم كما يناسبك ...
كود:
    tlong = (long)adc_rd * 5000;
لاحظ الرقم ( 5000 ) يمكنك التعديل عليه كما يناسب أقصي تيار مراد قياسه ..

مثال ... لو أقصي تيار مقدر قياسه هو( 8 ) أمبير .. ايذااا يجب تغيير الرقم ( 5000 ) الي ( 8000 ) ...

_________________________________________________


المشروع كامل .... كود + محكاة ... للتحميل ...http://www.mediafire.com/file/biepu1...jrs/A.rar/file



بالتوفيق



التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 19-08-2018 الساعة 04:02 AM

احمد_
:: مهندس ::
تاريخ التسجيل: Jun 2013
المشاركات: 31
نشاط [ احمد_ ]
قوة السمعة:0
قديم 19-08-2018, 12:09 PM المشاركة 7   
افتراضي


استاذ عبد الله حجازي الف شكرا لك والله تعبتك معايا وربي يحفظك ويخليك
بس شاشة السفن الي عندي 3 خانات


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 20-08-2018, 01:40 AM المشاركة 8   
افتراضي


استاذ عبد الله حجازي الف شكرا لك والله تعبتك معايا وربي يحفظك ويخليك
بس شاشة السفن الي عندي 3 خانات
لا شكر علي واجب

أخي يمكنك التعديل علي الكود لكي يتوافق مع ال 7segment اللي عندك لاحظ التعديل ..



كود:
 
         PORTB = 16;  PORTC = mask( SEGMENT_1 ); delay_ms(2);
         PORTB = 32;  PORTC = mask( SEGMENT_2 ); delay_ms(2);
         PORTB = 64;  PORTC = mask( SEGMENT_3 ); delay_ms(2);
تم مسح أخر سطر من الكود للألغاء الشاشة الرابعه




كود:
  
            SEGMENT_1 =(tlong/1000);
            SEGMENT_2 =((tlong%1000)/100);
            SEGMENT_3 =(tlong%1000)%100%10;


تم الغاء اخر سطر وتعديل علي المعادله لكي تتوافق مع خانات المئات ..



الكود كامل بعد التعديل



كود:
  
 
 
     //  ENG / ABDALLA HYGAZY  //
     //  DATA / 2018 / 8 / 18  //

     unsigned short mask(unsigned short num);
     unsigned int  SEGMENT_1=0,SEGMENT_2=0,SEGMENT_3=0,SEGMENT_4=0,pot=0,adc_rd=0;
     long  tlong=0;

   //===========================================================**
         void SEGMENT()
      {
      
         PORTB = 16;  PORTC = mask( SEGMENT_1 ); delay_ms(2);
         PORTB = 32;  PORTC = mask( SEGMENT_2 ); delay_ms(2);
         PORTB = 64;  PORTC = mask( SEGMENT_3 ); delay_ms(2);
         
        // PORTB = 128; PORTC = mask( SEGMENT_4 ); delay_ms(2);
    
     }
     
  //===========================================================**
        void main()
  {
        TRISA = 1;
        TRISB = 0; PORTB = 0;
        TRISC = 0; PORTC = 0;

           while(1)
         {

            adc_rd = ADC_Read(0);
            tlong = (long)adc_rd * 5000;
            tlong = tlong / 1023;
            
            SEGMENT_1 =(tlong/1000);
            SEGMENT_2 =((tlong%1000)/100);
            SEGMENT_3 =(tlong%1000)%100%10;
            
          //  SEGMENT_4 =(tlong%1000)%100%10;
            
            SEGMENT();

      }
  }
  
  
 //===========================================================**
  
   unsigned short mask(unsigned short num){
   switch (num){

   case 0 : return 0xC0;
   case 1 : return 0xF9;
   case 2 : return 0xA4;
   case 3 : return 0xB0;
   case 4 : return 0x99;
   case 5 : return 0x92;
   case 6 : return 0x82;
   case 7 : return 0xF8;
   case 8 : return 0x80;
   case 9 : return 0x90;

}
}

لاحظ السطور المعلمه بالأزرق هي اللتي تم الغائها من الكود ...



إضافة رد

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

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

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


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

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