اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام دوتا سوال

    اول اینکه این DPLF چی هست؟
    و دوم اینکه چرا ما باید فرکانس سنسور را تنظیم کنیم و آیا این کار لزومی داره؟

    دیدگاه


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

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

      اول اینکه این DPLF چی هست؟
      و دوم اینکه چرا ما باید فرکانس سنسور را تنظیم کنیم و آیا این کار لزومی داره؟

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

      دیدگاه


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

        نوشته اصلی توسط S_Ahmad
        فکر می کنم به اندازه کافی شفاف توضیح دادم، ولی چی رو بیشتر توضیح بدهم ؟

        کتابخانه و کلیپ اموزشی برای یکی از جایروسکوپ های فروشگاه تهیه شده که در لینک زیر قابل مشاهده هست:
        http://blog.eca.ir/?p=299
        منظورم اینه که چه طوری می شه با استفاده از جایروسکوپ به شمال مغناطیسی دست پیدا کرد. جایروسکوپ اصلا چه اتباطی به میدان مغناطیسی دارد.

        دیدگاه


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

          نوشته اصلی توسط مهدی کربلایی
          منظورم اینه که چه طوری می شه با استفاده از جایروسکوپ به شمال مغناطیسی دست پیدا کرد. جایروسکوپ اصلا چه اتباطی به میدان مغناطیسی دارد.
          جایروسکوپ هیچ ارتباطی به میدان مغناطیسی ندارد، جایروسکوپ سرعت زاویه ای را دریافت می کند.
          جهت قطبها(شمال ، جنوب و ...) توسط میدان های مغناطیسی با قطب نما سنجیده می شود.

          دوستان پرسیدند:
          نوشته اصلی توسط siyamak saadatpur
          این سنسور چون از آهنربا (دو قطب غیر همنام) ساخته شده وقتی به آهن نزدیک میشه کلا خروجی بهم میخوره
          سوال بنده اینه که اگر این سنسور برای تشخیص جهات جغرافیایی در یک ربات بکار برده بشه و در مجاورت رباتمون مقدار آهن زیاد بشه
          این ربات چگونه میتونه خطای مذکور رو تشخیص بده و داده دقیق رو استفاده کنه.
          راه حلی ابداع شده؟
          من جواب دادم:
          نوشته اصلی توسط S_Ahmad
          این ایرادی که عرض کردید ، مربوط به تمامی قطب نما ها هست.
          اساس کار قطب نماها با اندازه گیری میدان های مغناطیسی زمین هستند.

          لذا بهم ریختن این میدان مغناطیسی با وجود آهن ، باطری ، آهن ربا یا هرچیزی که میدان مغناطیسی ایجاد کنه یا جذب کنه، بدون شک اتفاق خواهد افتاد.
          این یک ایراد ذاتی قطب نما ها هست.
          _________________
          و اما راه حل:
          برای جبران این خطای ذاتی قطبنما ، داده های بردار مغناطیسی جاذبه زمین رو با داده های سرعت زاویه ای جایروسکوپ ترکیب می کنند، تا کاستی های یکدیگر رو پوشش بدهند.
          برای ترکیب داده های جایرو و قطب نما از فیلتر های مختلفی همچون کالمن استفاده می کنند.
          عرض کردم که برای اینکه تا حد بسیار زیادی این خطای قطب نماها (بهم ریختن داده ی خروجی در نزدیک شدن به فلز یا ...) رو کاهش داد ، باید داده های اونها رو با داده های جایرو ترکیب کرد.
          این یک راه حلی هست برای کاهش خطا!

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

          دیدگاه


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

            برای اینکه خطای ناشی از تغیرات زاویه افقی قطب نما حذف کرد از یک شتاب سنج در کنار قطب نما استفاده می کنند(جبرانسازی زاویه از افق )
            لطفا در این مورد توضیح بدید و فرمول های ریاضی قرار بدید. Tilt Compensated Heading

            دیدگاه


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

              نوشته اصلی توسط S_Ahmad
              قبلاً بابت این گرفتن درجه از 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
              سلام،ببخشید میخواستم ببینم نسخه نهایی کتابخونه تون تکمیل شده ؟

              دیدگاه


                #37
                نسخه ی 1.3 کتابخانه ی راه اندازی HMC5883L

                نوشته اصلی توسط saeedeh.h
                سلام،ببخشید میخواستم ببینم نسخه نهایی کتابخونه تون تکمیل شده ؟

                نسخه ی نهایی که نه! ولی نسخه ی جدید تر رو می تونید از زیر دانلود کنید:
                http://dl.roboticngo.com/uploads/HMC5883L-Libv1-3.rar

                چند وقت پیش یک تغییراتی دادم و بعد تا الان دیگه دست بهش نزدم، تست اولیه هم گرفته بودم ، ولی نه هنوز تست جامع شده و نه کامل !

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

                دیدگاه


                  #38
                  نسخه ی 1.3 کتابخانه ی راه اندازی HMC5883L

                  البته یادم رفت که فایل C پروژه اصلی را بذارم ، ولی در زیر کد مربوطه رو مشاهده می کنید:
                  کد:
                  /*****************************************************
                  CodeWizardAVR V2.05.3 Standard
                  
                  Project : Test & Start With HMC5883L
                  Version : 3
                  Date  : 1392/11/1
                  Author : S_Ahmad
                  Company : www.RoboticNGO.com  www.ECA.ir
                  Comments:
                  
                  Chip type        : ATmega32
                  AVR Core Clock frequency: 8.000000 MHz
                  *****************************************************/
                  
                  #include <mega32.h>
                  #include <i2c.h>
                  #include <alcd.h>
                  #include <delay.h>
                  #include <stdio.h>
                  #include "LIB\HMC5883L\HMC5883L.h"
                  
                  void main(void)
                  {
                  // Declare your local variables here
                  
                  // Input/Output Ports initialization
                  // Port A initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTA=0x00;
                  DDRA=0x00;
                  
                  // Port B initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTB=0x00;
                  DDRB=0x00;
                  
                  // Port C initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTC=0x00;
                  DDRC=0x00;
                  
                  // Port D initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTD=0x00;
                  DDRD=0x00;
                  
                  // Timer/Counter 0 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 0 Stopped
                  // Mode: Normal top=0xFF
                  // OC0 output: Disconnected
                  TCCR0=0x00;
                  TCNT0=0x00;
                  OCR0=0x00;
                  
                  // Timer/Counter 1 initialization
                  // Clock source: System Clock
                  // Clock value: Timer1 Stopped
                  // Mode: Normal top=0xFFFF
                  // OC1A output: Discon.
                  // OC1B output: Discon.
                  // Noise Canceler: Off
                  // Input Capture on Falling Edge
                  // Timer1 Overflow Interrupt: Off
                  // Input Capture Interrupt: Off
                  // Compare A Match Interrupt: Off
                  // Compare B Match Interrupt: Off
                  TCCR1A=0x00;
                  TCCR1B=0x00;
                  TCNT1H=0x00;
                  TCNT1L=0x00;
                  ICR1H=0x00;
                  ICR1L=0x00;
                  OCR1AH=0x00;
                  OCR1AL=0x00;
                  OCR1BH=0x00;
                  OCR1BL=0x00;
                  
                  // Timer/Counter 2 initialization
                  // Clock source: System Clock
                  // Clock value: Timer2 Stopped
                  // Mode: Normal top=0xFF
                  // OC2 output: Disconnected
                  ASSR=0x00;
                  TCCR2=0x00;
                  TCNT2=0x00;
                  OCR2=0x00;
                  
                  // External Interrupt(s) initialization
                  // INT0: Off
                  // INT1: Off
                  // INT2: Off
                  MCUCR=0x00;
                  MCUCSR=0x00;
                  
                  // Timer(s)/Counter(s) Interrupt(s) initialization
                  TIMSK=0x00;
                  
                  // USART initialization
                  // Communication Parameters: 8 Data, 1 Stop, No Parity
                  // USART Receiver: On
                  // USART Transmitter: On
                  // USART Mode: Asynchronous
                  // USART Baud Rate: 9600
                  UCSRA=0x00;
                  UCSRB=0x18;
                  UCSRC=0x86;
                  UBRRH=0x00;
                  UBRRL=0x33;
                  
                  // Analog Comparator initialization
                  // Analog Comparator: Off
                  // Analog Comparator Input Capture by Timer/Counter 1: Off
                  ACSR=0x80;
                  SFIOR=0x00;
                  
                  // ADC initialization
                  // ADC disabled
                  ADCSRA=0x00;
                  
                  // SPI initialization
                  // SPI disabled
                  SPCR=0x00;
                  
                  // TWI initialization
                  // TWI disabled
                  TWCR=0x00;
                  
                  // I2C Bus initialization
                  // I2C Port: PORTB
                  // I2C SDA bit: 1
                  // I2C SCL bit: 0
                  // Bit Rate: 100 kHz
                  // Note: I2C settings are specified in the
                  // Project|Configure|C Compiler|Libraries|I2C menu.
                  i2c_init();
                  
                  // Alphanumeric LCD initialization
                  // Connections are specified in the
                  // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                  // RS - PORTC Bit 0
                  // RD - PORTC Bit 1
                  // EN - PORTC Bit 2
                  // D4 - PORTC Bit 3
                  // D5 - PORTC Bit 4
                  // D6 - PORTC Bit 5
                  // D7 - PORTC Bit 6
                  // Characters/line: 20
                  lcd_init(20);
                  ////|/============ S_Ahmad >>>> www.RoboticNGO.com >>>> HMC5883L Prj /|/|/|/|/
                  
                   HMC5883L_Init();
                  
                   while(1)
                   {
                    Get_HMC_nonCalib_Data();
                    Get_HMC_Calib_Data();
                  
                  	printf("X RawVal: %f \r",HMC_Raw_Val[X]);
                  	printf("Y RawVal: %f \r",HMC_Raw_Val[Y]);
                  	printf("Z RawVal: %f \r",HMC_Raw_Val[Z]);
                    
                  	printf("nonClib CMPS Angle : %f \r",CMPS_Angle_nonClib);
                  	printf("nonCalib X RawVal: %f \r",HMC_Raw_nonCalib_Val[X]);
                  	printf("nonCalib Y RawVal: %f \r",HMC_Raw_nonCalib_Val[Y]);
                  	printf("nonCalib Z RawVal: %f \r",HMC_Raw_nonCalib_Val[Z]);
                    
                  	printf("Clib CMPS Angle : %f \r",CMPS_Angle_Clib);
                  	printf("Clib X RawVal: %f \r",HMC_Raw_Calib_Val[X]);
                  	printf("Clib Y RawVal: %f \r",HMC_Raw_Calib_Val[Y]);
                  	printf("Clib Z RawVal: %f \r",HMC_Raw_Calib_Val[Z]); 
                    
                    delay_ms(70);
                   }
                  }
                  کانفیگ i2c و سریال و ... را یادتون نره، برای استفاده از سریال هم حتماً تنظیمات Code Generation رو برای printf درست کتید!
                  همواره يادمان باشد:
                  1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
                  2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
                  3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

                  دیدگاه


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

                    مرسی ممنون،

                    دیدگاه


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

                      سلام
                      من این برنامه رو برای نمایش بر روی lcd تغییر دادم ؛ ولی مقادیری ک نمایش میده ثابته و با حرکت ماژول تغییر نمیکنه!
                      مقادیری که برای x , y , z نمایش میده (1-) هست و اصلا این مقدار یا متغیر های دیگه مثل زاویه تغیر نمیکنن؛
                      به نظرتون اشکال از کجاست؟؟

                      دیدگاه


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

                        نوشته اصلی توسط siyamak saadatpur
                        با عرض سلا م خدمت اساتید
                        بنده یه سوال فنی در مورد قطب نما داشتم
                        البته من سنسورhmc5883l رو با بسکام راه اندازی کردم و تمامی جهات رو ازش گرفتم فقط یه مشکل اساسی داره.
                        این سنسور چون از آهنربا (دو قطب غیر همنام) ساخته شده وقتی به آهن نزدیک میشه کلا خروجی بهم میخوره
                        سوال بنده اینه که اگر این سنسور برای تشخیص جهات جغرافیایی در یک ربات بکار برده بشه و در مجاورت رباتمون مقدار آهن زیاد بشه
                        این ربات چگونه میتونه خطای مذکور رو تشخیص بده و داده دقیق رو استفاده کنه.
                        راه حلی ابداع شده؟
                        با عرض سلام

                        میشه نمونه برنامه داخل بسکام رو بزارید یه مدت دارم با ایم ماژول کار میکنم ولی خروجی نگرفتم

                        ممنون
                        عامل کليدي تمام موفقيتها " عمل کردن" است

                        دیدگاه


                          #42
                          مشکل در راه اندازی ماژول قطب نما با i2c ای وی آر &

                          سلام من یه ماژول قطب نما از این مدل http://shop.aftabrayaneh.com/Electronic_Compass_Magnetoresistive.html?search=%D 9%82%D8%B7%D8%A8%20%D9%86%D9%85%D8%A7 خریدم. میخوام با بسکام و اتمگا32 راهش بیاندازم . این برنامه رو هم براش نوشته ام
                          کد:
                          $regfile = "m16def.dat"
                          $crystal = 8000000
                          Config Lcd = 16 * 2
                          Config Lcdpin = Pin , Rs = Pina.0 , E = Pina.1 , Db4 = Pina.2 _
                           , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = Pina.5
                          Dim B As Word
                          Config Portd.7 = Input
                          
                          Declare Sub I2c_wright
                          
                          Cls
                          Locate 1 , 1
                          Lcd "hamed"
                          Wait 1
                          Cls
                          Lcd "tahamtan"
                          Wait 1
                          Cls
                          
                          
                          Config I2cdelay = 5
                          Config Scl = Portc.0
                          Config Sda = Portc.1
                          I2cstop
                          
                          Do
                          
                          Call I2c_wright
                          Lcd B
                          Cls
                          
                          Loop
                          
                          
                          
                          Sub I2c_wright
                          
                          I2cstart
                          I2creceive &H3C , B
                          I2cstop
                          
                          
                          
                          Return
                          End Sub
                          اما فقط 255 رو توی خروجی بهم میده.
                          از اونجایی هم که تا حالا با i2c کار نکردم نمیدونم برنامه ام درسته یا نه؟ یا اینکه ماژول قطب نمایم درست کار نمیکنه.
                          در ضمن می خواستم بدونم تنظیم دیگه ای نداره؟
                          دیتاشیت این ماژول هم اینجاست
                          http://forum.arduino.ir/8/21/183.html

                          دیدگاه


                            #43
                            پاسخ : مشکل در راه اندازی ماژول قطب نما با i2c ای وی آر &

                            سلام

                            اینجا یه برنامه نمونه هست. اگر با c بود بیشتر میتونستم کمک کنم.
                            http://mcselec.com/index2.php?option=com_forum&Itemid=59&page =viewtopic&t=9902

                            دیدگاه


                              #44
                              پاسخ : مشکل در راه اندازی ماژول قطب نما با i2c ای

                              اگه کسی برنامه ی اش رو به زبون cبرای codevision هم داشت بگذاره. اون هم میتونه تا حدودی کمکم کنه. البته خب با بسکام که خودم کار کردم خیلی بهتره.

                              دیدگاه


                                #45
                                پاسخ : پاسخ : مشکل در راه اندازی ماژول قطب نما با i2c ای

                                نوشته اصلی توسط hamedtahamtan
                                اگه کسی برنامه ی اش رو به زبون cبرای codevision هم داشت بگذاره. اون هم میتونه تا حدودی کمکم کنه. البته خب با بسکام که خودم کار کردم خیلی بهتره.
                                آقا خیلی ممنون. برنامه ای که لینکش رو گذاشته بودی به خوبی جواب داد. خیلی مرسی داری

                                دیدگاه

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