<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-351334961189130697</id><updated>2024-11-25T19:38:55.190+00:00</updated><category term="Parts"/><category term="Frame"/><category term="Sensors"/><category term="Sketches"/><category term="Videos"/><category term="3D Models"/><category term="3D Tools"/><category term="Team"/><category term="Theory"/><category term="Twitter"/><title type='text'>MobileAPES Industries</title><subtitle type='html'>Blog about the progress and development of a mobile platform to sensing the environment.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-9195354268524134088</id><published>2011-01-20T19:32:00.001+00:00</published><updated>2011-01-21T19:10:55.949+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><title type='text'>ACS712 Low Current Sensor Breakout test.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Despite finding a solution to solve the problem of knowing when the speed controllers are on or off and have abandoned the ACS712 Low Current Sensor Breakout for this purpose the sensor continues to be useful to monitor the battery status. &lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7GCF9qCg9HMWl0fP5wBRUjIaFw-mcs7wa7K6ZGLoeND3tBhBriUcBVPx_vcRanMj5Lwem4mvZnqIYXF8BkQLKT1N9yCf-dXr0gxWsrZNoF1n4NJtw2UY57fN5SHUGZYBzclljK9AftA/s1600/ACS712LowCurrentSensorBreakoutMotor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7GCF9qCg9HMWl0fP5wBRUjIaFw-mcs7wa7K6ZGLoeND3tBhBriUcBVPx_vcRanMj5Lwem4mvZnqIYXF8BkQLKT1N9yCf-dXr0gxWsrZNoF1n4NJtw2UY57fN5SHUGZYBzclljK9AftA/s320/ACS712LowCurrentSensorBreakoutMotor.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;After some research and some help that I have got from this &lt;a href=&quot;http://forum.sparkfun.com/viewtopic.php?f=14&amp;amp;t=25293&quot;&gt;forum&lt;/a&gt; I could do a procedure to test the current sensor. First I have created the circuit shown in figure 1 above, which consists of two parts. One part that includes the Arduino board, the current sensor and a digital voltmeter (I used a multimeter). The other part includes the 9V battery, a resistance, an on/off toggle switch and a micro motor. The idea is to measure the current that flows from the 9V battery to the micro motor.&lt;br /&gt;
Before using the current sensor we must calibrate it. Looking at the sensor &lt;a href=&quot;http://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf&quot;&gt;specifications&lt;/a&gt; I have noticed that the&amp;nbsp;output from the sensor IC is Vcc/2 (~2.5 V, in this case) if there is no&amp;nbsp;current. This is because the sensor IC has a bidirectional output. If the current is &quot;forward&quot;, its output is between Vcc/2 and Vcc (~2.5 V and ~5 V, in this case); if the current is &quot;backward&quot;,&amp;nbsp;its output is between Gnd and Vcc/2 (~0 V and ~2.5 V, in this case). So let&#39;s try to set the board&#39;s output to 2.5 V with no input current. According to the note on the &lt;a href=&quot;http://www.sparkfun.com/datasheets/Sensors/ACS712%20Low%20Current%20Sensor%20Board%20v12.pdf&quot;&gt;schematic&lt;/a&gt;, the two trimpots need to be turned in different directions to increase the values they control. The current sensor uses&amp;nbsp;a &lt;a href=&quot;http://en.wikipedia.org/wiki/Hall_effect_sensor&quot;&gt;hall-effect sensor&lt;/a&gt; internally. Therefore, it should be used a diddle stick (a small non-metallic, non-conductive screwdriver like tool for making fine adjustments) to adjust the trimpot (I used a toothpick and cut it with a x-ato). With a diddle stick, we rotate the &quot;Vref&quot; trimpot until we get the value of ~2.5 V. If we verify that there are great fluctuations in readings, rotates the&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt; &quot;Gain&quot; trimpot&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;until you&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;get&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;readings&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;closer to&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;other&lt;/span&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt;.&lt;/span&gt;&lt;/span&gt; When we have a more or less stable value, then turns on the motor and immediately we can see an increase in the value of the voltage read by the voltmeter. Remind that the current sensor outputs an analog voltage that varies linearly with sensed current. To read the value of the current sensor in analog pin &quot;0&quot; from the arduino board, I have done a sketch that can be seen below. The values read from the analog pin &quot;0” ranging from 0 to 1023.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;Reads&amp;nbsp;values&amp;nbsp;from&amp;nbsp;a&amp;nbsp;ACS712&amp;nbsp;low&amp;nbsp;current&amp;nbsp;sensor&amp;nbsp;connected&amp;nbsp;to&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;the&amp;nbsp;analog&amp;nbsp;input&amp;nbsp;pin&amp;nbsp;0 on Arduino board and&amp;nbsp;print&amp;nbsp;them&amp;nbsp;to
  the&amp;nbsp;serial&amp;nbsp;monitor.&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;*/&lt;/span&gt;

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;setup&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;begin&lt;/span&gt;(9600);         &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// sets the serial port to 9600&lt;/span&gt;
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; value = &lt;span style=&quot;color: #cc6600;&quot;&gt;analogRead&lt;/span&gt;(0);  &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// read analog input pin 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;println&lt;/span&gt;(value, &lt;span style=&quot;color: #006699;&quot;&gt;DEC&lt;/span&gt;); &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// prints the value read&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;delay&lt;/span&gt;(1000);                &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// wait 1s for next reading&lt;/span&gt;
}&lt;/pre&gt;To see the variation of values read from the analog pin &quot;0” in real time I have created a graph using a pair of perl scripts. The first script is a flexible, command-line-oriented frontend to the program “&lt;a href=&quot;http://www.gnuplot.info/&quot;&gt;Gnuplot&lt;/a&gt;”. It creates plots from data coming in on STDIN or given in a filename passed on the command line and can be found on this &lt;a href=&quot;https://github.com/dkogan/feedgnuplot&quot;&gt;site&lt;/a&gt;. The second script - which can be seen below - allows us to read from the serial port the stream of values received in analog pin &quot;0&quot; of the Arduino board and sends them to the STDIN.&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;#!/usr/bin/perl -w

use strict;
use Device::SerialPort;

my $port = &quot;/dev/ttyUSB0&quot;;

my $ob = Device::SerialPort-&amp;gt;new($port);
$ob-&amp;gt;databits(8);
$ob-&amp;gt;baudrate(9600);
$ob-&amp;gt;parity(&quot;none&quot;);
$ob-&amp;gt;stopbits(1);

select STDOUT;

$| = 1;

my $n = 0;
my $buffer = &quot;&quot;;
while(1) {
  my $byte = $ob-&amp;gt;read(1);
  if($byte =~ /^\d/) {
    $buffer .= $byte;
  } elsif($byte =~ /^\n/) {
    if($buffer =~ /^\d+/) {
      print STDOUT &quot;$buffer\n&quot;;
      $n++;
      sleep(1);
    }
    $buffer = &quot;&quot;;
  }
}
undef $ob;
&lt;/pre&gt;The connection between the two scripts is done with a pipeline (pipe character &quot;|&quot;). The command to start the plot is shown below.&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;$ ./ReadSerialPort.pl | ./feedGnuplot.pl --stream --lines --points \
--legend &quot;Readings&quot; --title &quot;ACS712 Low Current Sensor Test&quot; \
--ymin 450 --ymax 600 --xlen 100 --xlabel &quot;Time (s)&quot; --ylabel &quot;Value&quot;&lt;/pre&gt;In figure 2 we can see the plot in real time and can be observed that there is a sudden increase of the values readed from the sensor, which corresponds to the moment when the motor is turned on. Later, we can observe a decline of values, which correspond to the moment when the motor is turned off.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXyby63ut1HDU1Zs9Henu0HV1Zr7gGEoTDTFq2IqL9ZF03wYFBAGT_MVNDtG6iVdMoMf3TGTD4RYzLsWnF71efTeuN3FCYLGBraRcayRKAEPMjDrXtFSrenf-7EiXmNRvN0oP1JxSYUA/s1600/ACS712LowCurrentSensorTestGraph01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXyby63ut1HDU1Zs9Henu0HV1Zr7gGEoTDTFq2IqL9ZF03wYFBAGT_MVNDtG6iVdMoMf3TGTD4RYzLsWnF71efTeuN3FCYLGBraRcayRKAEPMjDrXtFSrenf-7EiXmNRvN0oP1JxSYUA/s320/ACS712LowCurrentSensorTestGraph01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As can be seen in the graph of the figure 2, the readings still have&amp;nbsp;a fluctuation although of having reduced the gain as much as possible. The graph displays the raw value from the analog to digital converter (ADC) in the Arduino. After reading some material on the Arduino forum about &lt;a href=&quot;http://www.arduino.cc/en/Tutorial/Smoothing&quot;&gt;smoothing out the values&lt;/a&gt;, measuring voltage and converting the raw ADC value to something more useful, I decided to reduce the fluctuation of the readings using the average of 10 readings taken at an interval of 10 ms and then send the result to the Serial port. The new sketch can be seen below.&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;Computes&amp;nbsp;the&amp;nbsp;average&amp;nbsp;of&amp;nbsp;10&amp;nbsp;readings&amp;nbsp;at&amp;nbsp;intervals&amp;nbsp;of&amp;nbsp;10&amp;nbsp;ms&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;from&amp;nbsp;a&amp;nbsp;ACS712&amp;nbsp;low&amp;nbsp;current&amp;nbsp;sensor&amp;nbsp;connected&amp;nbsp;to&amp;nbsp;the&amp;nbsp;analog&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;input&amp;nbsp;pin&amp;nbsp;0&amp;nbsp;on&amp;nbsp;Arduino&amp;nbsp;board&amp;nbsp;and&amp;nbsp;print&amp;nbsp;them&amp;nbsp;to&amp;nbsp;the&amp;nbsp;serial&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;monitor.&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;*/&lt;/span&gt;

&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; counter = 0;
&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; total = 0;

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;setup&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// sets the serial port to 9600&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;begin&lt;/span&gt;(9600);
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// read analog input pin 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; reading = &lt;span style=&quot;color: #cc6600;&quot;&gt;analogRead&lt;/span&gt;(0);
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// add the reading to the total&lt;/span&gt;
&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;total&amp;nbsp;+&amp;nbsp;reading;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// incrementing the counter&lt;/span&gt;
&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;counter&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// if have already been done 10 readings...&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;if&lt;/span&gt; (counter &amp;gt;= 10) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// set the counter to 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// calculate the average&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; average = total / 10;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// send it to the serial port (as ASCII digits)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;println&lt;/span&gt;(average, &lt;span style=&quot;color: #006699;&quot;&gt;DEC&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// set the total to 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// wait 1 ms for next reading&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;delay&lt;/span&gt;(100);
}&lt;/pre&gt;As one can now see in graph of the figure 3, the moments when the motor is turned on&amp;nbsp;and off is now clearer.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyEixAFD1ISQX6LB4K-P-0ta71633xYafub1gFAF3SO3GM0KZa1GApxeyx8OSNpCfr9YgwGKBRF71F5Q3-eK12NqAOOzlAAXdpccaFEZJvrdjyw5L9t2hcPINrqEF_i9hQ3CT3Q8qrlg/s1600/ACS712LowCurrentSensorTestGraph02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyEixAFD1ISQX6LB4K-P-0ta71633xYafub1gFAF3SO3GM0KZa1GApxeyx8OSNpCfr9YgwGKBRF71F5Q3-eK12NqAOOzlAAXdpccaFEZJvrdjyw5L9t2hcPINrqEF_i9hQ3CT3Q8qrlg/s320/ACS712LowCurrentSensorTestGraph02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 3 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The sketch can be improved to reject the values that are not within the&amp;nbsp;expected range making use of several statistical criteria. After some investigation I found a statistical method easy to implement to reject the &quot;bad&quot; data, known as the &lt;a href=&quot;http://people.ohio.edu/bayless/seniorlab/chauvenet.pdf&quot;&gt;Chauvenet&#39;s criterion&lt;/a&gt;. &lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;The&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;implementation&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;the method&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;can&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;be&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;seen&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;in the following &lt;/span&gt;&lt;/span&gt;sketch&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;&lt;/span&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;Computes&amp;nbsp;the&amp;nbsp;average&amp;nbsp;of&amp;nbsp;a&amp;nbsp;sample&amp;nbsp;of&amp;nbsp;N&amp;nbsp;readings&amp;nbsp;at&amp;nbsp;intervals&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;of&amp;nbsp;1000/N&amp;nbsp;ms&amp;nbsp;from&amp;nbsp;a&amp;nbsp;ACS712&amp;nbsp;low&amp;nbsp;current&amp;nbsp;sensor&amp;nbsp;connected&amp;nbsp;to&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;the&amp;nbsp;analog&amp;nbsp;input&amp;nbsp;pin&amp;nbsp;0&amp;nbsp;on&amp;nbsp;Arduino&amp;nbsp;board&amp;nbsp;and&amp;nbsp;print&amp;nbsp;them&amp;nbsp;to&amp;nbsp;the&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;serial&amp;nbsp;monitor.&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;This&amp;nbsp;sketch&amp;nbsp;uses&amp;nbsp;the&amp;nbsp;the&amp;nbsp;Chauvenet&#39;s&amp;nbsp;statistical&amp;nbsp;criterion&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;rejecting&amp;nbsp;the&amp;nbsp;bad&amp;nbsp;readings.&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;*/&lt;/span&gt;

const&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; num_readings = 20;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;Chauvenet’s&amp;nbsp;criterion&amp;nbsp;for&amp;nbsp;rejecting&amp;nbsp;a&amp;nbsp;reading&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;http://people.ohio.edu/bayless/seniorlab/lecture1.ppt&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;http://people.ohio.edu/bayless/seniorlab/chauvenet.pdf&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;Consult&amp;nbsp;the&amp;nbsp;table&amp;nbsp;of&amp;nbsp;the&amp;nbsp;pdf&amp;nbsp;document&amp;nbsp;to&amp;nbsp;find&amp;nbsp;the&amp;nbsp;ratio&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;of&amp;nbsp;maximum&amp;nbsp;acceptable&amp;nbsp;deviation&amp;nbsp;to&amp;nbsp;precision&amp;nbsp;index&amp;nbsp;for&lt;/span&gt;
&lt;span style=&quot;color: #7e7e7e;&quot;&gt;//&amp;nbsp;this&amp;nbsp;sampling.&lt;/span&gt;
const&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; mad = 2.24;
&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; readings[num_readings];
&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; index = 0;

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;setup&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// sets the serial port to 9600&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;begin&lt;/span&gt;(9600);
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; average() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; total = 0;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; i=0; i&amp;lt;num_readings; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;total&amp;nbsp;+&amp;nbsp;readings[i];
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;return&lt;/span&gt; total/num_readings;
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;float&lt;/span&gt; standard_deviation(&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; avg) {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; total = 0;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; i=0; i&amp;lt;num_readings; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;total&amp;nbsp;+&amp;nbsp;pow((avg&amp;nbsp;-&amp;nbsp;readings[i]),&amp;nbsp;2);
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;sqrt&lt;/span&gt;(total/num_readings);
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// read analog input pin 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; reading = &lt;span style=&quot;color: #cc6600;&quot;&gt;analogRead&lt;/span&gt;(0);
&amp;nbsp;&amp;nbsp;readings[index]&amp;nbsp;=&amp;nbsp;reading;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// incrementing the index&lt;/span&gt;
&amp;nbsp;&amp;nbsp;index&amp;nbsp;=&amp;nbsp;index&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// if have already been done 10 readings...&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;if&lt;/span&gt; (index &amp;gt;= num_readings) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// set the index to 0&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// compute the average&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; avg = average();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// compute the standard deviation&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;float&lt;/span&gt; std = standard_deviation(avg);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;float&lt;/span&gt; madstd = mad * std;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;float&lt;/span&gt; lowlimit = avg - madstd;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;float&lt;/span&gt; highlimit = avg + madstd;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; count = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; total = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; i=0; i&amp;lt;num_readings; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// Check if the values of the readings are within the limits.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;if&lt;/span&gt;(readings[i] &amp;gt;= lowlimit &amp;amp;&amp;amp; readings[i] &amp;lt;= highlimit) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;total&amp;nbsp;+&amp;nbsp;readings[i];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count&amp;nbsp;=&amp;nbsp;count&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// compute the new average&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; newaverage = total/count;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// send it to the serial port (as ASCII digits)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;println&lt;/span&gt;(newaverage, &lt;span style=&quot;color: #006699;&quot;&gt;DEC&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// wait 1000/num_readings ms for next reading&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;delay&lt;/span&gt;(&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt;(1000/num_readings));
}&lt;/pre&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;The figure&lt;/span&gt; 4 &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;shows&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;the graph&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;of the&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;average variation&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;of the&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;readings&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;after&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;being analyzed&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;the&lt;/span&gt; &lt;/span&gt;Chauvenet&#39;s &lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;statistical&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;criterion&lt;/span&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsfesJqjEuEXUfpo5Y-IDbvm8S2fD5M3Wyk5MYfAs3j48PZkFijYhZIezFb4vU53B3TW89085gYyoZnTrV_7XrEaWc0lu6NsCdfoWmYTLaLLFyoxMjnvGYIi8L44trrxd7p11CnD5H9A/s1600/ACS712LowCurrentSensorTestGraph03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsfesJqjEuEXUfpo5Y-IDbvm8S2fD5M3Wyk5MYfAs3j48PZkFijYhZIezFb4vU53B3TW89085gYyoZnTrV_7XrEaWc0lu6NsCdfoWmYTLaLLFyoxMjnvGYIi8L44trrxd7p11CnD5H9A/s320/ACS712LowCurrentSensorTestGraph03.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;When comparing with the graph of figure 3, we can see that there is not much difference between the two graphs. However, these statistical methods are useful because many sensors are very sensitive to external influences that may cause momentary readings outside of the expected values.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU_6voBCkNNGiLFS3zvQKAJa1n757VzQOFUPdUM7GNq6p61G64Grx2_MREuOz_PNKFiSOr-rW0b3EviLUvXPiYb_aMqjbJ4LU_LtJJGOpL0qgxK_Ldg2033l3EoHX8ljCyzWLXJmycaQ/s1600/IM000054.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU_6voBCkNNGiLFS3zvQKAJa1n757VzQOFUPdUM7GNq6p61G64Grx2_MREuOz_PNKFiSOr-rW0b3EviLUvXPiYb_aMqjbJ4LU_LtJJGOpL0qgxK_Ldg2033l3EoHX8ljCyzWLXJmycaQ/s320/IM000054.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 5&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;the figure&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;5 we can&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;see&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;the&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;circuit&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;in operation&lt;/span&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;connected to&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;&lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; laptop&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;I lost&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;lot&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;of time with&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;this&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;sensor&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;but&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;finally&lt;/span&gt;&lt;span title=&quot;Click for alternate translations&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;I think&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;I&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;understand how&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;I can&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;hps&quot; title=&quot;Click for alternate translations&quot;&gt;it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/9195354268524134088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2011/01/acs712-low-current-sensor-breakout-test.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/9195354268524134088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/9195354268524134088'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2011/01/acs712-low-current-sensor-breakout-test.html' title='ACS712 Low Current Sensor Breakout test.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7GCF9qCg9HMWl0fP5wBRUjIaFw-mcs7wa7K6ZGLoeND3tBhBriUcBVPx_vcRanMj5Lwem4mvZnqIYXF8BkQLKT1N9yCf-dXr0gxWsrZNoF1n4NJtw2UY57fN5SHUGZYBzclljK9AftA/s72-c/ACS712LowCurrentSensorBreakoutMotor.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-67853017144869467</id><published>2010-12-21T19:32:00.003+00:00</published><updated>2010-12-22T00:11:42.849+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><title type='text'>Sometimes the best solutions are the simplest ones.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;To solve the problem of knowing when the speed controllers are  initialized or not, I decided that the best solution to solve the  problem would be to use a current sensor. So I bought a current sensor.  But unfortunately this solution has proved difficult to implement since  the sensor is not working as I expected. To test the sensor I connected  it to a Arduino board. The first problem I encountered is that the  sensor reads the same values, regardless of whether or not connected to a  circuit. I also tried to calibrate the sensor by following the  procedure that is on the product &lt;a href=&quot;http://www.sparkfun.com/products/8883&quot;&gt;page&lt;/a&gt; but without success. The second  problem has to do with the little information available about this  sensor.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;However, while I tried to solve the sensor problem I found  a simple solution to the problem of whether the speed controllers were  initialized or not using only one on-off switch push. There is a switch  designated &lt;a href=&quot;http://www.kpsec.freeuk.com/components/switch.htm&quot;&gt;switch DPST&lt;/a&gt;  (Double Pole, Single Throw), which consists of a pair of on-off  switches which operate together but in different circuits. The  quadcopter has two independent circuits, one connecting the motors and  speed controllers to one&amp;nbsp;battery and other circuit that connects the Seeeduino board to the other battery. To test the idea I had based on this &lt;a href=&quot;http://arduino.cc/en/Tutorial/Button&quot;&gt;example&lt;/a&gt; from the page of the Arduino board. I designed a scheme that can be seen in figure 1 and that lets me know when the green LED is turned on or off.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1H69X-zFxA_UMDYXy4nPHfFWdDEdxqnosRz5lWjY0JXlH7M9ESF6NLmm_7M2Ts0lsYvoI3vGnwbw46_tTUKR9NAd3UkHz9z9w-vudqrbv0YSQTxYmyOjB3XC6NJA76LCKTP9RV0s4g/s1600/SwitchPushDPST.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1H69X-zFxA_UMDYXy4nPHfFWdDEdxqnosRz5lWjY0JXlH7M9ESF6NLmm_7M2Ts0lsYvoI3vGnwbw46_tTUKR9NAd3UkHz9z9w-vudqrbv0YSQTxYmyOjB3XC6NJA76LCKTP9RV0s4g/s320/SwitchPushDPST.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As can be seen in the scheme of the figure 1 there are two independent circuits. One include the 9V battery and the LED and the another is on the&amp;nbsp;Arduino board. Both circuits are connected to the on-off switch push. The following sketch lets me know at any moment if the LED is turned on or off. &lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px;&quot;&gt;#define SWITCHPUSH 7&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// the input pin where the&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// on-off switch push is connected&lt;/span&gt;

&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; state = -1;   &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// state variable will be used to store&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// the state of the input pin&lt;/span&gt;

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;setup&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;begin&lt;/span&gt;(9600);      &lt;span style=&quot;color: #7e7e7e;&quot;&gt;    // open the serial port&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;pinMode&lt;/span&gt;(SWITCHPUSH, &lt;span style=&quot;color: #006699;&quot;&gt;INPUT&lt;/span&gt;);  &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// tell Arduino SWITCHPUSH is an input&lt;/span&gt;
}

&lt;span style=&quot;color: #cc6600;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;() {
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;int&lt;/span&gt; val = &lt;span style=&quot;color: #cc6600;&quot;&gt;digitalRead&lt;/span&gt;(SWITCHPUSH);  &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// read input value&lt;/span&gt;
&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// check if the read value is different of the state value&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;if&lt;/span&gt;(val != state) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// check whether the input is HIGH (switch push pressed)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;if&lt;/span&gt;(val == &lt;span style=&quot;color: #006699;&quot;&gt;HIGH&lt;/span&gt;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// print the string &quot;LED is ON&quot; to the serial port&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;println&lt;/span&gt;(&lt;span style=&quot;color: #006699;&quot;&gt;&quot;LED is ON&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;else&lt;/span&gt; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// print the string &quot;LED is OFF&quot; to the serial port&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;&lt;b&gt;Serial&lt;/b&gt;&lt;/span&gt;.&lt;span style=&quot;color: #cc6600;&quot;&gt;println&lt;/span&gt;(&lt;span style=&quot;color: #006699;&quot;&gt;&quot;LED is OFF&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state&amp;nbsp;=&amp;nbsp;val;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #7e7e7e;&quot;&gt;// store the value read in state variable&lt;/span&gt;
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc6600;&quot;&gt;delay&lt;/span&gt;(100);  &lt;span style=&quot;color: #7e7e7e;&quot;&gt;// wait 100 ms between each send&lt;/span&gt;
}
&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If I press the on-off switch push turns on the LED. From the Arduino board I get to know that the LED is turned on. If I turn off the Arduino board and re-connect it again I continue to know the status of the LED, because the on-off switch push operating in different circuits. This is very simple. &lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlsbfU4Dt6xr9WOV5XVtqvPsvVzk80ZI7GyWj6TG-_Qc2umV0pnvY0UYOBAmUcXigKzzjBxKApewX2Hs-tZ59-WVlKQsll4FgvDnzztdshnTYjG2zDgdhTZgB6BprdNQUy5C41DFsgAg/s1600/IM000039.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlsbfU4Dt6xr9WOV5XVtqvPsvVzk80ZI7GyWj6TG-_Qc2umV0pnvY0UYOBAmUcXigKzzjBxKApewX2Hs-tZ59-WVlKQsll4FgvDnzztdshnTYjG2zDgdhTZgB6BprdNQUy5C41DFsgAg/s320/IM000039.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In Figure 2 we can see the two circuits with the various components in operation. The on-off switch push is in the image upside down so we can see the connections. By comparison we can see the LED as the speed controller. Sometimes the best solutions are the simplest ones.&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;&quot; title=&quot;Click for alternate translations&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/67853017144869467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/12/sometimes-best-solutions-are-simplest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/67853017144869467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/67853017144869467'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/12/sometimes-best-solutions-are-simplest.html' title='Sometimes the best solutions are the simplest ones.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1H69X-zFxA_UMDYXy4nPHfFWdDEdxqnosRz5lWjY0JXlH7M9ESF6NLmm_7M2Ts0lsYvoI3vGnwbw46_tTUKR9NAd3UkHz9z9w-vudqrbv0YSQTxYmyOjB3XC6NJA76LCKTP9RV0s4g/s72-c/SwitchPushDPST.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-1661143883747756735</id><published>2010-11-29T21:27:00.000+00:00</published><updated>2010-11-29T21:27:42.713+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Parts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><title type='text'>The ACS712 Low Current Sensor Breakout has just arrived.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEEYlc7fnA7P8TuqvSU9LUI6KOmteZsvCB5uTQ7InjlOmG4BUxrqv_oOMncEXpiB2-sF55rgbwHsKqS8C-02LMLRBF3_dV-EqYdXAXn-Xx-rJbUqq_PPYw2SC6PQJ273llg4u2WL21Rw/s1600/IM000031.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEEYlc7fnA7P8TuqvSU9LUI6KOmteZsvCB5uTQ7InjlOmG4BUxrqv_oOMncEXpiB2-sF55rgbwHsKqS8C-02LMLRBF3_dV-EqYdXAXn-Xx-rJbUqq_PPYw2SC6PQJ273llg4u2WL21Rw/s320/IM000031.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As I have mentioned before in a previous &lt;a href=&quot;http://blog.mobileapes.com/2010/11/brushless-motors-and-speed-controllers.html&quot;&gt;post&lt;/a&gt;, in order to make working the speed controllers it is necessary to initialize them first. This requires that previously the main board (Seeeduino Mega board) has been switched on, as it is the main board that makes the initialization. This procedure gives no problems when the sequence between the connections of the main board and the speed controllers is respected. However, if for any reason the main board have been previously switched on and after that it is switched off and then switched on again, the initialization happens twice even the speed controllers have already been initialized. This is because the status of the controllers it is not known and thus the motors can run up to the maximum speed. Therefore one needs a current sensor to detect whether the speed controllers are either switched on or off. I have&amp;nbsp; selected the sensor &quot;ACS712 Low Current Sensor Breakout&quot; which can be seen in the picture above. More information about this sensor can be found on page of its &lt;a href=&quot;http://www.sparkfun.com/products/8883&quot;&gt;manufacturer&lt;/a&gt;. One of its advantage is that one can use it for example, to monitorize the power consumption of motors.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/1661143883747756735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/acs712-low-current-sensor-breakout-has.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/1661143883747756735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/1661143883747756735'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/acs712-low-current-sensor-breakout-has.html' title='The ACS712 Low Current Sensor Breakout has just arrived.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEEYlc7fnA7P8TuqvSU9LUI6KOmteZsvCB5uTQ7InjlOmG4BUxrqv_oOMncEXpiB2-sF55rgbwHsKqS8C-02LMLRBF3_dV-EqYdXAXn-Xx-rJbUqq_PPYw2SC6PQJ273llg4u2WL21Rw/s72-c/IM000031.JPG" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-6096608578448707179</id><published>2010-11-26T22:40:00.002+00:00</published><updated>2011-01-14T21:27:46.000+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><title type='text'>How to convert a string of Euler angles characters read by the 9DOF Razor IMU board into numeric values.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;To guide the quadcopter in the space I will use the 9DOF Razor IMU board with the 9 Degree of Measurement Attitude and Heading Reference System (AHRS) &lt;a href=&quot;http://code.google.com/p/sf9domahrs/&quot;&gt;code base&lt;/a&gt;. This board with AHRS code has the advantage of doing all the calculations and corrections for me. All I need to do is work out the interface. With the code one can chooses three options for receiving the data according to the constants that we define. If one sets the defined value &quot;PRINT_DCM&quot; to 1 then one will print the whole &lt;a href=&quot;http://gentlenav.googlecode.com/files/DCMDraft2.pdf&quot;&gt;direction cosine matrix&lt;/a&gt;. If one sets the defined value &quot;PRINT_ANALOG&quot; to 1 then one will print the analog raw data. If one sets the defined value &quot;PRINT_EULER&quot; to 1 then one will print the &lt;a href=&quot;http://gentlenav.googlecode.com/files/EulerAngles.pdf&quot;&gt;Euler angles&lt;/a&gt; roll, pitch and yaw. These options are selected in the AHRS code before being compiled.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;But first one needs to get the data in a format that can then be used by the Seeeduino Mega board to do the calculations to orient and stabilize the quadcopter. Reading the stream data from the 9DOF Razor IMU to the Seeeduino Mega board is a simple task and it has been shown in a previous &lt;a href=&quot;http://blog.mobileapes.com/2010/11/read-9dof-razor-imu-data-via-seeeduino.html&quot;&gt;post&lt;/a&gt; in which the data was transferred via a serial connection between the two boards - the diagram of the assembly can be seen in the image of the this previous &lt;a href=&quot;http://blog.mobileapes.com/2010/11/read-9dof-razor-imu-data-via-seeeduino.html&quot;&gt;post&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The data that I choose consist of the Euler angles roll, pitch and yaw and are sent by the 9DOF Razor IMU board sequentially in a text line. The line has the following format: &quot;!ANG:0.00,0.00,0.00\r\n&quot;. To use the angles are necessary to split the line and then convert the numeric characters string parts to a numeric value (in this case a floating point number). After several failed attempts to read stream data sequentially I discovered that if I did not blocking the serial reads until the 9DOF Razor IMU board send the data often do not find the end of the text line which results in incorrect values and buffer overflow problems. To solve the problem of the serial reads may block permanently due to faulty connection with the 9DOF Razor IMU board was added a timeout. If at the end of the timeout has not been read the line the program continues its execution whiles keeping the previous angles values. This, procedure is important because if the Seeeduino Mega board lost the connection with 9DOF Razor IMU board the program can predicts code for example that here the motors are turned off and is activated a parachute, that save the quadcopter from crashing.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the following sketch we can check the path followed to obtain the Euler angles in a numerical format from the 9DOF Razor IMU board.&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px; width: 96%;&quot;&gt;&lt;code&gt;#define TIMEOUT 100

// { roll, pitch, yaw }
float angles[3] = {0.0, 0.0, 0.0};

char read_char() {
  unsigned long starttime = millis();
  do {
    if(Serial1.available() &amp;gt; 0)
      return((char)Serial1.read());
  } while((millis() - starttime) &amp;lt; TIMEOUT);
  return NULL;
}

void get_angles() {
  for(int n=0; n&amp;lt;3; n++) {
    char buffer[9];
    int received = 0;
    char ch;
    do {
      if((ch = read_char()) == NULL) return;
    } while(ch != &#39;,&#39; &amp;amp;&amp;amp; ch != &#39;\r&#39; &amp;amp;&amp;amp; (buffer[received++] = ch));   
    buffer[received] = &#39;\0&#39;;
    angles[n] = atof(buffer);
  }
}

void read_9dofahrs() {
  char beginstr[6] = {&#39;!&#39;,&#39;A&#39;,&#39;N&#39;,&#39;G&#39;,&#39;\:&#39;,&#39;\0&#39;};
  for(int i=0; i&amp;lt;5; i++)
    if(read_char() != beginstr[i]) return;
  get_angles();
}

void setup() {
  Serial.begin(57600);
  Serial1.begin(57600);
}

void loop() {
  read_9dofahrs();

  Serial.print(angles[0]);
  Serial.print(&quot; | &quot;);
  Serial.print(angles[1]);
  Serial.print(&quot; | &quot;);
  Serial.print(angles[2]);
  Serial.println(&quot;&quot;);
}&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The result of this sketch can be seen in the following figure.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVnMmnOFhhGxegF6e35m8GDwFruIVKHr5DJhoQtE39go8g08mXERuqlM9b6QIZBQTkh0zO_YMFTbLC6I3MdyXzhn45tM3TfJUStjrO-vnbzCiYDxVvW4cJ5sWAGJzmgQmBKd12SuRJvg/s1600/read_euler_angles.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVnMmnOFhhGxegF6e35m8GDwFruIVKHr5DJhoQtE39go8g08mXERuqlM9b6QIZBQTkh0zO_YMFTbLC6I3MdyXzhn45tM3TfJUStjrO-vnbzCiYDxVvW4cJ5sWAGJzmgQmBKd12SuRJvg/s320/read_euler_angles.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;This short sketch will then be added to the main program that will control the stabilization and orientation in space of the quadcopter. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/6096608578448707179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-convert-string-of-euler-angles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6096608578448707179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6096608578448707179'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-convert-string-of-euler-angles.html' title='How to convert a string of Euler angles characters read by the 9DOF Razor IMU board into numeric values.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVnMmnOFhhGxegF6e35m8GDwFruIVKHr5DJhoQtE39go8g08mXERuqlM9b6QIZBQTkh0zO_YMFTbLC6I3MdyXzhn45tM3TfJUStjrO-vnbzCiYDxVvW4cJ5sWAGJzmgQmBKd12SuRJvg/s72-c/read_euler_angles.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-2894634291987836250</id><published>2010-11-21T21:28:00.006+00:00</published><updated>2010-11-27T22:18:59.259+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><title type='text'>Brushless Motors and Speed Controllers.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTsJrkQCRcq02oJNGDy7HceD6qrErU8hLknqibHgOgvmANzWTvdDtV-BLvSqY_MgEcl2GyEgPWpEcx0z82kG_GcuuRhRbWpVp-Y_wdFxE-Kk4cTzxBXj2e7Ouihw8SCfKiwUdqkerMfg/s1600/IM000017.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTsJrkQCRcq02oJNGDy7HceD6qrErU8hLknqibHgOgvmANzWTvdDtV-BLvSqY_MgEcl2GyEgPWpEcx0z82kG_GcuuRhRbWpVp-Y_wdFxE-Kk4cTzxBXj2e7Ouihw8SCfKiwUdqkerMfg/s320/IM000017.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I am a beginner in electronics and although my skills are still basic, I am still searching documentation to see if I understand how I can properly put into operation one or more motors using the Arduino platform. In most open source quadcopter projects are almost always used the same speed controllers, however it should be possible to use any speed controller that works with a radio control (R/C).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I have been taking a look to several web sites and I have found that there were two main ways of how to communicate with speed controllers and put the motors running. One is to write a pulse width in microseconds directly to the i/o pins and the other is to use the Arduino &quot;&lt;a href=&quot;http://www.arduino.cc/en/Reference/Servo&quot;&gt;Servo&lt;/a&gt;&quot; library or similar libraries like &quot;&lt;a href=&quot;http://www.arduino.cc/playground/ComponentLib/Servo&quot;&gt;SoftwareServo&lt;/a&gt;&quot;. In a previous &lt;a href=&quot;http://blog.mobileapes.com/2010/04/control-all-four-motors-from-arduino.html&quot;&gt;post&lt;/a&gt; I have described how to put four motors running with the speed controllers that I have got for this project using the &quot;&lt;a href=&quot;http://www.arduino.cc/en/Reference/Servo&quot;&gt;Servo&lt;/a&gt;&quot; library. Although, I have not investigated in depth the internals of the library I have noticed that the motor control is achieved by sending pulses to the speed controller or alternatively by sending an angle that can varies between 0º and 180º (the angle is converted internally to a pulse width in microseconds). However and for the speed controllers I am using, if I only send pulses to the i/o pins that will not put the motors in operation since the speed controllers need be initialized before using. So, in order to have more information available, I have downloaded of the speed controller &lt;a href=&quot;http://data.robbe-online.net/robbe_pdf/P1122/P1122_1-8622.pdf&quot;&gt;specifications&lt;/a&gt; that I am using. After reviewing that document I have tried to develop an algorithm with the all steps to put the motors in operation. The procedure according to my adaptation of the document to initialize the speed controller is as follow (this procedure must be done before each use):&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ol&gt;&lt;li&gt;Connect the Arduino board to the computer via USB to power up the board and set the pulse width value of the stop position on output pin (the stop position must be within the range 800 us to 1700 us for my speed controller). This procedure is like move the throttle stick to the desired stop position, and switch on the transmitter.&lt;/li&gt;
&lt;li&gt;Connect now the flight battery to the speed controler. The motor responds with 2 x beep.&lt;/li&gt;
&lt;li&gt;Increase the pulse width value (microseconds) in one unit on output pin until the motor responds with 3 x beep (the full-throttle position must be at least 350 us greater than the stop position). This is like move the throttle stick to the desired full-throttle position.&lt;/li&gt;
&lt;li&gt;Set again the pulse width value of the stop position on output pin. This procedure is like move the throttle stick to the desired stop position.&lt;/li&gt;
&lt;li&gt;If you now increase the pulse width value on output pin the motor will start running. This is like move the throttle stick from the stop position towards full-throttle.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I tried to implement the two methods described above but the only one that worked was the method that uses the library &quot;&lt;a href=&quot;http://www.arduino.cc/en/Reference/Servo&quot;&gt;Servo&lt;/a&gt;&quot;. The implementation of the procedure is now shown:&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px; width: 96%;&quot;&gt;&lt;code&gt;/*

  Motors: 4 x ROXXY 2827-34
  ___ESC: 4 x Roxxy BL-Control 818
  _Board: Seeeduino Mega v1.1
  
  ATENTION: Do not put the propellers in motors because this
            sketch is not well tested and can cause damage.
  
*/
#include &amp;lt;Servo.h&amp;gt;

// Set the pulse width value of the stop position to mid-point (1250 us).
#define STOPPOSITION          800+(1700-800)/2
// The full-throttle position must be at least 350 us greater
// than the stop position (1600 us).
#define FULLTHROTTLEPOSITION  STOPPOSITION+350
// My upper speed limit for safety.
#define MAXTHROTTLEPOSITION   FULLTHROTTLEPOSITION-100
// Create servo object to control four motors
Servo escservos[4];
// Variable to store the temporarily pulse width value.
int usvalue = STOPPOSITION;

void programpositions() {
  Serial.println(&quot;Type the character [p] to program the Stop and&quot;);
  Serial.println(&quot;Full-Throttle positions after connect the flight&quot;);
  Serial.println(&quot;battery to the ESC&#39;s.&quot;);
  Serial.println(&quot;The motor responds with 2 x beep.&quot;);
  Serial.println(&quot;&quot;);
  Serial.println(&quot;Type the character:&quot;);
  Serial.println(&quot;[+] to increase the pulse width value.&quot;);
  Serial.println(&quot;[-] to decrease the pulse width value.&quot;);
  Serial.println(&quot;[0] to set the pulse width value to stop position.&quot;);
  
  // Wait until get the input from the user.
  while(Serial.available() &amp;lt;= 0) {
    // Set the pulse width value of the stop position on output pins.
    for(int s=0; s&amp;lt;4; s++)
      escservos[s].writeMicroseconds(STOPPOSITION);
  }
  
  char ch = Serial.read();
  if(ch == &#39;p&#39;) {
    // Increase the pulse width value in one unit on output pins.
    // Exactly after a pulse width of the 350 microseconds from
    // the stopping position the motor responds with 3 x beep.
    for(int us=STOPPOSITION; us&amp;lt;=FULLTHROTTLEPOSITION; us++)
      for(int s=0; s&amp;lt;4; s++)
        escservos[s].writeMicroseconds(us);
    delay(5000);
  }
}

void set_speeds(int servo, int usvalue) {
  escservos[servo].writeMicroseconds(usvalue);
}

void setup() {
  Serial.begin(9600);
  
  // Attaches the ESC&#39;s on pins 2, 3, 4 and 5 to the servo object.
  for(int s=0; s&amp;lt;4; s++)
    escservos[s].attach(s+2, STOPPOSITION, FULLTHROTTLEPOSITION);
  
  programpositions();
}

void loop() {
  if(Serial.available()) {
    char ch = Serial.read();
    if(ch == &#39;+&#39;) {
      // Increase the pulse width value.
      // The motor only starts running after increased up to 40 us.
      usvalue++;
      if(usvalue &amp;gt; MAXTHROTTLEPOSITION)
        usvalue = MAXTHROTTLEPOSITION;
    } else if(ch == &#39;-&#39;) {
      // Decrease the pulse width value.
      usvalue--;
      if(usvalue &amp;lt; STOPPOSITION)
        usvalue = STOPPOSITION;
    } else if(ch == &#39;0&#39;) {
      // Set the pulse width value to the stop position.
      usvalue = STOPPOSITION;
    }
    Serial.println(usvalue);
  }
  for(int s=0; s&amp;lt;4; s++)
    set_speeds(s, usvalue);
}&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This implementation works very well for my speed controllers, but for other speed controllers the implementation will probably be different. The difference to the previous &lt;a href=&quot;http://blog.mobileapes.com/2010/04/control-all-four-motors-from-arduino.html&quot;&gt;post&lt;/a&gt; is that instead using the value of the angles, I have used the pulse width value in microseconds and the delay after sending the angle has been removed. One immediate problem is that the Arduino board must always be connected before the speed controller which requires that board will check if the speed controller is switched on or off. If the speed controller is already connected and initialized and if for any reason you switched off the board and switched it on again, the motor can speed up to full speed because the speed controller was already set up, but as the board does not recognize it, it will make a new initialization. Therefore it is necessary to send a character to do or not the initialization of the speed controller. To solve this problem it is necessary a current sensor which will check whether the speed controller is switched on or off.&lt;/div&gt;&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0cm;&quot;&gt;&lt;/div&gt;&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0cm;&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/2894634291987836250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/brushless-motors-and-speed-controllers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2894634291987836250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2894634291987836250'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/brushless-motors-and-speed-controllers.html' title='Brushless Motors and Speed Controllers.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTsJrkQCRcq02oJNGDy7HceD6qrErU8hLknqibHgOgvmANzWTvdDtV-BLvSqY_MgEcl2GyEgPWpEcx0z82kG_GcuuRhRbWpVp-Y_wdFxE-Kk4cTzxBXj2e7Ouihw8SCfKiwUdqkerMfg/s72-c/IM000017.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-5345075424544993593</id><published>2010-11-17T23:36:00.000+00:00</published><updated>2010-11-17T23:36:09.530+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><title type='text'>How to Upgrade 9DOF Razor IMU Test Firmware.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;When I got the 9DOF - Razor IMU board I tried to upgrade the &quot;Test Firmware&quot; using the &quot;Makefile&quot; from the zip file but without success. So I sent an email to the Sparkfun tech support for them to verify what I was doing wrong. Today I finally got the answer and the best way to upgrade the firmware is upgraded manually.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The first step is to connect the 9DOF - Razor IMU board to FTDI Basic Breakout - 3.3V board following the diagram showed in Figure 1 from the post &quot;&lt;a href=&quot;http://blog.mobileapes.com/2010/11/how-to-upload-9dof-ahrs-code.html&quot;&gt;How to upload 9DOF AHRS code&lt;/a&gt;&quot;. The second step is download the latest &lt;a href=&quot;https://github.com/a1ronzo/SparkFun-9DOF-Razor-IMU-Test-Firmware/tree/master/9DOF-v18/&quot;&gt;code&lt;/a&gt; from the git repository and execute the following commands (the commands were executed in a terminal on a machine with the Linux OS):&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px; width: 96%;&quot;&gt;&lt;code&gt;$ mkdir tmp
$ cd tmp
$ wget --no-check-certificate https://github.com/a1ronzo/\
SparkFun-9DOF-Razor-IMU-Test-Firmware/raw/master/9DOF-v18/9DOF-v18.zip
$ unzip 9DOF-v18.zip
$ make all
$ avrdude -p atmega328p -P /dev/ttyUSB0 -c stk500v1 -b 57600 \
-U flash:w:main.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be
         performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file &quot;main.hex&quot;
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (9156 bytes):

Writing | ################################################## | 100% 2.99s

avrdude: 9156 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 9156 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.28s

avrdude: verifying ...
avrdude: 9156 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Open now the Arduino IDE and click on &quot;Serial Monitor&quot; icon or from the &quot;Tools&quot; menu select the item &quot;Serial Monitor&quot;. Set the baud rate to 38400 and verify if the &quot;9DOF IMU Firmware v18&quot; menu is showed (Figure 1).&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7eSeYtfYIB_z0FE4EXtD3r9282wG2JKma8nhjmh1a1o8khRNgU0F0eWdhbCMg1jNzXLAnrOgReIYS_X1EFKK0THGwdqzjlj9AHUYsZKVQrOQfF6gvN70UWoccDH_SQsd0xW5vMs7tZQ/s1600/ScreenshotRead9DOFRazor02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7eSeYtfYIB_z0FE4EXtD3r9282wG2JKma8nhjmh1a1o8khRNgU0F0eWdhbCMg1jNzXLAnrOgReIYS_X1EFKK0THGwdqzjlj9AHUYsZKVQrOQfF6gvN70UWoccDH_SQsd0xW5vMs7tZQ/s320/ScreenshotRead9DOFRazor02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;It&#39;s not straightforward to save the previous firmware directly from the AVR.  It&#39;s easier to keep the older .hex files around if I need them.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/5345075424544993593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-upgrade-9dof-razor-imu-test.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5345075424544993593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5345075424544993593'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-upgrade-9dof-razor-imu-test.html' title='How to Upgrade 9DOF Razor IMU Test Firmware.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7eSeYtfYIB_z0FE4EXtD3r9282wG2JKma8nhjmh1a1o8khRNgU0F0eWdhbCMg1jNzXLAnrOgReIYS_X1EFKK0THGwdqzjlj9AHUYsZKVQrOQfF6gvN70UWoccDH_SQsd0xW5vMs7tZQ/s72-c/ScreenshotRead9DOFRazor02.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-6333999953108214327</id><published>2010-11-10T20:43:00.001+00:00</published><updated>2010-11-17T23:40:27.888+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><title type='text'>How to upload 9DOF AHRS code.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjrXXS24slV9DNQ3qf3aEYCo8RMMXBFJ_cWu6Pzuwn2BYWbW-l2_G-X5lanWrnD5secX418Qyr-3dsgM41mwB1gUxqMAIfFzOVub531BtAtwEKU8PFH99WHSQptLdl9toaCar74gTNrg/s1600/9DOFrazorFTDIBasic33V.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjrXXS24slV9DNQ3qf3aEYCo8RMMXBFJ_cWu6Pzuwn2BYWbW-l2_G-X5lanWrnD5secX418Qyr-3dsgM41mwB1gUxqMAIfFzOVub531BtAtwEKU8PFH99WHSQptLdl9toaCar74gTNrg/s320/9DOFrazorFTDIBasic33V.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The first step is to connect the 9DOF - Razor IMU board to FTDI Basic Breakout - 3.3V board following the diagram showed in Figure 1. Then download the latest &lt;a href=&quot;http://sf9domahrs.googlecode.com/files/SF9DOF_AHRS_1_1.zip&quot;&gt;code&lt;/a&gt; from the sf9domahrs Google Code repository and uncompress the zip file. Change to the directory SF9DOF_AHRS, and open the SF9DOF_AHRS.pde file in Arduino IDE (0021).&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoaA0YnlCcAW51X1S045EvYw8TgfgLs7euaCuZHUN3iyBUe0N-nUPoi_hDfNVSQ6G3MjiBDSf2aXjArPAW0q5NC6JAQYJxJdIKUEDimk3WYnj3UVxe2NKsi0leP9MsSA56ECKEF18WRw/s1600/SF9DOF_AHRS_pde.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoaA0YnlCcAW51X1S045EvYw8TgfgLs7euaCuZHUN3iyBUe0N-nUPoi_hDfNVSQ6G3MjiBDSf2aXjArPAW0q5NC6JAQYJxJdIKUEDimk3WYnj3UVxe2NKsi0leP9MsSA56ECKEF18WRw/s320/SF9DOF_AHRS_pde.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After opening the file will be visible seven tabs (SF9DOF_AHRS, ADC, Compass, DCM, I2C, Output, Vector and matrix) like as shown in Figure 2. Select from the &quot;Tools&quot; menu and then from the &quot;Board&quot; submenu the board Arduino Pro or Pro Mini (3.3 V, 8Mhz) w/ AtMega328 which corresponds with the 9DOF - Razor IMU board.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMKn6_g8KX7x2pu1AqxzRxJjuLhVq2oOrz558kVnGiiaymFXFHrU_cgFGZ-XDrTdty5Lz_KYegrxy7bgifDkZxwHM4QYxDUpaPuP04eV05bNrZyOIJy9fV-UYkVfNhzs6eCY5KnpxxUQ/s1600/SF9DOF_AHRS_SerialMonitor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMKn6_g8KX7x2pu1AqxzRxJjuLhVq2oOrz558kVnGiiaymFXFHrU_cgFGZ-XDrTdty5Lz_KYegrxy7bgifDkZxwHM4QYxDUpaPuP04eV05bNrZyOIJy9fV-UYkVfNhzs6eCY5KnpxxUQ/s320/SF9DOF_AHRS_SerialMonitor.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 3 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Compile the code with the Arduino IDE and upload it to the 9DOF - Razor IMU board. Open the Serial monitor, set the baud rate to 57600 and verify if the data are coming (Figure 3), and voila, it&#39;s everything that has to do with it.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/6333999953108214327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-upload-9dof-ahrs-code.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6333999953108214327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6333999953108214327'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/how-to-upload-9dof-ahrs-code.html' title='How to upload 9DOF AHRS code.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjrXXS24slV9DNQ3qf3aEYCo8RMMXBFJ_cWu6Pzuwn2BYWbW-l2_G-X5lanWrnD5secX418Qyr-3dsgM41mwB1gUxqMAIfFzOVub531BtAtwEKU8PFH99WHSQptLdl9toaCar74gTNrg/s72-c/9DOFrazorFTDIBasic33V.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-8801280270937759580</id><published>2010-11-06T22:24:00.003+00:00</published><updated>2010-11-06T22:35:15.938+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><title type='text'>Read 9DOF Razor IMU data via Seeeduino Mega board (Arduino Mega clone).</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXmpZTeJRxujKXExpcBEC4LXeo9o3ZSaS601P_GT7zkwkhQIkfH4e4sfMaFDsZzXjkOfZJVSZWQyioaYTSI_gR_TV5w3nm9-i6PIP5w4JBEGXsqbWYF_ct9NFdKersUiIEVBghkgi1oQ/s1600/Read9DOFRazorViaSeeeduinoMega.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXmpZTeJRxujKXExpcBEC4LXeo9o3ZSaS601P_GT7zkwkhQIkfH4e4sfMaFDsZzXjkOfZJVSZWQyioaYTSI_gR_TV5w3nm9-i6PIP5w4JBEGXsqbWYF_ct9NFdKersUiIEVBghkgi1oQ/s320/Read9DOFRazorViaSeeeduinoMega.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Read the data from the 9DOF Razor IMU board is very simple, but first I had to solder the pin-headers on the Seeeduino Mega board since the board is&amp;nbsp;not sold with the pin-headers soldered, and then I connected the Seeeduino Mega board to the 9DOF Razor IMU board according to the diagram in Figure 1. Below is shown the sketch that allows you to read the data, as can be seen is short and simple.&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px; width: 96%;&quot;&gt;&lt;code&gt;/*

Read 9DOF Razor IMU data via Seeeduino Mega board (Arduino Mega clone).

1. Connect the jumper wires between the two boards
   according to the following table:

9DOF Razor IMU | Seeeduino Mega
---------------|--------------------
TX0............|RX1..(pin 18).......
RX1............|TX1..(pin 19).......
3.3V...........|3V3.................
GND............|GND.................
---------------|--------------------

2. Connect the USB Cable between the PC and the Seeeduino Mega board.
3. Select the &quot;Board&quot; item from the &quot;Tools&quot; top menu and check the radio
   button Arduino Mega (ATmega1280). 
4. Upload this Sketch to the Seeeduino Mega board
5. Open Serial Monitor and set the Baud rate to 57600.
6. Send the character &#39;0&#39; to view the 9DOF Razor IMU Menu.

9DOF IMU Test Firmware v15
==========================
[1]Accelerometer: ADXL345
[2]Magnetometer: HMC5843
[3]Gyroscope: LPR530 and LY530
[4]Raw
[5]Self Test

 */

void setup() {
  Serial.begin(57600);
  Serial1.begin(38400);  // Baud rate fixed....
  Serial1.print(4);      // Begin with Raw data
}

void loop() {
  if(Serial.available() &amp;gt; 0) {
    int incomingByte = Serial.read();
    /*
       DEC - BYTE
         0 - 48
         1 - 49
         2 - 50
         3 - 51
         4 - 52
         5 - 53
    */
    if(incomingByte &amp;gt;= 48 &amp;amp;&amp;amp; incomingByte &amp;lt;= 53)
        Serial1.print(incomingByte, BYTE);
  }
  
  if(Serial1.available() &amp;gt; 0)
    Serial.print(Serial1.read(), BYTE);
}&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After making the upload of the sketch, for the Seeeduino Mega Board, I opened the serial monitor and selected the baud rate to 57600 and&amp;nbsp;can immediately observe the raw data to arrive (Figure 2).&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm0rxzkoFZ3bbs9Dg128dVRv4e4wKYU4wxzoocvVjQ6mWmM8V5F1a_NXPqzESrg_tVlpC0bWbwpkrMi94CRaEHmdZes2-xJMGCQvi2BckN6dl7VhEohSlXEjN4758uluQOWEtwdJjYog/s1600/ScreenshotRead9DOFRazor01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm0rxzkoFZ3bbs9Dg128dVRv4e4wKYU4wxzoocvVjQ6mWmM8V5F1a_NXPqzESrg_tVlpC0bWbwpkrMi94CRaEHmdZes2-xJMGCQvi2BckN6dl7VhEohSlXEjN4758uluQOWEtwdJjYog/s320/ScreenshotRead9DOFRazor01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;To view the menu with more options, send the character &quot;0&quot;. More options available can be seen in the sketch above. If you choose the Self Test (#5 in the Menu) and you always get a &quot;MAG: BAD&quot; message don&#39;t worry, probably your 9DOF Razor IMU board has no problem. Try upload the sketch, but where the first menu item to send is #5 (Self Test) instead of #4 (Raw) and you will see that the result will be different.&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/8801280270937759580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/read-9dof-razor-imu-data-via-seeeduino.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/8801280270937759580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/8801280270937759580'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/read-9dof-razor-imu-data-via-seeeduino.html' title='Read 9DOF Razor IMU data via Seeeduino Mega board (Arduino Mega clone).'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXmpZTeJRxujKXExpcBEC4LXeo9o3ZSaS601P_GT7zkwkhQIkfH4e4sfMaFDsZzXjkOfZJVSZWQyioaYTSI_gR_TV5w3nm9-i6PIP5w4JBEGXsqbWYF_ct9NFdKersUiIEVBghkgi1oQ/s72-c/Read9DOFRazorViaSeeeduinoMega.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-3068182521036311658</id><published>2010-11-01T22:52:00.009+00:00</published><updated>2010-11-01T23:21:37.192+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><title type='text'>Now I can say that the frame is finished.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVJkl20LSglGyas75waioIIuXRr4nIE81r5UmX2kGFnTi66HgT69Jfj99OjFQauFdU7ZLyCPVcbUBd5Z3oh7zHaFUvsCwiikktbHRfvntyDN7lpHSmmzs2pzZtAlEUx651Qv01RdWSPQ/s320/IM000002.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVJkl20LSglGyas75waioIIuXRr4nIE81r5UmX2kGFnTi66HgT69Jfj99OjFQauFdU7ZLyCPVcbUBd5Z3oh7zHaFUvsCwiikktbHRfvntyDN7lpHSmmzs2pzZtAlEUx651Qv01RdWSPQ/&quot;&gt;Figure 1 &lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the figure 1 can be seen the finished frame. The sides (white square mesh) of the central box that are not fixed to show the interior. I&#39;m not sure the final weight of the frame without the components since I do not have a scale to weigh the frame with rigor. However, I can say that is extremely lightweight.&amp;nbsp;Another aspect of the design I wanted to see was the box with all the plastic parts in black. The reason that I chose the white plastic instead of black plastic material, is because the black plastic is more expensive than the white plastic.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJKeEey5QJkshNl7UGpy_g1ny9pKJEEeSszJW89EzD63utanZ3yEvacmDfxSXn1qQC9LjNjwBfRzy75u2NR2awIjwbk9liiPvdaCMKW1JCjtngrwqnVvr9oi5wFHlNVw8o8ua-Lh65g/s320/IM001007.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJKeEey5QJkshNl7UGpy_g1ny9pKJEEeSszJW89EzD63utanZ3yEvacmDfxSXn1qQC9LjNjwBfRzy75u2NR2awIjwbk9liiPvdaCMKW1JCjtngrwqnVvr9oi5wFHlNVw8o8ua-Lh65g/&quot;&gt;Figure 2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the figure 2 we can see the landing gear finalized. I opted for a rigid&amp;nbsp;structure that is easy to build, but is not a good solution since there is no damping of the structure during landing. So the landing must be extremely smooth to avoid damaging the frame.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEinmkj_HHycxfJygKBdpzlYY4UqF8wNNoZEVw6ZFe68EZIXm2mz-v4jNFFQjz_nCiUJ40lv0hbgP3GV3biMTzk22Sj9Lb8nOch0n26yUjFK_YL2okBXEmgG4CYl2uUjOjCQ26cWUO-w/s320/IM001023.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEinmkj_HHycxfJygKBdpzlYY4UqF8wNNoZEVw6ZFe68EZIXm2mz-v4jNFFQjz_nCiUJ40lv0hbgP3GV3biMTzk22Sj9Lb8nOch0n26yUjFK_YL2okBXEmgG4CYl2uUjOjCQ26cWUO-w/&quot;&gt;Figure 3&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the figure 3 we can see the frame on its side to see the underside and is now clearly visible the landing gear. The landing gear is held rigid by tension with the green line from the kites.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPWUKUg1IAyl5uJ-YJtavpuBFLjuatl0NI5x7MHTqXGhkiWU9v_N2Ii0REh3pPGJWRJqAUfeZ9VX5JnDXMUvQuCrBEPD3lF-qkVEohNT1CbIfE6JAslVEH5pVOsNfHC4vOLWEO6_sYnA/s320/IM001024.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPWUKUg1IAyl5uJ-YJtavpuBFLjuatl0NI5x7MHTqXGhkiWU9v_N2Ii0REh3pPGJWRJqAUfeZ9VX5JnDXMUvQuCrBEPD3lF-qkVEohNT1CbIfE6JAslVEH5pVOsNfHC4vOLWEO6_sYnA/&quot;&gt;Figure 4&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Finally, in the figure 4 we can see the 9DOF Razor IMU board already on the place at the base of the central box. The next step is to link all the components and start programming.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/3068182521036311658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/11/now-i-can-say-that-frame-is-finished.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/3068182521036311658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/3068182521036311658'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/11/now-i-can-say-that-frame-is-finished.html' title='Now I can say that the frame is finished.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVJkl20LSglGyas75waioIIuXRr4nIE81r5UmX2kGFnTi66HgT69Jfj99OjFQauFdU7ZLyCPVcbUBd5Z3oh7zHaFUvsCwiikktbHRfvntyDN7lpHSmmzs2pzZtAlEUx651Qv01RdWSPQ/s72-c/IM000002.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-7280049403484698307</id><published>2010-10-17T21:55:00.004+01:00</published><updated>2010-10-17T23:40:06.968+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Models"/><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><title type='text'>Missing parts to finish the frame.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdxvSTkcSZrGUgQyez2mHFjshp3sZxe1c2DFJ0tnojC98Cm4YkEoJrZ7dcudveAmcw13fsyciwX2SN_7_N3dTyWWsZmsPt88vQMk5k3yzWw6qu2WCnHSAIfMULHp9jhVtFGz_IYC_hw/s1600/newparts.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdxvSTkcSZrGUgQyez2mHFjshp3sZxe1c2DFJ0tnojC98Cm4YkEoJrZ7dcudveAmcw13fsyciwX2SN_7_N3dTyWWsZmsPt88vQMk5k3yzWw6qu2WCnHSAIfMULHp9jhVtFGz_IYC_hw/s320/newparts.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I finally ended up drawing the missing parts to finish the frame. The new&amp;nbsp;parts can be seen in the figure above. The part referenced by the letter&amp;nbsp;&quot;&lt;b&gt;a&lt;/b&gt;&quot; will serve to make the landing gear. After considering several solutions to the landing gear, I came to the conclusion that for now it is better to opt for a rigid structure rather than a solution with moving parts. The part referenced by the letter &quot;&lt;b&gt;b&lt;/b&gt;&quot; will serve to support the boards. I even thought about using plastic hex standoffs, but as the Seeeduino Mega board only has three holes it was not very stable. Finally, the part referenced by the letter &quot;&lt;b&gt;c&lt;/b&gt;&quot; will serve to make a plastic tensor for the yellow kite line with the&amp;nbsp;black nylon cable ties. This part will replace the current tensor since it uses a metal ring to tighten the kite line so it does not come off.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/7280049403484698307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/10/missing-parts-to-finish-frame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7280049403484698307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7280049403484698307'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/10/missing-parts-to-finish-frame.html' title='Missing parts to finish the frame.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdxvSTkcSZrGUgQyez2mHFjshp3sZxe1c2DFJ0tnojC98Cm4YkEoJrZ7dcudveAmcw13fsyciwX2SN_7_N3dTyWWsZmsPt88vQMk5k3yzWw6qu2WCnHSAIfMULHp9jhVtFGz_IYC_hw/s72-c/newparts.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-2183919042103300795</id><published>2010-10-05T23:54:00.003+01:00</published><updated>2010-10-07T21:58:57.589+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><title type='text'>The frame building is almost done.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv_nR9t6rLw_FP7kC37Ho8AXDLyZ-nIK_qnvwVFSYENd9jmZDBoqkoCdtfwZD0CNMKHQ0O_B5sncJclmk2SdJ9DHPFKdVn8hvy6Qqo78ENGZUoaB77vLGnCOdCdKBvM6D2JBRwZLIsbA/s320/IM000953.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As can be checked through the picture, the frame is almost ready. The original draft was changed a bit very recently. In the figure 1, we can see that three of the four motors are already put in the right place. At the point where the motor was not placed you can see the motor mount (black piece with screws not screwed). In the union between the plastic parts that form the structure where the engine will be screwed is placed a square of rubber to prevent the motion of this structure. The union of the whole frame is made with black nylon cable ties and kite line.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhccEp9VtrD2t2nNBV6A9v3J4GDl1E4unxgvIuA7wmmln9ExpgUpYWaz0cwz54uFfzJNdQK3F03qHg5wPFVQ-Ph33Kd68f8YOZwUNexi08GKOLNFQAWQI-z-wo5LUaYY-YSxYxHeOYBbQ/s320/IM000964.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;The walls of the central box (Figure 2) are made with square mesh like the one used in balconies, terraces and garden fencing. The mesh is also attached to the carbon tubes with black nylon cable ties.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Aa86BqNWq8Kx6xNkoYr0wxYbtkXTQW5t3n1yISgBWAcUN-xP3ShSg3StpMvdFFzgcIeyj8Kx1GEQdxijpCE72McT0NYW3DXBzIi9oS5tWkaTxGsEtipJOVmd16ttCGEM_Ti46zJhbQ/s320/IM000956.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Figure 3 shows in more detail the central box where all the electronics will be put in. We can also see the speed controller already placed inside the center box and attached to the square mesh wall. The landing gear of the original project has also been modified as it was too complex. A new simpler version has been planned. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/2183919042103300795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/10/frame-building-is-almost-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2183919042103300795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2183919042103300795'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/10/frame-building-is-almost-done.html' title='The frame building is almost done.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv_nR9t6rLw_FP7kC37Ho8AXDLyZ-nIK_qnvwVFSYENd9jmZDBoqkoCdtfwZD0CNMKHQ0O_B5sncJclmk2SdJ9DHPFKdVn8hvy6Qqo78ENGZUoaB77vLGnCOdCdKBvM6D2JBRwZLIsbA/s72-c/IM000953.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-5957074370848978023</id><published>2010-09-30T22:01:00.005+01:00</published><updated>2010-10-02T19:51:54.324+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Parts"/><title type='text'>The clone of the Arduino Mega board just arrived.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1cVFo4RIhc6YysWCqM8otHGw1gwNr9yT8kgiKyFiN-PD3EzZnSWybzGgOfgxl65p_gHW2fJbfnNlLdm55u0bBrFLQmcPolaHozUMTEd2gsPE82saPWvtuwPzxTVVz5vVCIoZ7AH7vNg/s1600/IM000944.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span id=&quot;goog_510589432&quot;&gt;&lt;/span&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1cVFo4RIhc6YysWCqM8otHGw1gwNr9yT8kgiKyFiN-PD3EzZnSWybzGgOfgxl65p_gHW2fJbfnNlLdm55u0bBrFLQmcPolaHozUMTEd2gsPE82saPWvtuwPzxTVVz5vVCIoZ7AH7vNg/s320/IM000944.JPG&quot; width=&quot;320&quot; /&gt;&lt;span id=&quot;goog_510589433&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I just got the clone of the &lt;a href=&quot;http://arduino.cc/en/Main/ArduinoBoardMega&quot;&gt;Arduino Mega&lt;/a&gt; board that I have ordered to solve the problem of how to connect more than one Serial device. After some research, I have concluded that the best choice is the Seeeduino Mega board because of it is totally compatible with most Arduino Shields, it is flat form factor and small (similar size to the Arduino Duemilanove board, but 30% smaller than the Arduino Mega), it has 4 UARTs (hardware serial ports) and 70 digital input/output pins, and it is not very expensive. Meanwhile it has the disadvantage that one has to solder the pin-headers.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In this &lt;a href=&quot;http://www.seeedstudio.com/depot/images/product/megacomp.jpg&quot;&gt;link&lt;/a&gt; you can see the differences between the Seeeduino Mega and the Arduino Mega board.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/5957074370848978023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/clone-of-arduino-mega-board-just.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5957074370848978023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5957074370848978023'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/clone-of-arduino-mega-board-just.html' title='The clone of the Arduino Mega board just arrived.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1cVFo4RIhc6YysWCqM8otHGw1gwNr9yT8kgiKyFiN-PD3EzZnSWybzGgOfgxl65p_gHW2fJbfnNlLdm55u0bBrFLQmcPolaHozUMTEd2gsPE82saPWvtuwPzxTVVz5vVCIoZ7AH7vNg/s72-c/IM000944.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-7446083586355304377</id><published>2010-09-27T23:08:00.003+01:00</published><updated>2010-09-28T19:19:10.554+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><title type='text'>Start assembling the new frame.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I have started to assemble another version for the frame. Hope this will be the last one :-). The first step was to cut the carbon tubes and to do this ,I used a plastic ruler and a saw with a small blade to cut metal. To adjust the sizes of the tubes I used a rasp tool for metal and a fine grit sandpaper for metal.&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE8AwI2gFFXhH0M0HA7usS1Bfa-2NHU_YIqi_Gxhe-G60vv4GmtRYbYNIepf0S0DMD-_o921Cns0l0dvwT6ficACilm5CX6FlxthN0u0OeZQmEMzk_BEVbQGUvxMexjMLEMNBq0fld_g/s320/IM000922.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The Figure 1 shows the work in progress and the tools, as well as several&amp;nbsp;carbon tubes already cut. It is also important to have at hand a vacuum cleaner to clean the carbon dust that is produced during the cutting and sanding and do not forget to put a mask because of dust.&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmwYxdw6AXutAJtyASsYVkkLoD7wE5g4KgtMnFtkxM243eUr-qZabovX99KNN9IITBHm4imGqjdEyVblE-M3qeWdlp1wL-QNYpM8z0hm4goXv2FnJ-vqzSowplnwjgSZRCixjF8XKX1A/s320/IM000928.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In Figure 2 we can see the bottom of the frame now with the plastic pieces placed in appropriate locations. &lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP8jA1FE1rUB9mFokiPE6ms6DtNmOsnplQQchmUUEEuuTAKUhrB6FX_oCTc82V6UQUGfIiMDwr8-9Nrtz8UTlROdEpFpcnYVLHUk_p0COcTrzJYPpX1HJr0ZhN_YwJRPNEhyphenhyphenXY7UZ85A/s320/IM000929.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the last figure (Figure 3) we can see the bottom and the top of the frame. Nowhere in the construction glue is used to connect the different parts. To keep the tubes attached to the pieces I used kite line (the green line in figure 2 and 3) and the white nylon cable ties. I will continue to assemble the frame. Hope it will be ready this&amp;nbsp;week! &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/7446083586355304377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/start-assembling-new-frame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7446083586355304377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7446083586355304377'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/start-assembling-new-frame.html' title='Start assembling the new frame.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE8AwI2gFFXhH0M0HA7usS1Bfa-2NHU_YIqi_Gxhe-G60vv4GmtRYbYNIepf0S0DMD-_o921Cns0l0dvwT6ficACilm5CX6FlxthN0u0OeZQmEMzk_BEVbQGUvxMexjMLEMNBq0fld_g/s72-c/IM000922.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-4617998236495901495</id><published>2010-09-20T22:34:00.014+01:00</published><updated>2010-09-22T20:56:24.430+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sensors"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketches"/><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>Read data from the 9 DOF Razor IMU via Arduino board.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After several problems with the original &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=9623&quot;&gt;9DOF Razor IMU board&lt;/a&gt;, I have finally got a board with no functional problems or bugs. The challenge we had to work around then was how to read the data from the board? So I decided do some research and found in this &lt;a href=&quot;http://www.chrisseto.com/wordpress/?p=224&quot;&gt;blog&lt;/a&gt; that there was a simple way to read data using the Arduino Duemilanove connected to the 9DOF Razor IMU board without requiring any additional cable as shown in Figure 1.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI5xsMRvZsatWc_l4aPQhRjjBS0_KIscLRDCg_g2E4afnFehqQF2mSFupsfYcr3-WDodWJXt_Ao1SjzS1v8tkqvG8YO0Wj8VOWDhYM20ZZ97nP3mbdEY0FnL-1_7KIv3CVA0MpIabhHw/s1600/interconnect_diagram_9DOFRazorIMU.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI5xsMRvZsatWc_l4aPQhRjjBS0_KIscLRDCg_g2E4afnFehqQF2mSFupsfYcr3-WDodWJXt_Ao1SjzS1v8tkqvG8YO0Wj8VOWDhYM20ZZ97nP3mbdEY0FnL-1_7KIv3CVA0MpIabhHw/s320/interconnect_diagram_9DOFRazorIMU.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The sketch to read the data from the 9DOF Razor IMU via Arduino Duemilanove is very short and simple as shown below.&lt;/div&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 10px; line-height: 14px; overflow: auto; padding: 5px; width: 96%;&quot;&gt;&lt;code&gt;/*

Read data from the 9DOF Razor IMU board via arduino duemilanove board.

1. Upload this Sketch to the Arduino board
2. Disconnect the USB cable from the PC. 
3. Connect the jumper wires between the two boards
   according to the following table:

9DOF Razor IMU | Arduino Duemilanove
---------------|--------------------
TX0............|TX1.................
RX1............|RX0.................
3.3V...........|3V3.................
GND............|GND.................
---------------|--------------------

4. Connect again the USB Cable to the PC.
5. Open Serial Monitor.
6. Send the character &#39;1&#39;.
7. Send the character &#39;0&#39; to view the 9DOF Razor IMU Menu.

*/

void setup() {
  Serial.begin(38400);
}

void loop() {
  if(Serial.available()) {
    Serial.print(Serial.read(), BYTE);
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After doing the upload of the sketch, and open the Serial Monitor, send a character between &#39;1&#39; and &#39;5&#39; followed by a &#39;0&#39; then a menu is shown (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGyPQ129bUU9JTpEFuoi7Y20xMBdO24dHYfKJIMcAZ8lgYi9_r7v7pIKXU7at3MKBQMzr4nZH_fZZ-qoCjOK89wS9c3EYos0IrI59B7ujRavsVOXmzPDNQQgIAG7K7gzUWNMW5KGRpIA/s1600/Sketch2Read9DOFRazorIMU.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGyPQ129bUU9JTpEFuoi7Y20xMBdO24dHYfKJIMcAZ8lgYi9_r7v7pIKXU7at3MKBQMzr4nZH_fZZ-qoCjOK89wS9c3EYos0IrI59B7ujRavsVOXmzPDNQQgIAG7K7gzUWNMW5KGRpIA/s320/Sketch2Read9DOFRazorIMU.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In the menu there are have five options: [1] Accelerometer (ADXL345), [2] Magnetometer (HMC5843), [3] Gyroscope (LPR530 and LY530), [4] Raw and [5] Self Test. For example, if you choose the option &quot;1&quot; and if you move the 9DOF Razor IMU board in any direction you will see on the Serial monitor the variation of the values for the aceleration&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The following video shows the 9DOF Razor IMU board connected to the Arduino board working hard (Sorry for the bad video quality!). Notice menu of the 9DOF Razor IMU board on the monitor of the laptop.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;265&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/J_lGfqP5OUU?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/J_lGfqP5OUU?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;320&quot; height=&quot;265&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;But unfortunately this sketch does not fit what I want. With the &lt;a href=&quot;http://arduino.cc/en/Main/ArduinoBoardDuemilanove&quot;&gt;Arduino Duemilanove&lt;/a&gt; only can be used a single Serial connection at a time. However, that problem can be solved by using software libraries.&amp;nbsp;One of the libraries is the &lt;a href=&quot;http://www.arduino.cc/en/Reference/SoftwareSerial&quot;&gt;SoftwareSerial library&lt;/a&gt; which allows the serial communication on any of the Duemilanove&#39;s digital pins. But, because it&#39;s not supported by hardware, the library has a few limitations. The other library is the &lt;a href=&quot;http://arduiniana.org/libraries/newsoftserial/&quot;&gt;NewSoftSerial library&lt;/a&gt; that emulates an additional serial port, allowing you to communicate with another Serial device. However, there is another Arduino board where you can use more than one connection, which is the &lt;a href=&quot;http://arduino.cc/en/Main/ArduinoBoardMega&quot;&gt;Arduino Mega&lt;/a&gt;. With the Arduino Mega is possible connect more three Serial devices. The last solution is more robust but, requires a further investment in a new board. So I&#39;ll have to take a look in the Arduino board &lt;a href=&quot;http://www.arduino.cc/playground/Main/SimilarBoards&quot;&gt;clones&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/4617998236495901495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/read-data-from-9dof-razor-imu-via.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4617998236495901495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4617998236495901495'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/read-data-from-9dof-razor-imu-via.html' title='Read data from the 9 DOF Razor IMU via Arduino board.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI5xsMRvZsatWc_l4aPQhRjjBS0_KIscLRDCg_g2E4afnFehqQF2mSFupsfYcr3-WDodWJXt_Ao1SjzS1v8tkqvG8YO0Wj8VOWDhYM20ZZ97nP3mbdEY0FnL-1_7KIv3CVA0MpIabhHw/s72-c/interconnect_diagram_9DOFRazorIMU.png" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-5199940310836205164</id><published>2010-09-14T22:01:00.005+01:00</published><updated>2010-09-15T19:19:49.078+01:00</updated><title type='text'>Building quadcopters for impatient people.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-es19FuCRSCJW-yVJ4DzY3J7YbDT2q43y_M1wXV_IS4DnlCJne-7UthHZ63q_xkhXEsRQxStT7K5fniqLEesL0OoIoiEBSU_bOrNW1uRKhGiVIrDpZO0sxijDWlLpC837seYv6DDeYw/s320/quadrotor-instructables.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Image from the &lt;a href=&quot;http://www.instructables.com/id/Quadrotor/&quot;&gt;instructables.com&lt;/a&gt; site.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;On Sunday I have received a newsletter from the website &quot;&lt;a href=&quot;http://instructables.com/&quot;&gt;Instructables.com&lt;/a&gt;&quot; and one of the articles was about a school class who made a fully functional quadcopter in only 4 weeks using the arduino board and standard RC equipment. All the stages of its construction can be followed on this &lt;a href=&quot;http://www.instructables.com/id/Quadrotor/&quot;&gt;page&lt;/a&gt; of the website &quot;&lt;a href=&quot;http://instructables.com/&quot;&gt;Instructables.com&lt;/a&gt;&quot;. The &lt;a href=&quot;http://www.instructables.com/id/Quadrotor/step23/Code/&quot;&gt;code&lt;/a&gt; is also available. The video of the quadcopter, also including other projects, can be viewed at this &lt;a href=&quot;http://techtv.mit.edu/collections/scolton/videos/8047-edgerton-center-engineering-design-class-2010-project-highlights&quot;&gt;link&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/5199940310836205164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/build-quadcopter-for-impatient.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5199940310836205164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/5199940310836205164'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/build-quadcopter-for-impatient.html' title='Building quadcopters for impatient people.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-es19FuCRSCJW-yVJ4DzY3J7YbDT2q43y_M1wXV_IS4DnlCJne-7UthHZ63q_xkhXEsRQxStT7K5fniqLEesL0OoIoiEBSU_bOrNW1uRKhGiVIrDpZO0sxijDWlLpC837seYv6DDeYw/s72-c/quadrotor-instructables.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-9162677847510092597</id><published>2010-09-13T19:52:00.005+01:00</published><updated>2010-09-14T21:13:18.406+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Theory"/><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>Fuzzy Logic Control.</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;265&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/YOKk8G_5aRA?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/YOKk8G_5aRA?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;320&quot; height=&quot;265&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;While I was looking for information about PID controllers I have found the so called &lt;a href=&quot;http://www.aptronix.com/fide/whatfuzzy.htm&quot;&gt;Fuzzy Logic&lt;/a&gt; method. Even it is a quite old method it has not been explored well enough. It can solve problems by using non-well-precised information, similarly to what happens when human brain has to make a decision. Thus, things like knowledge and daily experiences, coming for example from human feelings to temperature, light, etc, can be mapped into an abstract knowledgement such as exact numeric ranges as in this &lt;a href=&quot;http://www.havana7.com/dotfuzzy/usage.aspx&quot;&gt;C# code example&lt;/a&gt;. In the real world most of the systems have nonlinear behaviors or are difficult to linearize, so is it here that this methodology is an alternative to traditional control methods. On this &lt;a href=&quot;http://www.aptronix.com/fide/whyfuzzy.htm&quot;&gt;link&lt;/a&gt; you will find a more detailed explanation for its use. For myself it seems to be easier to understand and implement than a PID controller. I have found this &lt;a href=&quot;http://vision.middlebury.edu/%7Ewcmartin/files/fuzzy_control_robot.pdf&quot;&gt;paper&lt;/a&gt; with a practical application of that method to an autonomous robot obstacle avoidance, but one can be found many more examples of applications in different areas.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After a search on google I have found several libraries to implement this methodology:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://ffll.sourceforge.net/&quot;&gt;FFLL - Free Fuzzy Logic Library&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/fuzzy-lite/&quot;&gt;Fuzzy-lite&lt;/a&gt; (Watch the video above)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.havana7.com/dotfuzzy/default.aspx&quot;&gt;DotFuzzy&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/9162677847510092597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/fuzzy-logic-control.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/9162677847510092597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/9162677847510092597'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/fuzzy-logic-control.html' title='Fuzzy Logic Control.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-4235605238093005883</id><published>2010-09-07T22:27:00.007+01:00</published><updated>2010-09-09T19:19:49.867+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><category scheme="http://www.blogger.com/atom/ns#" term="Parts"/><title type='text'>Inspection of the plastic parts.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzNgZK3OEv_Mezi2qSsF2vC2ExPpCn1bpF52O9M6YoRECQYWnAqd9y_8SuyB7-fn32eX5D3JJo8emekNVP-qrIYQa5IznJG1qFC8ItKWuzNG_qIfuElbKk-HXu8YLFdFxaKdhfjt-0QA/s1600/IM000911.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzNgZK3OEv_Mezi2qSsF2vC2ExPpCn1bpF52O9M6YoRECQYWnAqd9y_8SuyB7-fn32eX5D3JJo8emekNVP-qrIYQa5IznJG1qFC8ItKWuzNG_qIfuElbKk-HXu8YLFdFxaKdhfjt-0QA/s320/IM000911.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After some holidays I am finally back to work. The first task was to check the size of plastic parts and test their resistance to shock and traction.&amp;nbsp; I have noticed that the carbon tubes and the holes of the plastic parts do not fit as they have different sizes. Although this is an easy problem to solve by using a proper drill to increased the holes of the parts. Thus for further reference the tolerance of the holes must be increased by some millimeters.&lt;br /&gt;
The plastic parts are well resistant to shock as there is no visible damage when dropped from the second floor of a building to its ground floor. This test is also known as naive test :-). They are also well resistant to traction as the nylon thread used on the traction did not break the plastic part.&lt;br /&gt;
Therefore, the plastic parts we are using are suitable for the construction of the quadcopter. Now I&#39;ll have to order the other parts to complete the frame.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/4235605238093005883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/09/inspection-of-plastic-parts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4235605238093005883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4235605238093005883'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/09/inspection-of-plastic-parts.html' title='Inspection of the plastic parts.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzNgZK3OEv_Mezi2qSsF2vC2ExPpCn1bpF52O9M6YoRECQYWnAqd9y_8SuyB7-fn32eX5D3JJo8emekNVP-qrIYQa5IznJG1qFC8ItKWuzNG_qIfuElbKk-HXu8YLFdFxaKdhfjt-0QA/s72-c/IM000911.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-2565652000372720301</id><published>2010-07-25T17:52:00.000+01:00</published><updated>2010-07-25T17:52:37.668+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Parts"/><title type='text'>Finally the samples of the parts came from the Shapeways.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqxqTU_iUyV7gFrkqIDyW8lFNH8QN8rRwHPoRyfi00RmEAFaQst4IG-alwN44dFGFd36VvtuhfyHnKDsJLQGyaWAkJ3YAP_A1I_u-Ln-luMWHMjGIh4tXBouWpfQegTQ-9sOmyVCRxvA/s1600/IM000846.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqxqTU_iUyV7gFrkqIDyW8lFNH8QN8rRwHPoRyfi00RmEAFaQst4IG-alwN44dFGFd36VvtuhfyHnKDsJLQGyaWAkJ3YAP_A1I_u-Ln-luMWHMjGIh4tXBouWpfQegTQ-9sOmyVCRxvA/s320/IM000846.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Finally, after a long wait the samples of the parts arrived. I have just unpack the parts and after a detailed analysis I was amazed at the quality and detail of them.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinWAS9zkMWDOeV7pP1QP_SbM8HFU86Iup6cMvhHVqGa7QTGFB7TSPZTKnLVybnEIQ6aJDDk4vgkzNm9bzXn6lw47Ra7Ra3nLdT33MHK71_j1nHIT-c87c9clgD-z3Yov_XPzxzHe_bxA/s1600/IM000848.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinWAS9zkMWDOeV7pP1QP_SbM8HFU86Iup6cMvhHVqGa7QTGFB7TSPZTKnLVybnEIQ6aJDDk4vgkzNm9bzXn6lw47Ra7Ra3nLdT33MHK71_j1nHIT-c87c9clgD-z3Yov_XPzxzHe_bxA/s320/IM000848.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The material is lightweight and hard, but have a rough surface. These parts are samples to see if they were as planned. After checking the measures and their resistance, then I&#39;ll order the rest. I hope not to make any changes in any part.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/2565652000372720301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/07/finally-samples-of-parts-came-from.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2565652000372720301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/2565652000372720301'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/07/finally-samples-of-parts-came-from.html' title='Finally the samples of the parts came from the Shapeways.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqxqTU_iUyV7gFrkqIDyW8lFNH8QN8rRwHPoRyfi00RmEAFaQst4IG-alwN44dFGFd36VvtuhfyHnKDsJLQGyaWAkJ3YAP_A1I_u-Ln-luMWHMjGIh4tXBouWpfQegTQ-9sOmyVCRxvA/s72-c/IM000846.JPG" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-6619550056077719971</id><published>2010-07-03T20:51:00.012+01:00</published><updated>2010-07-03T23:10:51.425+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Models"/><title type='text'>3D frame with parts.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyMshwVIBC6t5pQQ4cQKpN-Sg7higpozAAC5TBm_xFpUQHaQmF4ZAE-7zsNp1or0ZJmbiJPkYl4G7WbZiCePNL6u5AWN03dbEWDE38V0Tz_5_g-Ou0bleB2i44wXWMg8BY8rF-0nvRag/s1600/frame-top-diagonal-view-v001.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyMshwVIBC6t5pQQ4cQKpN-Sg7higpozAAC5TBm_xFpUQHaQmF4ZAE-7zsNp1or0ZJmbiJPkYl4G7WbZiCePNL6u5AWN03dbEWDE38V0Tz_5_g-Ou0bleB2i44wXWMg8BY8rF-0nvRag/s320/frame-top-diagonal-view-v001.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here is the frame with the all parts placed in appropriate locations. This model took about an hour to be generated on my laptop with OpenSCAD software. For the set does not separate the parts have holes for the cables ties which will keep the parts in place.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgme4OyEHrpGGJ9Fj3SrCO2_vst_kBppX87Jyt8pTO2cr8R-Wvpdnt9cFxQqF8EwKSJXY4pEohQ9fT-dMJclMKZXgCGpKiwkPYdo6gOIm9seE9XdSnmMgm4FXuGFSnIZXbwZoQfMnRSJw/s1600/frame-bottom-diagonal-view-v001.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgme4OyEHrpGGJ9Fj3SrCO2_vst_kBppX87Jyt8pTO2cr8R-Wvpdnt9cFxQqF8EwKSJXY4pEohQ9fT-dMJclMKZXgCGpKiwkPYdo6gOIm9seE9XdSnmMgm4FXuGFSnIZXbwZoQfMnRSJw/s320/frame-bottom-diagonal-view-v001.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A view from the under the frame can be seen in Figure 2. In this figure we can see the &quot;landing gear&quot; in more detail.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLTs5w0zy1irOW6H1cz-MCoxs6KgdQToSnkjhRYNB_0JugrJlAjq_9MFbuSg9enbFrJjyaNBgR6k0Q_x9FSXFMaUf9RcD1jfcoK5scuZBsD0YltV2oMFw3kx0LGVoIc3B8UcWP6lqAhA/s1600/frame-front-view-v001.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLTs5w0zy1irOW6H1cz-MCoxs6KgdQToSnkjhRYNB_0JugrJlAjq_9MFbuSg9enbFrJjyaNBgR6k0Q_x9FSXFMaUf9RcD1jfcoK5scuZBsD0YltV2oMFw3kx0LGVoIc3B8UcWP6lqAhA/s320/frame-front-view-v001.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In figure 3 we can see a side view in perspective of the frame, as well as all the &quot;landing gear&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxdwHBr633KnyrvmCB0SNrM-QN6X4fAM4MCSEqIyQUWMRTkBbyw9GfHn86vbyguQqk8rvSqfh0ZNNljaBeysWc82KtLVmd9pXJxxS1MeIUVuBfKx0zPuC3MU6H_R5JG1b-wlfic9recw/s1600/frame-centralbox-view-v001.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxdwHBr633KnyrvmCB0SNrM-QN6X4fAM4MCSEqIyQUWMRTkBbyw9GfHn86vbyguQqk8rvSqfh0ZNNljaBeysWc82KtLVmd9pXJxxS1MeIUVuBfKx0zPuC3MU6H_R5JG1b-wlfic9recw/s320/frame-centralbox-view-v001.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Finally, the figure 4 shows in detail the central cube of the frame, where we put all the electronic components. Now, as soon as possible and I will order some parts to see if they match the parts designed.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/6619550056077719971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/07/3d-frame-with-parts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6619550056077719971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/6619550056077719971'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/07/3d-frame-with-parts.html' title='3D frame with parts.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyMshwVIBC6t5pQQ4cQKpN-Sg7higpozAAC5TBm_xFpUQHaQmF4ZAE-7zsNp1or0ZJmbiJPkYl4G7WbZiCePNL6u5AWN03dbEWDE38V0Tz_5_g-Ou0bleB2i44wXWMg8BY8rF-0nvRag/s72-c/frame-top-diagonal-view-v001.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-617001592001099365</id><published>2010-06-28T23:11:00.016+01:00</published><updated>2010-06-29T21:53:51.493+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Models"/><title type='text'>The skeleton of the frame in 3D.</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKPpUbTGotndBlR3wXHVMIHCBTT4BJEc2J1oYXn1B_Uhv4rX2bwPY1SUrEEZY8GgGXVVMlUMblBjwXkUGo0FGCq4YbiG58449lLjA1GADMxoIT7sfVjvC7DICjmZK-ivKym9s20TJig/s1600/skeleton.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKPpUbTGotndBlR3wXHVMIHCBTT4BJEc2J1oYXn1B_Uhv4rX2bwPY1SUrEEZY8GgGXVVMlUMblBjwXkUGo0FGCq4YbiG58449lLjA1GADMxoIT7sfVjvC7DICjmZK-ivKym9s20TJig/s320/skeleton.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After several days around the OpenSCAD software, the skeleton of the frame in 3D without the parts are ready. The figure 1 shows the position of carbon tubes with the final dimensions. The letters point to tubes with different lengths. The list with lengths can be found in this pdf &lt;a href=&quot;http://mobileapes.googlecode.com/hg/frame/parts/skeleton.pdf&quot;&gt;file&lt;/a&gt;.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28YpfywUjBI07jI2i5_9C7F5Na9sDBe8e_MKrWRkVE3b35He6v5-16r9f4mfy1IrtUl8-vTrr4DwnJ0Hf74kSPFCJ8Uc5mm9PUJ-josGR3lTSDn6ZCzz1qoDBXn-FwPZy31m9JYl-Pg/s1600/skeleton_top.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28YpfywUjBI07jI2i5_9C7F5Na9sDBe8e_MKrWRkVE3b35He6v5-16r9f4mfy1IrtUl8-vTrr4DwnJ0Hf74kSPFCJ8Uc5mm9PUJ-josGR3lTSDn6ZCzz1qoDBXn-FwPZy31m9JYl-Pg/s320/skeleton_top.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The figure 2 shows a top view of the skeleton of the frame. From above we can see that the frame is based on three squares.&lt;/div&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrVCt4aDM2ce-5HEgBRl9v1ncMuHMZjt77NBJhlVEl2Z3jTyFAeyy84Tqcn79-OiWuTNar1XRoH3BzXhYBKh-sUIw8k0nWIyOsohStnP9fggV2uBvbhwFRrBLoY52o23usCe960cZ3xg/s1600/skeleton_side.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrVCt4aDM2ce-5HEgBRl9v1ncMuHMZjt77NBJhlVEl2Z3jTyFAeyy84Tqcn79-OiWuTNar1XRoH3BzXhYBKh-sUIw8k0nWIyOsohStnP9fggV2uBvbhwFRrBLoY52o23usCe960cZ3xg/s320/skeleton_side.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figura 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The figure 3 shows a side view of the skeleton of the frame. In this figure we can see the tubes that will serve as the &quot;landing gear&quot;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As can be seen by the figures the frame is very simple. The next step is to put the parts in the skeleton to get the complete frame.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/617001592001099365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/06/skeleton-of-frame-in-3d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/617001592001099365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/617001592001099365'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/06/skeleton-of-frame-in-3d.html' title='The skeleton of the frame in 3D.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKPpUbTGotndBlR3wXHVMIHCBTT4BJEc2J1oYXn1B_Uhv4rX2bwPY1SUrEEZY8GgGXVVMlUMblBjwXkUGo0FGCq4YbiG58449lLjA1GADMxoIT7sfVjvC7DICjmZK-ivKym9s20TJig/s72-c/skeleton.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-3361563033519789168</id><published>2010-06-09T18:59:00.023+01:00</published><updated>2010-07-03T20:37:42.533+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Models"/><category scheme="http://www.blogger.com/atom/ns#" term="Frame"/><title type='text'>Plastic parts to assemble the frame of the quadcopter.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1bVI5KzTGEQ0c3SdsiFgTf8-b9-GgbthBcuSergvFQIN4uGa9zUxVdlI2jpD7Ht6e0bi8S_8SnP59LabEuRqf9yczzAHW4_8tF8jW5QldnnAeOKFOwbvh0HLK9KTmEUKXhfDmuG780Q/s1600/plasticpartslist.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1bVI5KzTGEQ0c3SdsiFgTf8-b9-GgbthBcuSergvFQIN4uGa9zUxVdlI2jpD7Ht6e0bi8S_8SnP59LabEuRqf9yczzAHW4_8tF8jW5QldnnAeOKFOwbvh0HLK9KTmEUKXhfDmuG780Q/s320/plasticpartslist.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;All plastic parts to assemble the frame of the quadcopter were modeled in 3D using the software &lt;a href=&quot;http://openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt;. I also created a &lt;a href=&quot;http://code.google.com/p/mobileapes/source/browse/#hg/frame/parts&quot;&gt;repository&lt;/a&gt; where I put the source code files for use with OpenSCAD and the STL (Stereolithography File) files to use for those who want to print the parts in a 3D printer. I also discovered a &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;site&lt;/a&gt; that prints the parts from the STL files for a reasonable price! The &lt;a href=&quot;http://www.shapeways.com/gallery?mg[search][category]=&amp;amp;mg[search][text]=mobileapes&quot;&gt;list&lt;/a&gt; of parts with the dimensions can be found at the site &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;Shapeways&lt;/a&gt;, if you search for &quot;mobileapes&quot;. Alternatively, the list of parts can be found in this pdf &lt;a href=&quot;http://mobileapes.googlecode.com/hg/frame/parts/plastic-parts-list.pdf&quot;&gt;file&lt;/a&gt;. The material selected to make the parts is the &quot;white strong &amp;amp; flexible&quot; nylon , which is the cheapest. Those who prefer may choose the &quot;black strong &amp;amp; flexible&quot; nylon, once the carbon tube is black, but this option is more expensive.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/3361563033519789168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/06/plastic-parts-to-assemble-frame-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/3361563033519789168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/3361563033519789168'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/06/plastic-parts-to-assemble-frame-of.html' title='Plastic parts to assemble the frame of the quadcopter.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1bVI5KzTGEQ0c3SdsiFgTf8-b9-GgbthBcuSergvFQIN4uGa9zUxVdlI2jpD7Ht6e0bi8S_8SnP59LabEuRqf9yczzAHW4_8tF8jW5QldnnAeOKFOwbvh0HLK9KTmEUKXhfDmuG780Q/s72-c/plasticpartslist.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-7527292419929289949</id><published>2010-05-29T23:07:00.000+01:00</published><updated>2010-05-29T23:07:22.057+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>Aggressive Maneuvers for Autonomous Quadrotor Flight.</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;265&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/MvRTALJp8DM&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/MvRTALJp8DM&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;320&quot; height=&quot;265&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The video above shows a spectacular quadcopter. An authentic acrobat of the air. Demonstrations of pirouettes, flips, flight through windows, and quadrotor perching are shown. This spectacular device was developed at at the &lt;a href=&quot;http://www.grasp.upenn.edu/&quot;&gt;GRASP Lab&lt;/a&gt;, University of Pennsylvania. More information can be found at this &lt;a href=&quot;http://fling.seas.upenn.edu/%7Edmel/wiki/index.php?n=Main.Quadrotor&quot;&gt;site&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/7527292419929289949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/05/aggressive-maneuvers-for-autonomous.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7527292419929289949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/7527292419929289949'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/05/aggressive-maneuvers-for-autonomous.html' title='Aggressive Maneuvers for Autonomous Quadrotor Flight.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-4392626096465430446</id><published>2010-05-20T22:36:00.036+01:00</published><updated>2010-05-20T23:53:56.980+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Tools"/><title type='text'>The first part of the quadcopter in 3D.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After some research I found several people who have 3D printers. I also discovered that there are sites that print the parts if we uploading the file with the 3D model and then send them by regular mail after printed. In many sites, you can also choose the material we want that our parts be printed.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7vqME9_7lQq3BJszvSjOqDVzHR5FCUWp51kXcc_IDZcoleF00oPJfH4KqqYhdiqtoEmq2LRf5grEPzOFB_hu5FxPeeOJc_3XsFv1jVrOkHiJBsNpsB3cycoz1XM71e5w7H0HUNmsHUg/s1600/OpenSCADScreenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7vqME9_7lQq3BJszvSjOqDVzHR5FCUWp51kXcc_IDZcoleF00oPJfH4KqqYhdiqtoEmq2LRf5grEPzOFB_hu5FxPeeOJc_3XsFv1jVrOkHiJBsNpsB3cycoz1XM71e5w7H0HUNmsHUg/s320/OpenSCADScreenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I tried three 3D modeling tools available for Linux, &lt;a href=&quot;http://www.blender.org/&quot;&gt;Blender&lt;/a&gt;, &lt;a href=&quot;http://www.wings3d.com/&quot;&gt;Wings 3D&lt;/a&gt; and &lt;a href=&quot;http://openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt;. I found that the Blender is a complex tool but at the same time powerful, but requires a lot of learning for a beginner. Wings 3D is very easy to use but it is very difficult when you have to make the so called Boolean operations, ie, unions, subtractions and intersections. Finally, the OpenSCAD, is not a tool so much known, but it is a tool that does just the job I wanted to do, that is to make a 3D model for printing. The OpenSCAD uses a very simple &lt;a href=&quot;http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language&quot;&gt;scripting language&lt;/a&gt; for creating 3D models of parts. An example can be seen in Figure 1.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf1W8OrjlM0UvNa0p11PuRTOU4iqLALg1SopfA07NXW9L6zQGMY6ThUDkg2EUqMsxwWNEMMwvDuSl0Rj0_MgK5PP-IRypmTo-39p4I1GQnUknoEbQU4RZZdlSOQu6sO5ZG9HXhVyL6wQ/s1600/Wings3DScreenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf1W8OrjlM0UvNa0p11PuRTOU4iqLALg1SopfA07NXW9L6zQGMY6ThUDkg2EUqMsxwWNEMMwvDuSl0Rj0_MgK5PP-IRypmTo-39p4I1GQnUknoEbQU4RZZdlSOQu6sO5ZG9HXhVyL6wQ/s320/Wings3DScreenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In Figure 2 we can observe the same part shown in Figure 1 with some minor differences, but made using the Wings 3D. An interesting use of the various tools is to use OpenSCAD to create the initial 3D model and then refines it with more detail using the Wings 3D or the Blender.&lt;br /&gt;
Another problem we have keep in mind when modeling the parts to print is to make a support for the parts if, the parts does not have a base for maintaining the equilibrium, to ensure that the parts does not move while being printed. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/4392626096465430446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/05/first-part-of-quadcopter-in-3d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4392626096465430446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/4392626096465430446'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/05/first-part-of-quadcopter-in-3d.html' title='The first part of the quadcopter in 3D.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7vqME9_7lQq3BJszvSjOqDVzHR5FCUWp51kXcc_IDZcoleF00oPJfH4KqqYhdiqtoEmq2LRf5grEPzOFB_hu5FxPeeOJc_3XsFv1jVrOkHiJBsNpsB3cycoz1XM71e5w7H0HUNmsHUg/s72-c/OpenSCADScreenshot.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-8846564397130314139</id><published>2010-05-14T21:51:00.020+01:00</published><updated>2010-05-14T22:54:20.698+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Parts"/><title type='text'>Finally, I got the 9 DOF Razor IMU board.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp5kOf6wEVld_nniPY_oWkgcBpTVYgIAogZF9c93krGgyolEs_WXEfMggvjU86vpHi0nufE8j2LJaOpcat-HBq0KYSN-DYSH1Hw__qUMSF2pFc4x8hkHJgm1l2C6wBdE5B6cW4TCGpGQ/s1600/IM000795.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp5kOf6wEVld_nniPY_oWkgcBpTVYgIAogZF9c93krGgyolEs_WXEfMggvjU86vpHi0nufE8j2LJaOpcat-HBq0KYSN-DYSH1Hw__qUMSF2pFc4x8hkHJgm1l2C6wBdE5B6cW4TCGpGQ/s320/IM000795.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Yes, the 9 DOF Razor IMU board finally arrived. It is really very small. The three sensors, aceleromentro, gyroscope and compass in a single small board. The data provided by this board will be responsible for 3D orientation and stabilization of the quadcopter in the air. I already have some ideas of how to connect this board to the Arduino board. The following &lt;a href=&quot;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1270577613/6#6&quot;&gt;post&lt;/a&gt; published in the Arduino forum indicates a path to follow to read the data from the Arduino board. But after a quick search, I found there is not much information on how to use this board.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/8846564397130314139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/05/finally-i-got-9-dof-razor-imu-board.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/8846564397130314139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/8846564397130314139'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/05/finally-i-got-9-dof-razor-imu-board.html' title='Finally, I got the 9 DOF Razor IMU board.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp5kOf6wEVld_nniPY_oWkgcBpTVYgIAogZF9c93krGgyolEs_WXEfMggvjU86vpHi0nufE8j2LJaOpcat-HBq0KYSN-DYSH1Hw__qUMSF2pFc4x8hkHJgm1l2C6wBdE5B6cW4TCGpGQ/s72-c/IM000795.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-351334961189130697.post-1273352399835344547</id><published>2010-05-10T21:18:00.010+01:00</published><updated>2010-05-11T19:38:12.190+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>3D printer for rapid prototyping.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;While I wait for the new electronic parts to arrive, I found a printer that prints 3D plastic objects. The most amazing thing is that extremely cheap compared to the price of industrial printers for rapid prototyping. This type of printer is more like a desktop printer. Some 3D printers, are open source community projects like the &lt;a href=&quot;http://www.reprap.org/&quot;&gt;RepRap&lt;/a&gt; project. The following video shows how the &lt;a href=&quot;http://reprap.org/&quot;&gt;RepRap&lt;/a&gt; 3D printer works.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;205&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/FUB1WgiAFHg&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/FUB1WgiAFHg&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;320&quot; height=&quot;205&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The parts for the quadcopter were made by hand and they look rough. But with a 3D printer I can quickly make the parts and reduce the weight by replacing metal parts with plastic. I can also do more aerodynamic parts. To make the parts, it is necessary first to model the parts in a 3D software like &lt;a href=&quot;http://www.blender.org/&quot;&gt;Blender&lt;/a&gt;, &lt;a href=&quot;http://www.wings3d.com/&quot;&gt;Wings 3D&lt;/a&gt; or &lt;a href=&quot;http://openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt; and then save in a format that can be read by the 3D printer, usually in a stereolithography file (stl). Now I have to find someone who has a 3D printer near where I live that can print the parts, but first I have to model each part of the quadcopter in 3D. But it would be interesting to make a kit that people could then print and assemble using a 3D printer.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobileapes.blogspot.com/feeds/1273352399835344547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mobileapes.blogspot.com/2010/05/3d-printer-for-rapid-prototyping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/1273352399835344547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/351334961189130697/posts/default/1273352399835344547'/><link rel='alternate' type='text/html' href='http://mobileapes.blogspot.com/2010/05/3d-printer-for-rapid-prototyping.html' title='3D printer for rapid prototyping.'/><author><name>hdias</name><uri>http://www.blogger.com/profile/04180726358116410499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>