اطلاعیه

Collapse
No announcement yet.

شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

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

    #61
    پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

    سلام با این سنسور میشه شتاب یک وسیله متحرک مثل اتوموبیل رو اندازه گرفت که بعدش بشه مسافت رفته شده رو از روش دربیارم ، اگه نمیشه چه سنسوری رو پیشنهاد می کنید

    دیدگاه


      #62
      پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

      نوشته اصلی توسط titery
      سلام با این سنسور میشه شتاب یک وسیله متحرک مثل اتوموبیل رو اندازه گرفت که بعدش بشه مسافت رفته شده رو از روش دربیارم ، اگه نمیشه چه سنسوری رو پیشنهاد می کنید
      شتاب (acceleration) به تغییرات سرعت در واحد زمان گفته می شود.
      بر این اساس شما به چه شکل می خواهید به مسافت طی شده دست پیدا کنید؟
      برای مسافت طی شده و حتی سرعت می توانید از GPS استفاده کنید.

      دیدگاه


        #63
        پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

        لطفا اگر کسی از دوستان با lpc1768 راه انداخته کدشو up کنه
        am hacker powerfull ha ha ha

        دیدگاه


          #64
          پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

          نوشته اصلی توسط Homayon
          شتاب (acceleration) به تغییرات سرعت در واحد زمان گفته می شود.
          بر این اساس شما به چه شکل می خواهید به مسافت طی شده دست پیدا کنید؟
          برای مسافت طی شده و حتی سرعت می توانید از GPS استفاده کنید.
          سلام با سرعت صفر کار شروع می شود و بر اساس شتاب سرعت محاسبه و اگر شتاب صفر شد اخرین سرعت ملاک محاسبه است

          دیدگاه


            #65
            پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

            سلام
            من جدید این ماژول رو خریدم و با avr خواستم راه اندازیش کنم ولی در کمال ناباوری نشد oo:
            در کدم از تمام نکاتی که دوستان گفته بودن استفاده کردم....حتی کد من آسونتر بود و حتی نمیخواستم روی ال سی دی نشون بدم :read: فقط میخواستم اگر زاویه محور X یا Y اگر از 30 درجه بیشتر شد پایه PD.6 یک و صفر بشه و یه چراغ رو روشن خاموش کنه :angry: یعنی در این حدم جواب نداد.... اینم کد برنامه
            کد:
            /*****************************************************
            This program was produced by the
            CodeWizardAVR V2.05.3 Standard
            Automatic Program Generator
            © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.com
            
            Project : 
            Version : 
            Date  : 09/07/2015
            Author : hossein
            Company : 
            Comments: 
            
            
            Chip type        : ATmega32A
            Program type      : Application
            AVR Core Clock frequency: 8.000000 MHz
            Memory model      : Small
            External RAM size    : 0
            Data Stack size     : 512
            *****************************************************/
            
            #include <mega32a.h>
            #include <i2c.h>
            #include <math.h>
            #include <ADXL345.h>
            #include <stdio.h>
            
            // Declare your global variables here
             
            void main(void)
            {
            delay_ms(100);
            // 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=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTD=0x00;
            DDRD=0x40;
            
            // 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
            // USART disabled
            UCSRB=0x00;
            
            // 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();
            ADXL345_Regs_Reset();
            ADXL345_SelfTest();
            ADXL345_Offset_Calib();
            ADXL345_Init();
            delay_ms(2000);
            while (1)
               {         
            
            
               Get_Accel_Angles();  
               
               if(Accel_XAngle>30){
               PORTD.6=1; 
                    delay_ms(50);
                 PORTD.6=0;
                    delay_ms(50);
               }  
                  if(Accel_YAngle>30){
               PORTD.6=1; 
                    delay_ms(50);
                 PORTD.6=0;
                    delay_ms(50);
               } 
               delay_ms(70);
               // Place your code here
            
               }
            }
            hi miami

            دیدگاه


              #66
              پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

              سلام دوستان :bye
              ازینکه پریدم توو تاپیکتون ، معذرت میخام :mrgreen:
              چند روز هست که درگیر پیداکردن سنسورهایی برا تشخیص موقعیت هستم و اینکه سنسورهای زاویه دو محوره معمولا گرون هستند و انکودرها هم داستان داره ... oo:
              تا اینکه اتفاقی رسیدم به ماژول ADXL345 ، با کلی تحقیق و تفحس به این نتیجه رسیدم که این ماژول زاویه دو محور x , y رو به صورت درجه میده ؛
              خب منم مختصات رو برای یک استیپر میخام.
              راستی ، محور z ارتفاع رو نشون میده یا ...؟
              امیدوارم درست توضیح داده باشم.
              ممنون میشم اگه جواب بدید.

              دیدگاه


                #67
                پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

                بطور کلی با شتابسنج ها (در حالت استاتیک) و با توجه به سایه جاذبه زمین روی محورهای سنسور میشه زاویه های roll, pitch (زوایای اوج و چرخ هم ترجمه شدند) رو به دو رابطه بسیار ساده میشه بدست آورد. سرچ کنید
                tilt measurement using accelerometer

                دیدگاه


                  #68
                  پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

                  نوشته اصلی توسط titery
                  سلام با این سنسور میشه شتاب یک وسیله متحرک مثل اتوموبیل رو اندازه گرفت که بعدش بشه مسافت رفته شده رو از روش دربیارم ، اگه نمیشه چه سنسوری رو پیشنهاد می کنید
                  در مورد محاسبه مسافت طی شده توسط اتوموبیل به نتیجه ای رسیدین؟
                  کسی ایده ای داره که چطور مسافت طی شده توسط خودرو رو با دقت بالا (حداکثر یک متر خطا در 1km) بدست آورد؟

                  دیدگاه


                    #69
                    پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

                    نوشته اصلی توسط احسان خواجوی
                    اول ممنون از توضیحات جامع
                    من یه کد ببرای میکرو ARM زدم اگه میشه یه نگاه بهش بکنید
                    اگه میشه کد AVR برای این سنسور رو هم بدارید
                    مشکل برنامه کجاست که هر وقت میخوام دیتایی رو بخونم بهم صفر رو نمایش میده
                    احساس میکنم یه پیش نیاز هایی که من رعایت نمیکنم
                    رجیستر های اولیه شاید درست مقدار دهی نشده اند
                    یا کد های مربوط به tft مشکل دارن
                    برای دیباگ برنامه هر چند خط یه بار خواستم که یه عدد نشونم بده
                    ولی موقعی میکرو رو پروگرم میکنم جاهایی که میخوام عددی رو بهم نشون بده صفر نشون میده
                    اگه میشه کمکم کنند
                    ممنون
                    اینم کد
                    کد:
                    #include <at91sam7x256.h>
                    #include <delay.h>
                    #include <TFTLCD.h>
                    #include <math.h>
                    #include <stdlib.h>
                    
                    char PORTRAIT=0;
                    
                    unsigned int Accel_Xout_Val=0, Accel_Yout_Val=0, Accel_Zout_Val=0;
                    int Accel_Xout_Normalized_Val=0, Accel_Yout_Normalized_Val=0, Accel_Zout_Normalized_Val=0;
                     char Offset_X_Val=0,Offset_Y_Val=0,Offset_Z_Val=0;
                    char Accel_XAngle=0, Accel_YAngle=0, Accel_ZAngle=0;
                    
                     char X_Angle[10];
                     char Y_Angle[10];
                     char Z_Angle[10];
                    
                    int tftshow_X;
                    int tftshow_Y;
                    int tftshow_Z;
                    
                    int main(){
                    	
                    	tftlcd_init();
                    	tftlcd_putchar('1',BLUE,GREEN,1);
                    	
                    	*AT91C_PMC_PCER = (1<<9);
                    	
                    //I2c Configuration	PIO
                     *AT91C_PIOA_PDR = (1<<10 | 1<<11);					  
                     *AT91C_PIOA_ASR = (1<<10 | 1<<11);				    
                     *AT91C_PIOA_MDER = (1<<10 | 1<<11);					  
                     *AT91C_PIOA_PPUER = (1<<10 | 1<<11);
                    	
                    	//I2c Configuration 
                     *AT91C_TWI_CWGR = 0x00017676;	
                     *AT91C_TWI_CR =0x4;
                    	
                     *AT91C_TWI_MMR = 0x7B0200;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x3139;
                     *AT91C_TWI_THR = 0x0B;
                     delay_ms(1000);
                    	
                     *AT91C_TWI_MMR = 0x0E50100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x2D;
                     *AT91C_TWI_THR = 0x08;
                     delay_ms(1000);
                     
                     *AT91C_TWI_MMR = 0x0E50100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x2E;
                     *AT91C_TWI_THR = 0x80;
                     delay_ms(1000);
                     
                     tftlcd_putchar('2',BLUE,GREEN,1);
                     
                    	while(1){
                    		
                     *AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x1E;
                     *AT91C_TWI_CR =0x3;
                     Offset_X_Val= *AT91C_TWI_RHR;
                    	//	tftshow_X = (int)(Offset_X_Val);
                    	//	sprintf(X_Angle,"%d",tftshow_X);
                    	//	tftlcd_puts(X_Angle,BLUE,GREEN,1);
                    
                    
                     *AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x1F;
                     Offset_Y_Val= *AT91C_TWI_RHR;
                    
                     *AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x20;
                     Offset_Z_Val= *AT91C_TWI_RHR;
                    tftlcd_putchar('3',BLUE,GREEN,1);		
                    	
                    
                    		
                    		*AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x33;
                     Accel_Xout_Normalized_Val= *AT91C_TWI_RHR;
                    		
                    		*AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x35;
                     Accel_Yout_Normalized_Val= *AT91C_TWI_RHR;
                     
                     *AT91C_TWI_MMR = 0xE51100;//Device Address ADXL345=0xE5
                     *AT91C_TWI_IADR = 0x37;
                     Accel_Zout_Normalized_Val = *AT91C_TWI_RHR;
                     tftlcd_putchar('4',BLUE,GREEN,1);
                     
                     
                     
                     // Convert Unsigned Int To Int
                      Accel_Xout_Normalized_Val = Accel_Xout_Val;
                      Accel_Yout_Normalized_Val = Accel_Yout_Val;
                      Accel_Zout_Normalized_Val = Accel_Zout_Val;
                    		tftlcd_putchar('5',BLUE,GREEN,1);
                    		
                    	Accel_Xout_Val = Accel_Xout_Val-Offset_X_Val;
                     Accel_Yout_Val = Accel_Yout_Val-Offset_Y_Val;
                    	Accel_Zout_Val = Accel_Zout_Val-Offset_Z_Val;
                    	tftlcd_putchar('6',BLUE,GREEN,1);
                    	
                    	// Calculate The Angle Of Each Axis
                    	Accel_XAngle = 57.295*atan((float) Accel_Xout_Normalized_Val / sqrt(pow((float)Accel_Zout_Normalized_Val,2)+pow((float)Accel_Yout_Normalized_Val,2)));
                    	Accel_YAngle = 57.295*atan((float) Accel_Yout_Normalized_Val / sqrt(pow((float)Accel_Zout_Normalized_Val,2)+pow((float)Accel_Xout_Normalized_Val,2)));
                     Accel_ZAngle = 57.295*atan((float) sqrt(pow((float)Accel_Xout_Normalized_Val,2)+pow((float)Accel_Yout_Normalized_Val,2))/ Accel_Zout_Normalized_Val );
                    	tftlcd_putchar('7',BLUE,GREEN,1);
                     // ftoa(Accel_XAngle,4,X_Angle);
                    	
                    	 tftshow_X = (int)(Accel_XAngle);
                    	 tftshow_Y = (int)(Accel_YAngle);
                    	 tftshow_Z = (int)(Accel_ZAngle);
                    	 tftlcd_putchar('8',BLUE,GREEN,1);
                    	 
                    	 sprintf(X_Angle,"%d",tftshow_X);
                    	 sprintf(Y_Angle,"%d",tftshow_Y);
                    	 sprintf(Z_Angle,"%d",tftshow_Z);
                    	 tftlcd_putchar('9',BLUE,GREEN,1);
                    	 
                    	 tftlcd_puts(X_Angle,BLUE,GREEN,1);
                    	 tftlcd_puts(Y_Angle,BLUE,GREEN,1);
                    	 tftlcd_puts(Z_Angle,BLUE,GREEN,1);
                    	 tftlcd_putchar('10',BLUE,GREEN,1);
                    	 
                    	}
                    	
                    }

                    عرض سلام .
                    جناب موسوی بعد از مطالعه توضیحات شما و سوالات دوستان در این تاپیک و بررسی برنامه هایی در سایت های دیگر که با کتابخانه خود شما ننوشته شده بود برنامه نوشتم اما خروجی ان اعداد ثابت هستند و با تغییر مکان ماژول اعداد همچنان ثابت اند . مشابه همین برنامه رو در 2 سایت که چک شده کار میکنه . مشکل از ماژول نیست؟ شما اشاره به عدم هم خوانی برخی ماژول های ADXL345 بازار با کتابخانه خود کرده بودید. امکان داره راهنمایی بفر مایید؟

                    این کد بنده هست.

                    #include <mega32a.h>
                    #include <delay.h>
                    #include <stdlib.h>

                    #asm
                    .equ __lcd_port=0x1B ;PORTA
                    #endasm
                    #include <lcd.h>

                    #asm
                    .equ __i2c_port=0x18 ;PORTB
                    .equ __sda_bit=1
                    .equ __scl_bit=0
                    #endasm
                    #include <i2c.h>

                    #define EEPROM_BUS_ADDRESS_W 160
                    #define EEPROM_BUS_ADDRESS_R 161

                    #include "ADXL345.h"


                    void main(void)
                    {
                    char str[15],xAng[10],yAng[10],zAng[10],xV[10],yV[10],zV[10];
                    ADXL345_Regs_Reset();
                    delay_ms(100);
                    ADXL345_Init();
                    lcd_init(16);
                    lcd_gotoxy(0,0);lcd_putsf("Loading"delay_ms(1500);lcd_clear();
                    ftoa(GetDeviceID(),0,str);lcd_puts(str);delay_ms(2 000);lcd_clear();

                    while(1)
                    {
                    //ACCESS angales
                    delay_ms(200);lcd_clear();
                    Get_Accel_Angles();
                    ftoa(Accel_XAngle,0,xAng);lcd_gotoxy(0,0);lcd_puts ("XA"lcd_puts(xAng);
                    ftoa(Accel_YAngle,0,yAng);lcd_gotoxy(5,0);lcd_puts ("YA"lcd_puts(yAng);
                    ftoa(Accel_ZAngle,0,zAng);lcd_gotoxy(10,0);lcd_put s("ZA"lcd_puts(zAng);

                    //ACCESS values
                    // Get_Accel_Values();
                    itoa(Accel_Xout_Val,xV);lcd_gotoxy(0,1);lcd_puts(& quot;Xv"lcd_puts(xV);
                    itoa(Accel_Yout_Val,yV);lcd_gotoxy(5,1);lcd_puts(& quot;Yv"lcd_puts(yV);
                    itoa(Accel_Zout_Val,zV);lcd_gotoxy(10,1);lcd_puts( "Zv"lcd_puts(zV);

                    }
                    }

                    دیدگاه


                      #70
                      پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

                      سلام.کسی کد راه اندازی این ماژول رو با lpc1768 داره؟

                      دیدگاه


                        #71
                        با سلام خدمت شما آقای موسوی و همه بچه های زحمت کش سایت.یه سوال داشتم در مورد کتابخونه adlx345 که زحمتش رو کشیدین.چرا وقتی دستور کالیبره رو فراخونی میکنم مقادیر زاویه اشتباه میشه؟چطور رفع میشه؟سوال بعدی هم این که چرا سنسور گاهی اعداد پرت نشون میده؟ مخصوصا نزدیکای زاویه صفر درجه!!مثلا یهو میشه 70/80 یه لحظه.ممنون میشم اگه راهنمایی بفرمایید.یا کتابخونه اصلاح شده معرفی کننین.

                        کسی نیست اینجا به داد ما برسه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟من سنسور رو گذاشتم رو دستگام.ولی وقتی موتور دستگاه روشن میشه.سنسور دقیقا اعداد متغیر و چرت نشون میده.چطور میشه جلوی نویزش رو گرفت؟؟؟؟از اسااتید گرامی کسی نیست راه حل ارائه بده؟؟؟؟

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

                        جدیدترین ویرایش توسط اشکان غفارزاده; ۱۴:۲۸ ۱۳۹۵/۱۱/۰۵.

                        دیدگاه


                          #72
                          پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]

                          واقعا جالبه که کسی جواب نمیده!!!اصلا مشکلو با برنامه نویسی حلش کردم.الان مشکل اینه که چطور داده رو از یک متر اونورتر بخونم از این ماژول.با i2c که جواب نمیده...قاطی میشه.گفتم از i2c سخت افزاری استفاده کنم که بشه فرکانس کلاکو کاهش داد.ولی به کد ویژن زیاد مسلط نیستم.کسی نیست راهنمایی کنه؟؟؟لطفا..

                          دیدگاه

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