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

   

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 11-02-2015, 01:23 AM المشاركة 1   
Exclamation قياس فولت ؟؟



السلام عليكم

فى هذا الدائرة استخدمت فيها المتحكم PIC16F88 وجعلت الطرف A0 دخل تناضرى اى انلوك لكى اقرء الفولت الداخل الى المايكرو عن طريق هذا الطرف كتبت الكود والكود يعمل بشكل ممتاز
وسؤالى هنا لو اردت عند وصول الفولتية الى فولت معين كمثال2.5 فولت يجعل طرف portb.b0 خرج فماذا اكتب فى الكود حيث كتبتها ولم افلح ؟؟

ولكم جزيل الشكر




الكود


كود:
#define   is    ==
int mlv=0;
void _init()
{
 trisa=0b00000001;
 porta=0;
 trisb=0;
 portb=0;
}
void main()
{ adc_init();
 _init();
 while(1)
 {
  mlv=adc_read(0);
  mlv=(mlv*5000)>>10;
  if(mlv is 512)portb.b0=1;
 }
}

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 11-02-2015, 02:18 AM المشاركة 2   
افتراضي


هذا المتحكم لا يحتوي على مداخل تناظريه ...
اختر متحكم اخر و بعدها نجري تصحيحات بسيطة على الكود

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

mohamedamie
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2015
المشاركات: 109
نشاط [ mohamedamie ]
قوة السمعة:
قديم 11-02-2015, 04:09 AM المشاركة 3   
افتراضي


السلام عليكم أكتب هذا الكود


كود:
  unsigned short   Last_Duty ;
void main() {

 TRISA  = 0B11111;
 PORTA = 0B00000;

 TRISB = 0B00000000; //set portB.B0 as input.
 PORTB = 0B00000000;
       CMCON  = 7; 
        ANSEL  = 0x04;        

 while (1) {
 Last_Duty = ADC_Read(0);
 if (Last_Duty == 255 ) 
        { PORTB = 0B00000001; 
          
       }
           else
          { PORTB = 0B00000000;
       
      }
      }
 
 

}


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 11-02-2015, 07:36 PM المشاركة 4   
Smile


هذا المتحكم لا يحتوي على مداخل تناظريه ...
اختر متحكم اخر و بعدها نجري تصحيحات بسيطة على الكود
لا استاذ حيدر فيها خمس مداخل تناضرية ؟؟




الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 11-02-2015, 07:37 PM المشاركة 5   
افتراضي


السلام عليكم أكتب هذا الكود


كود:
  unsigned short   Last_Duty ;
void main() {

 TRISA  = 0B11111;
 PORTA = 0B00000;

 TRISB = 0B00000000; //set portB.B0 as input.
 PORTB = 0B00000000;
       CMCON  = 7; 
        ANSEL  = 0x04;        

 while (1) {
 Last_Duty = ADC_Read(0);
 if (Last_Duty == 255 ) 
        { PORTB = 0B00000001; 
          
       }
           else
          { PORTB = 0B00000000;
       
      }
      }
 
 

}
وعليكم السلام ورحمة الله شكرا لك اخى الكريم ساجربها ان شاء الله


الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,034
نشاط [ assed ]
قوة السمعة:
قديم 11-02-2015, 07:51 PM المشاركة 6   
افتراضي


السلام عليكم

فى هذا الدائرة استخدمت فيها المتحكم PIC16F88 وجعلت الطرف A0 دخل تناضرى اى انلوك لكى اقرء الفولت الداخل الى المايكرو عن طريق هذا الطرف كتبت الكود والكود يعمل بشكل ممتاز
وسؤالى هنا لو اردت عند وصول الفولتية الى فولت معين كمثال2.5 فولت يجعل طرف portb.b0 خرج فماذا اكتب فى الكود حيث كتبتها ولم افلح ؟؟

ولكم جزيل الشكر




الكود


كود:
#define   is    ==
int mlv=0;
void _init()
{
 trisa=0b00000001;
 porta=0;
 trisb=0;
 portb=0;
}
void main()
{ adc_init();
 _init();
 while(1)
 {
  mlv=adc_read(0);
  mlv=(mlv*5000)>>10;
  if(mlv is 512)portb.b0=1;
 }
}
السلام عليكم
هذا كود بلغة بروتون بيسك عسى ان ينفعك لان اغلب الدوال هية متشابهة بجميع الغات
كود:
if mlv >510 and mlv <515 then high portb.0 :else:low portb.0
عند تطبيق المشروع على ارض الواقع يجب ان تستخدم اصغر واكبر ! اذا كانت فولتية القطع محدودة عند 2.5 فولت سيحصل تذبذب بالدائرة لعدة احتمالات وأهمها هوة تحديد الفولتة لان أستخدام هكذا مشروع يعني ان الفولتية غير مستقرة


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 11-02-2015, 08:19 PM المشاركة 7   
افتراضي


السلام عليكم
هذا كود بلغة بروتون بيسك عسى ان ينفعك لان اغلب الدوال هية متشابهة بجميع الغات
كود:
if mlv >510 and mlv <515 then high portb.0 :else:low portb.0
عند تطبيق المشروع على ارض الواقع يجب ان تستخدم اصغر واكبر ! اذا كانت فولتية القطع محدودة عند 2.5 فولت سيحصل تذبذب بالدائرة لعدة احتمالات وأهمها هوة تحديد الفولتة لان أستخدام هكذا مشروع يعني ان الفولتية غير مستقرة

فعلا كلامك صحيح شكرا على المساعدة بارك الله فيك


Tico
:: عضو ذهبي ::
تاريخ التسجيل: May 2012
المشاركات: 1,423
نشاط [ Tico ]
قوة السمعة:
قديم 11-02-2015, 09:14 PM المشاركة 8   
افتراضي


السلام عليكم
اخي سعيد هم 7 مداخل أنالوج 5 بالمنفذ A + اثنين بالمنفذ B

ليس لي خبرة كبيرة في الميكروسي كما تعلم وهذه فقط تجربة :
في الملف المرفق :
1- قمت بتحديد الدخل الانالوج المطلوب بالمسجل ANSEL
(ANALOG SELECT REGISTER)
2- لأنه نسخة مطورة من Pic16F628A كان ضروري كذلك تحييد المقارنات عن طريق التعليمة:
;CMCON = 7
3- الخرج RB0 افتراضيا في الميكروسي برو على أنه خرج PWM ..
من باب الاحتياط غيرته في الاعدادات الى خرج عادي وأصبح RB3 هو الخرج PWM
4- ألغيت سطر الإزاحة في الكود (الحقيقة لم أفهم لماذا هي هنا )
http://www.gulfup.com/?NN1IGr



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