اطلاعیه

Collapse
No announcement yet.

یه سوال کوچولو درمورد ماژول التراسونیک ^_^

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

    یه سوال کوچولو درمورد ماژول التراسونیک ^_^

    سلام خدمت دوستان

    مقدمه! ( oo: من ماژول HY-SRF05 رو خریدم>>5 تا پایه داره>>>VCC و GND که وضعیتشون معلومه >>>OUT یا همون MODE هم ببدون اتصال میزارمش(التراسونیم رو درمد 1 راه اندازی کردم.)>>>> به پایه TRIG هم به طول حداقل 10 میکرو ثانیه (من 20 میکرو ثانیه دادم تو کدنویسی) میدیم و منتظر میشیم تا ECHO یک بشه و بعد زمانی رو که طول میکشه ECHO صفر بشه رو اندازه میگیریم(زمان رفت و برکشت امواج ارسالی)>>>>درست گفتم؟؟؟؟
    ولی مشکل من اینه که:

    1) من ابتدا توسط کد زیر یه پالس به طول 20 میکرو میفرستم

    کد:
        PORTB=0x01;
        delay_us(20);//دادن یه پالس به طول10 میکرو ثانیه
        PORTB=0X00;
    2) بعد منتظر میمونم تا ECHO یک بشه ولی ECHO یک نمیشه>>>1 دقیقه وایساد ولی بازم یک نشد. :cry:>>دودقیقه :cry:>>.... :cry:

    من قبلا سابقه داشتم که ماژول بخرم و خراب دربیاد.....یعنی اینم خرابه؟؟؟؟؟؟؟؟؟؟؟ :cry2: :cry2: :cry2:


    ماژولم این شکلی>>>ساخته شده توسط چین>>>ماژول التاسونیک stf05 داریم و hy-srf05 >>>>این از نوع hy-srf05 هستش>>>>البته دیتاشیتش رو دیدم(به زبون چینی بود!!!) فکر نکم فرقی با stf05 داشته باشه

    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    #2
    پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

    نوشته اصلی توسط md3848
    سلام خدمت دوستان

    مقدمه! ( oo: من ماژول HY-SRF05 رو خریدم>>5 تا پایه داره>>>VCC و GND که وضعیتشون معلومه >>>OUT یا همون MODE هم ببدون اتصال میزارمش(التراسونیم رو درمد 1 راه اندازی کردم.)>>>> به پایه TRIG هم به طول حداقل 10 میکرو ثانیه (من 20 میکرو ثانیه دادم تو کدنویسی) میدیم و منتظر میشیم تا ECHO یک بشه و بعد زمانی رو که طول میکشه ECHO صفر بشه رو اندازه میگیریم(زمان رفت و برکشت امواج ارسالی)>>>>درست گفتم؟؟؟؟
    ولی مشکل من اینه که:

    1) من ابتدا توسط کد زیر یه پالس به طول 20 میکرو میفرستم

    کد:
        PORTB=0x01;
        delay_us(20);//دادن یه پالس به طول10 میکرو ثانیه
        PORTB=0X00;
    2) بعد منتظر میمونم تا ECHO یک بشه ولی ECHO یک نمیشه>>>1 دقیقه وایساد ولی بازم یک نشد. :cry:>>دودقیقه :cry:>>.... :cry:

    من قبلا سابقه داشتم که ماژول بخرم و خراب دربیاد.....یعنی اینم خرابه؟؟؟؟؟؟؟؟؟؟؟ :cry2: :cry2: :cry2:
    سلام تا دوستان بیان یه پ.ن دارم
    لطفا کل کدتون رو بزارید
    ممکنه مثلا شاید روم به دیوار یادتون رفته باشه خروجی اش کنید یا فرکانس میکرو تون 16 باشه ولی تو کد وبژن 1 مگ تنظیم باشه و زمان زودتر بگذره یا ازین نوع سوتی ها

    head<=
    ...تشکر خدا...
    [img width=97 height=100]http://mahdi3d.persiangig.com/image/5280543_t.jpg[/img]

    دیدگاه


      #3
      پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

      کد:
      #include <mega16.h>
      #include <lcd.h>
      #include <delay.h>
      #include <stdlib.h>
      #asm
        .equ __lcd_port=0x1b
      #endasm
      
      void main(void)
      {
        char arr[];
        int i=0;
      
        DDRB=0x01;
        PORTB=0X00;
      
        TCCR0=0;//خاموش بودن تایمر/کانتر
        TCNT0=0x02;//صفر کردن مقدار اولیه محتمای تایمر کانتر
      
        lcd_init(16);
        
        lcd_putsf("1");lcd_gotoxy(0,0);
        
        while (1)
        {
          PORTB=0x01;
          delay_us(20);//دادن یه پالس به طول10 میکرو ثانیه
          PORTB=0X00;
      
          //وای میسته تا ببینه چیزی دریافت میشه یا نه 
          //i <=160 : یعنی زمانی برابر با 30 میلی ثانیه
          //وقتی که پالس ها ارسال شد پایه زیر یک میشه
          //ECHO
          while(PINB.1==0)//منتظر میمانیم تا ماژوم پالس ها و امواج رو ارسال کنه
          {lcd_putsf("2");lcd_gotoxy(0,0);} 
          
          TCCR0=0;i=0;
          while(PINB.1==1)
          {
            if(TCNT0>=9){i++;TCNT0=0;}  //TCNT0>=9 : 10میکروثانیه 
            lcd_putsf("3");lcd_gotoxy(0,0);
          } 
          lcd_putsf("4");lcd_gotoxy(0,0);
          if(i<=3000){lcd_gotoxy(0,0);itoa(i/1000,arr);lcd_puts(arr);delay_ms(100);lcd_clear();} //جسمی جلوش هست
          if(i>3000){lcd_gotoxy(0,1);lcd_putsf("chizi nist!");delay_ms(100);lcd_clear();} //چسمی جوش نیست
        }
      }
      اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

      اگه دوس دارید سریع به جواب برسید :
      1) قبل از پرسیدن سوال، بسرچید.
      2) سوالاتون رو با جزئیات کامل مطرح کنید.

      دیدگاه


        #4
        پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

        اینم از مدارش
        :rolleyes: :redface: :redface:

        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

        اگه دوس دارید سریع به جواب برسید :
        1) قبل از پرسیدن سوال، بسرچید.
        2) سوالاتون رو با جزئیات کامل مطرح کنید.

        دیدگاه


          #5
          پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

          شماتیکتون با کدتون در تضاده!
          روی پایه PB.0 در کدتون پالس میدید ولی در شماتیک PB.1 سیگنال تریگ هست

          head<=
          ...تشکر خدا...
          [img width=97 height=100]http://mahdi3d.persiangig.com/image/5280543_t.jpg[/img]

          دیدگاه


            #6
            پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

            نوشته اصلی توسط (مهدی رنجبر)m4hd1r
            شماتیکتون با کدتون در تضاده!
            روی پایه PB.0 در کدتون پالس میدید ولی در شماتیک PB.1 سیگنال تریگ هست
            تو این عکسه اشتباه کشیدم>>>در عمل درست بستمش :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :cry: :cry: :cry: :cry: :cry2: :cry2: :cry2:

            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

            اگه دوس دارید سریع به جواب برسید :
            1) قبل از پرسیدن سوال، بسرچید.
            2) سوالاتون رو با جزئیات کامل مطرح کنید.

            دیدگاه


              #7
              پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

              بیصحاب! مونده همش تو کد زیر گیر میکنه و ادامه نمیده >>> از حلقه خارج نمیشه
              کد:
              while(PINB.1==0)//منتظر میمانیم تا ماژوم پالس ها و امواج رو ارسال کنه
                  {lcd_putsf("2");lcd_gotoxy(0,0);}
              و همش عدد 2 رو نشون میده(این کد های نمایش عدد 2 رو هم برا همین گزاشتم تا ببینم که از این حلقه خارج میشه یا نه)
              اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

              اگه دوس دارید سریع به جواب برسید :
              1) قبل از پرسیدن سوال، بسرچید.
              2) سوالاتون رو با جزئیات کامل مطرح کنید.

              دیدگاه


                #8
                پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                توی این کدی که نوشته بودید از کل PORT B استفاده کردید که 10MS پایه TRIG 1 باشه

                واز اونجایی که PORTB.1 به ECO وصل شاید مشکل از اینجا باشه (بنویسید PORTB.1=1....)

                البته قبلا من این ماژول (SRF-04) راه انداخته بودم واز وقفه ها برای شمارش زمان 1 بودن پالس ECO استفاده میکردم

                راستس لازم نیست حتما از کریستال 16 استفاده باشه .....

                دیدگاه


                  #9
                  پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                  نوشته اصلی توسط h.torabi
                  توی این کدی که نوشته بودید از کل PORT B استفاده کردید که 10MS پایه TRIG 1 باشه

                  واز اونجایی که PORTB.1 به ECO وصل شاید مشکل از اینجا باشه (بنویسید PORTB.1=1....)

                  البته قبلا من این ماژول (SRF-04) راه انداخته بودم واز وقفه ها برای شمارش زمان 1 بودن پالس ECO استفاده میکردم

                  راستس لازم نیست حتما از کریستال 16 استفاده باشه .....
                  والا من از کریستال داخلی 8 میگ (مگا16) استفاده کردم>>>همین 8 میگ داخلی هم زیادشه :biggrin:
                  البته فکر کنم جمله زیر رو اشتباه گفتین>>>ولی فهمیدم منظورتون چیه و درستش کردم ولی بازم پروژه کار نکرد و مشکلش حد نشد
                  واز اونجایی که PORTB.1 به ECO وصل شاید مشکل از اینجا باشه (بنویسید PORTB.1=1....)
                  منظورت این بود که کد
                  کد:
                      PORTB=0x01;
                      delay_us(20);//دادن یه پالس به طول10 میکرو ثانیه
                      PORTB=0X00;
                  رو به صورت زیر بنویسم دیگه>>درست فهمیدم؟؟
                  کد:
                      PORTB.0=1;
                      delay_us(20);//دادن یه پالس به طول10 میکرو ثانیه
                      PORTB.0=0;
                  اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                  اگه دوس دارید سریع به جواب برسید :
                  1) قبل از پرسیدن سوال، بسرچید.
                  2) سوالاتون رو با جزئیات کامل مطرح کنید.

                  دیدگاه


                    #10
                    پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                    یعنی تا حالا کسی با این ماژول کار نکرده که بیاد و ما رو راهنمایی کنه؟؟؟؟؟؟؟؟؟؟؟؟؟
                    oo: oo: oo: oo: oo: oo: oo: oo: oo:>>> :angry: :angry: :angry: :angry: :angry:>>> :cry: :cry: :cry: :cry:>>> :cry2: :cry2: :cry2:
                    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                    اگه دوس دارید سریع به جواب برسید :
                    1) قبل از پرسیدن سوال، بسرچید.
                    2) سوالاتون رو با جزئیات کامل مطرح کنید.

                    دیدگاه


                      #11
                      پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                      سلام بله درسته ببخشید بد نوشتم :read: :read: :read: :read:

                      دوست عزیز این برنامه ای که شما نوشتی یکم مشکل داره

                      بهتره از 2 تایمر استفاده کنی از تایمر0 برای ایجاد تاخیر 10 ms

                      و از تایمر 1 برای شمارش زمان سطح 1 پالس eco

                      به این صورت اول بیا تایمر 0 تنظیم کن تا بتونی مدت زمان 10 ms با هاش اندازه بگیری

                      و یک وقفه براش بزار که پالس trig باش درست کنی

                      وقفه خارجی حساس به لبه بالا رونده تنظیم کن

                      توی تابع وقفه خارجی که برای اندازه گیری سطح 1 پالس eco فراخانی کردی یا از تایمر 1 استفاده کن
                      یعنی وقتی لبه بالا رونده پالس eco تشخیص داده بشه تابع وقفه خارجی بیاد تایمر یک فعال کنه وشروع به شمارش کنه تا وقتی که

                      لبه پایین رونده ببین ...

                      امید وارم که کمک خوبی برات باشه :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

                      دیدگاه


                        #12
                        پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                        سلام بله درسته ببخشید بد نوشتم :read: :read: :read: :read:

                        دوست عزیز این برنامه ای که شما نوشتی یکم مشکل داره

                        بهتره از 2 تایمر استفاده کنی از تایمر0 برای ایجاد تاخیر 10 ms

                        و از تایمر 1 برای شمارش زمان سطح 1 پالس eco

                        به این صورت اول بیا تایمر 0 تنظیم کن تا بتونی مدت زمان 10 ms با هاش اندازه بگیری

                        و یک وقفه براش بزار که پالس trig باش درست کنی

                        وقفه خارجی حساس به لبه بالا رونده تنظیم کن

                        توی تابع وقفه خارجی که برای اندازه گیری سطح 1 پالس eco فراخانی کردی یا از تایمر 1 استفاده کن
                        یعنی وقتی لبه بالا رونده پالس eco تشخیص داده بشه تابع وقفه خارجی بیاد تایمر یک فعال کنه وشروع به شمارش کنه تا وقتی که

                        لبه پایین رونده ببین ...

                        امید وارم که کمک خوبی برات باشه :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

                        دیدگاه


                          #13
                          پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                          ممنون از پاسخت ولی وقتی از
                          کد:
                          while(PINB.1==0)
                          خارج نمیشه>>>چه فایده که این کار رو کنم؟؟؟>>>>به نظرم ماژلش خرابه>>؟؟؟؟>>>>>نظرت چیه؟؟؟؟؟؟؟؟؟
                          اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                          اگه دوس دارید سریع به جواب برسید :
                          1) قبل از پرسیدن سوال، بسرچید.
                          2) سوالاتون رو با جزئیات کامل مطرح کنید.

                          دیدگاه


                            #14
                            پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                            سلام ی نگاه به برنامت بنداز شما یبار port b بصورت خروجی تنظیم کردی(PORTB.X=1 ) برای ایجاد پالس ECO

                            یبارم بصورت ورودی (PINB.X=0 ) بدون تقیر DDR

                            درسته..... :agree: :agree: :agree: :agree:

                            حالا برنامت درست کن

                            بیا 4 بیت اول یا هرکدوم که دوست داری از PORT B ورود ی کن
                            4 تای دیگه رو هم خروجی وبعد تو برنامت استفاده کن
                            دیگه فکر نکنم گیر کنه
                            البته بازم میگم از وقفه استفاده کن کارت تمیز تره.....
                            :nerd: :nerd: :nerd: :nerd: :nerd: :nerd: :nerd:

                            دیدگاه


                              #15
                              پاسخ : یه سوال کوچولو درمورد ماژول التراسونیک ^_^

                              نوشته اصلی توسط h.torabi
                              سلام ی نگاه به برنامت بنداز شما یبار port b بصورت خروجی تنظیم کردی(PORTB.X=1 ) برای ایجاد پالس ECO

                              یبارم بصورت ورودی (PINB.X=0 ) بدون تقیر DDR
                              مگه ما به پایه TRIG به مدت(حداقل 10us) پالس نمیدیم و بعد 8 تا پالس از echo میگیریم و بعد زمانش رو محاسبه کرده>>>مسافت رو پیدا میکنیم>؟؟؟؟

                              من اشتباه میکنم یا تو؟؟؟؟>>>من درست میگم یا تو؟؟؟؟؟ :question: :question: :question: :question: :question: :question:
                              :cry: :cry: :cry:>> :angry: :angry:>>> :cry2:
                              اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                              اگه دوس دارید سریع به جواب برسید :
                              1) قبل از پرسیدن سوال، بسرچید.
                              2) سوالاتون رو با جزئیات کامل مطرح کنید.

                              دیدگاه

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