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

   

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 03-11-2012, 01:25 PM المشاركة 9   
افتراضي



نعم صحيح ان الموجة سوف تتقاطع مع الصفر في حالتين عند 180 لنصف الموجة الموجبة ثم تتقاطع مع الصفر عند 360 درجة في النصف السالب وبالتالي سوف تتقاطع مرتيين في دورة كاملة تمام الان طيب ياهندسة ياليت تعدل على الكود بحيث نريد اول تقاطع للموجة الاولى مع الصفر يشتغل التايمر واول تقاطع للموجة الثانية يتوقف التايمر وهنا نحصل على الفرق. لذالك انا اقترحت المقارن مع جهد رفرنس في المرة الاولى لان ممكن نستخدم المقاطعة فيه بحيث لو جهد الخرج على المقارن ارتفع عن جهد المرجع تحدث المقاطعة ويشتغل التايمر واذا جهد المقارن الثاني ارتفع يتوقف التايمر. لكن بصراحة طريقتك سهلة وحلوة وسلسة وهي استخدام ADC لكن كيف نقدر نحدد التقاطع الاول والثاني مع الصفر لكل موجة.

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 03-11-2012, 10:43 PM المشاركة 10   
افتراضي


فقط احتاج بعض الوقت لانني مشغول جدا جدا هاليومين و ادخل على النت بالصدفة ...

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

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 06-11-2012, 07:57 PM المشاركة 11   
افتراضي


بارك الله فيك اخي ويسر امرك..


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 06-11-2012, 08:33 PM المشاركة 12   
افتراضي




في رسم الدالتين اعلاه يمكننا تطبيق ما يلي :
اذا كانت الاشارة الحمراء تساوي صفر فطالما الاشارة الزرقاء اكبر من صفر اضف 1 الى الزمن ...
كود:
if(adc_read(0)==0)while(adc_read(1)>0){time++; delay_ms(1);}
طبعا الاشارة الحمراء تتقدم على الاشارة الزرقاء


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 06-11-2012, 09:10 PM المشاركة 13   
افتراضي


حلو الكلام دا وعملت سيميلوشن لكن نفس المشكلة يعطي قيم عشوائية
انا اريد قراءة time دون عرضة على البورت كيف اعرف الوقت بالتحديد.
هذا الكود

كود:
 int i; 
   int time; 
   unsigned int x;
    unsigned int y; 
    void main(){ 
    TRISA=1; TRISB=0;
     PORTB=0; 
     TRISC=0;
     PORTC=0;
     time=0;
     while(1){ 
     x=adc_read(0); 
     y=adc_read(1); 
     if(adc_read(0)==0)while(adc_read(1)>0){time++; delay_ms(1)}
        {portc=time;}

      }


  }


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 06-11-2012, 09:26 PM المشاركة 14   
افتراضي


1- انك جعلت المتغيرين X&Y unsigned و المفروض انهم signed
2-
كود:
trisa=3;
لانك سوف تستخدم اول مدخلين كمنافذ دخل و ليس خرج .
3-اجعل كل من x&y من نوع float لانهم سوف يتعاملون مع اعداد كسرية
4- اذا كانت قيمة time اكبر من 255 فلن يتمكن المنفذ B من اضهار القيمة بالشكل الصحيح .. حاول ان تجعل تردد الاشارتين اكبر من 50 و فرق الطور بينهما صغير ...
5- سوف انفذ الكود و اعطيك النتيجة ان شاء الله ...


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 06-11-2012, 09:50 PM المشاركة 15   
افتراضي


بارك الله فيك اخي عملت x,y flot لكن نفس المشكلة
بالنسبة للمنفذ A انا ساويته بالواحد حتى يكون المنفذ كله مدخل
انا في انتظار ردك جزاك الله خير


abdullah.jlal
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2011
الدولة: syria-lattakia
المشاركات: 66
نشاط [ abdullah.jlal ]
قوة السمعة:
قديم 07-11-2012, 12:58 AM المشاركة 16   
افتراضي


السلام عليكم ورحمة الله وبركاته أخي الكريم
صادفتني نفس المشكلة منذ فترة ( معرفة هل ال0 هي بداية النبضة الموجبة أم السالبة)
ووجدت عدد من الحلول أهمها :
الطريقة الأولى:
متكاملات تدعى ب zero crossing
وهي متخصصة بإعطائك إشارتين الأولى لقطبية النبضة (موجبة أو سالبة)
والثانية لإعطائك نقطة التقاطع مع الصفر

الطريقة الثانية:
وهي طريقة ابسط من السابقة تعتمد بشكل أساسي على إضافة منبع مستمر مع التسلسل مع المنبع المتغير (جيبي أو غيره) بحيث يكون قيمة المنبع المستمر مساوية للقيمة العظمى السالبة (أو الموجبة في حال منبع جيبي)للمنبع المتغير
الغاية من ذلك هو جعل قيمة الجهد على مدخل الpic -عندمايكون مطال الموجة المتغيرة مساوياً للصفر- مساوية لجهد المنبع المستمر
وعند القيمة العظمى الموجبة لمطال الموجة المتغيرة يكون الجهد على طرف الpic مساوياً مجموع الجهدين المستمر والمتغير
أما عند القيمة العظمى السالبة لمطال الموجة المتغيرة فيكون الجهد على طرف المتحكم مساوياً V=0 volt
باختصار تقوم هذه الطريقة على إزاحة الموجة المتغيرة بالإتجاه الموجب للمحور y وبذلك فإن الجهد على طرف المتحكم سوف يتراوح بين 0 و5 فولت
بحيث ال0 تقابل القيمة العظمى السالبة للموجة وال5 تقابل القيمة العظمى السالبة
مع مراعاة أن لايزيد الجهد على طرف المتحكم عن 5 فولت
أخي الكريم هذه الطرق لم أجربها عملياً ولكن هذا ما توصلت له من حلول
أعتذر عن الإطالة ووفقنا الله وإياكم إلى كل خير



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