<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Starlino Electronics</title>
	<atom:link href="http://www.starlino.com/comments/feed" rel="self" type="application/rss+xml" />
	<link>http://www.starlino.com</link>
	<description>Electronics and Robotics Projects, Tutorials, Reviews, Experiments</description>
	<lastBuildDate>Sun, 19 May 2013 11:40:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>Comment on DCM Tutorial &#8211; An Introduction to Orientation Kinematics by Ajit</title>
		<link>http://www.starlino.com/dcm_tutorial.html#comment-6413</link>
		<dc:creator>Ajit</dc:creator>
		<pubDate>Sun, 19 May 2013 11:40:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.starlino.com/?p=226#comment-6413</guid>
		<description><![CDATA[
	How does DCM do a basic complementary filter? I am not able to understand which block of the DCM does this. Could someone throw light on this?&#160;
]]></description>
		<content:encoded><![CDATA[<p>	How does DCM do a basic complementary filter? I am not able to understand which block of the DCM does this. Could someone throw light on this?&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by Pablopaolus</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6409</link>
		<dc:creator>Pablopaolus</dc:creator>
		<pubDate>Tue, 14 May 2013 10:35:50 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6409</guid>
		<description><![CDATA[
	Ok, thank you for the interest!&#160;I&#039;m using &lt;a href=&quot;http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en539708&quot; rel=&quot;nofollow&quot;&gt;PIC18F46J50&lt;/a&gt; as MCU along with&#160;&lt;a href=&quot;https://www.sparkfun.com/products/10121&quot; rel=&quot;nofollow&quot;&gt;Sparkfun&#160;IMU&#160;- 6DOF ITG3200/ADXL345&lt;/a&gt;. Here is my code:


&lt;blockquote&gt;
	
		#include &lt;18F46J50.h&gt;
		#fuses HSPLL, NOWDT, PLL4, NOXINST, NOCPUDIV, NOFCMEN, NOIESO, NOIOL1WAY, STVREN
		#use delay(clock=48000000)
		#use I2C(MASTER, SDA=PIN_D1, SCL=PIN_D0)
	

	
		#include &quot;.\include\usb_cdc.h&quot;
		#include &quot;mylib.h&quot;
		#include &quot;adxl345.h&quot; //Accel
		#include &quot;itg3200.h&quot; //Gyro
		#include &lt;math.h&gt;
	

	
		#define GREEN_LED PIN_A1
		#define RED_LED &#160; PIN_A2
		#define ON &#160; output_high
		#define OFF &#160;output_low
	

	
		float RwAcc[3]; //Projection of normalized gravitation force vector on x/y/z axis, as measured by accelerometer
		float rates[3]; //Gyro angular rates
	

	
		void main(void) {
	

	
		&#160; &#160;setup_oscillator(OSC_PLL_ON);
		&#160; &#160;delay_ms(1000);
		&#160; &#160;TRISD=0x03; //RD0 (SCL2) and RD1 (SDA2) inputs&#160;
	

	
		&#160; &#160;ON(GREEN_LED); &#160; &#160;
		&#160; &#160;usb_cdc_init();
		&#160; &#160;usb_init();
		&#160; &#160;ON(RED_LED); &#160;&#160;
		&#160; &#160;usb_wait_for_enumeration();
		&#160; &#160;delay_ms(100);
		&#160; &#160;OFF(RED_LED);
		&#160; &#160;OFF(GREEN_LED);
		&#160; &#160;delay_ms(100);
	

	
		&#160; &#160;//Accel init
		&#160; &#160;adxl345_init();
	

	
		&#160; &#160;//Gyro init
		&#160; &#160;itg3200_init_setup();&#160;
		&#160; &#160;itg3200_init();
		&#160; &#160;
		&#160; &#160;while (1){
	

	
		&#160; &#160; &#160; usb_task(); //you must call &#039;task&#039;, before testing &#039;enumerated&#039;.
		&#160; &#160; &#160; if(usb_enumerated()) ON(GREEN_LED);&#160;
		&#160; &#160; &#160; else OFF(GREEN_LED);
	

	
		&#160; &#160; &#160; //ACCEL readings
		&#160; &#160; &#160; RwAcc[0]=adxl345_get_accel_data(adxl345_get_data_x());
		&#160; &#160; &#160; RwAcc[1]=adxl345_get_accel_data(adxl345_get_data_y());
		&#160; &#160; &#160; RwAcc[2]=adxl345_get_accel_data(adxl345_get_data_z());
		&#160;&#160; &#160;
		&#160;&#160; &#160; &#160;//Gyro readings
		&#160;&#160; &#160; &#160;rates[0]=itg3200_get_angular_rate(itg3200_get_rate_x());&#160;
		&#160; &#160; &#160; rates[1]=itg3200_get_angular_rate(itg3200_get_rate_y());&#160;
		&#160; &#160; &#160; rates[2]=itg3200_get_angular_rate(itg3200_get_rate_z());
	

	
		&#160; &#160; &#160; //Print sensor readings
		&#160; &#160; &#160; printf(usb_cdc_putc,&quot;Xa=%1.2f Ya=%1.2f Za=%1.2f Xg=%1.2f Yg=%1.2f Zg=%1.2f\r\n&quot;,RwAcc[0],RwAcc[1],RwAcc[2],rates[0],rates[1],rates[2]);
	

	
		&#160; &#160; &#160; delay_ms(100);
		&#160; &#160;}&#160;
		}
	
&lt;/blockquote&gt;


	&#160;



	adxl345.h is:


&lt;blockquote&gt;
	
		#define ACCEL_ADDR_WRITE &#160;&#160; &#160;0xA6
		#define ACCEL_ADDR_READ &#160;&#160;&#160; &#160;0xA7
		#define accel_measure_mode &#160;0x08
	

	
		//READ/WRITE REGISTERS&#160;
		#define THRESH_TAP &#160;&#160; &#160;&#160;&#160; &#160;0x1D //Threshold tap
		#define OFSX&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x1E //X-axis offset
		#define OFSY&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x1F //Y-axis offset
		#define OFSZ&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x20 //Z-axis offset
		#define DUR&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x21 //Tap duration
		#define LATENT&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x22 //Tap latency
		#define WINDOW&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x23 //Tap window
		#define THRESH_ACT&#160;&#160; &#160;&#160;&#160; &#160;0x24 //Activity threshold
		#define THRESH_INACT&#160;&#160; &#160;0x25 //Inactivity threshold
		#define TIME_INACT&#160;&#160; &#160;&#160;&#160; &#160;0x26 //Inactivity time
		#define ACT_INACT_CTL&#160;&#160; &#160;0x27 //Axis enable control for activity and inactivity detection
		#define THRESH_FF&#160;&#160; &#160;&#160;&#160; &#160;0x28 //Free-fall threshold
		#define TIME_FF&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x29 //Free-fall time
		#define TAP_AXES&#160;&#160; &#160;&#160;&#160; &#160;0x2A //Axis control for single tap/double tap
		#define BW_RATE&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x2C //Data rate and power mode control
		#define POWER_CTL&#160;&#160; &#160;&#160;&#160; &#160;0x2D //Power-saving features control
		#define INT_ENABLE&#160;&#160; &#160;&#160;&#160; &#160;0x2E //Interrupt enable control
		#define INT_MAP&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;0x2F //Interrupt mapping control
		#define DATA_FORMAT&#160;&#160; &#160;&#160;&#160; &#160;0x31 //Data format control. Por defecto: +-2g: sensibilidad 256
		#define FIFO_CTL&#160;&#160; &#160;&#160;&#160; &#160;0x38 //FIFO control
		//READ-ONLY REGISTERS&#160;
		#define DEVID&#160;&#160; &#160; &#160;&#160; &#160;&#160;&#160; &#160;0x00 //Device ID
		#define ACT_TAP_STATUS &#160;&#160; &#160;0x2B //Source of single tap/double tap
		#define INT_SOURCE &#160;&#160; &#160;&#160;&#160; &#160;0x30 //Source of interrupts&#160;
		#define ACCEL_DATAX0&#160;&#160; &#160;0x32 //X-Axis Data 0
		#define ACCEL_DATAX1&#160;&#160; &#160;0x33 //X-Axis Data 1
		#define ACCEL_DATAY0&#160;&#160; &#160;0x34 //Y-Axis Data 0
		#define ACCEL_DATAY1&#160;&#160; &#160;0x35 //Y-Axis Data 1
		#define ACCEL_DATAZ0&#160;&#160; &#160;0x36 //Z-Axis Data 0
		#define ACCEL_DATAZ1&#160;&#160; &#160;0x37 //Z-Axis Data 1
		#define FIFO_STATUS&#160;&#160; &#160;&#160;&#160; &#160;0x39 //FIFO status
		&#160;
		//Sensitivity at XOUT, YOUT, ZOUT. &#177;2 g, 10-bit resolution
		#define ACCEL_SENSITIVITY 256.0f // LSB per g&#160;
	

	
		/////FUNCTIONS
		&#160;
		//single register write&#160;
		void adxl345_write_reg(int8 ADDR, int8 VAL)&#160;
		{&#160;
		&#160;&#160; &#160;i2c_start();&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ACCEL_ADDR_WRITE);&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ADDR);&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(VAL);&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_stop();&#160;
		}
	

	
		//single register read&#160;
		int8 adxl345_read_reg(int8 ADDR)&#160;
		{&#160;
		&#160;&#160; &#160;int8 val;&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_start();&#160;
		&#160; &#160;&#160; &#160;i2c_write(ACCEL_ADDR_WRITE);&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ADDR);&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_start();&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ACCEL_ADDR_READ);&#160;
		&#160; &#160;&#160;&#160; &#160;val=i2c_read(0); //NACK to end transmission&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_stop();&#160;
		&#160; &#160;&#160;&#160; &#160;return val;&#160;
		}&#160;
	

	
		void adxl345_init()
		{
		&#160;&#160; &#160;i2c_start();&#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ACCEL_ADDR_WRITE); &#160;&#160; &#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(POWER_CTL); &#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;
		&#160; &#160;&#160;&#160; &#160;i2c_write(ACCEL_MEASURE_MODE); &#160;
		&#160; &#160;&#160;&#160; &#160;i2c_stop();&#160;
		}
	

	
		signed int16 adxl345_get_data_x()&#160;
		{&#160;
		&#160;&#160; &#160;//DATAX0 is LSByte and DATAX1 is MSByte
		&#160; &#160;&#160;&#160; &#160;signed int16 xdata;&#160;
		&#160; &#160;&#160;&#160; &#160;xdata=(adxl345_read_reg(ACCEL_DATAX1)&lt;&lt;8);&#160;
		&#160; &#160;&#160;&#160; &#160;xdata&#124;=adxl345_read_reg(ACCEL_DATAX0);&#160;
		&#160; &#160;&#160;&#160; &#160;return xdata;&#160;
		}&#160;
	

	
		signed int16 adxl345_get_data_y()&#160;
		{&#160;
		&#160; &#160;&#160;&#160; &#160;signed int16 ydata;&#160;
		&#160; &#160;&#160;&#160; &#160;ydata=(adxl345_read_reg(ACCEL_DATAY1)&lt;&lt;8);&#160;
		&#160; &#160;&#160;&#160; &#160;ydata&#124;=adxl345_read_reg(ACCEL_DATAY0);&#160;
		&#160; &#160;&#160;&#160; &#160;return ydata;&#160;
		}&#160;
	

	
		signed int16 adxl345_get_data_z()&#160;
		{&#160;
		&#160; &#160;&#160;&#160; &#160;signed int16 zdata;&#160;
		&#160; &#160;&#160;&#160; &#160;zdata=(adxl345_read_reg(ACCEL_DATAZ1)&lt;&lt;8);&#160;
		&#160; &#160;&#160;&#160; &#160;zdata&#124;=adxl345_read_reg(ACCEL_DATAZ0);&#160;
		&#160; &#160;&#160;&#160; &#160;return zdata;&#160;
		}&#160;
	

	
		float adxl345_get_accel_data(signed int16 VAL)&#160;
		{&#160;
		&#160; &#160;float tmpf;&#160;
		&#160; &#160;tmpf = VAL/ACCEL_SENSITIVITY; //convert raw value to g&#160;
		&#160; &#160;return tmpf;&#160;
		}
	
&lt;/blockquote&gt;


	&#160;



	And itg3200.h is the driver version writen by simonspt in this thread:



	&lt;a href=&quot;http://www.ccsinfo.com/forum/viewtopic.php?t=47649&amp;highlight=adxl345+itg3200&quot; rel=&quot;nofollow&quot;&gt;http://www.ccsinfo.com/forum/viewtopic.php?t=47649&amp;highlight=adxl345+itg3200&lt;/a&gt;



	Thank you very much.



	&#160;



	&#160;



	&#160;
]]></description>
		<content:encoded><![CDATA[<p>	Ok, thank you for the interest!&nbsp;I&#039;m using <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en539708" rel="nofollow">PIC18F46J50</a> as MCU along with&nbsp;<a href="https://www.sparkfun.com/products/10121" rel="nofollow">Sparkfun&nbsp;IMU&nbsp;- 6DOF ITG3200/ADXL345</a>. Here is my code:</p>
<blockquote>
<p>		#include &lt;18F46J50.h&gt;<br />
		#fuses HSPLL, NOWDT, PLL4, NOXINST, NOCPUDIV, NOFCMEN, NOIESO, NOIOL1WAY, STVREN<br />
		#use delay(clock=48000000)<br />
		#use I2C(MASTER, SDA=PIN_D1, SCL=PIN_D0)</p>
<p>		#include &quot;.\include\usb_cdc.h&quot;<br />
		#include &quot;mylib.h&quot;<br />
		#include &quot;adxl345.h&quot; //Accel<br />
		#include &quot;itg3200.h&quot; //Gyro<br />
		#include &lt;math.h&gt;</p>
<p>		#define GREEN_LED PIN_A1<br />
		#define RED_LED &nbsp; PIN_A2<br />
		#define ON &nbsp; output_high<br />
		#define OFF &nbsp;output_low</p>
<p>		float RwAcc[3]; //Projection of normalized gravitation force vector on x/y/z axis, as measured by accelerometer<br />
		float rates[3]; //Gyro angular rates</p>
<p>		void main(void) {</p>
<p>		&nbsp; &nbsp;setup_oscillator(OSC_PLL_ON);<br />
		&nbsp; &nbsp;delay_ms(1000);<br />
		&nbsp; &nbsp;TRISD=0&#215;03; //RD0 (SCL2) and RD1 (SDA2) inputs&nbsp;</p>
<p>		&nbsp; &nbsp;ON(GREEN_LED); &nbsp; &nbsp;<br />
		&nbsp; &nbsp;usb_cdc_init();<br />
		&nbsp; &nbsp;usb_init();<br />
		&nbsp; &nbsp;ON(RED_LED); &nbsp;&nbsp;<br />
		&nbsp; &nbsp;usb_wait_for_enumeration();<br />
		&nbsp; &nbsp;delay_ms(100);<br />
		&nbsp; &nbsp;OFF(RED_LED);<br />
		&nbsp; &nbsp;OFF(GREEN_LED);<br />
		&nbsp; &nbsp;delay_ms(100);</p>
<p>		&nbsp; &nbsp;//Accel init<br />
		&nbsp; &nbsp;adxl345_init();</p>
<p>		&nbsp; &nbsp;//Gyro init<br />
		&nbsp; &nbsp;itg3200_init_setup();&nbsp;<br />
		&nbsp; &nbsp;itg3200_init();<br />
		&nbsp; &nbsp;<br />
		&nbsp; &nbsp;while (1){</p>
<p>		&nbsp; &nbsp; &nbsp; usb_task(); //you must call &#039;task&#039;, before testing &#039;enumerated&#039;.<br />
		&nbsp; &nbsp; &nbsp; if(usb_enumerated()) ON(GREEN_LED);&nbsp;<br />
		&nbsp; &nbsp; &nbsp; else OFF(GREEN_LED);</p>
<p>		&nbsp; &nbsp; &nbsp; //ACCEL readings<br />
		&nbsp; &nbsp; &nbsp; RwAcc[0]=adxl345_get_accel_data(adxl345_get_data_x());<br />
		&nbsp; &nbsp; &nbsp; RwAcc[1]=adxl345_get_accel_data(adxl345_get_data_y());<br />
		&nbsp; &nbsp; &nbsp; RwAcc[2]=adxl345_get_accel_data(adxl345_get_data_z());<br />
		&nbsp;&nbsp; &nbsp;<br />
		&nbsp;&nbsp; &nbsp; &nbsp;//Gyro readings<br />
		&nbsp;&nbsp; &nbsp; &nbsp;rates[0]=itg3200_get_angular_rate(itg3200_get_rate_x());&nbsp;<br />
		&nbsp; &nbsp; &nbsp; rates[1]=itg3200_get_angular_rate(itg3200_get_rate_y());&nbsp;<br />
		&nbsp; &nbsp; &nbsp; rates[2]=itg3200_get_angular_rate(itg3200_get_rate_z());</p>
<p>		&nbsp; &nbsp; &nbsp; //Print sensor readings<br />
		&nbsp; &nbsp; &nbsp; printf(usb_cdc_putc,&quot;Xa=%1.2f Ya=%1.2f Za=%1.2f Xg=%1.2f Yg=%1.2f Zg=%1.2f\r\n&quot;,RwAcc[0],RwAcc[1],RwAcc[2],rates[0],rates[1],rates[2]);</p>
<p>		&nbsp; &nbsp; &nbsp; delay_ms(100);<br />
		&nbsp; &nbsp;}&nbsp;<br />
		}</p>
</blockquote>
<p>	&nbsp;</p>
<p>	adxl345.h is:</p>
<blockquote>
<p>		#define ACCEL_ADDR_WRITE &nbsp;&nbsp; &nbsp;0xA6<br />
		#define ACCEL_ADDR_READ &nbsp;&nbsp;&nbsp; &nbsp;0xA7<br />
		#define accel_measure_mode &nbsp;0&#215;08</p>
<p>		//READ/WRITE REGISTERS&nbsp;<br />
		#define THRESH_TAP &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x1D //Threshold tap<br />
		#define OFSX&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x1E //X-axis offset<br />
		#define OFSY&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x1F //Y-axis offset<br />
		#define OFSZ&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;20 //Z-axis offset<br />
		#define DUR&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;21 //Tap duration<br />
		#define LATENT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;22 //Tap latency<br />
		#define WINDOW&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;23 //Tap window<br />
		#define THRESH_ACT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;24 //Activity threshold<br />
		#define THRESH_INACT&nbsp;&nbsp; &nbsp;0&#215;25 //Inactivity threshold<br />
		#define TIME_INACT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;26 //Inactivity time<br />
		#define ACT_INACT_CTL&nbsp;&nbsp; &nbsp;0&#215;27 //Axis enable control for activity and inactivity detection<br />
		#define THRESH_FF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;28 //Free-fall threshold<br />
		#define TIME_FF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;29 //Free-fall time<br />
		#define TAP_AXES&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x2A //Axis control for single tap/double tap<br />
		#define BW_RATE&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x2C //Data rate and power mode control<br />
		#define POWER_CTL&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x2D //Power-saving features control<br />
		#define INT_ENABLE&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x2E //Interrupt enable control<br />
		#define INT_MAP&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x2F //Interrupt mapping control<br />
		#define DATA_FORMAT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;31 //Data format control. Por defecto: +-2g: sensibilidad 256<br />
		#define FIFO_CTL&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;38 //FIFO control<br />
		//READ-ONLY REGISTERS&nbsp;<br />
		#define DEVID&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;00 //Device ID<br />
		#define ACT_TAP_STATUS &nbsp;&nbsp; &nbsp;0x2B //Source of single tap/double tap<br />
		#define INT_SOURCE &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;30 //Source of interrupts&nbsp;<br />
		#define ACCEL_DATAX0&nbsp;&nbsp; &nbsp;0&#215;32 //X-Axis Data 0<br />
		#define ACCEL_DATAX1&nbsp;&nbsp; &nbsp;0&#215;33 //X-Axis Data 1<br />
		#define ACCEL_DATAY0&nbsp;&nbsp; &nbsp;0&#215;34 //Y-Axis Data 0<br />
		#define ACCEL_DATAY1&nbsp;&nbsp; &nbsp;0&#215;35 //Y-Axis Data 1<br />
		#define ACCEL_DATAZ0&nbsp;&nbsp; &nbsp;0&#215;36 //Z-Axis Data 0<br />
		#define ACCEL_DATAZ1&nbsp;&nbsp; &nbsp;0&#215;37 //Z-Axis Data 1<br />
		#define FIFO_STATUS&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&#215;39 //FIFO status<br />
		&nbsp;<br />
		//Sensitivity at XOUT, YOUT, ZOUT. &plusmn;2 g, 10-bit resolution<br />
		#define ACCEL_SENSITIVITY 256.0f // LSB per g&nbsp;</p>
<p>		/////FUNCTIONS<br />
		&nbsp;<br />
		//single register write&nbsp;<br />
		void adxl345_write_reg(int8 ADDR, int8 VAL)&nbsp;<br />
		{&nbsp;<br />
		&nbsp;&nbsp; &nbsp;i2c_start();&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ACCEL_ADDR_WRITE);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ADDR);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(VAL);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_stop();&nbsp;<br />
		}</p>
<p>		//single register read&nbsp;<br />
		int8 adxl345_read_reg(int8 ADDR)&nbsp;<br />
		{&nbsp;<br />
		&nbsp;&nbsp; &nbsp;int8 val;&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_start();&nbsp;<br />
		&nbsp; &nbsp;&nbsp; &nbsp;i2c_write(ACCEL_ADDR_WRITE);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ADDR);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_start();&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ACCEL_ADDR_READ);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;val=i2c_read(0); //NACK to end transmission&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_stop();&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return val;&nbsp;<br />
		}&nbsp;</p>
<p>		void adxl345_init()<br />
		{<br />
		&nbsp;&nbsp; &nbsp;i2c_start();&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ACCEL_ADDR_WRITE); &nbsp;&nbsp; &nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(POWER_CTL); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_write(ACCEL_MEASURE_MODE); &nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;i2c_stop();&nbsp;<br />
		}</p>
<p>		signed int16 adxl345_get_data_x()&nbsp;<br />
		{&nbsp;<br />
		&nbsp;&nbsp; &nbsp;//DATAX0 is LSByte and DATAX1 is MSByte<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;signed int16 xdata;&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;xdata=(adxl345_read_reg(ACCEL_DATAX1)&lt;&lt;8);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;xdata|=adxl345_read_reg(ACCEL_DATAX0);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return xdata;&nbsp;<br />
		}&nbsp;</p>
<p>		signed int16 adxl345_get_data_y()&nbsp;<br />
		{&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;signed int16 ydata;&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ydata=(adxl345_read_reg(ACCEL_DATAY1)&lt;&lt;8);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ydata|=adxl345_read_reg(ACCEL_DATAY0);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return ydata;&nbsp;<br />
		}&nbsp;</p>
<p>		signed int16 adxl345_get_data_z()&nbsp;<br />
		{&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;signed int16 zdata;&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;zdata=(adxl345_read_reg(ACCEL_DATAZ1)&lt;&lt;8);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;zdata|=adxl345_read_reg(ACCEL_DATAZ0);&nbsp;<br />
		&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return zdata;&nbsp;<br />
		}&nbsp;</p>
<p>		float adxl345_get_accel_data(signed int16 VAL)&nbsp;<br />
		{&nbsp;<br />
		&nbsp; &nbsp;float tmpf;&nbsp;<br />
		&nbsp; &nbsp;tmpf = VAL/ACCEL_SENSITIVITY; //convert raw value to g&nbsp;<br />
		&nbsp; &nbsp;return tmpf;&nbsp;<br />
		}</p>
</blockquote>
<p>	&nbsp;</p>
<p>	And itg3200.h is the driver version writen by simonspt in this thread:</p>
<p>	<a href="http://www.ccsinfo.com/forum/viewtopic.php?t=47649&amp;highlight=adxl345+itg3200" rel="nofollow">http://www.ccsinfo.com/forum/viewtopic.php?t=47649&#038;highlight=adxl345+itg3200</a></p>
<p>	Thank you very much.</p>
<p>	&nbsp;</p>
<p>	&nbsp;</p>
<p>	&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by starlino</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6408</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Mon, 13 May 2013 20:08:22 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6408</guid>
		<description><![CDATA[&lt;p&gt;
	&lt;strong&gt;Pablopaolus - from the image alone it is not clear what is causing it. If you can post code and also the setup of your project (what sensors / mcu are you using)  that will help.&lt;/strong&gt;
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	<strong>Pablopaolus &#8211; from the image alone it is not clear what is causing it. If you can post code and also the setup of your project (what sensors / mcu are you using)  that will help.</strong></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by Pablopaolus</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6407</link>
		<dc:creator>Pablopaolus</dc:creator>
		<pubDate>Mon, 13 May 2013 18:40:19 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6407</guid>
		<description><![CDATA[
	Sorry, I&#039;ve tried to embed the image in my previous comment, but it doesn&#039;t seem to have worked. Here is the link:



	&lt;a href=&quot;http://imageshack.us/a/img694/9966/accelgyro.jpg&quot; rel=&quot;nofollow&quot;&gt;http://imageshack.us/a/img694/9966/accelgyro.jpg&lt;/a&gt;



	Thanks.&#160;
]]></description>
		<content:encoded><![CDATA[<p>	Sorry, I&#039;ve tried to embed the image in my previous comment, but it doesn&#039;t seem to have worked. Here is the link:</p>
<p>	<a href="http://imageshack.us/a/img694/9966/accelgyro.jpg" rel="nofollow">http://imageshack.us/a/img694/9966/accelgyro.jpg</a></p>
<p>	Thanks.&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by Pablopaolus</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6406</link>
		<dc:creator>Pablopaolus</dc:creator>
		<pubDate>Mon, 13 May 2013 17:19:40 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6406</guid>
		<description><![CDATA[
	Hi Starlino,



	I&#039;m making progress with my IMU thanks to your guide. I&#039;m able to read accel and gyro measures, but I don&#039;t know the reason why I get so many glitches in&#160;RyAcc. In this image you can see it:



	&lt;a href=&quot;http://img694.imageshack.us/img694/9966/accelgyro.jpg&quot; rel=&quot;nofollow&quot;&gt;&lt;/a&gt;



	In the image the devide is placed in horizontal position, so both X and Y outputs from accelereometer are zero. Any idea?



	Thank you very much.
]]></description>
		<content:encoded><![CDATA[<p>	Hi Starlino,</p>
<p>	I&#039;m making progress with my IMU thanks to your guide. I&#039;m able to read accel and gyro measures, but I don&#039;t know the reason why I get so many glitches in&nbsp;RyAcc. In this image you can see it:</p>
<p>	<a href="http://img694.imageshack.us/img694/9966/accelgyro.jpg" rel="nofollow"></a></p>
<p>	In the image the devide is placed in horizontal position, so both X and Y outputs from accelereometer are zero. Any idea?</p>
<p>	Thank you very much.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by starlino</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6405</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Mon, 13 May 2013 13:52:48 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6405</guid>
		<description><![CDATA[&lt;p&gt;
	Clark: the QT serial library has sometimes problems with ports higher then 10 (only on some computers), You can change it to COM4, or something similar , solution is described here:
&lt;/p&gt;

&lt;p&gt;
	http://code.google.com/p/serialchart/issues/detail?id=1&amp;can=1
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	Clark: the QT serial library has sometimes problems with ports higher then 10 (only on some computers), You can change it to COM4, or something similar , solution is described here:
</p>
<p>
	<a href="http://code.google.com/p/serialchart/issues/detail?id=1&#038;can=1" rel="nofollow">http://code.google.com/p/serialchart/issues/detail?id=1&#038;can=1</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by clark</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6404</link>
		<dc:creator>clark</dc:creator>
		<pubDate>Sun, 12 May 2013 05:12:24 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6404</guid>
		<description><![CDATA[
	Hi every one,



	Serial chart is not working ing my PC, is this compatible with Windows Starter?



	I tried to use the ZIPPED version, but when i hit the run button it gives me an error message



	&quot;Could not open port COM26&quot;



	but I am 100% sure that my Arduino is Connected at com26 and I already configure the serial chart.



	I also tried to close all the applications running on my PC except Serial chart. But still got the same error.&#160;



	Can someone Help me..&#160;
]]></description>
		<content:encoded><![CDATA[<p>	Hi every one,</p>
<p>	Serial chart is not working ing my PC, is this compatible with Windows Starter?</p>
<p>	I tried to use the ZIPPED version, but when i hit the run button it gives me an error message</p>
<p>	&quot;Could not open port COM26&quot;</p>
<p>	but I am 100% sure that my Arduino is Connected at com26 and I already configure the serial chart.</p>
<p>	I also tried to close all the applications running on my PC except Serial chart. But still got the same error.&nbsp;</p>
<p>	Can someone Help me..&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by Ben-Hur</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6402</link>
		<dc:creator>Ben-Hur</dc:creator>
		<pubDate>Sun, 05 May 2013 03:42:16 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6402</guid>
		<description><![CDATA[
	Hello Starlino,



	Congratulations guide on IMU and application SerialChart, his explanations are simple and really work!



	I&#039;m doing the same job, but with other models of sensors and my question is regarding the complementary filter:



	1) In the complementary filter (in the arduino code) is performed a weighted



	&quot;RwEst [w] = (RwAcc [w] + config.wGyro RwGyro * [w]) / (1 + config.wGyro);&quot;



	that worked perfectly, but I have seen other articles that I talk about complementary filters and saw there another equation of the type:



	&quot;angle = (0.98) * (angle + Rwgyro * dt) + (0.02) * (Rwacc);&quot; or
	&quot;angle = a * (angle + Rwgyro * dt) + (1-a) * RwAcc&quot;



	where a = tau / (t + tau)



	you can see that the two forms is given a value greater than one sensor to another. Only I could not see where the variable &quot;a&quot; in your solution, and referred to this time constant than the other articles speak.



	Thanks for your time!
]]></description>
		<content:encoded><![CDATA[<p>	Hello Starlino,</p>
<p>	Congratulations guide on IMU and application SerialChart, his explanations are simple and really work!</p>
<p>	I&#039;m doing the same job, but with other models of sensors and my question is regarding the complementary filter:</p>
<p>	1) In the complementary filter (in the arduino code) is performed a weighted</p>
<p>	&quot;RwEst [w] = (RwAcc [w] + config.wGyro RwGyro * [w]) / (1 + config.wGyro);&quot;</p>
<p>	that worked perfectly, but I have seen other articles that I talk about complementary filters and saw there another equation of the type:</p>
<p>	&quot;angle = (0.98) * (angle + Rwgyro * dt) + (0.02) * (Rwacc);&quot; or<br />
	&quot;angle = a * (angle + Rwgyro * dt) + (1-a) * RwAcc&quot;</p>
<p>	where a = tau / (t + tau)</p>
<p>	you can see that the two forms is given a value greater than one sensor to another. Only I could not see where the variable &quot;a&quot; in your solution, and referred to this time constant than the other articles speak.</p>
<p>	Thanks for your time!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by Tim</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6395</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Tue, 30 Apr 2013 15:01:12 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6395</guid>
		<description><![CDATA[
	Oh&#160;yes&#160;afcourse!&#160;All the lines are showing up now.&#160;Thanks a lot!
]]></description>
		<content:encoded><![CDATA[<p>	Oh&nbsp;yes&nbsp;afcourse!&nbsp;All the lines are showing up now.&nbsp;Thanks a lot!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by starlino</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6394</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Tue, 30 Apr 2013 14:15:39 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6394</guid>
		<description><![CDATA[&lt;p&gt;
	Tim your first field is called [interval] and it&#039;s color is transparent, you should remove that section
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	Tim your first field is called [interval] and it&#8217;s color is transparent, you should remove that section</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by Tim</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6393</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Tue, 30 Apr 2013 14:01:01 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6393</guid>
		<description><![CDATA[
	This is what I&#039;m getting at the moment, &#160;4 numbers in the output,&#160;but only 3 lines visible...
	&lt;a href=&quot;http://www.timdemeyer.be/files/serialchart_output.png&quot; rel=&quot;nofollow&quot;&gt;http://www.timdemeyer.be/files/serialchart_output.png&lt;/a&gt;



	And this is my current serial chart configuration file:
	&lt;a href=&quot;http://www.timdemeyer.be/files/MPU-6050-kalman.scc&quot; rel=&quot;nofollow&quot;&gt;http://www.timdemeyer.be/files/MPU-6050-kalman.scc&lt;/a&gt;



	&#160;
]]></description>
		<content:encoded><![CDATA[<p>	This is what I&#039;m getting at the moment, &nbsp;4 numbers in the output,&nbsp;but only 3 lines visible&#8230;<br />
	<a href="http://www.timdemeyer.be/files/serialchart_output.png" rel="nofollow">http://www.timdemeyer.be/files/serialchart_output.png</a></p>
<p>	And this is my current serial chart configuration file:<br />
	<a href="http://www.timdemeyer.be/files/MPU-6050-kalman.scc" rel="nofollow">http://www.timdemeyer.be/files/MPU-6050-kalman.scc</a></p>
<p>	&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by starlino</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6392</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Mon, 29 Apr 2013 16:29:02 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6392</guid>
		<description><![CDATA[&lt;p&gt;
	Tim, what is the serial chart configuration file, and can you send sample output from your device ?
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	Tim, what is the serial chart configuration file, and can you send sample output from your device ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Arduino code for IMU Guide algorithm. Using a 5DOF IMU (accelerometer and gyroscope combo) by Tim</title>
		<link>http://www.starlino.com/imu_kalman_arduino.html#comment-6391</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Mon, 29 Apr 2013 16:20:21 +0000</pubDate>
		<guid isPermaLink="false">http://imu_kalman_arduino#comment-6391</guid>
		<description><![CDATA[
	Hi Starlino, very cool projects!&#160;I&#039;m doing something very simular to this, but I have a question about the SerialChart application. I&#039;m trying to visualise my 3 gyro axises, but I can only see 2 of them in serialchart...&#160;This is the code I&#039;m using&#160;for printing:


&lt;blockquote&gt;
	
		Serial.print(a); Serial.print(&quot;,&quot;);
		Serial.print(b); Serial.print(&quot;,&quot;);
		Serial.println(c);
	
&lt;/blockquote&gt;


	&#160;



	I also tried with other data, but same results... Am I doing something wrong?
	Thanks in advance!
]]></description>
		<content:encoded><![CDATA[<p>	Hi Starlino, very cool projects!&nbsp;I&#039;m doing something very simular to this, but I have a question about the SerialChart application. I&#039;m trying to visualise my 3 gyro axises, but I can only see 2 of them in serialchart&#8230;&nbsp;This is the code I&#039;m using&nbsp;for printing:</p>
<blockquote>
<p>		Serial.print(a); Serial.print(&quot;,&quot;);<br />
		Serial.print(b); Serial.print(&quot;,&quot;);<br />
		Serial.println(c);</p>
</blockquote>
<p>	&nbsp;</p>
<p>	I also tried with other data, but same results&#8230; Am I doing something wrong?<br />
	Thanks in advance!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by klayton</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6386</link>
		<dc:creator>klayton</dc:creator>
		<pubDate>Tue, 23 Apr 2013 17:07:36 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6386</guid>
		<description><![CDATA[
	Hi again. Man this is the third time I posted something today, I&#039;m a real klutz for not posting them all the same time, sorry. It turns out using a gyro+acc instead of just the accelerometer allows for tilt compensation of the heading up to 360 degrees. Now that&#039;s neat.
]]></description>
		<content:encoded><![CDATA[<p>	Hi again. Man this is the third time I posted something today, I&#039;m a real klutz for not posting them all the same time, sorry. It turns out using a gyro+acc instead of just the accelerometer allows for tilt compensation of the heading up to 360 degrees. Now that&#039;s neat.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by klayton</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6385</link>
		<dc:creator>klayton</dc:creator>
		<pubDate>Tue, 23 Apr 2013 15:59:36 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6385</guid>
		<description><![CDATA[
	I actually just got it. The link I found is this:&#160;&lt;a href=&quot;https://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial&quot; rel=&quot;nofollow&quot;&gt;https://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial&lt;/a&gt;&#160;If i&#039;m not mistaken, the tilt&#160;corrected bearing that this document is describing&#160;is already the yaw, is that right? If so, instead of using accelerometer data as described in the linked webpage, we simply use the roll and pitch output from&#160;our simplified kalman filter. I don&#039;t know if what I&#039;m saying is accurate so please let me know. What&#039;s funny though is that they are specifically pointing out that this&#160;method, which I&#039;m sure is correct, will only work with a maximum tilt (either roll or pitch) of 40 degrees, I&#039;d love to have something better.
]]></description>
		<content:encoded><![CDATA[<p>	I actually just got it. The link I found is this:&nbsp;<a href="https://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial" rel="nofollow">https://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial</a>&nbsp;If i&#039;m not mistaken, the tilt&nbsp;corrected bearing that this document is describing&nbsp;is already the yaw, is that right? If so, instead of using accelerometer data as described in the linked webpage, we simply use the roll and pitch output from&nbsp;our simplified kalman filter. I don&#039;t know if what I&#039;m saying is accurate so please let me know. What&#039;s funny though is that they are specifically pointing out that this&nbsp;method, which I&#039;m sure is correct, will only work with a maximum tilt (either roll or pitch) of 40 degrees, I&#039;d love to have something better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by klayton</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6384</link>
		<dc:creator>klayton</dc:creator>
		<pubDate>Tue, 23 Apr 2013 15:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6384</guid>
		<description><![CDATA[
	Hi Starlino, this is one of the easiest ones to follow when it comes to implementing something like an AHRS. I&#039;ve&#160;followed everything to the dot and I am now successfully able to read pitch and roll angles from the accelerometer-corrected gyro data. Everybody has been mentioning that you simply can&#039;t get anything useful about the yaw out of a gyro alone, hence, the need for a magnetometer. Thankfully I have one on hand, the problem is I&#039;ve been struggling with how to have the magnetometer reading correct the gyro data to give me a useful estimate of my yaw. I&#039;ve been looking at a number of code&#160;but most of them make use of DCM, and I really want to take things one at a time and just&#160;get the yaw by&#160;building from&#160;what you have explained.
]]></description>
		<content:encoded><![CDATA[<p>	Hi Starlino, this is one of the easiest ones to follow when it comes to implementing something like an AHRS. I&#039;ve&nbsp;followed everything to the dot and I am now successfully able to read pitch and roll angles from the accelerometer-corrected gyro data. Everybody has been mentioning that you simply can&#039;t get anything useful about the yaw out of a gyro alone, hence, the need for a magnetometer. Thankfully I have one on hand, the problem is I&#039;ve been struggling with how to have the magnetometer reading correct the gyro data to give me a useful estimate of my yaw. I&#039;ve been looking at a number of code&nbsp;but most of them make use of DCM, and I really want to take things one at a time and just&nbsp;get the yaw by&nbsp;building from&nbsp;what you have explained.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on DCM Tutorial &#8211; An Introduction to Orientation Kinematics by David</title>
		<link>http://www.starlino.com/dcm_tutorial.html#comment-6376</link>
		<dc:creator>David</dc:creator>
		<pubDate>Sun, 21 Apr 2013 14:44:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.starlino.com/?p=226#comment-6376</guid>
		<description><![CDATA[
	Dear Starlino, thank you for this good article!



	I have a question, please help me!



	I want to extract the Euler angels relative to earth frame from gyro&#039;s outputs in a simulation study by using eqs: 17-21. Hence, in my code it is assumed that the gyro rotate about its x axis with angular velocity of 1 deg/sec and dt=20msec.



	I except that after 1 second; pitch, roll and yaw values to be 0, 1 and 1 degree respectively. But I never receive to this result. I am very confused. Are my exception is correct? Furthermore, these angles have large variation. What is my mistake point?



	Best regards
]]></description>
		<content:encoded><![CDATA[<p>	Dear Starlino, thank you for this good article!</p>
<p>	I have a question, please help me!</p>
<p>	I want to extract the Euler angels relative to earth frame from gyro&#039;s outputs in a simulation study by using eqs: 17-21. Hence, in my code it is assumed that the gyro rotate about its x axis with angular velocity of 1 deg/sec and dt=20msec.</p>
<p>	I except that after 1 second; pitch, roll and yaw values to be 0, 1 and 1 degree respectively. But I never receive to this result. I am very confused. Are my exception is correct? Furthermore, these angles have large variation. What is my mistake point?</p>
<p>	Best regards</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by Momen</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6374</link>
		<dc:creator>Momen</dc:creator>
		<pubDate>Sun, 21 Apr 2013 00:35:37 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6374</guid>
		<description><![CDATA[
	Thank you for your reply.I went through the datasheet but sensitivity is in lsb/g or mg/lsb.I do no find accelerometer (ADXL345) any where sensitivity in mv/g for&#160;+/-2g,+/-4g,+/-8g,+/-16g,Can you please tell me hot to get sensitivity in mv/g.&#160;
]]></description>
		<content:encoded><![CDATA[<p>	Thank you for your reply.I went through the datasheet but sensitivity is in lsb/g or mg/lsb.I do no find accelerometer (ADXL345) any where sensitivity in mv/g for&nbsp;+/-2g,+/-4g,+/-8g,+/-16g,Can you please tell me hot to get sensitivity in mv/g.&nbsp;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on DCM Tutorial &#8211; An Introduction to Orientation Kinematics by starlino</title>
		<link>http://www.starlino.com/dcm_tutorial.html#comment-6373</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Fri, 19 Apr 2013 16:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.starlino.com/?p=226#comment-6373</guid>
		<description><![CDATA[&lt;p&gt;
	Matt ,  the coordinate system was chosen to have same origin  as w and r on purpose . Also  w is perpendicular to r and r&#039;  by definition (it&#039;s perpendicular to the plain of rotation formed by r and r&#039;), hence  w.r  = &#124;w&#124;&#124;r&#124; cos(w,r)  =  0 .  If you need to work with a different coordinate system you will need to perform a liniar translation and then perform the rotation and then translate the result back.
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	Matt ,  the coordinate system was chosen to have same origin  as w and r on purpose . Also  w is perpendicular to r and r&#8217;  by definition (it&#8217;s perpendicular to the plain of rotation formed by r and r&#8217;), hence  w.r  = |w||r| cos(w,r)  =  0 .  If you need to work with a different coordinate system you will need to perform a liniar translation and then perform the rotation and then translate the result back.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Guide To using  IMU (Accelerometer and Gyroscope Devices)  in Embedded Applications. by starlino</title>
		<link>http://www.starlino.com/imu_guide.html#comment-6372</link>
		<dc:creator>starlino</dc:creator>
		<pubDate>Fri, 19 Apr 2013 15:59:46 +0000</pubDate>
		<guid isPermaLink="false">http://imu_guide#comment-6372</guid>
		<description><![CDATA[&lt;p&gt;
	Momen - the sensitivity can be obtained from the datasheet of the device.
&lt;/p&gt;]]></description>
		<content:encoded><![CDATA[<p>
	Momen &#8211; the sensitivity can be obtained from the datasheet of the device.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
