<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:id="ENCODER_SB"> 
<refnamediv>
  <refname>ENCODER_SB</refname>
  <refpurpose>Compte un ensemble d'événements sur une ou plusieurs voies</refpurpose> 
</refnamediv>
<refsection>
  <title>Aperçu</title>
    <para>
       <inlinemediaobject>
          <imageobject>
             <imagedata fileref="../../images/gif/ENCODER_SB.gif" align="center" valign="middle"/>
          </imageobject>
       </inlinemediaobject>
    </para>
</refsection>
<refsection id="Contents_ENCODER_SB">
  <title>Contenu</title>
  <itemizedlist>
	<listitem>
	  <para>
		<xref linkend="Palette_ENCODER_SB">Palette</xref>
	  </para>
	</listitem>
	<listitem>
	  <para>
		<xref linkend="Description_ENCODER_SB">Description</xref>
	  </para>
	</listitem>
	<listitem>
	  <para>
		<xref linkend="Dialogbox_ENCODER_SB">Paramètres</xref>
	  </para>
	</listitem>
	<listitem>
	  <para>
		<xref linkend="Example1_ENCODER_SB">Exemple 1</xref>
	  </para>
	</listitem>
	<listitem>
	  <para>
		<xref linkend="Example2_ENCODER_SB">Exemple 2</xref>
	  </para>
	</listitem>
	<listitem>
	  <para>
		<xref linkend="Seealso_ENCODER_SB">Voir aussi</xref>
	  </para>
	</listitem>
  </itemizedlist>
</refsection>  
<refsection id="Palette_ENCODER_SB">
  <title>Palette</title>
Arduino
</refsection>
<refsection id="Description_ENCODER_SB">
  <title>Description</title>
<para> Beaucoup de capteurs (codeur incrémental, capteur à effet Hall...) renvoient un signal créneau pour lequel on souhaite compter les fronts. Le bloc permet de réaliser cette opération pour un ou deux codeurs. On utilise pour cela les interruptions disponibles sur la carte Arduino. Ce sont des entrées capables d’arrêter le programme principal lors d'un changement d’état (fronts d'un signal) afin d’exécuter un sous-programme. Ce sous-programme consiste dans ce cas à incrémenter ou décrémenter un compteur.  </para>
<para> Les pins 2 et 3 sont les seuls pins de l'Arduino Uno supportant les interruptions. Sur la carte Mega, les pins sont 2, 3 et 18 à 21. Il est nécessaire d'utiliser un signal supplémentaire pour connaître le sens du codeur. </para>
<para> Ainsi, le bloc offre la possibilité de fonctionner un codeur en quadrature. Il faut alors que les deux voies soient câblées sur les pins d'interruption et les fronts montants et descendants sont pris en compte sur les deux voies (la précision est augmentée et on peut également déterminer le sens).  </para>
<para> Par contre, si on utilise un mode autre que la quadrature, seule une voie doit être branchée en interruption. L'autre peut être reliée à une entrée logique classique.  </para>

<para> On rappelle que l'échantillonnage est de 8 ms au minimum pour ce bloc. </para>

</refsection>
<refsection id="Dialogbox_ENCODER_SB">
  <title>Paramètres</title>

<para> Le bloc propose deux menus.  </para>
<para> Le premier permet de choisir le mode de lecture du signal délivré par le codeur (choix entre 1, 2 ou 4). </para>
<para> Le numéro de la carte ne peut pas être modifié pour l'instant. </para>
<inlinemediaobject> <imageobject> <imagedata fileref="../images/ENCODER_SB_dialogbox1.png" align="center"/> </imageobject> </inlinemediaobject>
<para> Le mode 1 utilise une seule voie d'interruption et une voie digitale quelconque pour déterminer le sens. Seuls les fronts montants de la voie d'interruption sont pris en compte dans ce mode. </para>
<para> Le mode 2 utilise les mêmes voies mais les fronts montants et descendants de la voie d'interruption sont pris en compte. </para>
<para> Le mode 4 correspond au mode quadrature. Dans ce mode, les fronts montants et descendants des deux voies sont pris en compte. </para>

<para> Le second menu permet de spécifier les ports utilisés en fonction du mode retenu : </para>
<inlinemediaobject> <imageobject> <imagedata fileref="../images/ENCODER_SB_dialogbox2.png" align="center"/> </imageobject> </inlinemediaobject>
<para> mode 1x : déclaration du pin d'interruption 2 ou 3 sur une carte UNO (2, 3 ou 18 à 21 pour la carte MEGA) et déclaration d'un pin digital quelconque de 2 à 13 pour une carte UNO (2 à 53 pour la carte MEGA) </para>
<para> mode 2x : même principe. </para>
<para> mode 4x : utilisation obligatoire de deux pins d'interruptions 2 et 3 sur une carte UNO ou 2 parmi 2, 3 ou 18 à 21 pour une carte MEGA. </para>

</refsection>
<refsection id="Example1_ENCODER_SB">
  <title>Exemple 1</title>
<para> L'exemple ci-dessous montre l'utilisation du bloc dans le cas d'un moteur dont on relève la position au cours du temps et la vitesse à partir du signal provenant du codeur. Le mode 4x a été choisi pour améliorer la précision. Le paramétrage du moteur est le même que celui de l'exemple sur le moteur. </para>
<inlinemediaobject> <imageobject> <imagedata fileref="../images/ENCODER_exemple.png" align="center"/> </imageobject> </inlinemediaobject>

</refsection>
<refsection id="Example2_ENCODER_SB">
  <title>Exemple 2</title>
<para> L'exemple suivant montre un asservissement de position utilisant l'information du codeur pour comparaison avec une grandeur de consigne. Un correcteur PI est utilisé pour corrigé l'écart et délivrer la tension de commande du moteur à courant continu. </para>
<inlinemediaobject> <imageobject> <imagedata fileref="../images/ASSERV_POS_exemple.png" align="center"/> </imageobject> </inlinemediaobject>

</refsection>
<refsection id="Seealso_ENCODER_SB" role="see also">
  <title>Voir aussi</title>
      <simplelist>
		<member>
        <link linkend="DCMOTOR_SB">DCMOTOR_SB</link>
		</member>
	  </simplelist>
</refsection>
</refentry>
