<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>
<!--
@font-face
        {font-family:Helvetica}
@font-face
        {font-family:Helvetica}
@font-face
        {font-family:Tahoma}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
span.E-MailFormatvorlage17
        {font-family:"Arial","sans-serif";
        color:#1F497D}
span.SpellE
        {}
.MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:70.85pt 70.85pt 2.0cm 70.85pt}
div.WordSection1
        {}
-->
</style><style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1" style="" bgcolor="white" lang="DE-AT" link="blue" vlink="purple">
<div style="direction: ltr;font-family: Verdana;color: #000000;font-size: 8pt;">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">Hi Rick!</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">The most elegant solution for me for multiple encoders is to connect all A and B outputs of
<span class="SpellE">lets</span> say 8 or 16 encoders </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">in parallel – these two signals A and B go to µC input pins.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">The common pin of each encoder is connect via a diode (anode to encoder COM pins) to the 8 or 16 outputs of an 74HC138 or 74HC154.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">So with the control of 4 output lines that select one of the 16 encoders at a time and 2 input lines you can scan 16 encoders.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">The HC138/HC154 have active low outputs, so only one encoder is active at any time and the lines A and B represent the encoder
</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">A and B signal status of the activated encoder.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">This is at least for me optimal IO pin saving solution.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">But remember that this solution only works for encoders that make a full pulse pattern on both pins per detent.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">Some encoders only output half of the
<span class="SpellE">puls</span> pattern and so the A and B pins of the encoders could both be activated in the
</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">resting positions – this leads to errors while reading the other encoders!</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">But this is just a problem of the selection of the correct part number…</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">I have a sketch of such a circuit if anyone is interested but couldn't find the code on my PCs...</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">But its not hard to program...</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"><br>
</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US">Ciao<br>
Peter</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"><a href="http://www.ullrich.at.tt" target="_blank">http://www.ullrich.at.tt</a></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt; font-family:"Arial","sans-serif"; color:#1F497D" lang="EN-US"> </span></p>
<div>
<div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><a name="_MailOriginal"><b><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif"; color:windowtext" lang="DE">Von:</span></b></a><span style=""><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif"; color:windowtext" lang="DE">
 synth-diy-bounces@dropmix.xs4all.nl [mailto:synth-diy-bounces@dropmix.xs4all.nl]
<b>Im Auftrag von </b>Rick Jansen<br>
<b>Gesendet:</b> Montag, 10. August 2015 13:46<br>
<b>An:</b> Synth-Diy<br>
<b>Betreff:</b> [sdiy] Rotary encoders: is there a clever way to handle many?</span></span></p>
</div>
</div>
<p class="MsoNormal"><span style=""> </span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style=""><span style="font-family:"Helvetica","sans-serif"">Well, that was fun, or was it. Handling a rotary encoder with an Arduino can be done, but there's a lot to take care of! The signals from my
 (simple) €1,50 encoder bounce all over the place. My current implementation uses one of the two interrupt pins of the Arduino, although a polling solution is possible as well. I'm not sure if it is because of the "quality" of this encoder, but at times there
 are nearly as many pulses clockwise as anti-clockwise..  I ended up counting both clockwise and anti-clockwise pulses, the greater of which determines actual direction. Even an "acceleration" is detected, if you turn the rotary fast the value will change more
 dramatically.<br>
<br>
It works quite well, but at the same time I wonder how other machines work, that track 8 or 16 rotary encoders.. An Arduino Mega has many more interrupt pins than the measly Arduino Uno, but still. Is there a clever trick to track many rotary encoders that
 I am missing?<br>
<br>
rick</span></span><span style=""></span><span style=""></span></p>
</div>
</div>
<span style="font-size: 9px;"><br><br><br>The information contained in this e-mail message is privileged and confidential and is for the exclusive use of the addressee. The person who receives this message and who is not the addressee, one of his employees or an agent entitled to hand it over to the addressee, is informed that he may not use, disclose or reproduce the contents thereof, and is kindly asked to notify the sender and delete the e-mail <span style="font-size: 11px;"></span>immediately.<br><br></span></body>
</html>