اطلاعیه

Collapse
No announcement yet.

کمک در راه اندازی ماژول قطب نما GY-271

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

    کمک در راه اندازی ماژول قطب نما GY-271

    دوستان سلام من از یک کتاب برنامه قطب نما با ماژول CMPs03 رو دیدم ، اما چون این ماژول گران قیمت هست به جاش ماژول GY-271 را از ECA خریدم ، حالا ظاهرا این ماژول با این برنامه راه اندازی نمیشود ! (مگه چه فرقی داره هر دو تاش با پروتکل دو سیمه وصل میشن اما این ماژول ارزون قیمته امکاناتش کمتره ) برنامه رو گذاشتم اما یک سری اطلاعات از http://www.electrodragon.com/w/index.php?title=HMC5883L_Three-Axis_Compass_Magneticfield_Module در باره ی این ماژول گرفتم ولی نفهمیدم !

    دیتا شیت ماژول GY-271
    http://bit.ly/1fjrurf
    سورس برنامه قطب نما با ماژول CMPS03
    http://bit.ly/1fjrBTU

    کد:
    #include <mega16.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <delay.h>
    // I2C Bus functions
    #asm
      .equ __i2c_port=0x18 ;PORTB
      .equ __sda_bit=0
      .equ __scl_bit=1
    #endasm
    #include <i2c.h>
    
    // Alphanumeric LCD Module functions
    #include <alcd.h>
    
    unsigned char compass_data;
    
    void compass_read(void);
    
    void main(void)
    {
    char str[20],str1[20];
    float point;
    
    
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // I2C Bus initialization
    i2c_init();
    
    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTD Bit 0
    // RD - PORTD Bit 1
    // EN - PORTD Bit 2
    // D4 - PORTD Bit 4
    // D5 - PORTD Bit 5
    // D6 - PORTD Bit 6
    // D7 - PORTD Bit 7
    // Characters/line: 16
    lcd_init(16);
    
    while (1)
       {
       compass_read();
       point=(float)compass_data*1.41176;
       ftoa(point,1,str1);
       sprintf(str,"point:%s ",str1);
       lcd_gotoxy(0,0);
       lcd_puts(str);
       if (point<45 || point>315)
        {
        lcd_gotoxy(5,1);
        lcd_putsf("NORTH");
        }
       else if (point<135 && point>=45)
        {
        lcd_gotoxy(5,1);
        lcd_putsf("EAST");
        }
       else if (point<215 && point>=135)
        {
        lcd_gotoxy(5,1);
        lcd_putsf("SOUTH");
        }
       else if (point<315 && point>=215)
        {
        lcd_gotoxy(5,1);
        lcd_putsf("WEST");
        }
       delay_ms(100);
       };
    
       }
    
    void compass_read()
    {
    i2c_start();
    i2c_write(0xC0);
    i2c_write(0x01);
    i2c_start();
    i2c_write(0xC1);
    compass_data=i2c_read(0);
    i2c_stop();
    }
    برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
    یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

    #2
    پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

    کسی نبود ظاهرا جواب دهد :cry2:
    برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
    یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

    دیدگاه


      #3
      پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

      نوشته اصلی توسط Fanoudi
      کسی نبود ظاهرا جواب دهد :cry2:
      به به آقای دکتر خودمون!
      _____________________
      مهندس این کد شما که گذاشتید تابعی داره به نام compass_read که در همون ابتدای کار بسته شده!
      یا اینکه کد رو ناقص گذاشتید و اصل تابع بعد از main بوده، که الان نیست!

      یه مدت اگه صبر کنید برای این ماژول ها کتابخونه می دم بیرون!

      ولی کدش خیلی ساده هست!
      همواره يادمان باشد:
      1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
      2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
      3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

      دیدگاه


        #4
        پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

        نوشته اصلی توسط S_Ahmad
        به به آقای دکتر خودمون!
        _____________________
        مهندس این کد شما که گذاشتید تابعی داره به نام compass_read که در همون ابتدای کار بسته شده!
        یا اینکه کد رو ناقص گذاشتید و اصل تابع بعد از main بوده، که الان نیست!

        یه مدت اگه صبر کنید برای این ماژول ها کتابخونه می دم بیرون!

        ولی کدش خیلی ساده هست!
        آره مهندس گفتین بسته هست شک کردم نه تابع بعد از مین در آخر تعریف شده من یادم رفته بگذارم خوب الان من نفهمیدم چه کار کنم ؟ oo: این ماژول مگر با اون ماژولیکه گرفتم چه فرقی داره که اذیت میکنه ؟
        برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
        یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

        دیدگاه


          #5
          پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

          در کلیت یعنی قطب نما بودنشون تفاوتی ندارند، ولی خب باهم یک سری تفاوتها دارند دیگه!

          CMPS03 :

          1-اندازه گیری شتاب
          2-اندازه گیری میدان مغتاطیسی
          3-به دست اوردن زاویه ی افقی و عمودی تا 85درجه
          4-قطب نما (به دست اوردن جهت های جغرافیایی شمال وجنوب و شرق و غرب )
          این ماژول دارای 22 ریجستر است که اطلاعات هر کدام از کاربردهایی که ذکر شد در این ریجستر ها قرار میگیرند .
          این ماژول با سه پروتکل (pwm ,i2c,usart) می تونه راه اندازی بشه!
          دقت اندازه گیری در قطب نمای CMPS03 سه تا 4 درجه است.

          HMC5883L :

          1-اندازه گیری میدان مغتاطیسی
          2-قطب نما (به دست اوردن جهت های جغرافیایی شمال وجنوب و شرق و غرب )

          این سنسور که در قالب ماژول GY-271 عرضه شده است، 12 رجیستر دارد و فقط پروتکل ارتباطی I2C رو پشتیبانی می کند!
          دقت اندازه گیری در قطب نمایGY-271 یا همون (HMC5883L) یک تا 2 درجه است.
          _______________________

          در کل HMC5883L از منظر دقت برتری دارد!
          _______________________
          در رابطه با برنامه :
          اولا این کدی که نوشته شده ، در نسخه های قدیمی کامپایلر کدویژن نوشته شده است.
          دوما، خب تایع چی بوده؟
          سوما، آدم رو مجبور می کنید در همین ایام امتحانات کد بنویسم و از درس خواندن بیفتم! اگر توی کد مشکلی دارید که کتابخانه ی آماده برای کار با این ماژول بنویسم و ارائه بدم.
          همواره يادمان باشد:
          1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
          2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
          3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

          دیدگاه


            #6
            کتابخانه ی آماده برای راه اندازی ماژول قطب نما GY-271 یا همان HMC5883

            شما یک پروژه ی جدید در کدویژن 2.5.3 تعریف کنید که:
            1- I2c رو در پروژه ، با هر پورتی که می خواهید پیکربندی کنید.
            2- کتابخانه ی زیر رو به پروژه پیوست و با اجرای توابع مربوطه در کتابخانه، خروجی قطب نما رو دریافت و این اطلاعات رو که در متغییر مربوطه ریخته شده استفاده کنید.
            _______________________
            دانلود کتابخانه ی HMC5883 ورژن 1:
            پیوست شد
            این کتابخانه نسخه ی اولیه آن رونمایی شد ، در آینده ی نه چندان دور می توانید نسخه ی تکمیلی آن را نیز از ECA دریافت نمایید.
            ان شا... در آینده کتابخانه تکمیل میشه و مفصل قسمت های کالیبره و سلف تست و .... رو تکمیل می کنم!

            با این حال ، فقط و فقط کپی برداری با ذکر منبع مجاز است!
            _______________________
            منت نمی خوام بزارم! چون شما مشتری ECA هستید و ماژول رو از ECA خریدید، در زمان کم و با وجود مشکلات این کار رو کردم!

            با سپاس
            فایل های پیوست شده
            همواره يادمان باشد:
            1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
            2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
            3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

            دیدگاه


              #7
              پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

              من با هر دو قطب نمای ذکر شده کار کردهم. CMPS03 مستقیما جهت های جغرافیایی را به ما می دهد ولی GY-271 این گونه نیست. یعنی مستقیما جهت ها و درجه ها را نمی دهد. پس ما باید توسط فرمول های ریاضی خودمون این کار را انجام بدهیم. من چندین فرمول و روش های مختلف را تست کردم ولی نتونستم جهت های مغناطیسی را تشخیص بدهم. :cry2:

              دیدگاه


                #8
                پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                قبلاً بابت این گرفتن درجه از HMC5883 کلی روضه خونده بودم ولی با این جریان سرور ECA حذف شده بود. حالا چاره ای نیست جز تکرار اونها!
                __________________
                درسته CMPS03 که خروجی 8 بیتی می دهد و با ضرب کردن آن در عدد 1.4 زاویه بین 0 تا 360 بدست می آید.
                در CMPS10 که خروجی 8 و 16 بیتی داره ، خروجی Bearing در قالب byte و word داره که در حالت ورد شما می توانید با دقت 0.1 زاویه رو داشته باشید.

                در CMPS ها تقریباً همه چیز آماده و شسته رفته هست!
                ______
                ولی برای تبدیل زاویه در HMC5883 کمی محصابات ریاضی نیاز هست که کتابخانه رو یک بار دیگر ویرایش کردم و کمی آن را به روز کردم.
                که در واقع تابع زیر در آن اضافه شد:
                کد:
                void Get_HMC_Angles(void)
                {
                  Get_Averge_RawData();
                
                  // angle in degrees
                  Angle= atan2((double)Raw_Yout_Val,(double)Raw_Xout_Val) * (180 / 3.14159265) + 180;
                  Angle*=10;
                }
                که لینک ورژن 1.2 کتابخانه را در زیر می توانید دنبال کنید:
                http://dl.roboticngo.com/uploads/HMC5883L-v1-2-.rar
                __________________
                سایر قسمت ها هم ان شاا... به مرور در آینده ای نه چندان دور تکمیل میشه!(سر فرصت، بعد از :read
                همواره يادمان باشد:
                1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
                2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
                3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

                دیدگاه


                  #9
                  پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                  دو تا سوال داشتم
                  یکی این که این تابع atan2 چکار میکنه؟
                  و یکی هم این که کلا این ماژول همین یه زاویه رو میده؟ این angle چه زاویه ایه؟
                  AYRIC

                  دیدگاه


                    #10
                    پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                    نوشته اصلی توسط roboreza
                    دو تا سوال داشتم
                    یکی این که این تابع atan2 چکار میکنه؟
                    و یکی هم این که کلا این ماژول همین یه زاویه رو میده؟ این angle چه زاویه ایه؟
                    atan2 همون تانژانت معکوس (atan) خودمون هست ولی یکم تغییرش دادن و اسمش رو گذاشتن atan2.
                    ببینید شما برای پیدا کردن یک نقطه در صفحه ی مختصات دکارتی می تونید به وسلیه تانژانت زوایه اون نقطه نسبت به محور افقی مثبت بدست بیاورید. شکل زیر گویا هست:

                    _______________
                    atan2 چیز عجیبی نیست معادل این تصویر زیر است:

                    یا معادل این:

                    یا معادل این:


                    برای مطالعه بیشتر در مورد atan2 ّه لینک زیر مراجعه کنید:
                    http://en.wikipedia.org/wiki/Atan2
                    ______________________
                    پس برای اینکه از خروجی HMC بخواهیم استفاده کنیم یک راه حل این است!
                    ____________________________________

                    در مورد زاویه:
                    ماژول این زاویه رو نمی دهد، ماژول یک سری دیتای خام به ما می دهد که بنا به استفاده ی ما می توان از آن بهره جست! لذا با روابط ریاضی حالت ها و تبدیلات مختلفی رو میشه در آورد!

                    عرض کرده بودم که بنده هنوز رنگ ماژول رو هم ندیدم!
                    بنده تاکنون تمامی اطلاعاتی که دادم رو حساب اطلاعات قبلی و تجربه بوده و تا زمانی که عملا با ماژول کار نکنم اطلاعات دقیق و مطمئن نمی تونم بدهم.

                    ولی خوب سعی کردم برای آقای فنودی اطلاعات خوبی ارائه بدهم که کارشون پیش بره و به نوعی کار راه انداز باشم.
                    همواره يادمان باشد:
                    1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
                    2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
                    3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

                    دیدگاه


                      #11
                      پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                      من با استفاده از فرمول های ریاضی که بر اساس دیتای خام X و Y قطب ها را محاسبه میکرد ، کار کردم ولی نتیجه نگرفتم.

                      البته از لحاظ ریاضیات و آرک تانژانت و بقیه مسائل همه چیز درست است.

                      فقط سوال و حرف من این است که اگر این ماژول خروجی Z داره ، چرا باید از دیتاهای خام X و Y برای محاسبه قطب ها استفاده کرد؟ :eek:

                      دیدگاه


                        #12
                        پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                        نوشته اصلی توسط حسین وکیل زاده
                        من با استفاده از فرمول های ریاضی که بر اساس دیتای خام X و Y قطب ها را محاسبه میکرد ، کار کردم ولی نتیجه نگرفتم.

                        البته از لحاظ ریاضیات و آرک تانژانت و بقیه مسائل همه چیز درست است.

                        فقط سوال و حرف من این است که اگر این ماژول خروجی Z داره ، چرا باید از دیتاهای خام X و Y برای محاسبه قطب ها استفاده کرد؟ :eek:
                        نظر ابتدایی خودم اینکه باید خروجی مستقیم سنسور معتبر باشه و فقط با ضرب در عدد خاصی به درجه تبدیل بشه.
                        ولی چون شما گفتید که این طور نیست و خروجی نا مشخصی رو می دهد.
                        این ایده را مطرح کردم.
                        البته این ایده در بسیاری از ماژول ها عملیاتی هست و جواب داده!
                        حال که می گویید تست شده و جواب نمی دهد. خوب بنده باید صبر کنم تا مآژول به دستم برسد تا نتایج نهایی را خدمتتان عرض کنم.
                        ________________________________
                        احتمالاً در این سنسور محور Z محور چرخش حول محور قائم بر سنسور نیست و محور Z در واقع یک همچین چیزی است:

                        که بر اساس این میشه از فرمول مذکور برای در آوردن زاویه استفاده کرد!
                        همواره يادمان باشد:
                        1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
                        2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
                        3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

                        دیدگاه


                          #13
                          پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                          خیلی ممنون از توضیحاتی که دادید آقای s-ahmad
                          ولی در مورد محور z احتمالا آقای وکیل زاده دارن اشتباه میکنن
                          چون کامپس حول محور z عدد میده
                          ولی اگر زاویه رو مستقیم نمیده شاید یه فیلتر میخواد که توی دیتاشیت چیزی نگفته!
                          AYRIC

                          دیدگاه


                            #14
                            پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                            نوشته اصلی توسط roboreza
                            خیلی ممنون از توضیحاتی که دادید آقای s-ahmad
                            ولی در مورد محور z احتمالا آقای وکیل زاده دارن اشتباه میکنن
                            چون کامپس حول محور z عدد میده
                            ولی اگر زاویه رو مستقیم نمیده شاید یه فیلتر میخواد که توی دیتاشیت چیزی نگفته!
                            این محور Z به هر حال یک عددی باید دهد، که صددرصد همین طوره باید یک عدد داشته باشد. ولی آن عدد چه چیزی را اثبات می کند و اینکه چه چیزی را نشان می دهد؟ راه حل بحث ماست.
                            تا بعد برای ان فرمولی تهیه شود و خروجی مطلوب حاصل شود!
                            درسته ، توی دیتاشیت اصلا حرفی در این باره نزده ، لذا حتماً باید تست بشه و خروجی رویت بشه تا فهیمد دقیقاً چی هست و با اون می شه چکار کرد!
                            همواره يادمان باشد:
                            1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
                            2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
                            3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

                            دیدگاه


                              #15
                              پاسخ : پاسخ : کمک در راه اندازی ماژول قطب نما GY-271

                              نوشته اصلی توسط S_Ahmad
                              این محور Z به هر حال یک عددی باید دهد، که صددرصد همین طوره باید یک عدد داشته باشد. ولی آن عدد چه چیزی را اثبات می کند و اینکه چه چیزی را نشان می دهد؟ راه حل بحث ماست.
                              تا بعد برای ان فرمولی تهیه شود و خروجی مطلوب حاصل شود!
                              درسته ، توی دیتاشیت اصلا حرفی در این باره نزده ، لذا حتماً باید تست بشه و خروجی رویت بشه تا فهیمد دقیقاً چی هست و با اون می شه چکار کرد!
                              من فردا انشاالله ماژول میاد دستم
                              البته ماژول gy-80 هستش
                              تست میکنم خبرشو میدم
                              منتظر شما هم هستم که ماژول بیاد دستتون و نتیجه رو بگید
                              ممنون
                              AYRIC

                              دیدگاه

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