|
السلام عليكم
الاخ حسن هادي .... نحن هنا نستخدم نفس الطريقه .... شكرا على المداخلة ونتمنى منك التواصل معنا.....
.................................................. ....................
اولا .... مذبذب المتحكم 4 ميكاهيرتز .... ويقسم داخليا على 4 .... فيكون 1 ميكاهيرتز
وهذا سيكون مصدر النبظات للتايمر الذي ستزدات قيمتة بمقدار 1 مع كل نبظة
وطول هذه النبظة 1 مايكو ثانية
لكن هناك مقسم بين هذه النبظات والتايمر .... من الممكن ان يقوم بقسمة النبظات على 1 او 2 او 4 او 8 .... في البرنامج الذي وضعته انت ... المبرمج قام باستخدام المقسم على 8 .... وهذا يعني ان كل 8 نبظات ستؤدي الى زيادة مقدارها 1 في التايمر
بمعنى ان كل 1 في التايمر يساوي 8 مايكرو ثانية
لماذا استخدم المبرمج هذا الاعداد ؟؟؟؟؟
هذا يجعل التايمر يمتلئ ببطء وذلك يساعد على حساب فترات زمنية اكبر .... بمعنى اخر لو اننا لم نستخدم التايمر واستغرقت الموجة الصوتية فترة طويلة ..... فان التايمر سوف يمتلئ .... فيقوم بتصفير نفسة ذاتيا ويعيد عملية الحساب مرة ثانية .... فتكون النتيجة خاطئة .... مع ان هناك حل لهذه الحالة .... لكن المبرمج اختار ان يستخدم مقسم ليتجاوز هذه الحالة
.................................................. .
طيب الان عندنا رقم في التايمر ... كل عدد فية يساوي 8 مايكروثانية وهو يمثل الزمن اللازم للصوت لقطع المسافة ذهابا وايابا ..... نقوم بالقسمة على 2 لنحصل على زمن الذهاب فقط
زمن الذهاب = التايمر * 8مايكرو \2=التايمر *4
...........................................
بعد حساب الزمن يجب تحويلة الى مسافة ..... فتضرب في سرعة الصوت.... ولتسهل العمليات الحسابية ..... قام المبرمج بحساب الزمن اللازم لقطع مسافة مقدارها 1 سنتمتر فوجدها تساوي 30 مايكرو ثانية
الان نستطيع بسهولة حساب المسافة بقسمة الزمن على 30
المسافة = زمن الذهاب \30 ( والتي هي زمن قطع مسافة قدرها 1 سنتمتر)
النتيجة ستكون المسافة بالسنتمتر ..... وكما ترى تم انجاز عمليات الحساب وتحويل الوحدات بمعادلة بسيطة واحدة
......................................
ارجع واقول فبل الخوض في العمليات الحسابية حاول ان تعرض قيمة التايمر بجزئية العلوي والسفلي على الشاشة وملاحظة التغييرات
...................................
|
سلام عليكم
كلامك صحيح ولكن هناك مشكله ارجوا ان نعيد نقاشها
نحن لابد من استخدام تايمر0 لكي يحسب زمن تردد 4 ميكاهيرتز اذا زمن 1us
معامل تقسيم 8 اي انه كل 8 نبضات يعد تايمر0 بواحد
===========================================
ليبدأ الالتراسونيك العمل , يتم قدحه Trigger بنبضة طولها 10us , ثم يقوم المرسل في الألتراسونيك بإرسال 8 نبضات بطول 40KHz , ثم ينتظر أن يصله صدى Echo للنبضات التي أرسلها , و تكون بين 100us-18ms اعتماداً على المسافة التي قطعتها الأمواج الصوت "في حال كان طول نبضة الصدى 36ms هذا يعني أنه لم يصطدم بجسم أمامه ! "
==============================================
في حاله انه زمن اصبح = 36ms =36000us
كيف نحصل على هذا زمن لاحظ
(cont=36000/(8x256
cont=18
هنا اصبحت معادله زمن الذهاب = التايمر * 8مايكرو \2=التايمر *4
فيها نسبه خطأ هناك حل
ماهو الحل اما يتم زايده نسبه تقسيم يمكن حسبه بسهوله
مقسم=36000/256=141
او نستخدم طريقه اخرى وهي طلما طفح تايمر0 نضع عداد قيمه الاوليه له صفر وبالتالي هذه معادله نهائيه
time=(contx256+tmr0)x8/2
time=(contx256+tmr0)x4
وكلما يصبح هناك طفحان يزداد cont بمقدار واحد
طبعا انت تعرف ان هذا زمن يبدا لحظه ان يصبحEcho =5 ويبقى شغال ونضعه في دائره اختباريه (1==while(Echo اخبره احسب زمن وعندما يصبح Echo =0
يخرج من قائمه while واخبره اذا كان زمن اكبر او= 36000 اظهر على شاشه مثلا عباره لاتوجد اشاره مثلا
ارجو بيان رايك بالموضوع وشكرا