<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Gaugette</title>
    <link>//guy.carpenter.id.au/gaugette/categories/switec-x25/index.xml</link>
    <description>Recent content on Gaugette</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <atom:link href="//guy.carpenter.id.au/gaugette/categories/switec-x25/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>SwitecX25 Quad Driver Tests</title>
      <link>//guy.carpenter.id.au/gaugette/2017/04/29/switecx25-quad-driver-tests/</link>
      <pubDate>Sat, 29 Apr 2017 14:16:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2017/04/29/switecx25-quad-driver-tests/</guid>
      <description>&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/AX1201728SG-closeup.jpg&#34;  class=&#34;right&#34;   alt=&#34;AX1201728SG&#34;  /&gt;


&lt;p&gt;This article demonstrates a modification of the Arduino SwitecX25 driver library
to use a AX1201728SG quad driver chip (equivalent to the X12.017 or VID6606).
This chip offers some significant advantages over driving the motor directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it uses microstepping to provide smoother positioning - 12 steps per degree rather than 3.&lt;/li&gt;
&lt;li&gt;it requires only two GPIO pins per motor (plus one global reset pin)&lt;/li&gt;
&lt;li&gt;it protects the microprocessor from the inductive effects of the motor coils&lt;/li&gt;
&lt;li&gt;it places lower current requirements on the microprocessor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;In the past I&amp;rsquo;ve been unable to find a low-volume supplier for the &lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/2012/01/19/x12-quad-driver-chip/&#34;&gt;X12.017 Quad Driver Chip&lt;/a&gt;,
or any of the functionally identical chips from other manufacturers.  These are the ones I know about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The VID VID6606 Quad Driver &lt;a href=&#34;//guy.carpenter.id.au/gaugette/resources/vid/2009111391612_VID6606%20manual%20060927.pdf&#34;/&gt;(datasheet)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;http://www.nostm.com&#34; target=&#34;_blank&#34;&gt;NOST Microelectronics&lt;/a&gt; BY8920 Quad Driver &lt;a href=&#34;//guy.carpenter.id.au/gaugette/resources/nost/1428412011616by8290datasheet.pdf&#34;/&gt;(datasheet, in Chinese)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The AX1201728SG (by EmMicroe maybe?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recently both the AX1201728SG and VID6606 have become readily available in small quantities.&lt;/p&gt;

&lt;h2 id=&#34;the-ax1201728sg&#34;&gt;The AX1201728SG&lt;/h2&gt;

&lt;p&gt;The AX1201728SG is available in single quantities from ebay for a few dollars apiece.
 The one complication is that they are SOP28 surface mount packages, which are
 a little harder to prototype with than DIP packages.
 I bought some drivers, and some SOP28 to DIP28 adaptors so I could mount the drivers on a breadboard
 for testing.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/SOP28-components.jpg&#34;   alt=&#34;AX1201728SG SOP28 Components&#34;  /&gt;


&lt;h2 id=&#34;mounting&#34;&gt;Mounting&lt;/h2&gt;

&lt;p&gt;I haven&amp;rsquo;t worked with SMD chips before, so I had a friend help me mount them.
We used tweezers to apply the paste, and a regular household oven for reflowing.
Very basic, but it worked fine.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/SOP28-mounting.jpg&#34;   alt=&#34;AX1201728SG SOP28 Mounting&#34;  /&gt;


&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/AX1201728SG-pinout.png&#34;  class=&#34;right&#34;   /&gt;


&lt;h2 id=&#34;wiring-it-up&#34;&gt;Wiring It Up&lt;/h2&gt;

&lt;p&gt;Initially I&amp;rsquo;m testing with a single motor on output A.  The wiring is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VSS (chip pin 12) to GND&lt;/li&gt;
&lt;li&gt;VDD (chip pins 1 and 15) to 5V&lt;/li&gt;
&lt;li&gt;RESET (chip pin 26) to Arduino pin 10&lt;/li&gt;
&lt;li&gt;CW/CCW A (chip pin 27) to Arduino pin 9&lt;/li&gt;
&lt;li&gt;f(scx) A (chip pin 28) to Arduino pin 8&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/AX1201728SG_bb.png&#34;   alt=&#34;breadboard&#34;  /&gt;


&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2017-04-29/X27.168-rear-contacts.png&#34;  class=&#34;right&#34;   /&gt;

The motor connections are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OUT1A (chip pin 7) to Motor pin 1&lt;/li&gt;
&lt;li&gt;OUT2A (chip pin 6) to Motor pin 2&lt;/li&gt;
&lt;li&gt;OUT3A (chip pin 4) to Motor pin 3&lt;/li&gt;
&lt;li&gt;OUT4A (chip pin 5) to Motor pin 4&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;software&#34;&gt;Software&lt;/h2&gt;

&lt;p&gt;I started with a basic hello-world program to run the motor forward and backwards
so I could work out any setup issues before switching to the more complicated driver software.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/*
  X12.017 Quad Driver Test
  Drive the motor forward and backwards through 270 degrees
  at constant speed.
 */

const int LED = 13;
const int DIR_A = 9; // pin for CW/CCW
const int STEP_A = 8; // pin for f(scx)
const int RESET = 10; // pin for RESET
const int DELAY = 250; // μs between steps
const int ANGLE = 270; // of 315 available
const int RANGE = ANGLE * 3 * 4;
int steps = 0;
bool forward = true;

// pull RESET low to reset, high for normal operation.

void setup() {
  pinMode(DIR_A, OUTPUT);
  pinMode(STEP_A, OUTPUT);
  pinMode(LED, OUTPUT);
  pinMode(RESET, OUTPUT);

  digitalWrite(RESET, LOW);
  digitalWrite(LED, HIGH);
  digitalWrite(STEP_A, LOW);
  digitalWrite(DIR_A, HIGH);
  delay(1);  // keep reset low min 1ms
  digitalWrite(RESET, HIGH);
}

// The motor steps on rising edge of STEP
// The step line must be held low for at least 450ns
// which is so fast we probably don&#39;t need a delay,
// put in a short delay for good measure.

void loop() {
  digitalWrite(STEP_A, LOW);
  delayMicroseconds(1);  // not required

  steps++;
  if (steps &amp;gt; RANGE) {
    forward = !forward;
    steps = 0;
    digitalWrite(DIR_A, forward ? LOW : HIGH);
    digitalWrite(LED, forward ? HIGH : LOW);
  }

  digitalWrite(STEP_A, HIGH);
  delayMicroseconds(DELAY);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This worked, mostly.  If I leave the motor running for a while I notice that
the needle position drifts, which indicates either missed steps, or
a counting problem.  Increasing the inter-step delay from 250ms to 500ms
resolved that problem, so most likely I&amp;rsquo;m exceeding the (low) torque limit
during the turnaround.  I&amp;rsquo;m not worried about that - once I port the SwitecX25
library I can find a safe set of acceleration parameters to keep it from dropping
steps.&lt;/p&gt;

&lt;h2 id=&#34;adapting-the-switecx25-library&#34;&gt;Adapting the SwitecX25 Library&lt;/h2&gt;

&lt;p&gt;The SwitecX25 library provides an acceleration/deceleration model,
and some higher-level control abstractions.  Importantly, it is asynchronous.
The caller sets a desired step position and then calls the &lt;code&gt;update()&lt;/code&gt; method
as frequently as possible and the library manages the scheduling of the steps.&lt;/p&gt;

&lt;p&gt;One concern I have about supporting the quad driver is the being able to
service the pin transitions quickly enough.
When driving the motor directly we need to update 4
outputs once per step.  With the quad driver we need to pulse the f(scx) line low then high
once per micro-step, which equates to 8 transitions per full step.  It may
turn out to be difficult hit all of the timing deadlines to drive 4 motors at full speed simultaneously.&lt;/p&gt;

&lt;p&gt;My first cut at this is to create an entirely new class &lt;a href=&#34;https://github.com/clearwater/SwitecX25/blob/X12/SwitecX12.h&#34; target=&#34;_blank&#34;&gt;SwitecX12&lt;/a&gt;
which duplicates the key timing code from SwitecX25, with new output logic
and an adjusted acceleration curve.&lt;/p&gt;

&lt;p&gt;The code below zeroes the needle, moves the needle to the centre of the sweep, then
cycles between &amp;frac14; range and &amp;frac34; range.&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/ygrRIWR8rmY&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;


&lt;pre&gt;&lt;code&gt;#include &amp;lt;SwitecX12.h&amp;gt;

const int STEPS = 315 * 12;
const int A_STEP = 8;
const int A_DIR = 9;
const int RESET = 10;

SwitecX12 motor1(STEPS, A_STEP, A_DIR);


void setup() {
  digitalWrite(RESET, HIGH);
  Serial.begin(9600);
  motor1.zero();
  motor1.setPosition(STEPS/2);
}

void loop() {
  static bool forward = true;
  static int position1 = STEPS * 3/4;
  static int position2 = STEPS * 1/4;
  if (motor1.stopped) {
    motor1.setPosition(forward ? position1 : position2);
    forward = !forward;
  }
  motor1.update();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;The AX1201728SG looks very promising.  It&amp;rsquo;s a bit of a nuisance to
deal with surface mount devices if you aren&amp;rsquo;t set up for it, but not insurmountable.&lt;/p&gt;

&lt;p&gt;The microstepping is really smooth. Below is a video showing how smooth.
I used a very exaggerated acceleration
table to keep the needle in the slow range for longer.&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/YJIwiru_kk4&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Resources</title>
      <link>//guy.carpenter.id.au/gaugette/resources/</link>
      <pubDate>Tue, 01 Nov 2016 14:39:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/resources/</guid>
      <description>

&lt;h2 id=&#34;source-code&#34;&gt;Source Code&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/clearwater/SwitecX25&#34; target=&#34;_blank&#34;&gt;SwitecX25 Driver Library for Arduino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/clearwater/gaugette&#34; target=&#34;_blank&#34;&gt;Gaugette Source for Arduino&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;switec-x25-series-stepper-motors&#34;&gt;Switec X25 Series Stepper Motors&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/switec/X25_xxx_01_SP_E-1.pdf&#34;&gt;Switec X25 Series Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/switec/ISM_Buyers_Guide.pdf&#34;&gt;Switec X25 Series Buyers Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;vid29-series-motors&#34;&gt;VID29 Series Motors&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/20091026113525_VID29_manual_EN-080606.pdf&#34;&gt;VID29 Series Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/20090905105401VID29.pdf&#34;&gt;VID29 Mechanical Drawings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111395111_Acceleration_&amp;amp;_reset_calculation_example.pdf&#34;&gt;VID29 Acceleration and Reset Calculation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111395409_VID29_Precaution_of_Pointer_Assembly.pdf&#34;&gt;VID29 Pointer Assembly Precautions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111395504_VID29_reset_pulse_general_description.pdf&#34;&gt;VID29 Power-On Reset Procedure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111395537_VID29Electrical_and_Mechanical_Characteristic1.pdf&#34;&gt;VID29 Electrical and Mechanical Characteristics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;vid23-series-motors&#34;&gt;VID23 Series Motors&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111390052_VID23 manual EN-081210.pdf&#34;&gt;VID23 Transparent Shaft Motor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;mcr-motor-mr1107-mr1108&#34;&gt;MCR Motor MR1107/MR1108&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/mcr/2010410104720473.pdf&#34;&gt;MCR Motor MR1107/MR1108 Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/mcr/2009212115216347.pdf&#34;&gt;MCR Motor Mechanical Drawings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/mcr/201041010510949.pdf&#34;&gt;MCR PWM Driving Mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/mcr/2010410104915847.pdf&#34;&gt;MCR Acceleration Curve&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;driver-chips&#34;&gt;Driver Chips&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/switec/X12_017.pdf&#34;&gt;X12.017 Quad Driver Chip Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/nost/1428412011616by8290datasheet.pdf&#34;&gt;BY8290 Quad Driver Chip Data Sheet (in Chinese)&lt;/a&gt;, and here’s a link to a Google-generated &lt;a href=&#34;http://translate.google.com.au/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fguy.carpenter.id.au%2Fgaugette%2Fresources%2Fnost%2F1428412011616by8290datasheet.pdf&#34; target=&#34;_blank&#34;&gt;English translation of the data sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//guy.carpenter.id.au/gaugette/gaugette/resources/vid/2009111391612_VID6606%20manual%20060927.pdf&#34;&gt;VID6606 Quad Driver Chip Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>OpenXC - Hack Your Car</title>
      <link>//guy.carpenter.id.au/gaugette/2013/03/03/openxc-hack-your-car/</link>
      <pubDate>Sun, 03 Mar 2013 15:20:48 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2013/03/03/openxc-hack-your-car/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2013-03-03/openxc-logo.png&#34;  class=&#34;left&#34;   /&gt;

&lt;a href=&#34;http://openxcplatform.com/&#34; target=&#34;_blank&#34;&gt;OpenXC&lt;/a&gt; is a very cool initiative involving Ford Motor Company
and Bug Labs aimed at creating an open development ecosystem for interfacing with in-car electronics.
Looks like a pretty great project.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h2 id=&#34;openxc-switec-x25-based-retro-gauge&#34;&gt;OpenXC Switec X25-based &amp;ldquo;Retro Gauge&amp;rdquo;&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2013-03-03/overview.jpg&#34;  class=&#34;right&#34;   /&gt;

One of the OpenXC projects featured on their website is a
&lt;a href=&#34;http://openxcplatform.com/projects/retro-gauge.html&#34; target=&#34;_blank&#34;&gt;retro gauge&lt;/a&gt;
based around Switec X25 type micro-steppers.&lt;/p&gt;

&lt;p&gt;They have published Eagle schematics for a gorgeous little combination
analog/digital instrument gauge.  Their in-gauge PCB cleverly incorporates
an Arduino Pro Mini.  They have also published STL files for a 3D-printable housing.&lt;br /&gt;
This all looks very slick to me.&lt;/p&gt;

&lt;p&gt;Their firmware uses our very own &lt;a href=&#34;https://github.com/clearwater/SwitecX25&#34; target=&#34;_blank&#34;&gt;Switec X25 library&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find detailed documentation and resources at
their &lt;a href=&#34;https://github.com/openxc/retro-gauge&#34; target=&#34;_blank&#34;&gt;github repository&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Analog Gauge Stepper Breakout Board available on Tindie</title>
      <link>//guy.carpenter.id.au/gaugette/2013/01/18/analog-gauge-stepper-breakout-board-available-on-tindie/</link>
      <pubDate>Fri, 18 Jan 2013 07:27:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2013/01/18/analog-gauge-stepper-breakout-board-available-on-tindie/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2013-01-18/analog-gauge-stepper-breakout.jpg&#34;  class=&#34;right&#34;   /&gt;

Check out this great new &lt;a href=&#34;https://tindie.com/shops/TheRengineer/analog-gauge-stepper-breakout-board/&#34; target=&#34;_blank&#34;&gt;Tindie project&lt;/a&gt;
launched by &lt;a href=&#34;http://www.therengineer.com/&#34; target=&#34;_blank&#34;&gt;The Renaissance Engineer&lt;/a&gt; &lt;a href=&#34;https://twitter.com/ajfabio&#34; target=&#34;_blank&#34;&gt;Adam Fabio&lt;/a&gt;
for a new breakout board designed for Switec motors and clones.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2013-01-18/analog-gauge-stepper-kit.jpg&#34;  class=&#34;right&#34;   /&gt;

The breakout board incorporates flyback diodes to protect your circuit from inductive kickback, and
the also serves as a convenient base to mount the motors.  The kit includes
the board, diodes, 6-pin header, a Switec X27.168 and 3d-printed needle.&lt;/p&gt;

&lt;p&gt;If you want to get in on this initial offering act quickly - it closes
in 12 days.  The project has already exceeded the funding target.
Nice work Adam!&lt;/p&gt;

&lt;p&gt;&lt;br clear=&#34;both&#34;/&gt;&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/p-9aR8eVrJY&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Electric Imp Telepointer</title>
      <link>//guy.carpenter.id.au/gaugette/2012/11/03/electric-imp-telepointer/</link>
      <pubDate>Sat, 03 Nov 2012 12:43:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/11/03/electric-imp-telepointer/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s &lt;a href=&#34;http://forums.electricimp.com/discussion/179/telepointer/p1&#34; target=&#34;_blank&#34;&gt;an interesting project&lt;/a&gt;
that makes use of Switec X25 steppers; Gavin Sallery has used two &lt;a href=&#34;http://www.electricimp.com&#34; target=&#34;_blank&#34;&gt;electric imps&lt;/a&gt;
to gain &lt;strong&gt;&lt;em&gt;very&lt;/em&gt;&lt;/strong&gt; remote control of a Switec stepper.  Electric Imp looks very cool.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//player.vimeo.com/video/49196141&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Beverage-o-Meter</title>
      <link>//guy.carpenter.id.au/gaugette/2012/08/07/beverage-o-meter/</link>
      <pubDate>Tue, 07 Aug 2012 10:15:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/08/07/beverage-o-meter/</guid>
      <description>&lt;p&gt;Phil Bambridge has blogged about
his &lt;a href=&#34;http://pmb.neongrit.net/blog/?p=116&#34; target=&#34;_blank&#34;&gt;Beverage-o-Meter&lt;/a&gt;
which demonstrates wireless remote control of an analog gauge using Arduinos eqipped with Nordic 2.4GHz radio boards.
Fun, whimsical, and beautifully housed too.  His project uses a Switec stepper for the gauge, and
uses the &lt;a href=&#34;https://github.com/clearwater/SwitecX25&#34; target=&#34;_blank&#34;&gt;SwitecX25&lt;/a&gt; library.
Check out his blog and source code &lt;a href=&#34;http://pmb.neongrit.net/blog/?p=116&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;img src=&#34;http://pmb.neongrit.net/blog/wp-content/uploads/2012/07/IMG_9296_v1-480x428.jpg&#34;  class=&#34;right&#34;   alt=&#34;Photo by Phil Babridge&#34;  /&gt;</description>
    </item>
    
    <item>
      <title>Buyers Guide</title>
      <link>//guy.carpenter.id.au/gaugette/2012/05/25/buyers-guide/</link>
      <pubDate>Fri, 25 May 2012 11:06:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/05/25/buyers-guide/</guid>
      <description>&lt;h2 id=&#34;manufacturers&#34;&gt;Manufacturers&lt;/h2&gt;

&lt;p&gt;I am aware of three companies manufacturing compatible motors.  All appear to
produce a good-quality product.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3 id=&#34;switec-hahahugoshortcode-1hbhb&#34;&gt;Switec &lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-05-25/x25-168.jpg&#34;  class=&#34;right&#34;   /&gt;
&lt;/h3&gt;

&lt;p&gt;Switec was originally the technology arm of the Swiss watch company Swatch.
The stepper business was sold off to Singapore-based &lt;a href=&#34;http://jukenswisstech.com/&#34; target=&#34;_blank&#34;&gt;Juken Technology&lt;/a&gt; in 2009.
Switec motors are white, and have part numbers starting with &amp;ldquo;X&amp;rdquo;.&lt;/p&gt;

&lt;h3 id=&#34;vid-hahahugoshortcode-2hbhb&#34;&gt;VID &lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-05-25/vid29-02.jpg&#34;  class=&#34;right&#34;   /&gt;
&lt;/h3&gt;

&lt;p&gt;Hong Kong based &lt;a href=&#34;http://www.vid.wellgain.com/product.aspx&#34; target=&#34;_blank&#34;&gt;VID&lt;/a&gt; also manufacture a range
of similar motors.  Their motors are black, and have a black model number starting with &amp;ldquo;vid&amp;rdquo;.
&lt;br clear=&#34;right&#34;/&gt;&lt;/p&gt;

&lt;h3 id=&#34;mcr-hahahugoshortcode-3hbhb&#34;&gt;MCR &lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-05-25/mr1108.jpg&#34;  class=&#34;right&#34;   /&gt;
&lt;/h3&gt;

&lt;p&gt;Chinese company &lt;a href=&#34;http://www.mcrmotor.com/en/&#34; target=&#34;_blank&#34;&gt;MCR Motor&lt;/a&gt; manufacture a range of compatible motors.
Their motors are white. with part numbers starting with &amp;ldquo;MR&amp;rdquo;.
&lt;br clear=&#34;right&#34;/&gt;&lt;/p&gt;

&lt;h2 id=&#34;x25-product-numbers&#34;&gt;X25 Product Numbers&lt;/h2&gt;

&lt;p&gt;Each manufacturer produces a number of variations of the motor.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Switec&lt;/th&gt;
&lt;th&gt;VID&lt;/th&gt;
&lt;th&gt;MCR&lt;/th&gt;
&lt;th&gt;Contacts&lt;/th&gt;
&lt;th&gt;Mounting Pegs&lt;/th&gt;
&lt;th&gt;Internal Stop&lt;/th&gt;
&lt;th&gt;Shaft&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;X25.156&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.166&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.158&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.168&lt;/td&gt;
&lt;td&gt;VID29-02&lt;/td&gt;
&lt;td&gt;MR1108&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.278&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.288&lt;/td&gt;
&lt;td&gt;VID29-04&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;rear&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.559&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.569&lt;/td&gt;
&lt;td&gt;VID29-05&lt;/td&gt;
&lt;td&gt;MR1107&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;standard&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.579&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.589&lt;/td&gt;
&lt;td&gt;VID29-07&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.679&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;X25.689&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;front&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;long (+2mm)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&#34;other-switec-series&#34;&gt;Other Switec Series&lt;/h2&gt;

&lt;h3 id=&#34;x23-series&#34;&gt;X23 Series&lt;/h3&gt;

&lt;p&gt;The X23 motors have an a hollow metal shaft encasing a transparent light guide
to make it possible to have an illuminated pointer.&lt;/p&gt;

&lt;h3 id=&#34;x26-series&#34;&gt;X26 Series&lt;/h3&gt;

&lt;p&gt;The X26 motors are dual-shaft analog clock motors.  The model numbers are X26.101, X26.103, X26.123, X26.504.
See the the &amp;ldquo;Switec Series Buyers Guide&amp;rdquo; in the &lt;a href=&#34;//guy.carpenter.id.au/gaugette/resources&#34;/&gt;Resources&lt;/a&gt;
 for more details.&lt;/p&gt;

&lt;h3 id=&#34;x27-series&#34;&gt;X27 Series&lt;/h3&gt;

&lt;p&gt;The X27 motors are a new line replacing the X25 series.  The X27 part numbers mirror the X25 series.&lt;/p&gt;

&lt;h3 id=&#34;x12-motor-drivers&#34;&gt;X12 Motor Drivers&lt;/h3&gt;

&lt;p&gt;The X12 part numbers refer to a series of driver chips developed by Switec.  I have not been able to
locate a supplier of these chips since microcomponents.ch shut down.&lt;/p&gt;

&lt;h2 id=&#34;suppliers&#34;&gt;Suppliers&lt;/h2&gt;

&lt;p&gt;I have not found any well-known online store supplying these parts.
They are cheap and plentiful on ebay.  However it can
be difficult to determine exactly what you are getting; these motors are generally
sold as Switec X25 &lt;em&gt;replacements&lt;/em&gt;, without clearly specifying the manufacturer.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How Fast Is It?</title>
      <link>//guy.carpenter.id.au/gaugette/2012/05/08/how-fast-is-it/</link>
      <pubDate>Tue, 08 May 2012 09:06:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/05/08/how-fast-is-it/</guid>
      <description>&lt;p&gt;I recently &lt;a href=&#34;//guy.carpenter.id.au/gaugette/blog/2012/04/04/pulling-out-the-stops/&#34;&gt;removed the internal stops&lt;/a&gt; on a VID-29 stepper.  I&amp;rsquo;ve used this free-turning motor and an optical sensor to exerimentally test some operational limits of the motor.  The test rig uses a photo-interruptor to determine the needle position:&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-05-08/accel-test.jpg&#34;  class=&#34;right&#34;   /&gt;


&lt;p&gt;&lt;/p&gt;

&lt;h2 id=&#34;methodology&#34;&gt;Methodology&lt;/h2&gt;

&lt;p&gt;I move the need forward under varying conditions, then move the needle back to the home position in a known-reliable manner while counting the steps.  If the steps counted back do not match the number of steps programmed forward then we know we have exceeded the operational limits of the motor.&lt;/p&gt;

&lt;p&gt;After some experimentation I selected a delay of 1000&amp;mu;S per step for the counting phase as this is well within the safe limits of operation.  I confirmed that in this safe range I get reliable results counting steps confirming that the sensor is accurate enough to detect a single one-third degree step.&lt;/p&gt;

&lt;p&gt;Note: Be sure your needle is tight!  Until I eliminated needle slippage, my results showed anomalous drifts both above and below the expected values.&lt;/p&gt;

&lt;h2 id=&#34;constant-speed-test&#34;&gt;Constant Speed Test&lt;/h2&gt;

&lt;p&gt;In this test the motor is turned at constant speed to identify the maximum constant speed that the motor will respond to.  The speed is set by manipulating the motor accelleration table.  I also recorded the total sweep time with the &lt;code&gt;micros()&lt;/code&gt; function to determine the variation between the programmed inter-step time and the actual inter-step time.&lt;/p&gt;

&lt;p&gt;The following table shows the results from the constant speed test.
Each test was repeated 5 times.  In each case the expected result was
500.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Delay &amp;mu;S&lt;/th&gt;
&lt;th&gt;Test 1&lt;/th&gt;
&lt;th&gt;Test 2&lt;/th&gt;
&lt;th&gt;Test 3&lt;/th&gt;
&lt;th&gt;Test 4&lt;/th&gt;
&lt;th&gt;Test 5&lt;/th&gt;
&lt;th&gt;Actual &amp;mu;S&lt;/th&gt;
&lt;th&gt;Steps/Sec&lt;/th&gt;
&lt;th&gt;&amp;deg;/S&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;509&lt;/td&gt;
&lt;td&gt;1964&lt;/td&gt;
&lt;td&gt;654&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;520&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;530&lt;/td&gt;
&lt;td&gt;1886&lt;/td&gt;
&lt;td&gt;628&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;540&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;549&lt;/td&gt;
&lt;td&gt;1821&lt;/td&gt;
&lt;td&gt;607&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;560&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;568&lt;/td&gt;
&lt;td&gt;1760&lt;/td&gt;
&lt;td&gt;586&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;580&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;589&lt;/td&gt;
&lt;td&gt;1697&lt;/td&gt;
&lt;td&gt;565&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;600&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;610&lt;/td&gt;
&lt;td&gt;1639&lt;/td&gt;
&lt;td&gt;546&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;620&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;506&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;630&lt;/td&gt;
&lt;td&gt;1587&lt;/td&gt;
&lt;td&gt;529&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;640&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;649&lt;/td&gt;
&lt;td&gt;1540&lt;/td&gt;
&lt;td&gt;513&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;660&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;668&lt;/td&gt;
&lt;td&gt;1497&lt;/td&gt;
&lt;td&gt;499&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;680&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;691&lt;/td&gt;
&lt;td&gt;1447&lt;/td&gt;
&lt;td&gt;482&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;700&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;711&lt;/td&gt;
&lt;td&gt;1406&lt;/td&gt;
&lt;td&gt;468&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;720&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;729&lt;/td&gt;
&lt;td&gt;1371&lt;/td&gt;
&lt;td&gt;457&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;740&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;749&lt;/td&gt;
&lt;td&gt;1335&lt;/td&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;760&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;771&lt;/td&gt;
&lt;td&gt;1297&lt;/td&gt;
&lt;td&gt;432&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;780&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;791&lt;/td&gt;
&lt;td&gt;1264&lt;/td&gt;
&lt;td&gt;421&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;800&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;810&lt;/td&gt;
&lt;td&gt;1234&lt;/td&gt;
&lt;td&gt;411&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&#34;results&#34;&gt;Results&lt;/h2&gt;

&lt;p&gt;The results show that with a programmed step period 600&amp;mu;S or less the motor could not advance with each step - and in fact often moved backwards.  At 620&amp;mu;S the results were unreliable, and at 640&amp;mu;S and above the motor behaved reliably.&lt;/p&gt;

&lt;p&gt;The actual inter-step delay was 8 to 11 &amp;mu;S more than the programmed delay.&lt;/p&gt;

&lt;h2 id=&#34;observations&#34;&gt;Observations&lt;/h2&gt;

&lt;p&gt;I compared my results with the VID29 data sheet which states rather confusingly that &amp;ldquo;The angular speed can reach more than 500Hz&amp;rdquo; (presumably they mean &amp;deg;/S, not Hz?), and elsewhere that the maximum driving frequency is 600Hz (I can&amp;rsquo;t make any sense of that). The ~10&amp;mu;S difference between programmed delay and measured delay gives a useful measure of the error of the timing logic in the SwitecX25 library.&lt;/p&gt;

&lt;p&gt;In setting up this test I discovered a bug in the SwitecX25 library: the library does not enforce a timing delay between the last signal change before stopping, and the first signal change after starting.  This only exhibits if the motor is stopped and immediately restarted (within ~600&amp;mu;S).  Because the two signals come too close together, the step may be missed.  This leaves the motor out of phase with the libraries state map, and it appears the motor then misses 5 more steps before it gets back into phase, so this error shows as a 6-step error.&lt;/p&gt;

&lt;h2 id=&#34;test-code&#34;&gt;Test Code&lt;/h2&gt;

&lt;p&gt;Here&amp;rsquo;s the full &lt;a href=&#34;https://gist.github.com/2590599/73ff197ea22c312335c6d02cd9c1333eb238db50&#34; target=&#34;_blank&#34;&gt;source code&lt;/a&gt; for this test.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Making Wiring Harnesses</title>
      <link>//guy.carpenter.id.au/gaugette/2012/04/04/making-wiring-harnesses/</link>
      <pubDate>Wed, 04 Apr 2012 13:05:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/04/04/making-wiring-harnesses/</guid>
      <description>&lt;p&gt;A quick note about wiring harnesses for these motors.
I&amp;rsquo;ve found it really handy to make harnesses from 4-wire CD audio
cables.  My harnesses use push-on connectors at the motor end
so I never &lt;a href=&#34;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1260978962&#34; target=&#34;_blank&#34;&gt;accidentally cook the motor&lt;/a&gt; by soldering to the motor pins.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9232.jpg&#34;   alt=&#34;completed wiring harness&#34;  /&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The cables I&amp;rsquo;m talking about have 4-pin JST connectors on each end, and are
used to connect the analog audio signal from a PC&amp;rsquo;s internal CD player to the
motherboard or sound card. I have accumulated a bunch of
these over the years, so I&amp;rsquo;m glad to have a use for them.&lt;/p&gt;

&lt;p&gt;I also use &lt;a href=&#34;https://www.adafruit.com/products/392&#34; target=&#34;_blank&#34;&gt;0.1&amp;rdquo; breakaway headers&lt;/a&gt; and heatshrink tubing, both from AdaFruit.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9227.jpg&#34;   alt=&#34;the parts&#34;  /&gt;


&lt;ul&gt;
&lt;li&gt;Chop the audio cable in half (each half makes one wiring harness),&lt;/li&gt;
&lt;li&gt;Strip and tin the wires on the cut end,&lt;/li&gt;
&lt;li&gt;Cut off a 4-pin section of breakaway header,&lt;/li&gt;
&lt;li&gt;Solder the wires to the header &lt;em&gt;with the two black wires in the center positions&lt;/em&gt;,&lt;/li&gt;
&lt;li&gt;Protect the connections with heat-shrink tubing.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9228.jpg&#34;   alt=&#34;assembly&#34;  /&gt;


&lt;ul&gt;
&lt;li&gt;Pull up the plastic tabs on the JST connector and slide the crimped terminator out of the block,&lt;/li&gt;
&lt;li&gt;Use pliers to close the crimp connectors a little, but don&amp;rsquo;t crush them entirely. The pins on the Switec motors are really small, so you need to squeeze it down a little to create a tight fit.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9229.jpg&#34;   alt=&#34;assembly complete&#34;  /&gt;


&lt;p&gt;You&amp;rsquo;ll notice that these harnesses have two black wires, which would
normally be a bit annoying.  However it turns out that the wires to
pins 2 and 3 on the Switec motors are interchangable so you don&amp;rsquo;t need to distinguish between them.&lt;/p&gt;

&lt;p&gt;Wire your motor up like this:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motor Pin&lt;/th&gt;
&lt;th&gt;Wire Color&lt;/th&gt;
&lt;th&gt;Arduino Pin&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;white&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;black&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;black&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Be careful not to bend the pins on the motors when you slide the
crimp connectors on.  Also note that the pins on the motor are flat, not round,
so the orientation of the crimp connector matters; if it is too tight or too lose, try rotating the connector 90 degrees.&lt;/p&gt;

&lt;p&gt;Finally, if you plug the header into an Arduino so that white is at
pin 4, and red is pin 7, you can define your motor in code like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SwitecX25 motor1(MOTOR_STEPS, 4,5,6,7);
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Pulling Out All The Stops</title>
      <link>//guy.carpenter.id.au/gaugette/2012/04/04/pulling-out-the-stops/</link>
      <pubDate>Wed, 04 Apr 2012 09:58:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/04/04/pulling-out-the-stops/</guid>
      <description>&lt;p&gt;Or more accurately, filing off the stops.&lt;/p&gt;

&lt;p&gt;Recently &lt;a href=&#34;//guy.carpenter.id.au/gaugette/about#comment-459699391&#34;&gt;Tim Hirzel asked&lt;/a&gt; if I knew
of a source of motors without stops, or if the X25.168&amp;rsquo;s could be
modified to remove the stops and open up the full 360 degrees of rotation.&lt;/p&gt;

&lt;p&gt;Good question!  The &lt;a href=&#34;//guy.carpenter.id.au/gaugette/resources&#34;/&gt;X25 Series Buyers Guide&lt;/a&gt;
 lists 6 models
of motors without stops, but a quick search turned up no suppliers
selling these in small volumes.&lt;/p&gt;

&lt;p&gt;Okay, time to figure out if the stops can be removed.  Note that I&amp;rsquo;m working
on a VID-29 clone, not a genuine Switec X25.168 here.
There are 4 tiny screws that open the case revealing this:&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9223.jpg&#34;   alt=&#34;case opened&#34;  /&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The drive-shaft and attached gear sit loose and can be lifted out.  Flipping the
gear over reveals the mechanism for the stop; a raised trapezoidal bump on the gear face
that stops against a matching protrusion at the bottom of the case.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9225.jpg&#34;   alt=&#34;stop exposed&#34;  /&gt;


&lt;p&gt;I cut off the stop with a Stanley knife, and filed it flat with a small file.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/2012-04-04/imgp9226.jpg&#34;   alt=&#34;stop removed&#34;  /&gt;


&lt;p&gt;Reassembly was easy, and bugger me, it works.&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/kY2yiKImWJE&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;


&lt;p&gt;In the video you can see the needle hesitates on each rotation.  This is because of the acceleration/deceleration
logic in the SwitecX25 library; I&amp;rsquo;m accelerating the motor from stop,
spinning 360 degrees, decelerating to a stop again, then repeating,
using code like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;          for (int i=0;i&amp;lt;nLoops;i++) {
            motor-&amp;gt;currentStep = 0;    
            motor-&amp;gt;setPosition(360*3);
            while (!motor-&amp;gt;stopped) motor-&amp;gt;update();
          }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To keep the speed constant I need to prevent it coming to a stop.
I can do that by resetting the origin and destination before
it reaches its goal step, like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;          for (int i=0;i&amp;lt;nLoops;i++) {
            motor-&amp;gt;currentStep = 0;         // reset origin on each rotation
            motor-&amp;gt;setPosition(320*3*2);    // set target to way past end of rotation
            while (motor-&amp;gt;currentStep&amp;lt;360*3) motor-&amp;gt;update();  // turn until rotation is complete
          }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or to run the motor in reverse:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;          for (int i=0;i&amp;lt;nLoops;i++) {
            motor-&amp;gt;currentStep = 360*3*2;
            motor-&amp;gt;setPosition(0);
            while (motor-&amp;gt;currentStep&amp;gt;360*3) motor-&amp;gt;update();
          }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I think the SwitecX25 library will need some extensions to support stop-less motors&amp;hellip;  need to
think about that a bit.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>A Better Backlight</title>
      <link>//guy.carpenter.id.au/gaugette/2012/03/22/a-better-backlight/</link>
      <pubDate>Thu, 22 Mar 2012 11:18:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/03/22/a-better-backlight/</guid>
      <description>&lt;p&gt;For the second gauge in this build, I tried to get
better placement of the current-limiting resistor.
By placing it tight in the corner, it wont
cast a shadow.&lt;/p&gt;

&lt;p&gt;These photos show the LEDs at 100% brightness, but they are
on PWM pins so I can control the intensity from the Arduino code.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/backlight2.png&#34;  class=&#34;center&#34;   /&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;It is subtle, but in the next photo you can see the difference
between the first and second gauge.  The right-most gauge
has a dark spot between 30 and 40.
It&amp;rsquo;s fine, and the light spread isn&amp;rsquo;t that even anyway,
so I&amp;rsquo;m going to call it &amp;lsquo;character&amp;rsquo;.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/backlight-pair.png&#34;  class=&#34;center&#34;   /&gt;


&lt;p&gt;The mounting panel is made from salvaged hardwood fence pickets.  It&amp;rsquo;s red stringybark, very hard and with nice colour and grain definition.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/build1-mount.png&#34;  class=&#34;center&#34;   /&gt;


&lt;p&gt;I&amp;rsquo;ve wired the 3-position switch to control &amp;ldquo;off&amp;rdquo;, &amp;ldquo;on&amp;rdquo; and &amp;ldquo;on with backlight&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using the SwitecX25 Library</title>
      <link>//guy.carpenter.id.au/gaugette/2012/02/16/using-the-switecx25-library/</link>
      <pubDate>Thu, 16 Feb 2012 18:04:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/02/16/using-the-switecx25-library/</guid>
      <description>&lt;h2 id=&#34;getting-started-with-the-switecx25-library&#34;&gt;Getting Started with the SwitecX25 Library&lt;/h2&gt;

&lt;p&gt;For Arduino IDE version 1.0 and later you can store user-contributed libraries in a subdirectory
of your sketch directory named &amp;lsquo;libraries&amp;rsquo;.  In fact you really should install them there
to ensure that they persist when you upgrade the IDE.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;So figure out where your project directory is (under OSX this is available in the &lt;code&gt;Arduino -&amp;gt; Preferences&lt;/code&gt; menu), create a subdirectory called &lt;code&gt;libraries&lt;/code&gt; with the project directory.  The name is important, so use exactly that.  Then inside that libraries directory checkout the SwitecX25 library.  You should end up with this structure:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;libraries
  |
  +-- SwitecX25
     |
     +-- SwitecX25.cpp
         SwitecX25.h
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There is also an examples directory under that, but those two files are the critical parts of the library.&lt;/p&gt;

&lt;p&gt;Restart the IDE and you should see the library in your &lt;code&gt;Sketch -&amp;gt; Import Library&lt;/code&gt; menu.  It appears in a separate
section at the bottom marked &lt;code&gt;contributed&lt;/code&gt;.  Now start a new sketch.  Here&amp;rsquo;s a minimum Hello World
sketch for the Switec X25 that runs the motor against the zero stop then moves the motor to the center
of its range.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#include &amp;lt;SwitecX25.h&amp;gt;

// standard X25.168 range 315 degrees at 1/3 degree steps
#define STEPS (315*3)

// For motors connected to pins 3,4,5,6
SwitecX25 motor1(STEPS,3,4,5,6);

void setup(void)
{
  // run the motor against the stops
  motor1.zero();
  // start moving towards the center of the range
  motor1.setPosition(STEPS/2);
}

void loop(void)
{
  // the motor only moves when you call update
  motor1.update();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I&amp;rsquo;ve added this little sketch to the library as an example, so it will appear as &lt;code&gt;File -&amp;gt; Examples -&amp;gt; SwitecX25 -&amp;gt; center&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>LED Gauge Backlighting</title>
      <link>//guy.carpenter.id.au/gaugette/2012/02/11/led-gauge-backlighting/</link>
      <pubDate>Sat, 11 Feb 2012 17:14:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/02/11/led-gauge-backlighting/</guid>
      <description>&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/thermo_backlit.png&#34;  class=&#34;right&#34;   alt=&#34;LED Backlighting&#34;  /&gt;


&lt;p&gt;Today I added an LED backlight to my square gauge.
I really like how light leaks from the grills at the top
and bottom of gauge.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;I decided not to use RGB LEDs in this build due to size
and pin-count constraints.
The white LED was originally part
of a solar-powered LED light string.&lt;/p&gt;

&lt;p&gt;These are side-emitting
LEDs by virtue of a conical indent in the tip of the lens that
refracts much of the light sideways.
I tried grinding back the lens and using blobs of hot-glue to make
the lighting more diffuse, but in the end I wasn&amp;rsquo;t convinced
it was an improvement, and so the simpler design won out.&lt;/p&gt;

&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/thermo_led.png&#34;  class=&#34;left&#34;   alt=&#34;with face removed&#34;  /&gt;


&lt;p&gt;I soldered the 330&amp;#8486; current-limiting resistor to the LED.
I trimmed the leads on the LED and resistor really short to get it
all to fit.  I would have liked the resistor tight against
the wall to prevent a dark spot, but it didn&amp;rsquo;t work out that way.&lt;/p&gt;

&lt;p&gt;The holes for the connection wires had to be drilled
right in the extreme inner corner to avoid the stepper motor on the back.
The cathode wire goes to a PWM pin on the Arduino, and the anode
to ground.  I recently added LED control options to the Gaugette software
to control the brightness.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;http://www.battlecruiserzone.com/Boom1.jpg&#34;  class=&#34;right&#34;   /&gt;

ZOMG, now this gauge &lt;a href=&#34;http://totallylookslike.icanhascheezburger.com/&#34; target=&#34;_blank&#34;&gt;totally looks like&lt;/a&gt; the
helmets worn by the Viper pilots in the original 80&amp;rsquo;s
Battlestar Galactica series!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Just a Pretty Face</title>
      <link>//guy.carpenter.id.au/gaugette/2012/02/06/just-a-pretty-face/</link>
      <pubDate>Mon, 06 Feb 2012 17:33:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/02/06/just-a-pretty-face/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/100k_square_dial.png&#34;  class=&#34;right&#34;   alt=&#34;Dial Face Artwork&#34;  /&gt;

I made dial faces for a couple of the square gauges built
in &lt;a href=&#34;//guy.carpenter.id.au/gaugette/blog/gaugette/2012/01/28/build-number-one/&#34;&gt;Build Number One&lt;/a&gt;.  Nearly
ready to install these guys.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Laying out the line-work on the square faces presents
an interesting challenge.  I decided to generate the
&lt;a href=&#34;https://github.com/clearwater/gaugette/blob/master/tools/square_dial/dial.png&#34; target=&#34;_blank&#34;&gt;bare line-work&lt;/a&gt;
programmatically with a &lt;a href=&#34;https://github.com/clearwater/gaugette/blob/master/tools/square_dial/dial.rb&#34; target=&#34;_blank&#34;&gt;ruby script&lt;/a&gt;, and add the labels later with
a graphics tool.&lt;/p&gt;

&lt;p&gt;My first attempt at the script used the GD2 library, but &lt;a href=&#34;http://gd2.rubyforge.org/rdoc/&#34; target=&#34;_blank&#34;&gt;GD2&lt;/a&gt;
doesn&amp;rsquo;t seem to support anti-aliasing or line-caps and the resulting line-work
was just too damned ugly.  I switched to &lt;a href=&#34;http://rubyforge.org/projects/cairo/&#34; target=&#34;_blank&#34;&gt;Cairo&lt;/a&gt; which makes pretty, pretty lines.
A revelation at this point was that I could use Cairo&amp;rsquo;s clipping operator to trim the graticule lines and remove the messy trig I was coding to figure out line
intersections and stroke lengths.  Finally I imported the generated image into
OpenOffice to add the text labels.&lt;/p&gt;

&lt;p&gt;So what to print on?  On a recent trip to Cairns I looked in Officeworks
for ideas.  I didn&amp;rsquo;t find any card stock I liked, but
I did find some 120 gsm paper (Quill brand &amp;ldquo;Metallique&amp;rdquo;
in Mother of Pearl) with a cool metallic / opalesque finish.
120 gsm is heavier than standard typing paper, and maybe barely stiff
enough to support itself in the gauge.  Over time it might curl
or slump in the varying humidity here in the tropics.
There is just enough drive shaft length to place the paper
over the original dial plate so that the needle just clears
the face, but if the paper will support itself I could
backlight it with an LED which might look nice in the dark.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/fiskars_hole_punch.png&#34;  class=&#34;left&#34;   alt=&#34;Fiskars Hole Punch&#34;  /&gt;

One thing that had me stuffed is how to punch a neat hole in the paper for
the drive shaft.  A standard hole-punch makes big holes and can&amp;rsquo;t reach
far enough from the edge of the paper.  Drilling would leave messy edges.  Scouring
the aisles at Officeworks I found a
&lt;a href=&#34;http://www.fiskarscraft.eu/Products/Craft/Punches/Eyelet-Setter/Eyelet-Setter-Pack&#34; target=&#34;_blank&#34;&gt;set of three eyelet setters&lt;/a&gt; from Fiskars in the scrap-booking section.  The hole punches use a crazy spring-driven hammer mechanism, so you can position them anywhere on the page, pull back the hammer, and smack, you have a hole.  I reckon I want a 3mm hole, and the middle
size is 3.2mm (1/8&amp;rdquo;).  The downside is the set of 3 cost about $25.  Anyway they work a treat and now
I have some crafty hole punches.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/finished_square_face.png&#34;  class=&#34;right&#34;   alt=&#34;Custom Dial Face&#34;  /&gt;

I tried printing the dials with an ink-jet.  That
seemed okay until I mounted it in the gauge and I found
that at certain angles the metallic finish
on the paper made the line-work look really washed out.  Redoing
the printing with a laser printer gave much better results.&lt;/p&gt;

&lt;p&gt;After installing the new face I calibrated it carefully and found
a discrepancy between the printed face and needle position that I can&amp;rsquo;t
explain.  If I line up zero precisely, then at full-scale (230 degrees
sweep) I find the needle is about 2 degrees short of the 100% mark on
the dial.  I&amp;rsquo;m not sure what the source of error is - presumably just measurement and positioning errors -  but it is easily
solved by changing the stepper motor sweep from 690 steps to 696 steps
to full-scale deflection.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Separation Anxiety</title>
      <link>//guy.carpenter.id.au/gaugette/2012/02/04/separation-anxiety/</link>
      <pubDate>Sat, 04 Feb 2012 11:38:00 +1000</pubDate>
      
      <guid>//guy.carpenter.id.au/gaugette/2012/02/04/separation-anxiety/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;//guy.carpenter.id.au/gaugette/resources/dial_parts.png&#34;  class=&#34;right&#34;   alt=&#34;Separation Anxiety&#34;  /&gt;

I&amp;rsquo;ve separated the Switec X25 motor driver code into a separate
library repository on GitHub.  This will make it easier to use
the driver library in other applications.
&lt;/p&gt;

&lt;h2 id=&#34;switecx25-library-https-github-com-clearwater-switecx25&#34;&gt;&lt;a href=&#34;https://github.com/clearwater/SwitecX25&#34; target=&#34;_blank&#34;&gt;SwitecX25 Library&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;This contains only the Switec X25 driver.&lt;/p&gt;

&lt;h2 id=&#34;gaugette-https-github-com-clearwater-gaugette&#34;&gt;&lt;a href=&#34;https://github.com/clearwater/gaugette&#34; target=&#34;_blank&#34;&gt;Gaugette&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;This is an arduino application that controls analog
gauges by interpreting commands received over the serial interface.
To compile Gaugette you will now need to add the SwitecX25 library
to your Arduino libraries folder.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>