اطلاعیه

Collapse
No announcement yet.

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

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

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

    با تشکر از همه دوستان.من از کتابخانه آقای S_Ahmad با کمی تغییر استفاده کردم.و برای کالیبر کردن هم از منبع:
    http://diydrones.com/profiles/blogs/advanced-hard-and-soft-iron-magnetometer-calibration-for-dummies
    استفاده کردم.بسیار نتایج خوبی داشت.من برای کالیبر کردن خیلی سرچ کردم حتی self test رو هم استفاده کردم.ولی بی دردسر ترین و بهترین نوع کالیبر رو تو این منبع دیدم.بعضیا از sphere fit تو متلب استفاده میکنن ولی این نرم افزاری که تو لینک بالا هست خیلی راحت 12 تا نقطه میگیره و کالیبر میکنه.البته تو کتابخانه ای که آقای S_Ahmad زحمتشو کشیدن یه تغییر کوچیکی باید بدید.تو لینک بالا کامل توضیج داده ضرایبی که نرم افزار میده رو باید چجوری استفاده کرد ولی بازم اگه متوجه نشدید من اون قسمتی که باید تغییر کنه رو بگم.باز هم ممنون از همه

    دیدگاه


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

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

      من چند روزه دارم باهاش ور ویرم ولی اصلا جواب نگرفتم فقط عدد 45 درجه رو میگیرم

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

      شاید هم از سخت افزارم باشه من دوتا پایه SCL , SDA رو با دوتا مقاومت 4.7 کیلو اهم پول اپ کردم

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

      دیدگاه


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

        سلام

        مشکلم حل شد

        اشکال از فرکانس i2c بود که خیلی زیاد بود

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

        دیدگاه


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

          سلام دوستان

          اللان مدار بدون هیچ مشکلی کار میکنه اما یه مشکل اساسی هست اونم اینه که اگر ماژول به صورت صاف و افقی نباشه زاویه اشتباه به دست میاد به نظرم باید وظعیت محور z هم توی فورمولا تاثیر داشته باشه

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

          دیدگاه


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

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

            اللان مدار بدون هیچ مشکلی کار میکنه اما یه مشکل اساسی هست اونم اینه که اگر ماژول به صورت صاف و افقی نباشه زاویه اشتباه به دست میاد به نظرم باید وظعیت محور z هم توی فورمولا تاثیر داشته باشه

            نظرتون چی هست??
            ممنون
            اصولا جایرو میذارین برای این قضیه.من خودم استفاده ای که از این ماژول کردم تو یه ربات autonomous بود که تو سطح افقی حرکت میکرد و این مشکلو نداشتم.ولی خیلی چیزا میتونی پیدا کنی تو نت.

            دیدگاه


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

              سلام

              با خودش نمیشه این کارو کرد ؟ فکر کنم بشه باید از محور z هم استفاده بشه ولی نمیدونم چه طور اگر کسی از دوستان کار کرده لطفا راهنمایی کنه

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

              دیدگاه


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

                نوشته اصلی توسط sohrab.tavakkoli
                با تشکر از همه دوستان.من از کتابخانه آقای S_Ahmad با کمی تغییر استفاده کردم.و برای کالیبر کردن هم از منبع:
                http://diydrones.com/profiles/blogs/advanced-hard-and-soft-iron-magnetometer-calibration-for-dummies
                استفاده کردم.بسیار نتایج خوبی داشت.من برای کالیبر کردن خیلی سرچ کردم حتی self test رو هم استفاده کردم.ولی بی دردسر ترین و بهترین نوع کالیبر رو تو این منبع دیدم.بعضیا از sphere fit تو متلب استفاده میکنن ولی این نرم افزاری که تو لینک بالا هست خیلی راحت 12 تا نقطه میگیره و کالیبر میکنه.البته تو کتابخانه ای که آقای S_Ahmad زحمتشو کشیدن یه تغییر کوچیکی باید بدید.تو لینک بالا کامل توضیج داده ضرایبی که نرم افزار میده رو باید چجوری استفاده کرد ولی بازم اگه متوجه نشدید من اون قسمتی که باید تغییر کنه رو بگم.باز هم ممنون از همه
                با سلام

                اگر ممکنه سورس نهایی رو بذارید رو سایت.
                ممنون
                تقدیر تقویم انسانهای عادی ، تغییر تدبیر انسانهای عالیست.

                دیدگاه


                  #53
                  پاسخ : نسخه ی 1.3 کتابخانه ی راه اندازی HMC5883L

                  نوشته اصلی توسط S_Ahmad
                  البته یادم رفت که فایل 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 درست کتید!
                  دوستان فقط دقت کنید اول این کد باید به جای
                  کد:
                  #include "LIB\HMC5883L\HMC5883L.h"
                  این را بزنید
                  کد:
                  #include "LIB\HMC5883L\HMC5883L.c"
                  ممنون
                  آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                  دیدگاه


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

                    با سلام
                    دوستان من ماژول رو با کتابخونه آقای S_Ahmad راه اندازی کردم
                    میخوام بدونم اطلاعات خامی که این ماژول به ما میده چی هست دقیقا؟
                    آیا کسی تونسته با برنامه و روشی که چند پست بالاتر دوستمون گذاشته اونو کالیبره کنه؟؟؟
                    چون هر کاری کردم برنامه MagMaster اطلاعات سریال رو قبول نمیکنه!!!
                    از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

                    دیدگاه


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

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

                      مشکلم حل شد

                      اشکال از فرکانس i2c بود که خیلی زیاد بود

                      ممنون
                      لطفا سورس کد برنامتون رو قرار بدین تا ماهم استفاده کنیم

                      دیدگاه


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

                        سلام دوستان
                        با عرض پوزش به خاطر بالا آوردن تاپیک قدیمی
                        من مشکلم با این ماژول اینه که اطلاعات خام دریافتی با تغییر جهت ماژول تغییر نمی کنه و ثابت میمونه...یعنی حتما باید میکرو رو ریست کنم تا اطلاعات جدید بده...کد رو هم برای دریافت اطلاعات خام اولیه به صورت پیش فرض دیتاشیت نوشتم که بعدا شاخ و برگ بهش بدم اما تو این مرحله خیلی گیر کردم ... دوستان اگر منت بزارید یه نگاه بندازید به کد ممنون میشم :cry:

                        کد:
                        #include <mega8.h>
                        #include <alcd.h>
                        #include <delay.h>
                        #include <stdio.h>
                        
                        int Out_x=0 , Out_y=0 , Out_z=0 ;
                        unsigned char st[20];
                        
                        
                        void TWI_Start(void)
                        {
                          TWCR=0xA4; //(1<<TWINT) | (1<<TWSTA) | (1<<TWEN)
                          while( !(TWCR & (1<<TWINT) ) ); 
                        }
                        
                        void TWI_Stop(void)
                        {
                          TWCR=0x94; ////(1<<TWINT) | (1<<TWSTO) | (1<<TWEN)
                        }
                        
                        void TWI_Write(unsigned char Data)
                        {
                          TWDR=Data;
                          TWCR=0x84; //(1<<TWINT) | (1<<TWEN)
                          while( !(TWCR & (1<<TWINT)) );
                        }
                        
                        unsigned char TWI_Read(unsigned char ACK)
                        {
                          if(ACK)
                            TWCR=0xC4;  //(1<<TWINT) | (1<<TWEA) | (1<<TWEN)
                          else
                            TWCR=0x84;  //(1<<TWINT) | (1<<TWEN)
                            
                          while( !(TWCR & (1<<TWINT)) );
                          
                          return TWDR;
                        }
                        
                        void Send ( unsigned char Device_Address , unsigned char Word_Address , unsigned char Data )
                        {
                          TWI_Start();
                          TWI_Write(Device_Address);
                          TWI_Write(Word_Address);
                          TWI_Start();
                          TWI_Write(Data);
                          TWI_Stop();
                        }
                        
                        unsigned char Receive ( unsigned char Device_Address , unsigned char Word_Address , unsigned char ACK )
                        {
                          unsigned char Data;
                          TWI_Start();
                          TWI_Write(Device_Address);
                          TWI_Write(Word_Address);
                          TWI_Start();
                          TWI_Write(Device_Address + 1);
                          delay_us(10);
                          Data = TWI_Read(ACK);
                          TWI_Stop();
                          return Data;
                        } 
                        
                        void main(void)
                        {
                        
                        DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
                        PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
                        
                        DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
                        PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
                        
                        lcd_init(20);
                        
                        TWBR=0x08;
                        TWSR=0x00;
                        
                        Send ( 0x3C , 0x00 , 0x70 );
                        Send ( 0x3C , 0x01 , 0xA0 );
                        delay_ms(6);
                        while (1)
                           { 
                            
                            Send ( 0x3C , 0x02 , 0x01 );
                         	delay_ms(6);
                            
                            Out_x = ( Receive(0x3C , 0x03 , 0) << 8 ) | ( Receive(0x3C , 0x04 , 0) );
                            delay_ms(10);
                            Out_y = ( Receive(0x3C , 0x07 , 0) << 8 ) | ( Receive(0x3C , 0x08 , 0) );
                            delay_ms(10);
                            Out_z = ( Receive(0x3C , 0x05 , 0) << 8 ) | ( Receive(0x3C , 0x06 , 0) );
                            delay_ms(10);
                            
                            lcd_gotoxy(0,0);
                            sprintf(st , "x = %d" , Out_x);
                            lcd_puts(st);
                            
                            lcd_gotoxy(0,1);
                            sprintf(st , "y = %d" , Out_y);
                            lcd_puts(st);
                            
                            lcd_gotoxy(0,2);
                            sprintf(st , "z = %d" , Out_z);
                            lcd_puts(st);
                            
                            delay_ms(67);
                           }
                        }

                        دیدگاه


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

                          نوشته اصلی توسط murcheh
                          سلام دوستان
                          با عرض پوزش به خاطر بالا آوردن تاپیک قدیمی
                          من مشکلم با این ماژول اینه که اطلاعات خام دریافتی با تغییر جهت ماژول تغییر نمی کنه و ثابت میمونه...یعنی حتما باید میکرو رو ریست کنم تا اطلاعات جدید بده...کد رو هم برای دریافت اطلاعات خام اولیه به صورت پیش فرض دیتاشیت نوشتم که بعدا شاخ و برگ بهش بدم اما تو این مرحله خیلی گیر کردم ... دوستان اگر منت بزارید یه نگاه بندازید به کد ممنون میشم :cry:

                          کد:
                          #include <mega8.h>
                          #include <alcd.h>
                          #include <delay.h>
                          #include <stdio.h>
                          
                          int Out_x=0 , Out_y=0 , Out_z=0 ;
                          unsigned char st[20];
                          
                          
                          void TWI_Start(void)
                          {
                            TWCR=0xA4; //(1<<TWINT) | (1<<TWSTA) | (1<<TWEN)
                            while( !(TWCR & (1<<TWINT) ) ); 
                          }
                          
                          void TWI_Stop(void)
                          {
                            TWCR=0x94; ////(1<<TWINT) | (1<<TWSTO) | (1<<TWEN)
                          }
                          
                          void TWI_Write(unsigned char Data)
                          {
                            TWDR=Data;
                            TWCR=0x84; //(1<<TWINT) | (1<<TWEN)
                            while( !(TWCR & (1<<TWINT)) );
                          }
                          
                          unsigned char TWI_Read(unsigned char ACK)
                          {
                            if(ACK)
                              TWCR=0xC4;  //(1<<TWINT) | (1<<TWEA) | (1<<TWEN)
                            else
                              TWCR=0x84;  //(1<<TWINT) | (1<<TWEN)
                              
                            while( !(TWCR & (1<<TWINT)) );
                            
                            return TWDR;
                          }
                          
                          void Send ( unsigned char Device_Address , unsigned char Word_Address , unsigned char Data )
                          {
                            TWI_Start();
                            TWI_Write(Device_Address);
                            TWI_Write(Word_Address);
                            TWI_Start();
                            TWI_Write(Data);
                            TWI_Stop();
                          }
                          
                          unsigned char Receive ( unsigned char Device_Address , unsigned char Word_Address , unsigned char ACK )
                          {
                            unsigned char Data;
                            TWI_Start();
                            TWI_Write(Device_Address);
                            TWI_Write(Word_Address);
                            TWI_Start();
                            TWI_Write(Device_Address + 1);
                            delay_us(10);
                            Data = TWI_Read(ACK);
                            TWI_Stop();
                            return Data;
                          } 
                          
                          void main(void)
                          {
                          
                          DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
                          PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
                          
                          DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
                          PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
                          
                          lcd_init(20);
                          
                          TWBR=0x08;
                          TWSR=0x00;
                          
                          Send ( 0x3C , 0x00 , 0x70 );
                          Send ( 0x3C , 0x01 , 0xA0 );
                          delay_ms(6);
                          while (1)
                             { 
                              
                              Send ( 0x3C , 0x02 , 0x01 );
                           	delay_ms(6);
                              
                              Out_x = ( Receive(0x3C , 0x03 , 0) << 8 ) | ( Receive(0x3C , 0x04 , 0) );
                              delay_ms(10);
                              Out_y = ( Receive(0x3C , 0x07 , 0) << 8 ) | ( Receive(0x3C , 0x08 , 0) );
                              delay_ms(10);
                              Out_z = ( Receive(0x3C , 0x05 , 0) << 8 ) | ( Receive(0x3C , 0x06 , 0) );
                              delay_ms(10);
                              
                              lcd_gotoxy(0,0);
                              sprintf(st , "x = %d" , Out_x);
                              lcd_puts(st);
                              
                              lcd_gotoxy(0,1);
                              sprintf(st , "y = %d" , Out_y);
                              lcd_puts(st);
                              
                              lcd_gotoxy(0,2);
                              sprintf(st , "z = %d" , Out_z);
                              lcd_puts(st);
                              
                              delay_ms(67);
                             }
                          }
                          یعنی هیچ کس نیست یه کمک کوچکی به ما بده

                          دیدگاه


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

                            https://www.google.com/search?q=eshop.eca.ir%2BGY-271&oq=eshop.eca.ir%2BGY-271&aqs=chrome..69i57j69i65.1219j0j4&sourc eid=chrome&es_sm=93&ie=UTF-8#q=GY-271+atmega++library

                            https://github.com/Timendainum/ThreeDCompass

                            https://github.com/ebahen42/GY-271

                            نمیدونم توابعی که برا کنترل این ic نوشتی درسته یا نه، چون با این ic فک نکنم کار کرده باشم و دیتاشیتش رو خونده باشم
                            میتونی یه کتابخونه آماده برا میکرو مورد نظرت پیدا کنی و اگه پیدا نکردی یه کتابخونه آردوینو پیدا کن و بشین تبدیلش کن به Avr
                            آردوینو هم همون Avr هستش فقط کد هاش تو بعضی موارد فرق داره که باید با کد های avr جایگزین کنی مثلا 0و1 کردن پورت ورودی/خروجی کردن پورت و...
                            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

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

                            دیدگاه


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

                              سلام در کتابخونه آقای S_AHMAD اون تغییر کوچیک که باید داد رو توضیح می دهید.
                              جه چیزی رو باید تغییر داد؟؟؟؟

                              دیدگاه


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

                                محور ها باید مقادیرشون کالیبرشه بشن. بعد از کالیبره شده با استفاده از مقدار z می توان مقادیر x و y کالیبره کرد. این کار توسط ماتریس 3 در 3 و مقداری آفست انجام میشه. البته جبرانسار حرارتی هم برای برخی ماژول ها در نظر گرفته شده است. محور z در حقیقت تیلت را برای محور های x و y محاسبه می کنه. برای قطب نما از دو محور x و y استفاده میشه و محور z به صورت پارامتری در محاسبه اونها بکار می ره و در نهایت آفست دار هم میشه.

                                دلیل: ادغام دو پست برای جلوگیری از اسپم

                                با تغییر مقدار گین می تونید اثرات مخرب مغناطیسی رو کم اثر تر کنید.

                                دیدگاه

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