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

سؤال عن قياس زمن نبضة

مغلق
بدأه abudawoodd في 21 مارس 2007 · 28 رد · 5,175 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

وشكراً

#2

كل ما في الامر اخي ان تقوم بتشغيل تايمر Timer و تقوم بوقفه عندما تنزل النبضه للمستوي صفر , هذا هو عرض النبضه بالزمن ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

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

أخي العزيز

إني اريد قياس زمن نبضات الريموت كونترول لتحليل اشاراته والاستفادة منها في مشاريع اخرى

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

وشكراً

#4

السلام عليكم

اخي ابو داود

زمن النبضة له تحليل معين وخاصة انك تستعمل optic لقياسها هناك سوف يحدث risetime وfalltime

اي ان النبضة ليست كما تتوقع مربعة الشكل لذالك الوقت يختلف لقياسها.

انت طريقتك خاطئة بفهم الاتصال. الاتصال يعد الوقت مابين النبضات فقط؟ يعني الرموت كونترول يرسل عدد نبضات ثابت لنقول 8 نبضات كل مرة. ولكن الاختلاف الوقت بين النبضات . لنفرض ان النبضة تاخذ 5 مللي ثانية.

لتمثيل 0111010

--------------------------- 0----1----0---1-----1----1----0

_________________||_||____||_||___||___||___||_||

نلاحظه ان زمن( 1) يساوي 75% من زمن الصفر

لذالك انت تحتاج ان تقراء مابين النبضات ويجب ان تقبل النبضة +-10% من زمنها

تم تعديل هذه المشاركة بواسطة pc.2058 في 22 مارس 2007 في 22:16

#5

لو أن هدفك قاصر على تحليل الاشارة ، فلم لا تستخدم الأ وسيللوسكوب Oscilloscope أكيد أفضل :)

04_08_05_05_25_08_1123201508Stoon.JPGIn this world I love Islam ,Computer ,Communications ,Electronics and

المسلم كالغيث أينما حل نفع

Don't ever trust machines

#6

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

اخي ابو داود :) ماذا لو ازلت ال IR LED من الروموت ووضعت مكانه رابط يذهب الى ال line in للحاسوب (رابط لتسجيل الصوت), واستعنت ببرنامج كاتب للصوت(gold wav مثلا ) لتحليل الاشارة الذاخلة من line in , وتشجيل ما كنت تصبوا اليه على شكل ملف صوتي .wav . ;) :) ؟

#8

اشكرك عزيزي pc.2058 :) .

لقد اعتمذت نفس الفكرة في احد الايام لتحليل المعطيات التي تمر ما بين ال gsm و ال carte sim ;) :) .

#9
اقتباس
لو أن هدفك قاصر على تحليل الاشارة ، فلم لا تستخدم الأ وسيللوسكوب Oscilloscope أكيد أفضل

الأخ abudawoodd لا يريد تحليل الإشارة بل يريد كود لفهم هذه الإشارة وإخراجها بشكل باينري

للفائدة هذا Oscilloscope لمن لا يملكه:

WINSCOPE.rar

والذي يملك أفضل منه يعطينا

اقتباس
اخي ابو داود regular_smile.gif ماذا لو ازلت ال IR LED من الروموت ووضعت مكانه رابط يذهب الى ال line in للحاسوب (رابط لتسجيل الصوت), واستعنت ببرنامج كاتب للصوت(gold wav مثلا ) لتحليل الاشارة الذاخلة من line in , وتشجيل ما كنت تصبوا اليه على شكل ملف صوتي .wav . wink_smile.gif

يمكن مشروعه ليس له أي علاقة بالحاسوب

#10
اقتباس
يمكن مشروعه ليس له أي علاقة بالحاسوب

نعم ممكن.

على العموم ,ننتظر الرد , ونشكرك سيد عبد العزيز على ال WINSCOPE.rar :) , يبدو انه يسهل بعظ العمليات.

#11

أشكرك أخي عبد العزيز على هذا البرنامج وشكر لكل الشباب الذين شاركوا في الموضوع

لكن عندي مشكلة مع هذا البرنامج ( لم أعمل عليه من قبل ) ممكن تعلمني كيفية ايصال الاشارة إليه

كما أرجوا من الشباب كود مبسط لفهم الموضوع علما أنني استخدم المتحكمات من نوع PIC

والف شكر للجميع

#12

اود ان اسالك abudawoodd ,هل ظروري استعمال ال PIC لتحديد زمن الاشارة ؟ ام انك تنوي التعرف اكثر على ال PIC ,وطرق استعماله في مثل هذه القياسات ؟

#13

العفو

البرنامج قديم قليلاً كنت أعمل عليه من زمان ، فلازم يكون نزل أحدث منه.

اقتباس
لكن عندي مشكلة مع هذا البرنامج ( لم أعمل عليه من قبل ) ممكن تعلمني كيفية ايصال الاشارة إليه

من المأخذ الأحمر الخلفي للكمبيوتر، مكان ما تضع المكرفون

يمكنك عمل كبل (خط وشلد) الشلد: شعري مسلفن وهو السالب ، أما الخط الوسط فيمكنك وصل مكثف عليه ليكون هو مجس الفحص.

ولكن إنتبه للجهود المرتفعة في الدارة المراد قياسها ،( يمكنك عمل دارة خارجية للحماية الكمبيوتر من الجهود العالية العكسية) .

ومن البرنامج تستطيع تشغيله من القائمة Commands

اقتباس
هل ظروري استعمال ال PIC لتحديد زمن الاشارة ؟
#14
عبد العزيز اليوسفي كتب:
العفو

البرنامج قديم قليلاً كنت أعمل عليه من زمان ، فلازم يكون نزل أحدث منه.

من المأخذ الأحمر الخلفي للكمبيوتر، مكان ما تضع المكرفون

يمكنك عمل كبل (خط وشلد) الشلد: شعري مسلفن وهو السالب ، أما الخط الوسط فيمكنك وصل مكثف عليه ليكون هو مجس الفحص.

ولكن إنتبه للجهود المرتفعة في الدارة المراد قياسها ،( يمكنك عمل دارة خارجية للحماية الكمبيوتر من الجهود العالية العكسية) .

ومن البرنامج تستطيع تشغيله من القائمة Commands

شكراً لكم ياشباب

واقول لكم لا لايقتصر العمل على pic حصراً إن كانت هناك فكرة أسهل ياحبذا لو تفيدونا

#15
اقتباس
لو أن هدفك قاصر على تحليل الاشارة ، فلم لا تستخدم الأ وسيللوسكوب Oscilloscope أكيد أفض
اقتباس
السلام عليكم و رحمة الله و بركاته regular_smile.gif

اخي ابو داود regular_smile.gif ماذا لو ازلت ال IR LED من الروموت ووضعت مكانه رابط يذهب الى ال line in للحاسوب (رابط لتسجيل الصوت), واستعنت ببرنامج كاتب للصوت(gold wav مثلا ) لتحليل الاشارة الذاخلة من line in , وتشجيل ما كنت تصبوا اليه على شكل ملف صوتي .wav . wink_smile.gif regular_smile.gif

؟
اقتباس
للفائدة هذا Oscilloscope لمن لا يملكه:

الملف المرفق WINSCOPE.rar ( 38.05k )

:)

#16

شكراً لك أخي لكني انتظرمنكم المساعدة بدارة أو كود للكونترولر لقياس زمن النبضة لأقارن الكود الذي تستخدمونه مع الكود الذي استخدمه لأجد نقاط الضعف لدي في هذا المجال

وشكراً للجميع

#17
اقتباس
إني اريد قياس زمن نبضات الريموت كونترول لتحليل اشاراته والاستفادة منها في مشاريع اخرى

دعني اخمن اخي ابو داود :) هممممم هل تحاول عمل IR remot emulator اي جهاز يقلد عمل الروموت انطلاقا من ارساله لاشارات تشبه تلك التي يرسلها الروموت؟ لا ؟ :)

#18

إن الذي أريده أخي العزيز هو

استقبال اشارة الريموت لا تقليدها بوسطة الكونترولر والتعامل معها مثل مدورة الطبق الخاصة بالرسيفر

طبعاً لا أريد أن أصنع مدورة طبق إنما أريد أن أتعلم كيف اتعامل مع تلك الإشارة بشكل صحيح وتنفيذ الأمر المطلوب

إن مدورة الصحن تستقبل الاشارة وتخزنها ويمكنها التعامل مع الكثير من الريموتات

لقد قرأت بأن بروتوكولات الريموت عدة أنواع

منها مرمزة بطول النبضة ومنها مرمزة بطول الفراغ بين النبضات

ولقد حاولت أن أصنع جهاز يستقبل الأمر بشكل صحيح دون جدوى كما ذكرت سابقاً القياس غير دقيق لذا أرجوا المساعدة

لأني أريد تعلم هذا الموضوع منذ زمن طويل لكني لم أجد المصدر الذي يساعدني بشكل صحيح

وشكراً لك أخي على التفاعل

تم تعديل هذه المشاركة بواسطة abudawoodd في 30 مارس 2007 في 15:43

#19

اهلا بك اخي ابو داود.

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

حسننا, قل لي اخي ابو داود , هل سبق و تعاملت مع برامج تحلل معطيات الصوت ؟ انظر مثلا :

http://www.4shared.com/file/4259679/159728...avekey.html?s=1

post-97047-1175269003_thumb.jpg

#20
bitofsoul كتب:
اهلا بك اخي ابو داود.

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

حسننا, قل لي اخي ابو داود , هل سبق و تعاملت مع برامج تحلل معطيات الصوت ؟ انظر مثلا :

http://www.4shared.com/file/4259679/159728...avekey.html?s=1

أشكرك أخي فعلاً برنامج ممتاز ساعدني في معرفة وتحليل الاشارة

لكن لازلت غير متمكن من ضبط قياس الزمن عند الاستقبال بالميكروكونترولر

أرجوا التركيز على هذا الموضوع من فضلك ( قياس زمن النبضة )

لقد جربت وضع حلقة ( عداد ) ينتهي بانتهاء النبضة مع كل السلسلة لكني فشلت في دقة قياس النبضة

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

ولي سؤال أخي لو سمحت

وهو كيف تتعامل أنت مع الريموت أقصد ( الكود الذي تكتبه لقياس زمن النبضات ) للريموت

أرجوا مساعدتي في هذه النقطة ولكم جزيل الشكر

#21

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

اقتباس
لكن لازلت غير متمكن من ضبط قياس الزمن عند الاستقبال بالميكروكونترولر

ء

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

سوف لن استطيع ان اساعدك بكود عن طريق الميكروكنتر لاني لا اتقن برمجته :( .

اقتباس
كيف تتعامل أنت مع الريموت أقصد ( الكود الذي تكتبه لقياس زمن النبضات ) للريموت

كما ذكرت اخي ,فانا لا استعمل كود لقياس زمن النبضة , بل استعمل طريقة الاسيوسكوب (و هي الاسهل ) :) .

فالبرنامج الذي وظعت اعلاه يحدد لي بطريقة مظبوطة زمن النبضة بال ms

انظر مثلا لزمن تلك النبضة بالاحمر على الصورة اسفله :) :

post-97047-1175875612_thumb.jpg

#22
bitofsoul كتب:
السلام عليكم و رحمة الله و بركاته.

ء

سوف لن استطيع ان اساعدك بكود عن طريق الميكروكنتر لاني لا اتقن برمجته :( .

كما ذكرت اخي ,فانا لا استعمل كود لقياس زمن النبضة , بل استعمل طريقة الاسيوسكوب (و هي الاسهل ) :) .

فالبرنامج الذي وظعت اعلاه يحدد لي بطريقة مظبوطة زمن النبضة بال ms

انظر مثلا لزمن تلك النبضة بالاحمر على الصورة اسفله :) :

أشكرك أخي على هذا التفاعل وجزاك الله خيراً

لماذا أنت تحلل اشارة الريموت إن كنت لا تستخدم الكونترولر هل يمكن صنع دارات من غير كونترولر تتعامل مع الريموت

والف شكر لك من كل قلبي ووفقك الله وجزال كل خير

#23
اقتباس
لماذا أنت تحلل اشارة الريموت إن كنت لا تستخدم الكونترولر

احلل الاشارة فقط لاوظح طريقة قياس زمن النبضة , لا لكي ابرمجها ذاخل الكنترولر :D ا

اقتباس
هل يمكن صنع دارات من غير كونترولر تتعامل مع الريموت

لا اعرف :( :)

#24

على كل حال أشكرك أخي العزيز على المساعدة

لقد نفعني برنامجك كثيراً وقد استطعت تنفيذ ما اريد

شكراً لك مرة اخرى

#25

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

من مده ليست قصيرة كتبت جزئ من برنامج يقوم بهذه الوظيفة على ميكروكنترولر من نوع Atmel , ولكن للأسف ضاع الكود مع اخوته

ولكن الفكرة بسيطة , اوضحها بهذا الكود الوهمي :

pseudocode :

WAIT UNTIL INPUT = 0
WAIT UNTIL INPUT = 1
NOW YOU HAVE RISE EDGE SO..
SET TIMER = 0
WAIT UNTIL INPUT = 0
YOU HAVE FALL EDGE SO..
WAIT UNTIL INPUT = 1
YOU HAVE RISE EDGE AGAIN SO ..
YOU HAVE FULL CLOCK PERIOD
OUTPUT THE CURRENT VALUE OF TIMER

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

while(input == 1);
while(input == 0);
// YOU HAVE RISE EDGE
timer = 0;
while(input == 1);
while(input == 0);
// YOU HAVE RISE EDGE
output = timer;

وبالنسبة للميكرو من نوع PIC يمكن كتابتها بهذا الشكل

	  ....; setup internal timer
WAIT0 BTFSC PORTB, 0
	  GOTO  WAIT0; loop until portb(0) = 0
; portb(0) = 0
WAIT1 BTFSS PORTB, 0
	  GOTO  WAIT1; loop until portb(0) = 1
; portb(0) = 1  == rising_edge
	  ....; set timer = 0
WAIT2 BTFSC PORTB, 0
	  GOTO   WAIT2; loop until portb(0) = 0
; portb(0) = 0  == falling_edge
WAIT3 BTFSS PORTB, 0
	  GOTO   WAIT2; loop until portb(0) = 1
; portb(0) = 1  == rising_edge
; you have full clock time in the timer
	  ....; use the value of the timer now

ولحساب زمن النبضة تضرب قيمة المؤقت في زمن نبضة الميكرو (1us) يعطيك زمن النبضة كاملة

ولكن توجد ملاحظة , أذكر ان مؤقت الـ PIC كان 8 بيت فقط , بينما مؤقت الـ Atmel كان 16 بيت

مم يعني أن اكبر قيمة للمؤقت في الـ PIC هي 255 بينما في Atmel هي 65535

عموما يمكن حلها في مقاطعة المؤقت نفسه اي حلها في الكود باستخدام متغير يعد اكتمال المؤقت ....

طبعا تحتاج لمعرفتك بكيفية التعامل مع المؤقت في الميكرو

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

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