اطلاعیه

Collapse
No announcement yet.

ایده با ماژول التراسونیک

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : ایده با ماژول التراسونیک

    نوشته اصلی توسط tsunami
    فدایی داری.
    به نظرت چطور میشه ی برنامه طراحی کرد که برد سنسور قابل تغییر باشه؟
    سربازتم! :smile:

    کافیه با adc میکرو یه ولوم رو بخونی و با متغییر s مقایسه کنی
    یا دو تا میکروسوئیچ بذاری و یه متغییر رو کم و زیاد کنی و اون متغییر رو با s مقایسه کنی

    دیدگاه


      #17
      پاسخ : ایده با ماژول التراسونیک

      نوشته اصلی توسط mobin-m
      سلام

      با پایه out کاری نداشته باشید ( برای mode هستش)

      اگه یه پالس 10 تا 60 میکرو ثانیه به پایه تریگر بدیم ماژول شروع به فاصله سنجی میکنه و از پایه echo یه پالس بر می گردونه که ما باید پهنای اون پالس رو بگیریم
      دستور pulsein هم عمل محاسبه پهنای پالس دریافتی از پین مشخص با کمک تایمر داخلی میکرو رو انجام میده و مقدار پهنای پالس رو در متغییر جلوییش ذخیره میکنه
      خب حالا ما نیاز داریم مقدار پهنای پالس رو تبدیل به مقدار فاصله بر حسب سانتی متر بکنیم! اینجا یه ثابت تناسبی (ضریب) تعریف می کنیم : Const K = 0.1725

      با دستور Config Single = Scientific , Digits = 2 هم مشخص می کنیم که مایل هستیم که وقتی هر مقداری در متغییر های single قرار گرفت تا دورقم آن پشت اعشار قرار بگیره!

      موفق باشی
      مرسی ولی نصف سوالم بی پاسخ موند ، اولی اینکه مقدار خونده شده پالس رو ریختیم داخل متغیر A درست اما در ادامش نوشتی PIN D 5,1 این چیه؟
      و دومی اینکه چرا با پایه OUT کار نداشته باشیم؟ و منظور از حالت MODE چیه

      دیدگاه


        #18
        پاسخ : ایده با ماژول التراسونیک

        سلام

        دستور pulsein رو که نمی شه خالی نوشت!میکرو از کجا بفهمه ما از کدوم پایش میخوایم پالس بگیریم و بخونیم؟

        مثال : pulsein a,pind,0,1 در این مثال پالس دریافتی در متغیر A ذخیره میشه! حالا این پالس قراره از کجا بیاد؟ بیت 0 از پورت D و با 1 آیا 0 در آخر هم مشخص میکنیم که پالس بالارونده یا پایین رونده اندازه گرفته بشه !

        پایه mode هم اگه باهاش کاری نداشته باشی :
        پالس رو از پایه تریگر میدی و از اکو پس میگیری ولی اگه پایه mode رو به زمین متصل کنی عمل دادن و دریافت پالس روی یک پایه ی ماژول انجام میشه! یعنی یه پالس به پایه تریگر میدی و پالس بازگشتی رو 700 میلی ثانیه بعد از همین پایه تریگر پس میگیری! :icon_razz:

        بازم اگه درست مطلب رو منتقل نکردم و سوالی بود در خدمتم! :icon_razz: :job:

        دیدگاه


          #19
          پاسخ : ایده با ماژول التراسونیک

          نوشته اصلی توسط mobin-m
          سلام

          دستور pulsein رو که نمی شه خالی نوشت!میکرو از کجا بفهمه ما از کدوم پایش میخوایم پالس بگیریم و بخونیم؟

          مثال : pulsein a,pind,0,1 در این مثال پالس دریافتی در متغیر A ذخیره میشه! حالا این پالس قراره از کجا بیاد؟ بیت 0 از پورت D و با 1 آیا 0 در آخر هم مشخص میکنیم که پالس بالارونده یا پایین رونده اندازه گرفته بشه !

          پایه mode هم اگه باهاش کاری نداشته باشی :
          پالس رو از پایه تریگر میدی و از اکو پس میگیری ولی اگه پایه mode رو به زمین متصل کنی عمل دادن و دریافت پالس روی یک پایه ی ماژول انجام میشه! یعنی یه پالس به پایه تریگر میدی و پالس بازگشتی رو 700 میلی ثانیه بعد از همین پایه تریگر پس میگیری! :icon_razz:

          بازم اگه درست مطلب رو منتقل نکردم و سوالی بود در خدمتم! :icon_razz: :job:
          سلام
          دوست عزیز اول ببین من درست متوجه شدم یا خیر؟ بعد سوال میپرسم

          مثال : pulsein a,pind,0,1 در این مثال پالس دریافتی در متغیر A ذخیره میشه! حالا این پالس قراره از کجا بیاد؟ از PIND.0 و بعد مشخص میکنیم با سطح 0 یا 1 کار کنه ؟اگه 0 باشه یعنی سطح صفر و اگه 1 باشه با سطح 1 تحریک میشه(کانتر میکرو) که اینجا با سطح 1 کار میکنه

          سوال اول) خب ما داریم با کانتر میکرو کار میکنیم ، میکرو دو نوع کانتر 8بیتی و 16 بیتی داره، سوال من اینه که الان داریم با کدومش کار میکنیم؟
          سوال دوم ) کانتر میکرو طبق منبع کلاکش به یه سری از تنظیمات نیاز داره ، شما این تنظیمات رو کجا انجام دادی؟و الان کانتر میکرو هر ثانیه چنتا به متغیر Aاضافه میکنه؟
          سوال سوم) خیلی از دوستان و دانشجوهای الکترونیک به همچین برنامه ای نیاز پیدا میکنن ولی چون با زبان c کار میکنن به یه برنامه زبان c نیاز دارن ، اگه میشه بگین همین دستور pulsein رو بازبان c چجوری میشه نوشت

          از اشتراک گذاشتن اطلاعات خوبتون تشکر میکنم

          دیدگاه


            #20
            پاسخ : ایده با ماژول التراسونیک

            کد:
            /*****************************************************
            Author : Ramin rashidzadeh
            ******************************************************/
            #include <mega8.h>
            #include <delay.h>
            #include <stdio.h>
            //*****************************************************************************************************
            unsigned char count,sec;
            //******************************************************************************************************
            interrupt [TIM0_OVF] void timer0_ovf_isr(void) 
                                   {
                                   TCNT0=0x00;        
                                   sec++;       
                                   }   
            //**********************************************************************************************
            void main(void)
            {
            PORTB=0x00;
            DDRB=0xFF;
            PORTC=0x00;
            DDRC=0x02;
            PORTD=0x00;
            DDRD=0x00;
            TCCR0=0x03;
            TCNT0=0x00;
            //OCR0=0x00;
            TIMSK=0x01;
            #asm("sei")
            while (1)
               {
                PORTC.1=1;
                delay_ms(25);
                PORTC.1=0;
                while(PINC.0==0){};
                sec=0;TCNT0=0x00;TCCR0=0x03;
                while(PINC.0==1){};
                TCCR0=0x00;
                if(sec*256.0+TCNT0<1500)
                           {
                            PORTB.0=1;
                            }             
                if(sec*256.0+TCNT0>1500)
                           {
                            PORTB.0=0;
                           }  
               }
            }
            اینم برنامه به زبان C برای دوستان

            دیدگاه

            لطفا صبر کنید...
            X