الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عداد نبضات تراكمي

مغلق
بدأه مهدي عبد المنعم في 12 أبريل 2006 · 4 رد · 1,080 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة اللـــــــــــــــــــــــــــــــــــــــه:

بعد التحية الى جميع الاعضاء والمشرفين:

كتبت برنامج على الفيجوال بيسيك وفق مايلي:

عندي محرك تيار مستمر اتحكم باتجاه حركته وتوقفه حسب المسافة التي قطعها

مركب على المحرك وحدة تقطيع ضوئية ENCODER احصل من هذه الوحدة على عدد النبضات التي تحركها المحرك :

ان المحرك ياخذ الاوامر من الحاسب عن طريق البوابة التفرعية(H378) التي تشغل الحاكمة للمحرك.

عد نبضات المحرك يكون بادخال الاشارة من الENCODER الاشارة تتارجح مابين الصفر و5 فولت

الية العد هي كالتالي :

1- فحص حالة المدخل ووضع القيمة في متغير

2- تاخير زمني باستخدام FOR NEXT

3-فحص حالة المدخل ووضع القيمة في متغير أخر.

4- اذا كانت قيمة المتغير الاول تساوي الصفر المنطقي والمتغير الثاني واحد منطقي اذا اضف واحد الى المتغير COUNTER . لكن هذه الالية

غير موثوقة لانه يوجد ضياع للنبضات هل بالامكان المساعدة في ايجاد الية موثوقة او طريقة افضل.

شكرا للجميع.

#2

للرفع

مشكورين جميعا

#3

السلام عليكم.

لماذا تستعمل تأخير زمني؟

أثناء هذا التأخير لن تستطيع حساب عدد النبضات, وستكون القرائة الكلية خاطئة.

الطريقة الصحيحة هي قراءة متوالية ودون توقف للمجس Encoder, وتقارن قيمته مع القيمة التي سبقتها. إن كانت نفس القيمة لا نفعل أي شيء. إن تغيرت قيمته مع شرط أنها تغيرت من 0 إلى 1 أي أنها نبضة " positive edge": سنقوم بحساب نبضة وإضافتها إلى العداد Counter

أنظر هذه الصورة

http://www.mathworks.com/products/demos/sh...delsim/tab1.jpg

هكذا سيكون مهمة البرنامج هي حساب تغير النبضة من 0 إلى 1 هو نفس عدد النبضات المطلوب حسابها.

هذه خواريزمية الحساب, أنا لا أعرف البرمجة بفيبي ولكن بديلفي :wacko: :

 variables
 encoder: Boolean;  // read from Encoder sensor by the LPT port
 OldValue = false: Boolean;  // to save de old value of the Encoder Reads.
 pulse: Integer;  // Count of Pulses

procedure Pulse_Counter
  begin
    repeat
      read (Ecoder , From Lpt Port);
      if (encoder = not Old value) and (encoder = True) // front edge impulse
        then
        Pulse = pulse + 1;
        endIf
      OldValue:= Encoder;  // save the old value of the
    EndRepeat
  end Procedure

أرجو أن أكون قد وضحت فكرة حساب عدد النبضات التي تصبح برمجيا هي حساب عدد التغيرات من low إلى high.

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#4

مشكور اخي الكريم لكنني ترجمت هذا الكود الى لغة الفيجوال

لكن نتيجة العداد غير موثوقة

شكرا جزيلا على ردك

#5
مهدي عبد المنعم كتب:
مشكور اخي الكريم لكنني ترجمت هذا الكود الى لغة الفيجوال

لكن نتيجة العداد غير موثوقة

شكرا جزيلا على ردك

يا أخي ماذا تقصد بنتيجة العداد غير موثوقة؟؟

كيف تأكدت من هذا؟ هل هو استنتاج أم نتيجة تطبيق عملي!

اقتباس
1- فحص حالة المدخل ووضع القيمة في متغير

2- تاخير زمني باستخدام FOR NEXT

3-فحص حالة المدخل ووضع القيمة في متغير أخر.

4- اذا كانت قيمة المتغير الاول تساوي الصفر المنطقي والمتغير الثاني واحد منطقي اذا اضف واحد الى المتغير COUNTER .

لم تجبني لماذا النقطة الثانية : "تاخير زمني باستخدام FOR NEXT".

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

أرجو أن تطرح الموضوع في منتدى اللإلكترونيات مع التفصيل حتى تعم الفائدة, وتتضح الفكرة أكثر

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

هذا الموضوع مغلق.

مواضيع مشابهة