<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.olliw.eu/storm32bgc-v1-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bruce356</id>
	<title>STorM32-BGC Wiki V1 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.olliw.eu/storm32bgc-v1-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bruce356"/>
	<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/Special:Contributions/Bruce356"/>
	<updated>2026-04-28T21:33:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1998</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1998"/>
		<updated>2015-01-13T02:31:15Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass contains only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny amount of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding area of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance from the conducting area the smaller the capacitance. This immediately gives us the necessary rules to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in close proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly and therefore may bring it into an unexpected state causing I2C errors to occur. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these interferences are from the motor wires. The motor wires carry high voltage signals, high in comparison to the circa 3 volts of the I2C signals, the motor wires are also pulsed with large slew rates. When these signals come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on some additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with the understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious.&lt;br /&gt;
&lt;br /&gt;
Some can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances of the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not therefore depends on the particular situation, whether the &amp;quot;induced disturbances&amp;quot; or &amp;quot;capacitive load&amp;quot; are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and thereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some degree, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader will have noticed that increasing the current in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps quite considerably, and it is also a good idea to use small pullup resistors. One may wonder why not use really small pullup resistors instead of the typical 1k to 10k range. Well, the answer is that the current standard I2C drivers are not designed to handle currents larger than a few mA (and this in turn is also related to the way in which I2C works). Therefore if very small pullup resistors are used this may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1997</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1997"/>
		<updated>2015-01-13T02:13:44Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass contains only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny amount of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding area of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance from the conducting area the smaller the capacitance. This immediately gives us the necessary rules to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these interferences are the motor wires. The motor wires carry high voltage signals, high in comparison to the circa 3 volts of the I2C signals, which moreover are pulsed with large slew rates. When these signals come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on some additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with the understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious.&lt;br /&gt;
&lt;br /&gt;
Some can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances of the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not therefore depends on the particular situation, whether the &amp;quot;induced disturbances&amp;quot; or &amp;quot;capacitive load&amp;quot; are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and thereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some degree, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader will have noticed that increasing the current in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps quite a lot, and it is a good idea to use small pullup resistors. One may wonder why not use really small pullup resistors instead of the typical resistors in the 1 k to 10 k range. Well, the answer is that the current standard I2C drivers are not designed to handle currents larger than a few mA (and this in turn is also related to the way in which I2C works). Therefore if very small pullup resistors are used this may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1996</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1996"/>
		<updated>2015-01-13T02:08:48Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass contains only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny amount of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding area of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these interferences are the motor wires. The motor wires carry high voltage signals, high in comparison to the circa 3 volts of the I2C signals, which moreover are pulsed with large slew rates. When these signals come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on some additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with the understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious.&lt;br /&gt;
&lt;br /&gt;
Some can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances of the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not therefore depends on the particular situation, whether the &amp;quot;induced disturbances&amp;quot; or &amp;quot;capacitive load&amp;quot; are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and thereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some degree, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader will have noticed that increasing the current in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps quite a lot, and it is a good idea to use small pullup resistors. One may wonder why not use really small pullup resistors instead of the typical resistors in the 1 k to 10 k range. Well, the answer is that the current standard I2C drivers are not designed to handle currents larger than a few mA (and this in turn is also related to the way in which I2C works). Therefore if very small pullup resistors are used this may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1995</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1995"/>
		<updated>2015-01-13T02:03:43Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass contains only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny amount of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these interferences are the motor wires. The motor wires carry high voltage signals, high in comparison to the circa 3 volts of the I2C signals, which moreover are pulsed with large slew rates. When these signals come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on some additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with the understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious.&lt;br /&gt;
&lt;br /&gt;
Some can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances of the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not therefore depends on the particular situation, whether the &amp;quot;induced disturbances&amp;quot; or &amp;quot;capacitive load&amp;quot; are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and thereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some degree, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader will have noticed that increasing the current in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps quite a lot, and it is a good idea to use small pullup resistors. One may wonder why not use really small pullup resistors instead of the typical resistors in the 1 k to 10 k range. Well, the answer is that the current standard I2C drivers are not designed to handle currents larger than a few mA (and this in turn is also related to the way in which I2C works). Therefore if very small pullup resistors are used this may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1994</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1994"/>
		<updated>2015-01-13T01:59:25Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these interferences are the motor wires. The motor wires carry high voltage signals, high in comparison to the circa 3 volts of the I2C signals, which moreover are pulsed with large slew rates. When these signals come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on some additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with the understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious.&lt;br /&gt;
&lt;br /&gt;
Some can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances of the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not therefore depends on the particular situation, whether the &amp;quot;induced disturbances&amp;quot; or &amp;quot;capacitive load&amp;quot; are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and thereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some degree, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader will have noticed that increasing the current in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps quite a lot, and it is a good idea to use small pullup resistors. One may wonder why not use really small pullup resistors instead of the typical resistors in the 1 k to 10 k range. Well, the answer is that the current standard I2C drivers are not designed to handle currents larger than a few mA (and this in turn is also related to the way in which I2C works). Therefore if very small pullup resistors are used this may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1993</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1993"/>
		<updated>2015-01-13T01:38:30Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximum length is not achieved, since, as mentioned in the introduction, other I2C error sources may be present reducing the practical length. The capacitive load of the IMU cable depends also on the type of cable. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with this factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the near surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
This is indeed a major factor, and - fortunately - it is to a high degree under our control. The possible contributors falling into this category are very diverse; they range from things like spacing between the wires themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and the manner in which they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was mentioned, it can arise from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; that is conducting in the surrounding area. Fortunately, the rules which determine the value for capacitance are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the further the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid the problem.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding EMI, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disrupt the I2C signals. This again may prevent the electronics from detecting the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be difficult for the electronics to recover from these errors.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1992</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1992"/>
		<updated>2015-01-13T01:15:36Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist all wires where possible including the IMU cable(reduces Electromagnetic interference); for the IMU this can take several forms, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with a self adhesive conductive cloth, &amp;quot;EMI shielding&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, putting the rings on the I2C wires and/or the motor wires, they can be fitted at either ends of the wires.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics from detecting the signal correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables themselves, and the longer the cables are the higher the capacitive load becomes.&lt;br /&gt;
&lt;br /&gt;
Therefore, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximum length up to which the I2C communication will work. In practice this maximal length is not achieved, since, as discussed in the introduction, other I2C error source may be present, reducing the practical length. The capacitive load by the cables depends also on the type of cables. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with that factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
That&#039;s indeed a major factor, and - fortunately - it is under our control to a high degree. The possible contributors falling into this category are very diverse; they range from things such as spacing between the wires among themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and how they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was said, it arises from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; conducting in the surrounding. Fortunately, the rules which determine the value of capacitors are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the larger the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid them.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disturb the I2C signals. This again may prevent the electronics to detect the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be hard for the electronics to recover properly from them.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1990</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1990"/>
		<updated>2015-01-12T14:33:31Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One therefore can&#039;t give decisive threshold values, for example, the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if  motor wires are too close to the IMU cabling then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more likely it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist wires of the IMU cable; this can take several variations, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with (self adhesive) conductive cloth, EMI shielding&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* remove multiple connectors&lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, put the rings on the I2C wires and/or the motor wires, or to either ends of the wires etc.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics to detect it correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables itself, and the longer the cables are the higher is the capacitive load.&lt;br /&gt;
&lt;br /&gt;
Thus, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximal length up to which the I2C communication works. In practice this maximal length is not achieved, since, as discussed in the introduction, other I2C error source may be present, reducing the practical length. The capacitive load by the cables depends also on the type of cables. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with that factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
That&#039;s indeed a major factor, and - fortunately - it is under our control to a high degree. The possible contributors falling into this category are very diverse; they range from things such as spacing between the wires among themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and how they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was said, it arises from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; conducting in the surrounding. Fortunately, the rules which determine the value of capacitors are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the larger the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid them.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disturb the I2C signals. This again may prevent the electronics to detect the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be hard for the electronics to recover properly from them.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1989</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1989"/>
		<updated>2015-01-12T14:26:51Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens for two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One hence can&#039;t give decisive threshold values, for example, that the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if for example motor wires are nearby then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with e.g. only a tiny bit of Bordeaux, one can add a lot of Chianti or something else before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more probable it is that it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist wires of the IMU cable; this can take several variations, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with (self adhesive) conductive cloth, EMI shielding&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* remove multiple connectors&lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, put the rings on the I2C wires and/or the motor wires, or to either ends of the wires etc.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics to detect it correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables itself, and the longer the cables are the higher is the capacitive load.&lt;br /&gt;
&lt;br /&gt;
Thus, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximal length up to which the I2C communication works. In practice this maximal length is not achieved, since, as discussed in the introduction, other I2C error source may be present, reducing the practical length. The capacitive load by the cables depends also on the type of cables. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with that factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
That&#039;s indeed a major factor, and - fortunately - it is under our control to a high degree. The possible contributors falling into this category are very diverse; they range from things such as spacing between the wires among themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and how they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was said, it arises from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; conducting in the surrounding. Fortunately, the rules which determine the value of capacitors are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the larger the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid them.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disturb the I2C signals. This again may prevent the electronics to detect the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be hard for the electronics to recover properly from them.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1988</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1988"/>
		<updated>2015-01-12T14:25:25Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens due to two main reasons:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One hence can&#039;t give decisive threshold values, for example, that the length of the I2C wires should not be more than 40 cm long. Without any further error sources one might be able to use much longer wires, but if for example motor wires are nearby then shorter wires might be required. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter whether it was filled with Bordeaux, Chianti, or any other mixture. When the glass is filled with e.g. only a tiny bit of Bordeaux, one can add a lot of Chianti or something else before it overflows, but when the glass is nearly full of Bordeaux, only a tiny drop of Chianti will fit before it reaches the overflows point. So, its not possible to tell how much Chianti is acceptable, since this depends on how much Bordeaux is already in the glass, the only thing that can be determined is that the more Chianti you poor in the glass the more probable it is that it will overflow.&lt;br /&gt;
&lt;br /&gt;
== Ways to Reduce the I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before looking at the I2C errors, here is a brief summary to help reduce problems with the error-prone I2C connection to an IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist wires of the IMU cable; this can take several variations, such as twisting all four together, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC etc.&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with (self adhesive) conductive cloth, EMI shielding&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* remove multiple connectors&lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; these can be fitted in various ways, such as, put the rings on the I2C wires and/or the motor wires, or to either ends of the wires etc.&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on the IMU module e.g. to 1k&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics to detect it correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables itself, and the longer the cables are the higher is the capacitive load.&lt;br /&gt;
&lt;br /&gt;
Thus, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximal length up to which the I2C communication works. In practice this maximal length is not achieved, since, as discussed in the introduction, other I2C error source may be present, reducing the practical length. The capacitive load by the cables depends also on the type of cables. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with that factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
That&#039;s indeed a major factor, and - fortunately - it is under our control to a high degree. The possible contributors falling into this category are very diverse; they range from things such as spacing between the wires among themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and how they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was said, it arises from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; conducting in the surrounding. Fortunately, the rules which determine the value of capacitors are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the larger the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid them.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disturb the I2C signals. This again may prevent the electronics to detect the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be hard for the electronics to recover properly from them.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1987</id>
		<title>I2C Error Compendium</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=I2C_Error_Compendium&amp;diff=1987"/>
		<updated>2015-01-12T13:38:17Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:88%&amp;quot;&amp;gt;&#039;&#039;by OlliW&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I2C errors are probably the most annoying side effect of the technology we are using in our brushless gimbals.&lt;br /&gt;
&lt;br /&gt;
I2C errors occur when the signals on the I2C clock and data lines (SCL,SDA) are disturbed beyond certain limits, and this happens due to two main reason:&lt;br /&gt;
* capacitive load on the I2C clock and/or data lines&lt;br /&gt;
* induced signal disturbances due to capacitive coupling to outside fields&lt;br /&gt;
&lt;br /&gt;
Importantly, all error sources add up. One hence can&#039;t give decisive threshold values, such as, for instance, that the length of the I2C wires should not be longer than 40 cm. Without any further error sources one might be able to use even much longer wires, while if motor wires are nearby only shorter wires might be acceptable. &lt;br /&gt;
&lt;br /&gt;
It&#039;s like a glass of wine: When it&#039;s full, it&#039;s full. It doesn&#039;t matter if it had been filled with Bordeaux, Chianti, or any mixture. When the glass is filled with only a tiny bit of Bordeaux, one can add a lot of Chianti before it overflows, but when the glass is nearly filled with Bordeaux, only a tiny drop of Chianti is acceptable. So, you&#039;re not going to get an answer here to how much Chianti is acceptable, since this depends on how much Bordeaux is there, but &amp;quot;only&amp;quot; that the more Chianti you poor in the more probable it is that the glass spills over.&lt;br /&gt;
&lt;br /&gt;
== Methods to Reduce I2C Error Rate ==&lt;br /&gt;
&lt;br /&gt;
Before we look at the I2C errors, the methods shall be briefly summarized which can help to reduce the error-proneness of the I2C connection to the IMU module:&lt;br /&gt;
&lt;br /&gt;
* reduce length of cable&lt;br /&gt;
&lt;br /&gt;
* increase spacing between I2C cables and motor wires&lt;br /&gt;
&lt;br /&gt;
* twist wires of the cable; this comes in many variants such as twisting all four, just twisting SCL and SDL, twisting SCL with GND and SDA with VCC, and so on&lt;br /&gt;
&lt;br /&gt;
* shield the wires; using e.g. a coax cable or wrapping the wires with (self adhesive) conductive cloth EMI shielding&lt;br /&gt;
&lt;br /&gt;
* lower the (motor) voltage &lt;br /&gt;
&lt;br /&gt;
* remove connectors&lt;br /&gt;
&lt;br /&gt;
* add ferrite rings; this comes in many variants such as to put it to the I2C wires and/or the motor wires, or to the left and/or right ends of the wires, and so on&lt;br /&gt;
&lt;br /&gt;
* reduce the I2C pullup resistors on e.g. the IMU module&lt;br /&gt;
&lt;br /&gt;
== Capacitive Load ==&lt;br /&gt;
&lt;br /&gt;
Capacitive load decreases the slew rate of the signal, and eventually prevents the electronics to detect it correctly, and an I2C error occurs.&lt;br /&gt;
&lt;br /&gt;
Capacitive load arises from the cables itself, and the longer the cables are the higher is the capacitive load.&lt;br /&gt;
&lt;br /&gt;
Thus, for any I2C system there is an &amp;quot;intrinsic&amp;quot; maximal length up to which the I2C communication works. In practice this maximal length is not achieved, since, as discussed in the introduction, other I2C error source may be present, reducing the practical length. The capacitive load by the cables depends also on the type of cables. Thin wires for instance have a smaller capacity than thicker wires. In practice, however, there is usually little room to play with that factor. &lt;br /&gt;
&lt;br /&gt;
Capacitive load also arises from anything conducting in the surrounding of the I2C clock and/or data wires.&lt;br /&gt;
&lt;br /&gt;
That&#039;s indeed a major factor, and - fortunately - it is under our control to a high degree. The possible contributors falling into this category are very diverse; they range from things such as spacing between the wires among themselves or to GND or Vcc, shielding such as in coax wires, twisted or non-twisted wires and how they are twisted, conducting areas like metal bars or carbon plates to which the IMU module is mounted or the cables are fixed to, connectors, and so on. It is as it was said, it arises from &#039;&#039;&#039;&#039;&#039;anything&#039;&#039;&#039;&#039;&#039; conducting in the surrounding. Fortunately, the rules which determine the value of capacitors are well known. In a nutshell, the larger the conducting area the larger the capacitance, and the larger the distance to the conducting area the smaller the capacitance. This immediately gives us the rules at hand to control, and possibly avoid them.&lt;br /&gt;
&lt;br /&gt;
The acceptable capacitive load, from both the cables and the surrounding, depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Induced Signal Disturbances ==&lt;br /&gt;
&lt;br /&gt;
Wires in the proximity to the I2C clock and data lines may, due to capacitive coupling, induce fault voltages in I2C lines and thus disturb the I2C signals. This again may prevent the electronics to detect the I2C signals correctly or even bring it into an unexpected state, and an I2C error occurs. The I2C errors due to induced disturbances are often fatal in the sense that it can be hard for the electronics to recover properly from them.&lt;br /&gt;
&lt;br /&gt;
For our gimbals, the primary origin of these disturbances is the motor wires. The motor wires carry high voltage signals, high in comparison to the ca. 3 V of the I2C signals, which moreover are pulsed with large slew rates. When they come close to the I2C lines, the motor wires can easily disturb the signals on the I2C lines.&lt;br /&gt;
&lt;br /&gt;
The strength of the induced disturbances depends on additional factors, such as the current capabilities of the I2C drivers and the pullup resistors.&lt;br /&gt;
&lt;br /&gt;
== Practical Implications ==&lt;br /&gt;
&lt;br /&gt;
Equipped with that understanding of the origin of the I2C errors, most of the counter measures listed in the above become obvious now.&lt;br /&gt;
&lt;br /&gt;
Some of them can have both positive and negative effects. For instance, twisting the I2C wires or shielding them can be very successful in protecting the I2C signals from the induced disturbances by the motor wires, but on the other hand they also increase the capacitive load. Whether these counter measures work or not hence depends on the particular situation, if induced disturbances or capacitive load are the dominating I2C error sources.&lt;br /&gt;
&lt;br /&gt;
Ferrite rings are very commonly used to suppress I2C errors. When placed on the motor wires they reduce the slew rate of the motor signals and whereby their ability to induce fault voltages in the I2C lines. When placed on the I2C lines they can compensate, to some extend, the capacitive load and thereby improve the I2C signal quality.&lt;br /&gt;
&lt;br /&gt;
The alert reader has noticed that increasing the currents in the I2C lines or decreasing the pullup resistors, respectively, helps to diminish both the effects of the capacitive load and induced voltage disturbances. This in fact helps very well, and it is a good idea to use small pullup resistors. One may wonder why not to use really small pullup resistors instead of the typical resistors in the 1 k - 10 k range. Well, the answer is that the standard I2C current drivers are not designed to handle currents larger than a few mA (and this in turn is of course related to the way I2C works). So, too small pullup resistors may damage your electronics. Circuitry exists to create low-impedance I2C communications, but it is not used in our low-budget applications.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1663</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1663"/>
		<updated>2014-12-04T08:42:43Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: /* After motors have been enabled for the first time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly. &#039;&#039;Descriptions refer to firmware v0.56.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu1 Orientation, Imu2 Orientation, and Motor Pole parameters correctly, and to set the Motor Direction parameters to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Direction parameters.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the StorM32 on-board IMU is used as a 2nd IMU. The StorM32 board must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal (check the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread]). Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the 3-axis dual-IMU setups.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers within the IMU modules need to be calibrated for optimal performance (the gyros would also, but that&#039;s currently beyond reach). Several calibration techniques are available, and two are implemented in the STorM32 project, these are the &amp;quot;1-point&amp;quot; and &amp;quot;6-point&amp;quot; calibrations. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not absolutely clear as to which method is the best. This is because I don&#039;t have the resources for an extensive research project, this is what would possibly be needed for a determination. Hence, the situation currently is a bit experimental and might appear fuzzy to many users, but - on the positive side - knowledge and experience is increasing and therefore calibration procedures may improve with time. &lt;br /&gt;
&lt;br /&gt;
The reasons for a calibrating are different for the camera IMU versus the 2nd IMU. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; Calibration mainly affects &amp;quot;horizontal drift&amp;quot;, i.e. the accuracy with which the horizon is held in quick yaw turns and other high-g manoeuvers. It also determines the accuracy of how well the camera is leveled, but this can in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g manoeuvers. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is in itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is even more important with higher poled motors e.g.  poles greater than the basic 14 poles. &lt;br /&gt;
&lt;br /&gt;
It has been found that the calibration issue depends strongly on the orientation of the IMU module. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; In general, the z axis is more often wrong than the x and y axes.&lt;br /&gt;
&lt;br /&gt;
Of course, the care with which a calibration is performed very much affects the final quality results of the calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039; A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The resulting quality factor under the 6-point calibration option can give a good indication as to the results (a value of 80 very good, 150 average, 250 not so good). &lt;br /&gt;
&lt;br /&gt;
From the above information these are rules of thumb to follow: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with the way your gimbal performs, you don&#039;t need to spend time on a (better) calibration.&lt;br /&gt;
* IMU orientations with the Z-axis pointing up or down seems preferable, as it lessens the need for calibration. But don&#039;t be fooled here, equally good results can be obtained for other orientation. Some of the best videos out there were in fact recorded with the imu&#039;s Z-axis in a horizontal orientation. It just means that with the Z-axis pointing up or down it&#039;s more likely that one can get away with a &amp;quot;lesser&amp;quot; calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient. &lt;br /&gt;
* The calibration of the 2nd IMU becomes more important as the motor pole count increases (e.g. 14 pole versus 22 pole). &lt;br /&gt;
&lt;br /&gt;
⦁ Even though, for the reasons mentioned previously, a clear cut calibration recipe cannot currently be offered, although there are some recommendations in place: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and the 2nd IMU. &lt;br /&gt;
* If possible choose imu orientations with the Z-axis pointing up or down, but that&#039;s not a must as explained before. &lt;br /&gt;
* Don&#039;t do a 6-point calibration unless you plan to do it very accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. In contrast Higher-pole motors require a careful 2nd IMU calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar made a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, some important advice: &lt;br /&gt;
&lt;br /&gt;
Save your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally save it from within the Calibration dialog window, as this stores the most detailed information. Consider also, posting your calibration files in the rcgroups thread, so that the firmware author and others can enhance their knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this information is incorrect, the controller will misbehave. Unfortunately, an incorrect setup will not always immediately reveal itself, but will lead to misbehaviour at a later stage, e.g. when a new function is activated, and therefore you might not associate it with the earlier faulty setup. So, please accept the following statement: &lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach in producing all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available and if followed, guarantees correct settings. So, the above could be rephrased as &amp;quot;Don&#039;t try to be smart, just shut up and follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here. &lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are those mainly contained under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI:&lt;br /&gt;
* Imu-1 Orientation&lt;br /&gt;
* Imu-2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of these should be adjusted &amp;quot;before&amp;quot; the motors are activated, some can only be adjusted with the motors enabled. &lt;br /&gt;
&lt;br /&gt;
=== Before the motors are enabled for the first time ===&lt;br /&gt;
The Imu-1 and Imu-2 orientations and number of motor poles should be adjusted before the motors are activated, and the motor direction settings, initially set to Auto in order to find correct rotation directions. &lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configuration Gimbal Tool&amp;quot; option (accessible under the &amp;quot;Gimbal Configuration&amp;quot; Tab in the GUI), which is started by clicking on the respective button. Just follow the instructions step by step: &lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu-1 and Imu-2 Orientations.&lt;br /&gt;
* It will then ask you to enter the number of poles of your motors. The number of poles for your motors should be available in the motor data sheets. For example, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can be seen on the inner side of the motor bell. So, if in doubt you can quite easily determine the number of poles by simply counting the number of magnets. &lt;br /&gt;
* Finally, as mentioned above, the Motor Direction parameters must be set to &amp;quot;Auto&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== After motors have been enabled for the first time ===&lt;br /&gt;
With the Imu-1 and Imu-2 orientations, and motor poles set correctly, and the motor direction set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and then reach the &amp;quot;Normal&amp;quot; state (green led continuously On). Note: You can see what is happening by initiating and starting the &amp;quot;Data Display&amp;quot;. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Directions and the Startup Motor Pos parameters can be set using the Tools tab: &lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. This opens a dialog box which allows you to align the yaw axis such that the camera points to the forward position. Don&#039;t worry that the  alignment is undone, when closing the dialog box, this is normal as the adjustments just made become effective after the next re-start of the gimbal controller. &lt;br /&gt;
&#039;&#039;&#039;Note!&#039;&#039;&#039; adjustments made in these steps only become Active after a re-start of the StorM32 gimbal controller.&lt;br /&gt;
&lt;br /&gt;
== The Next Steps ==&lt;br /&gt;
The next steps are to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller. :)&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1662</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1662"/>
		<updated>2014-12-04T08:39:52Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: /* After motors have been enabled for the first time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly. &#039;&#039;Descriptions refer to firmware v0.56.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu1 Orientation, Imu2 Orientation, and Motor Pole parameters correctly, and to set the Motor Direction parameters to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Direction parameters.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the StorM32 on-board IMU is used as a 2nd IMU. The StorM32 board must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal (check the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread]). Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the 3-axis dual-IMU setups.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers within the IMU modules need to be calibrated for optimal performance (the gyros would also, but that&#039;s currently beyond reach). Several calibration techniques are available, and two are implemented in the STorM32 project, these are the &amp;quot;1-point&amp;quot; and &amp;quot;6-point&amp;quot; calibrations. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not absolutely clear as to which method is the best. This is because I don&#039;t have the resources for an extensive research project, this is what would possibly be needed for a determination. Hence, the situation currently is a bit experimental and might appear fuzzy to many users, but - on the positive side - knowledge and experience is increasing and therefore calibration procedures may improve with time. &lt;br /&gt;
&lt;br /&gt;
The reasons for a calibrating are different for the camera IMU versus the 2nd IMU. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; Calibration mainly affects &amp;quot;horizontal drift&amp;quot;, i.e. the accuracy with which the horizon is held in quick yaw turns and other high-g manoeuvers. It also determines the accuracy of how well the camera is leveled, but this can in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g manoeuvers. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is in itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is even more important with higher poled motors e.g.  poles greater than the basic 14 poles. &lt;br /&gt;
&lt;br /&gt;
It has been found that the calibration issue depends strongly on the orientation of the IMU module. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; In general, the z axis is more often wrong than the x and y axes.&lt;br /&gt;
&lt;br /&gt;
Of course, the care with which a calibration is performed very much affects the final quality results of the calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039; A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The resulting quality factor under the 6-point calibration option can give a good indication as to the results (a value of 80 very good, 150 average, 250 not so good). &lt;br /&gt;
&lt;br /&gt;
From the above information these are rules of thumb to follow: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with the way your gimbal performs, you don&#039;t need to spend time on a (better) calibration.&lt;br /&gt;
* IMU orientations with the Z-axis pointing up or down seems preferable, as it lessens the need for calibration. But don&#039;t be fooled here, equally good results can be obtained for other orientation. Some of the best videos out there were in fact recorded with the imu&#039;s Z-axis in a horizontal orientation. It just means that with the Z-axis pointing up or down it&#039;s more likely that one can get away with a &amp;quot;lesser&amp;quot; calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient. &lt;br /&gt;
* The calibration of the 2nd IMU becomes more important as the motor pole count increases (e.g. 14 pole versus 22 pole). &lt;br /&gt;
&lt;br /&gt;
⦁ Even though, for the reasons mentioned previously, a clear cut calibration recipe cannot currently be offered, although there are some recommendations in place: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and the 2nd IMU. &lt;br /&gt;
* If possible choose imu orientations with the Z-axis pointing up or down, but that&#039;s not a must as explained before. &lt;br /&gt;
* Don&#039;t do a 6-point calibration unless you plan to do it very accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. In contrast Higher-pole motors require a careful 2nd IMU calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar made a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, some important advice: &lt;br /&gt;
&lt;br /&gt;
Save your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally save it from within the Calibration dialog window, as this stores the most detailed information. Consider also, posting your calibration files in the rcgroups thread, so that the firmware author and others can enhance their knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this information is incorrect, the controller will misbehave. Unfortunately, an incorrect setup will not always immediately reveal itself, but will lead to misbehaviour at a later stage, e.g. when a new function is activated, and therefore you might not associate it with the earlier faulty setup. So, please accept the following statement: &lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach in producing all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available and if followed, guarantees correct settings. So, the above could be rephrased as &amp;quot;Don&#039;t try to be smart, just shut up and follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here. &lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are those mainly contained under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI:&lt;br /&gt;
* Imu-1 Orientation&lt;br /&gt;
* Imu-2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of these should be adjusted &amp;quot;before&amp;quot; the motors are activated, some can only be adjusted with the motors enabled. &lt;br /&gt;
&lt;br /&gt;
=== Before the motors are enabled for the first time ===&lt;br /&gt;
The Imu-1 and Imu-2 orientations and number of motor poles should be adjusted before the motors are activated, and the motor direction settings, initially set to Auto in order to find correct rotation directions. &lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configuration Gimbal Tool&amp;quot; option (accessible under the &amp;quot;Gimbal Configuration&amp;quot; Tab in the GUI), which is started by clicking on the respective button. Just follow the instructions step by step: &lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu-1 and Imu-2 Orientations.&lt;br /&gt;
* It will then ask you to enter the number of poles of your motors. The number of poles for your motors should be available in the motor data sheets. For example, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can be seen on the inner side of the motor bell. So, if in doubt you can quite easily determine the number of poles by simply counting the number of magnets. &lt;br /&gt;
* Finally, as mentioned above, the Motor Direction parameters must be set to &amp;quot;Auto&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== After motors have been enabled for the first time ===&lt;br /&gt;
With the Imu-1 and Imu-2 orientations, and motor poles set correctly, and the motor direction set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and then reach the &amp;quot;Normal&amp;quot; state (green led continuously On). Note: You can see what is happening by initiating and starting the &amp;quot;Data Display&amp;quot;. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Directions and the Startup Motor Pos parameters can be set using the Tools tab: &lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. This opens a dialog box which allows you to align the yaw axis such that the camera points to the forward position. Don&#039;t worry that the  alignment being undone, when closing the dialog box, this is normal as the just made adjustments become effective only after the next startup of the gimbal. &lt;br /&gt;
Note! adjustments made in these steps only become Active after a restart of the StorM32 gimbal controller.&lt;br /&gt;
&lt;br /&gt;
== The Next Steps ==&lt;br /&gt;
The next steps are to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller. :)&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1661</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1661"/>
		<updated>2014-12-04T08:37:35Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: /* The Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly. &#039;&#039;Descriptions refer to firmware v0.56.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu1 Orientation, Imu2 Orientation, and Motor Pole parameters correctly, and to set the Motor Direction parameters to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Direction parameters.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the StorM32 on-board IMU is used as a 2nd IMU. The StorM32 board must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal (check the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread]). Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the 3-axis dual-IMU setups.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers within the IMU modules need to be calibrated for optimal performance (the gyros would also, but that&#039;s currently beyond reach). Several calibration techniques are available, and two are implemented in the STorM32 project, these are the &amp;quot;1-point&amp;quot; and &amp;quot;6-point&amp;quot; calibrations. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not absolutely clear as to which method is the best. This is because I don&#039;t have the resources for an extensive research project, this is what would possibly be needed for a determination. Hence, the situation currently is a bit experimental and might appear fuzzy to many users, but - on the positive side - knowledge and experience is increasing and therefore calibration procedures may improve with time. &lt;br /&gt;
&lt;br /&gt;
The reasons for a calibrating are different for the camera IMU versus the 2nd IMU. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; Calibration mainly affects &amp;quot;horizontal drift&amp;quot;, i.e. the accuracy with which the horizon is held in quick yaw turns and other high-g manoeuvers. It also determines the accuracy of how well the camera is leveled, but this can in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g manoeuvers. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is in itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is even more important with higher poled motors e.g.  poles greater than the basic 14 poles. &lt;br /&gt;
&lt;br /&gt;
It has been found that the calibration issue depends strongly on the orientation of the IMU module. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; In general, the z axis is more often wrong than the x and y axes.&lt;br /&gt;
&lt;br /&gt;
Of course, the care with which a calibration is performed very much affects the final quality results of the calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039; A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The resulting quality factor under the 6-point calibration option can give a good indication as to the results (a value of 80 very good, 150 average, 250 not so good). &lt;br /&gt;
&lt;br /&gt;
From the above information these are rules of thumb to follow: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with the way your gimbal performs, you don&#039;t need to spend time on a (better) calibration.&lt;br /&gt;
* IMU orientations with the Z-axis pointing up or down seems preferable, as it lessens the need for calibration. But don&#039;t be fooled here, equally good results can be obtained for other orientation. Some of the best videos out there were in fact recorded with the imu&#039;s Z-axis in a horizontal orientation. It just means that with the Z-axis pointing up or down it&#039;s more likely that one can get away with a &amp;quot;lesser&amp;quot; calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient. &lt;br /&gt;
* The calibration of the 2nd IMU becomes more important as the motor pole count increases (e.g. 14 pole versus 22 pole). &lt;br /&gt;
&lt;br /&gt;
⦁ Even though, for the reasons mentioned previously, a clear cut calibration recipe cannot currently be offered, although there are some recommendations in place: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and the 2nd IMU. &lt;br /&gt;
* If possible choose imu orientations with the Z-axis pointing up or down, but that&#039;s not a must as explained before. &lt;br /&gt;
* Don&#039;t do a 6-point calibration unless you plan to do it very accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. In contrast Higher-pole motors require a careful 2nd IMU calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar made a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, some important advice: &lt;br /&gt;
&lt;br /&gt;
Save your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally save it from within the Calibration dialog window, as this stores the most detailed information. Consider also, posting your calibration files in the rcgroups thread, so that the firmware author and others can enhance their knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this information is incorrect, the controller will misbehave. Unfortunately, an incorrect setup will not always immediately reveal itself, but will lead to misbehaviour at a later stage, e.g. when a new function is activated, and therefore you might not associate it with the earlier faulty setup. So, please accept the following statement: &lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach in producing all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available and if followed, guarantees correct settings. So, the above could be rephrased as &amp;quot;Don&#039;t try to be smart, just shut up and follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here. &lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are those mainly contained under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI:&lt;br /&gt;
* Imu-1 Orientation&lt;br /&gt;
* Imu-2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of these should be adjusted &amp;quot;before&amp;quot; the motors are activated, some can only be adjusted with the motors enabled. &lt;br /&gt;
&lt;br /&gt;
=== Before the motors are enabled for the first time ===&lt;br /&gt;
The Imu-1 and Imu-2 orientations and number of motor poles should be adjusted before the motors are activated, and the motor direction settings, initially set to Auto in order to find correct rotation directions. &lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configuration Gimbal Tool&amp;quot; option (accessible under the &amp;quot;Gimbal Configuration&amp;quot; Tab in the GUI), which is started by clicking on the respective button. Just follow the instructions step by step: &lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu-1 and Imu-2 Orientations.&lt;br /&gt;
* It will then ask you to enter the number of poles of your motors. The number of poles for your motors should be available in the motor data sheets. For example, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can be seen on the inner side of the motor bell. So, if in doubt you can quite easily determine the number of poles by simply counting the number of magnets. &lt;br /&gt;
* Finally, as mentioned above, the Motor Direction parameters must be set to &amp;quot;Auto&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== After motors have been enabled for the first time ===&lt;br /&gt;
With the Imu-1 and Imu-2 orientations, and motor poles set correctly, and the motor direction set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and then reach the &amp;quot;Normal&amp;quot; state (green led continuously On). Note: You can see what is happening by initiating and starting the &amp;quot;Data Display&amp;quot;. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Directions and the Startup Motor Pos parameters can be set using the Tools tab: &lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. This opens a dialog box which allows you to align the yaw axis such that the camera points to the forward position. Don&#039;t worry that the  alignment being undone when closing the dialog box, this is normal as the just made adjustments become effective only after the next startup of the gimbal. &lt;br /&gt;
Note! adjustments made in these steps only become Active after a restart of the StorM32 gimbal controller.&lt;br /&gt;
&lt;br /&gt;
== The Next Steps ==&lt;br /&gt;
The next steps are to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller. :)&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1660</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1660"/>
		<updated>2014-12-04T08:36:41Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: /* Basic Controller Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly. &#039;&#039;Descriptions refer to firmware v0.56.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu1 Orientation, Imu2 Orientation, and Motor Pole parameters correctly, and to set the Motor Direction parameters to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Direction parameters.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the StorM32 on-board IMU is used as a 2nd IMU. The StorM32 board must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal (check the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread]). Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the 3-axis dual-IMU setups.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers within the IMU modules need to be calibrated for optimal performance (the gyros would also, but that&#039;s currently beyond reach). Several calibration techniques are available, and two are implemented in the STorM32 project, these are the &amp;quot;1-point&amp;quot; and &amp;quot;6-point&amp;quot; calibrations. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not absolutely clear as to which method is the best. This is because I don&#039;t have the resources for an extensive research project, this is what would possibly be needed for a determination. Hence, the situation currently is a bit experimental and might appear fuzzy to many users, but - on the positive side - knowledge and experience is increasing and therefore calibration procedures may improve with time. &lt;br /&gt;
&lt;br /&gt;
The reasons for a calibrating are different for the camera IMU versus the 2nd IMU. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; Calibration mainly affects &amp;quot;horizontal drift&amp;quot;, i.e. the accuracy with which the horizon is held in quick yaw turns and other high-g manoeuvers. It also determines the accuracy of how well the camera is leveled, but this can in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g manoeuvers. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is in itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is even more important with higher poled motors e.g.  poles greater than the basic 14 poles. &lt;br /&gt;
&lt;br /&gt;
It has been found that the calibration issue depends strongly on the orientation of the IMU module. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; In general, the z axis is more often wrong than the x and y axes.&lt;br /&gt;
&lt;br /&gt;
Of course, the care with which a calibration is performed very much affects the final quality results of the calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039; A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The resulting quality factor under the 6-point calibration option can give a good indication as to the results (a value of 80 very good, 150 average, 250 not so good). &lt;br /&gt;
&lt;br /&gt;
From the above information these are rules of thumb to follow: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with the way your gimbal performs, you don&#039;t need to spend time on a (better) calibration.&lt;br /&gt;
* IMU orientations with the Z-axis pointing up or down seems preferable, as it lessens the need for calibration. But don&#039;t be fooled here, equally good results can be obtained for other orientation. Some of the best videos out there were in fact recorded with the imu&#039;s Z-axis in a horizontal orientation. It just means that with the Z-axis pointing up or down it&#039;s more likely that one can get away with a &amp;quot;lesser&amp;quot; calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient. &lt;br /&gt;
* The calibration of the 2nd IMU becomes more important as the motor pole count increases (e.g. 14 pole versus 22 pole). &lt;br /&gt;
&lt;br /&gt;
⦁ Even though, for the reasons mentioned previously, a clear cut calibration recipe cannot currently be offered, although there are some recommendations in place: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and the 2nd IMU. &lt;br /&gt;
* If possible choose imu orientations with the Z-axis pointing up or down, but that&#039;s not a must as explained before. &lt;br /&gt;
* Don&#039;t do a 6-point calibration unless you plan to do it very accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. In contrast Higher-pole motors require a careful 2nd IMU calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar made a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, some important advice: &lt;br /&gt;
&lt;br /&gt;
Save your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally save it from within the Calibration dialog window, as this stores the most detailed information. Consider also, posting your calibration files in the rcgroups thread, so that the firmware author and others can enhance their knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this information is incorrect, the controller will misbehave. Unfortunately, an incorrect setup will not always immediately reveal itself, but will lead to misbehaviour at a later stage, e.g. when a new function is activated, and therefore you might not associate it with the earlier faulty setup. So, please accept the following statement: &lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach in producing all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available and if followed, guarantees correct settings. So, the above could be rephrased as &amp;quot;Don&#039;t try to be smart, just shut up and follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here. &lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are those mainly contained under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI:&lt;br /&gt;
* Imu-1 Orientation&lt;br /&gt;
* Imu-2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of these should be adjusted &amp;quot;before&amp;quot; the motors are activated, some can only be adjusted with the motors enabled. &lt;br /&gt;
&lt;br /&gt;
=== Before the motors are enabled for the first time ===&lt;br /&gt;
The Imu-1 and Imu-2 orientations and number of motor poles should be adjusted before the motors are activated, and the motor direction settings, initially set to Auto in order to find correct rotation directions. &lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configuration Gimbal Tool&amp;quot; option (accessible under the &amp;quot;Gimbal Configuration&amp;quot; Tab in the GUI), which is started by clicking on the respective button. Just follow the instructions step by step: &lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu-1 and Imu-2 Orientations.&lt;br /&gt;
* It will then ask you to enter the number of poles of your motors. The number of poles for your motors should be available in the motor data sheets. For example, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can be seen on the inner side of the motor bell. So, if in doubt you can quite easily determine the number of poles by simply counting the number of magnets. &lt;br /&gt;
* Finally, as mentioned above, the Motor Direction parameters must be set to &amp;quot;Auto&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== After motors have been enabled for the first time ===&lt;br /&gt;
With the Imu-1 and Imu-2 orientations, and motor poles set correctly, and the motor direction set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and then reach the &amp;quot;Normal&amp;quot; state (green led continuously On). Note: You can see what is happening by initiating and starting the &amp;quot;Data Display&amp;quot;. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Directions and the Startup Motor Pos parameters can be set using the Tools tab: &lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields. &lt;br /&gt;
* Click on the &amp;quot;Tools&amp;quot; menu tab and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. This opens a dialog box which allows you to align the yaw axis such that the camera points to the forward position. Don&#039;t worry that the  alignment being undone when closing the dialog box, this is normal as the just made adjustments become effective only after the next startup of the gimbal. &lt;br /&gt;
Note! adjustments made in these steps only become Active after a restart of the StorM32 gimbal controller.&lt;br /&gt;
&lt;br /&gt;
== The Next Steps ==&lt;br /&gt;
The next steps are to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1659</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1659"/>
		<updated>2014-12-04T08:21:14Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: /* Calibration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly. &#039;&#039;Descriptions refer to firmware v0.56.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu1 Orientation, Imu2 Orientation, and Motor Pole parameters correctly, and to set the Motor Direction parameters to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Direction parameters.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the StorM32 on-board IMU is used as a 2nd IMU. The StorM32 board must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal &#039;&#039;&#039;&#039;&#039;above&#039;&#039;&#039;&#039;&#039; the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal (check the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread]). Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the 3-axis dual-IMU setups.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers within the IMU modules need to be calibrated for optimal performance (the gyros would also, but that&#039;s currently beyond reach). Several calibration techniques are available, and two are implemented in the STorM32 project, these are the &amp;quot;1-point&amp;quot; and &amp;quot;6-point&amp;quot; calibrations. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not absolutely clear as to which method is the best. This is because I don&#039;t have the resources for an extensive research project, this is what would possibly be needed for a determination. Hence, the situation currently is a bit experimental and might appear fuzzy to many users, but - on the positive side - knowledge and experience is increasing and therefore calibration procedures may improve with time. &lt;br /&gt;
&lt;br /&gt;
The reasons for a calibrating are different for the camera IMU versus the 2nd IMU. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; Calibration mainly affects &amp;quot;horizontal drift&amp;quot;, i.e. the accuracy with which the horizon is held in quick yaw turns and other high-g manoeuvers. It also determines the accuracy of how well the camera is leveled, but this can in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g manoeuvers. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is in itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is even more important with higher poled motors e.g.  poles greater than the basic 14 poles. &lt;br /&gt;
&lt;br /&gt;
It has been found that the calibration issue depends strongly on the orientation of the IMU module. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; In general, the z axis is more often wrong than the x and y axes.&lt;br /&gt;
&lt;br /&gt;
Of course, the care with which a calibration is performed very much affects the final quality results of the calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039; A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The resulting quality factor under the 6-point calibration option can give a good indication as to the results (a value of 80 very good, 150 average, 250 not so good). &lt;br /&gt;
&lt;br /&gt;
From the above information these are rules of thumb to follow: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with the way your gimbal performs, you don&#039;t need to spend time on a (better) calibration.&lt;br /&gt;
* IMU orientations with the Z-axis pointing up or down seems preferable, as it lessens the need for calibration. But don&#039;t be fooled here, equally good results can be obtained for other orientation. Some of the best videos out there were in fact recorded with the imu&#039;s Z-axis in a horizontal orientation. It just means that with the Z-axis pointing up or down it&#039;s more likely that one can get away with a &amp;quot;lesser&amp;quot; calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient. &lt;br /&gt;
* The calibration of the 2nd IMU becomes more important as the motor pole count increases (e.g. 14 pole versus 22 pole). &lt;br /&gt;
&lt;br /&gt;
⦁ Even though, for the reasons mentioned previously, a clear cut calibration recipe cannot currently be offered, although there are some recommendations in place: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and the 2nd IMU. &lt;br /&gt;
* If possible choose imu orientations with the Z-axis pointing up or down, but that&#039;s not a must as explained before. &lt;br /&gt;
* Don&#039;t do a 6-point calibration unless you plan to do it very accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. In contrast Higher-pole motors require a careful 2nd IMU calibration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar made a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, some important advice: &lt;br /&gt;
&lt;br /&gt;
Save your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally save it from within the Calibration dialog window, as this stores the most detailed information. Consider also, posting your calibration files in the rcgroups thread, so that the firmware author and others can enhance their knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this information is incorrect, the controller will misbehave. Unfortunately, an incorrect setup will not always  immediately reveal itself, but will lead to misbehavior at a later stage, e.g. when a new function is activated, and therefore you might not associate it with the earlier faulty setup. So, please accept the following statement:&lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach in producing all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available and if followed, guarantees correct settings. So, the above could be rephrased also as &amp;quot;Don&#039;t try to be smart, just follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here.&lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are contained under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI:&lt;br /&gt;
* Imu1 Orientation&lt;br /&gt;
* Imu2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of them should be adjusted before the motors are activated, some can only be adjusted with the motors enabled.&lt;br /&gt;
&lt;br /&gt;
=== Before the motors are enabled for the first time ===&lt;br /&gt;
The Imu-1 and Imu-2 orientations and number of motor poles should be adjusted before the motors are activated, and the motor direction settings, initially set to &amp;quot;auto&amp;quot; in order to find correct rotation directiony.&lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configure Gimbal Tool&amp;quot; (accessible under the &amp;quot;Gimbal Configuration&amp;quot; tab in the GUI), which is started by clicking on the respective button. Just follow the instructions step by step:&lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu1 and Imu2 Orientation parameters. &lt;br /&gt;
* It then will ask you to enter the number of poles of your motors. The number of poles for your motor should be available in the motor data sheets. For instance, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can see on the inner side of the motor bell. So, if in doubt you can easily determine the number of poles by simply counting the magnets. &lt;br /&gt;
* Finally, as mentioned above, the Motor Direction parameters are set to &amp;quot;auto&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== After motors have been enabled for the first time ===&lt;br /&gt;
With the Imu-1 and Imu-2 orientations, and motor poles set correctly, and the motor directions set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and then reach the &amp;quot;Normal&amp;quot; state (green led continuously On). Note: You can see what is happening by initiating and starting the &amp;quot;Data Display&amp;quot;. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Direction and the Startup Motor Pos parameters can be set using the &amp;quot;Tools&amp;quot; menu:&lt;br /&gt;
&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields.&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields.&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. This opens a dialog box which allows you to align the yaw axis such that the camera points to the forward position. Don&#039;t worry that the alignment being undone when closing the dialog box, this is normal.&lt;br /&gt;
&lt;br /&gt;
The adjustments made in these steps become effective only at the next startup of the gimbal.&lt;br /&gt;
&lt;br /&gt;
== The Next Steps ==&lt;br /&gt;
The next steps are to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller.&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1644</id>
		<title>Quick Start Guide</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v1-wiki/index.php?title=Quick_Start_Guide&amp;diff=1644"/>
		<updated>2014-12-03T13:37:34Z</updated>

		<summary type="html">&lt;p&gt;Bruce356: Minor alteration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, I (OlliW) will briefly describe the initial steps which are required to set up the STorM32-BGC to function correctly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultra-Quick Start Guide:&#039;&#039;&#039;&lt;br /&gt;
* Use the &amp;quot;Calibrate Acc&amp;quot; tab to calibrate the imus.&lt;br /&gt;
* Use the &amp;quot;Configure Gimbal Tool&amp;quot; to set the Imu-1 Orientation, Imu-2 Orientation, and the Motor Poles correctly, and to set the Motor Directions to &amp;quot;auto&amp;quot;. &lt;br /&gt;
* Use the &amp;quot;Get Current Motor Directions&amp;quot; option to set the Motor Directions.&lt;br /&gt;
* Use the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option to set the Startup Motor Pos parameters for pitch and roll.&lt;br /&gt;
* Use the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot; to align the yaw axis to point forward at startup.&lt;br /&gt;
&lt;br /&gt;
Below a somewhat less quick &amp;quot;Quick Start Guide&amp;quot; follows. It tells you what you need to know and what to do.&lt;br /&gt;
&lt;br /&gt;
== Supported Gimbals ==&lt;br /&gt;
The STorM32 controller can currently be used for the following setups:&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with single Camera IMU:&#039;&#039;&#039; Only one IMU, connected to the I2C port and mounted to the camera, is used.&lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; on-board IMU:&#039;&#039;&#039; In addition to the camera IMU the Storm32 on-board IMU is used as a 2nd IMU. The Storm32 board must be mounted on the gimbal ~Above~ the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;3-Axis with Camera &amp;amp; separate 2nd IMU:&#039;&#039;&#039; In addition to the camera IMU a further IMU connected to the I2C#2 port is used as 2nd IMU. The board can be mounted anywhere, but the 2nd IMU must be mounted on the gimbal ~Above~ the yaw motor. &lt;br /&gt;
* &#039;&#039;&#039;2-Axis:&#039;&#039;&#039; This is not &amp;quot;officially&amp;quot; supported but users figured out that the controller can be set up to work fine with a 2-axis gimbal. Only one Camera IMU is attached to the I2C port. The 2nd IMU is not supported in this configuration. &lt;br /&gt;
Both the 3-axis and 2-axis gimbals with single IMU are obviously easier to set up since one doesn&#039;t need to be concerned about the effects of the 2nd IMU and what&#039;s required to get it working correctly. The following focuses on the dual-IMU setups. &lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
Things to know before starting: &lt;br /&gt;
* Comprehend the [[Getting Started#Dos and Dont&#039;s|Dos and Dont&#039;s]].&lt;br /&gt;
* Understand the importance of a proper gimbal mechanics, read [[Getting Started#The Gimbal|The Gimbal]] and especially [[Tuning_Recipe#Balancing the Gimbal|Balancing the Gimbal]]!&lt;br /&gt;
* Get familiar with the board, inspect the [[Pins and Connectors]].&lt;br /&gt;
* Use the latest firmware and GUI. To download the latest firmware package see [[Downloads]]. To flash the firmware to the board see [[How to flash firmware]]. Read the updates and installation instructions in the respective posts at the [http://www.rcgroups.com/forums/showthread.php?t=2055844 rcgroups thread], also check these posts for known bugs.&lt;br /&gt;
* Check that your setup matches one of the supported setups mentioned previously.&lt;br /&gt;
* Understand the &amp;quot;Read&amp;quot;, &amp;quot;Write&amp;quot;, and &amp;quot;Write+Store&amp;quot; mechanism in the GUI.&lt;br /&gt;
&lt;br /&gt;
Finally, good advice:- Please take any recommendations from these links seriously!&lt;br /&gt;
&lt;br /&gt;
== Calibration ==&lt;br /&gt;
The accelerometers of the IMU modules need to be calibrated for optimal performance (the gyros too, but that&#039;s  beyond reach). Several calibration techniques are known, and two of them are implemented in the STorM32 project, called 1-point and 6-point calibration. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, it is not finally clear what method is the best. This is because not much useful info is in the web and I don&#039;t have the resources for an extensive research project on this, but this is what would be needed. Hence, the situation is currently a bit experimental and might appear fuzzy to many users, but - to also have a good message - the knowledge and experience increases and calibration procedures might improve with time.&lt;br /&gt;
&lt;br /&gt;
The reasons for a calibration are different for the camera and the 2nd IMU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera IMU:&#039;&#039;&#039; The calibration mainly affects the &amp;quot;horizont drift&amp;quot;, i.e. the accuracy with which the horizont is hold in quick yaw turns and other high-g maneuvers. It also determines the accuracy of how well the camera is level, but this could in principle be tuned out easily by other means (e.g. offset parameters). The main concern is the performance in high-g maneuvers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second IMU:&#039;&#039;&#039; The measurement accuracy of the 2nd IMU is by itself not very important, it is however very important that the 2nd IMU data is consistent with the camera IMU, and it is the more important the higher the number of motor poles is.&lt;br /&gt;
&lt;br /&gt;
Some insights have been made so far.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Imu Orientation:&#039;&#039;&#039; As a general trend, the z axis is much more wrong than the x and y axes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calibration Accuracy:&#039;&#039;&#039;&lt;br /&gt;
A 6-point calibration is meaningful only if it is done very accurately. A poorly undertaken 6-point calibration can easily result in a poorer performance than a supposedly &amp;quot;lesser&amp;quot; 1-point calibration. The quality factor can give an indication.&lt;br /&gt;
&lt;br /&gt;
From that these rule of thumbs follow:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules of thumb:&#039;&#039;&#039;&lt;br /&gt;
* The calibration only needs to be as good as you need it to be. If you are happy with how your gimbal works, you don&#039;t have to spend time on a (better) calibration. &lt;br /&gt;
* IMU orientations with the z-axis up or down seem preferable, as it lessens the need of a calibration. But don&#039;t get fooled here, equally good results can be obtained for any orientation. Some of the best videos out there were in fact recorded with the IMU&#039;s z axis horizontal. It just means that with the z axis up or down it&#039;s more likely to get away with a lesser calibration for a desired level of performance.&lt;br /&gt;
* The calibration of the camera IMU is more important than for the 2nd IMU, i.e. for the 2nd IMU a &amp;quot;lesser&amp;quot; calibration might be fully sufficient.&lt;br /&gt;
* The calibration of the 2nd IMU is the more important the higher the motor pole count is. &lt;br /&gt;
&lt;br /&gt;
Even though, for the reasons mentioned before, a clear cut calibration recipe cannot be offered currently, some recommendations seems at place:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* A 1-point calibration is fairly simple, and is hence recommended for both the camera and 2nd IMU.&lt;br /&gt;
* If possible choose IMU orientations with the z-axis up or down, but that&#039;s no must as explained before.&lt;br /&gt;
* Don&#039;t do a 6-point calibration if you don&#039;t plan to do it really accurately (check out the rcgroups thread). &lt;br /&gt;
* If motors with 12 or 14 poles are used, a 1-point calibration of the 2nd IMU is most likely sufficient. High-pole motors require in contrast a careful 2nd IMU calibration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Calibration Tutorial:&#039;&#039;&#039; Rcgroups user mackar did a great video on the 6-point calibration. Go to [[6-Point Calibration]].&lt;br /&gt;
&lt;br /&gt;
Finally, this important advice: &lt;br /&gt;
&lt;br /&gt;
 Safe your calibration data to a file! &lt;br /&gt;
&lt;br /&gt;
Ideally safe it from within the Calibration dialog, as this stores the most detailed information. Consider also to post your calibration files in the rcgroups thread, so that I and others can enhance our knowledge and hopefully develop better calibration schemes.&lt;br /&gt;
&lt;br /&gt;
== Basic Controller Configuration ==&lt;br /&gt;
The algorithms used in the STorM32 controller need to know some aspects of your gimbal in order to work correctly. If any of this info is wrong, the controller will misbehave. Unfortunately, an incorrect setup will not always reveal itself immediately, but will lead to misbehavior at a later stage, e.g. when a new function is activated, and you might not associate it to the earlier faulty setup. So, accept this:&lt;br /&gt;
&lt;br /&gt;
 Just because a setting seems to work correctly doesn&#039;t mean that it is correct!&lt;br /&gt;
&lt;br /&gt;
One implication is that adjusting the fundamental parameters by trial-and-error is the best approach to produce all sorts of non-obvious problems. Fortunately, a straight-forward setup procedure is available, which guarantees correct settings, if followed. So, the above could be rephrased also as &amp;quot;Don&#039;t try to be smart, just shut up and follow the recipe&amp;quot;. That&#039;s in fact the best advice possible here.&lt;br /&gt;
&lt;br /&gt;
The parameters we are talking about are those centralized in the GUI&#039;s &amp;quot;Gimbal Configuration&amp;quot; tab:&lt;br /&gt;
* Imu1 Orientation&lt;br /&gt;
* Imu2 Orientation&lt;br /&gt;
* Motor Poles&lt;br /&gt;
* Motor Directions&lt;br /&gt;
* Motor Startup Positions&lt;br /&gt;
Some of them should be adjusted before the motors are activated, some of them can only be adjusted with the motors enabled.&lt;br /&gt;
&lt;br /&gt;
=== Before motors are enabled first time ===&lt;br /&gt;
The Imu1 and Imu2 orientations and motor poles should be adjusted before the motors are activated, and the motor direction settings prepared properly.&lt;br /&gt;
&lt;br /&gt;
This is most easily done by using the &amp;quot;Configure Gimbal Tool&amp;quot;, which is started by hitting on the respective button in the tab. Just follow it step by step:&lt;br /&gt;
&lt;br /&gt;
* It will guide you through a simple procedure which determines the Imu1 and Imu2 Orientations. &lt;br /&gt;
* It then will ask you to enter the number of poles of your motors. The motor pole number you should find in the data sheet of the motors. For instance, a 12N14P motor has 14 poles. The number of poles corresponds to the number of magnets, which you can see in the inner side of the motor bell. So, in case of doubt you can easily determine the number by just counting the magnets. &lt;br /&gt;
* Finally, the Motor Direction parameters are set to &amp;quot;auto&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== After motors were enabled first time ===&lt;br /&gt;
With the Imu1 and Imu2 orientations, and motor poles set correctly, and the motor direction set to &amp;quot;auto&amp;quot;, one can enable the motors (all motors!) and start the gimbal. The controller should go through the initialization steps and level the camera (green led blinks), and reach the &amp;quot;Normal&amp;quot; state (green led goes continuous). Note: You may watch what&#039;s going on by running the Data Display. Once the &amp;quot;Normal&amp;quot; state is reached the Motor Directions and the Startup Motor Pos parameters can be set:&lt;br /&gt;
&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Get Current Motor Directions&amp;quot; option. This will copy the auto determined motor directions into the Motor Direction fields.&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Get Current Pitch and Roll Motor Positions&amp;quot; option. This will copy the current pitch and roll motor positions into the Pitch and Roll Startup Motor Pos parameter fields.&lt;br /&gt;
* Go to the &amp;quot;Tools&amp;quot; menu and execute the &amp;quot;Adjust Yaw Startup Motor Pos Parameter Tool&amp;quot;. It opens a dialog which allows you to align the yaw axis such that the camera points to the forward. Don&#039;t worry about the fact that the alignment is undone with closing the dialog, that&#039;s how it is.&lt;br /&gt;
&lt;br /&gt;
The just made adjustments become effective only at the next startup of the gimbal.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
The next step is to tune the PID parameters. It is not part of this Quick Guide, since the PID values are not fundamental for the controller to work correctly; they are though (very) important for the performance. Once tuned, one can start to enjoy all the great and partly unique possibilities of the STorM32 controller. :)&lt;/div&gt;</summary>
		<author><name>Bruce356</name></author>
	</entry>
</feed>