<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://modelleisenbahn.triskell.org/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>ModelleisenbahN</title>
	<link>https://modelleisenbahn.triskell.org/</link>
	<description>Modelleisenbahn traite de la construction de mon r&#233;seau &#171; Messingrohrstadt &#187;, r&#233;seau allemand de l'&#233;poque II. Des documents sur le th&#232;me de la SNCF et &#233;labor&#233;s par R&#233;my Fauvet sont &#233;galement h&#233;berg&#233;s.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://modelleisenbahn.triskell.org/spip.php?id_rubrique=8&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>ModelleisenbahN</title>
		<url>https://modelleisenbahn.triskell.org/local/cache-vignettes/L144xH144/siteon0-d64b7.png?1692197123</url>
		<link>https://modelleisenbahn.triskell.org/</link>
		<height>144</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>La carte de commande 6 servo-moteurs, la messagerie et les commandes</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article41</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article41</guid>
		<dc:date>2013-08-23T10:05:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>servo</dc:subject>
		<dc:subject>bus CAN</dc:subject>

		<description>
&lt;p&gt;Le pilotage des servo-moteurs a &#233;t&#233; pr&#233;sent&#233; dans &#171; La carte de commande 6 servo-moteurs, le logiciel &#187;, voici maintenant la messagerie CAN ainsi que les commandes auxquelles la carte r&#233;pond. &lt;br class='autobr' /&gt;
Sur un r&#233;seau CAN, les messages ne comporte pas une ent&#234;te indiquant quelle est la station r&#233;ceptrice. Au lieu de cela, chaque message comporte un identifiant qui sert aussi de priorit&#233;. Les stations int&#233;ress&#233;es par un message le reconnaissent gr&#226;ce &#224; son identifiant. &lt;br class='autobr' /&gt;
Les messages peuvent &#234;tre (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot5" rel="tag"&gt;servo&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot6" rel="tag"&gt;bus CAN&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le pilotage des servo-moteurs a &#233;t&#233; pr&#233;sent&#233; dans &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article40' class=&#034;spip_in&#034;&gt;La carte de commande 6 servo-moteurs, le logiciel&lt;/a&gt; &#187;, voici maintenant la messagerie CAN ainsi que les commandes auxquelles la carte r&#233;pond.&lt;/p&gt;
&lt;p&gt;Sur un r&#233;seau CAN, les messages ne comporte pas une ent&#234;te indiquant quelle est la station r&#233;ceptrice. Au lieu de cela, chaque message comporte un identifiant qui sert aussi de priorit&#233;. Les stations int&#233;ress&#233;es par un message le reconnaissent gr&#226;ce &#224; son identifiant.&lt;/p&gt;
&lt;p&gt;Les messages peuvent &#234;tre transport&#233;s par des trames standard et avoir un identifiant sur 11 bits, ou bien par des trames &#233;tendues avec un identifiant sur 23 bits. La messagerie CAN est d&#233;finie globalement pour les 3 participants &#224; ce projet de fa&#231;on &#224; ce que le mat&#233;riel sp&#233;cifique &#224; chacun puisse &#234;tre connect&#233; sur le r&#233;seau CAN des deux autres. Il a &#233;t&#233; convenu que seule les trames standard sont employ&#233;es en exploitation, les trames &#233;tendues sont r&#233;serv&#233;es au diagnostic et &#224; des fonctions sp&#233;ciales comme le flashage de programme via le CAN.&lt;/p&gt;
&lt;p&gt;Par convention, les identifiants des messages en provenance des cartes 6 servos sont donc compris entre 768 et 783 (16 cartes flash&#233;es avec le m&#234;me programme et 96 servos possibles) et ceux destin&#233;s aux cartes 6 servos sont compris entre 784 et 799.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Trame &#233;mise par la carte&lt;/h2&gt;
&lt;p&gt;Les cartes 6 servos &#233;mettent &#224; intervalle r&#233;gulier (toutes les 100ms en exploitation mais cet intervalle est r&#233;glable) une trame de 6 octets comportant l'&#233;tat des servos et dont l'identifiant est :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='idd119_c0'&gt;10&lt;/th&gt;&lt;th id='idd119_c1'&gt;9&lt;/th&gt;&lt;th id='idd119_c2'&gt;8&lt;/th&gt;&lt;th id='idd119_c3'&gt;7&lt;/th&gt;&lt;th id='idd119_c4'&gt;6&lt;/th&gt;&lt;th id='idd119_c5'&gt;5&lt;/th&gt;&lt;th id='idd119_c6'&gt;4&lt;/th&gt;&lt;th id='idd119_c7'&gt;3&lt;/th&gt;&lt;th id='idd119_c8'&gt;2&lt;/th&gt;&lt;th id='idd119_c9'&gt;1&lt;/th&gt;&lt;th id='idd119_c10'&gt;0&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idd119_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c1'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c2'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c3'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c4'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c5'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd119_c6'&gt;0&lt;/td&gt;
&lt;td headers='idd119_c7'&gt;n&lt;/td&gt;
&lt;td headers='idd119_c8'&gt;n&lt;/td&gt;
&lt;td headers='idd119_c9'&gt;n&lt;/td&gt;
&lt;td headers='idd119_c10'&gt;n&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;o&#249; &lt;i&gt;nnnn&lt;/i&gt; est le num&#233;ro de la carte &#233;mettrice sur 4 bits.&lt;/p&gt;
&lt;p&gt;L'octet de rang 0 correspond au servo 0 et celui de rang 5 au servo 5. Un octet est form&#233; de la mani&#232;re suivante :&lt;/p&gt;
&lt;div class='spip_document_122 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;50&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH123/octet_etatpnfb76-09694.png?1692744474' width='500' height='123' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-122 '&gt;&lt;strong&gt;Octet d'une trame &#171; &#201;tats des servos &#187;
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le champ &lt;strong&gt;&#233;tat&lt;/strong&gt; est l'&#233;tat dans lequel se trouve la machine d'&#233;tats du servo. Les valeurs possibles sont les suivantes :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='ida2b3_c0'&gt;7&lt;/th&gt;&lt;th id='ida2b3_c1'&gt;6&lt;/th&gt;&lt;th id='ida2b3_c2'&gt;5&lt;/th&gt;&lt;th id='ida2b3_c3'&gt;4&lt;/th&gt;&lt;th id='ida2b3_c4'&gt;&#201;tat du servo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;0&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;&#233;teint&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;1&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;calib&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;0&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;op&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;1&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;frein&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;0&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;arr&#234;t&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='ida2b3_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c1'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c2'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='ida2b3_c3'&gt;0&lt;/td&gt;
&lt;td headers='ida2b3_c4'&gt;erreur&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le champ &lt;strong&gt;erreur&lt;/strong&gt; signale sur quel fin de course une erreur a &#233;t&#233; d&#233;tect&#233;e. Notez qu'il peut aussi s'agir d'une panne de servo-moteur. Les valeurs possibles sont les suivantes :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id1369_c0'&gt;3&lt;/th&gt;&lt;th id='id1369_c1'&gt;2&lt;/th&gt;&lt;th id='id1369_c2'&gt;Erreur&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='id1369_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='id1369_c1'&gt;0&lt;/td&gt;
&lt;td headers='id1369_c2'&gt;Aucune erreur&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='id1369_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='id1369_c1'&gt;1&lt;/td&gt;
&lt;td headers='id1369_c2'&gt;Anomalie fin de course horaire&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='id1369_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='id1369_c1'&gt;0&lt;/td&gt;
&lt;td headers='id1369_c2'&gt;Anomalie fin de course trigo&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='id1369_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='id1369_c1'&gt;1&lt;/td&gt;
&lt;td headers='id1369_c2'&gt;Anomalie sur les deux fins de course&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Enfin, le champ &lt;strong&gt;fdc&lt;/strong&gt; donne l'&#233;tat des interrupteurs de fin de course. Les valeurs possibles sont les suivantes :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='idec8f_c0'&gt;1&lt;/th&gt;&lt;th id='idec8f_c1'&gt;0&lt;/th&gt;&lt;th id='idec8f_c2'&gt;Fins de course&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idec8f_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idec8f_c1'&gt;0&lt;/td&gt;
&lt;td headers='idec8f_c2'&gt;Les deux fins de course sont enfonc&#233;s&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='idec8f_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idec8f_c1'&gt;1&lt;/td&gt;
&lt;td headers='idec8f_c2'&gt;Fin de course trigo enfonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idec8f_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idec8f_c1'&gt;0&lt;/td&gt;
&lt;td headers='idec8f_c2'&gt;Fin de course horaire enfonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='idec8f_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idec8f_c1'&gt;1&lt;/td&gt;
&lt;td headers='idec8f_c2'&gt;Aucun des fins de course n'est enfonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h2 class=&#034;spip&#034;&gt;Trames de commande re&#231;ues par la carte&lt;/h2&gt;
&lt;p&gt;Une trame de commande de servo permet d'envoyer une commande &#224; un des servos de la carte ou &#224; la carte dans sa globalit&#233;. L'identifiant d'une trame de commande est :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='idce30_c0'&gt;10&lt;/th&gt;&lt;th id='idce30_c1'&gt;9&lt;/th&gt;&lt;th id='idce30_c2'&gt;8&lt;/th&gt;&lt;th id='idce30_c3'&gt;7&lt;/th&gt;&lt;th id='idce30_c4'&gt;6&lt;/th&gt;&lt;th id='idce30_c5'&gt;5&lt;/th&gt;&lt;th id='idce30_c6'&gt;4&lt;/th&gt;&lt;th id='idce30_c7'&gt;3&lt;/th&gt;&lt;th id='idce30_c8'&gt;2&lt;/th&gt;&lt;th id='idce30_c9'&gt;1&lt;/th&gt;&lt;th id='idce30_c10'&gt;0&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idce30_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c1'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c2'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c3'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c4'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c5'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idce30_c6'&gt;1&lt;/td&gt;
&lt;td headers='idce30_c7'&gt;n&lt;/td&gt;
&lt;td headers='idce30_c8'&gt;n&lt;/td&gt;
&lt;td headers='idce30_c9'&gt;n&lt;/td&gt;
&lt;td headers='idce30_c10'&gt;n&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;o&#249; &lt;i&gt;nnnn&lt;/i&gt; est le num&#233;ro de la carte destinataire sur 4 bits.&lt;/p&gt;
&lt;p&gt;Si plusieurs commandes doivent &#234;tre envoy&#233;es, plusieurs trames sont n&#233;cessaires. Une trame de commande de servo comprend 2 octets de donn&#233;es. Le premier octet contient, dans les 4 bits de poids fort, le num&#233;ro du servo et, dans les 4 bits de poids faible, la commande. Le second octet contient l'argument de la commande dont la signification est variable selon la commande. Certaines commandes s'adressent &#224; la carte dans sa globalit&#233; et, dans ce cas, le num&#233;ro de servo est ignor&#233;.&lt;/p&gt;
&lt;div class='spip_document_123 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;19&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L461xH168/trame_comman116b-9e32b.png?1692205427' width='461' height='168' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-123 '&gt;&lt;strong&gt;Trame de commande
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Commandes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les commandes sont r&#233;sum&#233;es dans le tableau &#224; la fin du billet.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Aucune op&#233;ration&lt;/p&gt;
&lt;p&gt;Code : 0000&lt;/p&gt;
&lt;p&gt;Cette commande est sans effet.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Position&lt;/p&gt;
&lt;p&gt;Code : 0001&lt;/p&gt;
&lt;p&gt;La commande de position permet de fixer la consigne de position d'un servo. L'argument peut avoir les valeurs suivantes :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id72ed_c0'&gt;Argument&lt;/th&gt;&lt;th id='id72ed_c1'&gt;Signification&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id72ed_c0'&gt;00 (0)&lt;/td&gt;
&lt;td headers='id72ed_c1'&gt;Pas de changement de position&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id72ed_c0'&gt;01 (1)&lt;/td&gt;
&lt;td headers='id72ed_c1'&gt;Position trigo&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id72ed_c0'&gt;10 (2)&lt;/td&gt;
&lt;td headers='id72ed_c1'&gt;Position horaire&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id72ed_c0'&gt;11 (3)&lt;/td&gt;
&lt;td headers='id72ed_c1'&gt;Position milieu&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;i&gt;Les commandes de vitesse&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Les commandes de vitesse permettent de fixer la vitesse de rotation du servo dans le sens trigonom&#233;trique, horaire ou les deux &#224; la fois. Si le servo est en mouvement au moment de la r&#233;ception d'une commande de vitesse, la nouvelle vitesse ne sera prise en compte que pour le mouvement suivant.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Vitesse trigo&lt;/p&gt;
&lt;p&gt;Code : 0010&lt;/p&gt;
&lt;p&gt;La commande Vitesse trigo permet de fixer la vitesse du servo quand il tourne dans le sens trigonom&#233;trique. L'argument est la vitesse sur 3 bits (de 1 &#224; 7) dans les bits 2 &#224; 0 de l'argument. La valeur 0 est sans effet.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Vitesse horaire&lt;/p&gt;
&lt;p&gt;Code : 0011&lt;/p&gt;
&lt;p&gt;La commande Vitesse horaire permet de fixer la vitesse du servo quand il tourne dans le sens horaire. L'argument est la vitesse sur 3 bits (de 1 &#224; 7) dans les bits 2 &#224; 0 de l'argument. La valeur 0 est sans effet.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Vitesses&lt;/p&gt;
&lt;p&gt; Code : 0100&lt;/p&gt;
&lt;p&gt;La commande Vitesses permet de fixer &#224; la fois les vitesses trigonom&#233;trique et horaire du servo. L'argument est la vitesse trigonom&#233;trique sur les bits 6 &#224; 4 (de 1 &#224; 7) et la vitesse horaire sur les bits 2 &#224; 0. Pour les deux vitesses, la valeur 0 est sans effet.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Alimentation servo&lt;/p&gt;
&lt;p&gt;Code : 0101&lt;/p&gt;
&lt;p&gt;La commande Alimentation servo permet d'allumer ou d'&#233;teindre un servo. L'argument est 0 (extinction) ou 1 (allumage) dans le bit 0 de l'argument. L'allumage est sans effet si le servo n'est pas dans l'&#233;tat servo &#233;teint. L'extinction est toujours effective.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Reset servo&lt;/p&gt;
&lt;p&gt;Code : 0110&lt;/p&gt;
&lt;p&gt;Cette commande permet de passer un servo de l'&#233;tat Servo en erreur &#224; l'&#233;tat Servo &#233;teint. Aucun argument n'est n&#233;cessaire. La commande est sans effet si le servo n'est pas dans l'&#233;tat Servo en erreur.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Envoi trame d'&#233;tat&lt;/p&gt;
&lt;p&gt;Code : 0111&lt;/p&gt;
&lt;p&gt;Cette commande permet de d&#233;marrer ou d'arr&#234;ter l'envoi de la trame d'&#233;tat des servos. Le num&#233;ro de servo est ignor&#233;. Au d&#233;marrage, l'envoi est arr&#234;t&#233;. L'argument est 0 (arr&#234;t) ou 1 (d&#233;marrage) dans le bit 0 de l'argument.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; P&#233;riode d'envoi trame d'&#233;tat&lt;/p&gt;
&lt;p&gt;Code : 1000&lt;/p&gt;
&lt;p&gt;Cette commande permet de fixer la p&#233;riode d'envoi de la trame d'&#233;tat des servos. Cette p&#233;riode est r&#233;glable par multiple de 20ms. La valeur 0 correspond &#224; une p&#233;riode de 20ms, 1 &#224; 40ms, . . . 255 &#224; 5,12s.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Fixer nombre d'erreur maximum&lt;/p&gt;
&lt;p&gt;Code : 1001&lt;/p&gt;
&lt;p&gt;Cette commande permet de fixer le nombre d'erreurs admissible avant qu'un servo passe dans l'&#233;tat servo erreur.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Ecrire param&#232;tres dans EEPROM&lt;/p&gt;
&lt;p&gt;Code : 1010&lt;/p&gt;
&lt;p&gt;Cette commande permet d'enregistrer les param&#232;tres utiles d'un d&#233;marrage sur l'autre dans l'EEPROM.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Commande&lt;/i&gt; Limiter le nombre de servos en mouvement&lt;/p&gt;
&lt;p&gt;Code : 1011&lt;/p&gt;
&lt;p&gt;Cette commande permet de limiter le nombre de servos qui peuvent &#234;tre en mouvement simultan&#233;ment. L'argument est le nombre de servos. Un argument de 0 est sans effet. Un argument sup&#233;rieur &#224; 6 est ramen&#233; &#224; 6.&lt;/p&gt;
&lt;div class='spip_document_126 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;22&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/png/commandespng5fd2.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH216/commandespng5fd2-07c32.png?1692744474' width='500' height='216' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-126 '&gt;&lt;strong&gt;R&#233;sum&#233; des commandes
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Ce billet conclut la pr&#233;sentation de la carte 6 servos. Rendez vous dans la rubrique &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?rubrique17' class=&#034;spip_in&#034;&gt;Journal de bord&lt;/a&gt; &#187; pour la suite.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>La carte de commande 6 servo-moteurs, le logiciel</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article40</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article40</guid>
		<dc:date>2013-08-21T11:41:50Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>servo</dc:subject>

		<description>
&lt;p&gt;Le logiciel de la carte 6 servos remplit les fonctions suivantes : pilotage de chacun des 6 servos avec d&#233;tection d'erreur interfa&#231;age avec le contr&#244;leur central : r&#233;ception de commandes, &#233;mission de l'&#233;tat des servos. &lt;br class='autobr' /&gt;
Le pilotage des servos &lt;br class='autobr' /&gt;
Multiplexage des servos &lt;br class='autobr' /&gt;
Comme indiqu&#233; dans &#171; La carte de commande 6 servo-moteurs, le mat&#233;riel &#187; un servo-moteur est command&#233; via une consigne en PWM qui se r&#233;p&#232;te toutes les 20 ms. Comme 6 servos sont &#224; commander, les 20 ms sont d&#233;coup&#233;s en 6 (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot5" rel="tag"&gt;servo&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le logiciel de la carte 6 servos remplit les fonctions suivantes :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; pilotage de chacun des 6 servos avec d&#233;tection d'erreur&lt;/li&gt;&lt;li&gt; interfa&#231;age avec le contr&#244;leur central : r&#233;ception de commandes, &#233;mission de l'&#233;tat des servos.&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Le pilotage des servos&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Multiplexage des servos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Comme indiqu&#233; dans &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article36' class=&#034;spip_in&#034;&gt;La carte de commande 6 servo-moteurs, le mat&#233;riel&lt;/a&gt; &#187; un servo-moteur est command&#233; via une consigne en PWM qui se r&#233;p&#232;te toutes les 20 ms. Comme 6 servos sont &#224; commander, les 20 ms sont d&#233;coup&#233;s en 6 intervalles de 3,33 ms. Dans chacun de ces intervalles, la PWM du servo correspondant est g&#233;n&#233;r&#233;e. C'est &#224; dire que le signal de commande est mis &#224; 1 au d&#233;marrage de l'intervalle et mis &#224; 0 au bout du temps correspondant &#224; la position demand&#233;e.&lt;/p&gt;
&lt;div class='spip_document_114 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;62&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/png/multiplexage.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH279/multiplexage-11ef4.png?1692744474' width='500' height='279' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-114 '&gt;&lt;strong&gt;Multiplexage de la commande des servos sur 6 slots de 3,33ms
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Les instants des slots sont g&#233;r&#233;s au moyen d'un timer 8 bits. Il n'est pas possible de compter jusqu'&#224; 3,33 ms et le &lt;i&gt;tick&lt;/i&gt; de base a donc &#233;t&#233; fix&#233; &#224; approximativement un sixi&#232;me de 3,33 ms, soit 552 &#181;s. Par cons&#233;quent, une interruptions est g&#233;n&#233;r&#233;e tous les 552 &#181;s et toutes les 6 interruptions le logiciel g&#232;re l'un des servos.&lt;/p&gt;
&lt;p&gt;Le signal de commande est mis &#224; 1 et un second timer est programm&#233; avec la dur&#233;e voulue pour la PWM. Lorsque ce timer expire, une interruption est g&#233;n&#233;r&#233;e et le logiciel remet la commande &#224; 0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Machine d'&#233;tats d'un servo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&#192; chaque servo est associ&#233;e une machine d'&#233;tats qui permet de fixer la valeur des signaux de commande d'allumage et de PWM. Les entr&#233;es de cette machine sont les &#233;tats des interrupteurs de fin de course et les commandes re&#231;ues (allumage, consigne de position) ainsi que des variables internes.&lt;/p&gt;
&lt;div class='spip_document_121 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;41&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/png/machine_serv9d8a.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH317/machine_serv9d8a-20761.png?1692744475' width='500' height='317' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-121 '&gt;&lt;strong&gt;Machine d'&#233;tats associ&#233;e &#224; chaque servo
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;La machine d&#233;marre dans l'&#233;tat initial &lt;i&gt;&#233;teint&lt;/i&gt; avec une consigne &#233;gale &#224; l'&#233;tat des interrupteurs de fin de course. Un commande d'allumage, &lt;i&gt;on&lt;/i&gt;, conduit au calcul d'une vitesse de d&#233;placement nulle si le servo est dans la position milieu et positive ou n&#233;gative si l'un des interrupteurs de fin de course est enfonc&#233;. Cette vitesse est telle que le servo va se d&#233;sengager du fin de course enfonc&#233;. La machine passe dans l'&#233;tat &lt;i&gt;calib&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Dans l'&#233;tat &lt;i&gt;calib&lt;/i&gt;, la vitesse est maintenue tant que l'interrupteur de fin de course concern&#233; est enfonc&#233; (fdc = consigne). D&#232;s qu'il n'est plus enfonc&#233; (fdc &#8800; consigne), la vitesse de d&#233;placement est mise &#224; 0 et la machine passe dans l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;On reste dans l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt; tant que la consigne est identique &#224; l'&#233;tat des interrupteurs de fins de course (fdc = consigne). Si la consigne n'est pas atteinte ou change (fdc &#8800; consigne), la vitesse permettant de satisfaire la consigne est calcul&#233;e et la machine passe dans l'&#233;tat &lt;i&gt;op&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Dans l'&#233;tat &lt;i&gt;op&lt;/i&gt;, la vitesse est maintenue tant que l'interrupteur de fin de course concern&#233; n'est pas enfonc&#233; (fdc &#8800; consigne). D&#232;s qu'il est enfonc&#233; (fdc = consigne), un compteur est initialis&#233; (cpt &#10229; N) et la machine passe dans l'&#233;tat &lt;i&gt;frein&lt;/i&gt;. On n'arr&#234;te pas imm&#233;diatement le servo, on continue de mani&#232;re &#224; bien enfoncer l'interrupteur de fin de course. &#201;videmment il faut tenir compte de la vitesse et de l'inertie du moteur pour calculer N. Plus la vitesse est grande et plus N doit &#234;tre petit. Le calcul est le suivant N = 2 &#215; (Vmax - V).&lt;/p&gt;
&lt;p&gt;Dans l'&#233;tat &lt;i&gt;frein&lt;/i&gt;, le mouvement du servo est poursuivi et &lt;i&gt;cpt&lt;/i&gt; d&#233;cr&#233;ment&#233; tant qu'il n'est pas nul. Si &lt;i&gt;cpt&lt;/i&gt; devient nul, la vitesse du servo est mise &#224; 0 et la machine passe dans l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;La PWM n'est g&#233;n&#233;r&#233;e que dans les &#233;tats &lt;i&gt;calib&lt;/i&gt;, &lt;i&gt;op&lt;/i&gt; et &lt;i&gt;frein&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;D&#233;tection des erreurs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le logiciel v&#233;rifie les conditions d'erreur en confrontant la valeur de la PWM (c'est &#224; dire la position attendue du servo) avec l'&#233;tat des interrupteurs de fin de course. 3 valeurs de PWM de r&#233;f&#233;rence sont employ&#233;es : la valeur correspondant &#224; la position milieu&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;une valeur pr&#233;cise n'est pas n&#233;cessaire, il suffit d'avoir une valeur (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;, une valeur extr&#234;me dans le sens horaire et une valeur extr&#234;me dans le sens trigonom&#233;trique. Ces deux derni&#232;res valeurs correspondent &#224; des positions m&#233;caniques non atteignables. Si la PWM est entre la valeur milieu et la valeur extr&#234;me horaire, on dit qu'elle est dans le secteur horaire. Si elle est entre la position milieu et la valeur extr&#234;me trigo, on dit qu'elle est dans le secteur trigo.&lt;/p&gt;
&lt;p&gt;Les conditions suivantes sont test&#233;es :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; interrupteur de fin de course horaire enfonc&#233; et PWM dans le secteur trigo : panne du servo ou fin de course horaire coll&#233; ;&lt;/li&gt;&lt;li&gt; interrupteur de fin de course trigo enfonc&#233; et PWM dans le secteur horaire : panne du servo ou fin de course trigo coll&#233; ;&lt;/li&gt;&lt;li&gt; interrupteur de fin de course horaire non enfonc&#233; et PWM au del&#224; de la position extr&#234;me horaire : panne du servo ou fin de course horaire manquant ou en panne ;&lt;/li&gt;&lt;li&gt; interrupteur de fin de course trigo non enfonc&#233; et PWM au del&#224; de la position extr&#234;me trigo : panne du servo ou fin de course trigo manquant ou en panne ;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;De fa&#231;on a &#234;tre robuste vis-&#224;-vis des erreurs transitoires, la d&#233;tection d'une erreur ne provoque pas imm&#233;diatement le passage dans l'&#233;tat &lt;i&gt;erreur&lt;/i&gt;. Un compteur d'erreurs est associ&#233; &#224; chaque servo. La d&#233;tection d'une erreur engendre l'incr&#233;mentation de ce compteur. L'absence d'erreur engendre sa d&#233;cr&#233;mentation. Si le compteur d&#233;passe un seuil, alors le passage dans l'&#233;tat &lt;i&gt;erreur&lt;/i&gt; se produit.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;La s&#233;quence l'allumage&lt;/h2&gt;
&lt;p&gt;Lorsque le logiciel d&#233;marre, tous les servos voient leur commande d'allumage mise &#224; &lt;i&gt;on&lt;/i&gt;. Toutefois, le comportement voulu est un allumage s&#233;quentiel, ceci afin de limiter l'appel de courant. Pour cela, un jeton autorisant l'allumage est partag&#233; par les machines d'&#233;tats des servos. Le premier servo qui s'allume prend le jeton et ne le rel&#226;che que lorsqu'il passe dans l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt; ou bien si une erreur est d&#233;tect&#233;e. Le servo suivant ne peut donc d&#233;marrer que lorsque le servo qui d&#233;tient le jeton a termin&#233; son allumage. Ce jeton n'est pas un bool&#233;en. En effet, chaque machine d'&#233;tats doit savoir si c'est elle qui poss&#232;de le jeton, ceci afin de pouvoir le rel&#226;cher au bon moment. Le jeton est donc initialis&#233; &#224; -1 (non poss&#233;d&#233;) et contient sinon le num&#233;ro de la machine qui le poss&#232;de.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Limitation du nombre de servo en mouvement&lt;/h2&gt;
&lt;p&gt;&#201;galement pour des raisons de consommation, le nombre de servos en mouvement peut-&#234;tre limit&#233;. &#192; cet effet, un compteur est partag&#233; par les machines d'&#233;tat. Ce compteur est initialis&#233; aux nombre de servos qui peuvent bouger simultan&#233;ment. Une machine ne peut commencer un mouvement que si ce compteur est &gt; 0. Quand une machine commence le mouvement d'un servo (passage de l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt; &#224; l'&#233;tat &lt;i&gt;op&lt;/i&gt;, elle d&#233;cr&#233;mente ce compteur pour le rel&#226;cher quand elle passe dans l'&#233;tat &lt;i&gt;arr&#234;t&lt;/i&gt; ou &lt;i&gt;erreur&lt;/i&gt;.&lt;/p&gt;
&lt;div class=&#034;spip_document_111 spip_document spip_documents spip_document_video spip_document_avec_legende&#034; data-legende-len=&#034;45&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;div class=&#034;video-intrinsic-wrapper&#034; style='height:0;width:640px;max-width:100%;padding-bottom:75%;position:relative;'&gt; &lt;div class=&#034;video-wrapper&#034; style=&#034;position: absolute;top:0;left:0;width:100%;height:100%;&#034;&gt; &lt;video class=&#034;mejs mejs-111&#034; data-id=&#034;d0cb9505718327ecc203d91f0884052a&#034; data-mejsoptions='{&#034;iconSprite&#034;: &#034;plugins-dist/medias/lib/mejs/mejs-controls.svg&#034;,&#034;alwaysShowControls&#034;: true,&#034;pluginPath&#034;:&#034;plugins-dist/medias/lib/mejs/&#034;,&#034;loop&#034;:false,&#034;videoWidth&#034;:&#034;100%&#034;,&#034;videoHeight&#034;:&#034;100%&#034;}' width=&#034;100%&#034; height=&#034;100%&#034; controls=&#034;controls&#034; preload=&#034;none&#034; &gt; &lt;source type=&#034;application/x-shockwave-flash&#034; src=&#034;http://www.youtube.com/v/M3bmHMFShvI?hl=fr_FR&amp;version=3&amp;rel=0&#034; /&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L64xH64/swf-d2c4d-75a7b.svg?1772798901' width='64' height='64' alt='Impossible de lire la video' /&gt; &lt;/video&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-111 '&gt;&lt;strong&gt;Limitation du nombre de servos en mouvement
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;
&lt;div class=&#034;base64javascript112448122269e1136dd3b789.51848535&#034; title=&#034;PHNjcmlwdD4gdmFyIG1lanNwYXRoPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudC1hbmQtcGxheWVyLm1pbi5qcz8xNzcyNzk1ODQwJyxtZWpzY3NzPSdwbHVnaW5zLWRpc3QvbWVkaWFzL2xpYi9tZWpzL21lZGlhZWxlbWVudHBsYXllci5taW4uY3NzPzE3NzI3OTU4NDAnOwp2YXIgbWVqc2xvYWRlcjsKKGZ1bmN0aW9uKCl7dmFyIGE9bWVqc2xvYWRlcjsidW5kZWZpbmVkIj09dHlwZW9mIGEmJihtZWpzbG9hZGVyPWE9e2dzOm51bGwscGx1Zzp7fSxjc3M6e30saW5pdDpudWxsLGM6MCxjc3Nsb2FkOm51bGx9KTthLmluaXR8fChhLmNzc2xvYWQ9ZnVuY3Rpb24oYyl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLmNzc1tjXSl7YS5jc3NbY109ITA7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2IuaHJlZj1jO2IucmVsPSJzdHlsZXNoZWV0IjtiLnR5cGU9InRleHQvY3NzIjtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGIpfX0sYS5pbml0PWZ1bmN0aW9uKCl7ITA9PT1hLmdzJiZmdW5jdGlvbihjKXtqUXVlcnkoImF1ZGlvLm1lanMsdmlkZW8ubWVqcyIpLm5vdCgiLmRvbmUsLm1lanNfX3BsYXllciIpLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGU9ITAsaDtmb3IoaCBpbiBkLmNzcylhLmNzc2xvYWQoZC5jc3NbaF0pO2Zvcih2YXIgZiBpbiBkLnBsdWdpbnMpInVuZGVmaW5lZCI9PQp0eXBlb2YgYS5wbHVnW2ZdPyhlPSExLGEucGx1Z1tmXT0hMSxqUXVlcnkuZ2V0U2NyaXB0KGQucGx1Z2luc1tmXSxmdW5jdGlvbigpe2EucGx1Z1tmXT0hMDtiKCl9KSk6MD09YS5wbHVnW2ZdJiYoZT0hMSk7ZSYmalF1ZXJ5KCIjIitjKS5tZWRpYWVsZW1lbnRwbGF5ZXIoalF1ZXJ5LmV4dGVuZChkLm9wdGlvbnMse3N1Y2Nlc3M6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBiKCl7dmFyIGI9alF1ZXJ5KGEpLmNsb3Nlc3QoIi5tZWpzX19pbm5lciIpO2EucGF1c2VkPyhiLmFkZENsYXNzKCJwYXVzaW5nIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlsdGVyKCIucGF1c2luZyIpLnJlbW92ZUNsYXNzKCJwbGF5aW5nIikucmVtb3ZlQ2xhc3MoInBhdXNpbmciKS5hZGRDbGFzcygicGF1c2VkIil9LDEwMCkpOmIucmVtb3ZlQ2xhc3MoInBhdXNlZCIpLnJlbW92ZUNsYXNzKCJwYXVzaW5nIikuYWRkQ2xhc3MoInBsYXlpbmciKX1iKCk7YS5hZGRFdmVudExpc3RlbmVyKCJwbGF5IixiLCExKTsKYS5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlIixiLCExKTthLmFkZEV2ZW50TGlzdGVuZXIoInBhdXNlZCIsYiwhMSk7Zy5hdHRyKCJhdXRvcGxheSIpJiZhLnBsYXkoKX19KSl9dmFyIGc9alF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJkb25lIiksYzsoYz1nLmF0dHIoImlkIikpfHwoYz0ibWVqcy0iK2cuYXR0cigiZGF0YS1pZCIpKyItIithLmMrKyxnLmF0dHIoImlkIixjKSk7dmFyIGQ9e29wdGlvbnM6e30scGx1Z2luczp7fSxjc3M6W119LGUsaDtmb3IoZSBpbiBkKWlmKGg9Zy5hdHRyKCJkYXRhLW1lanMiK2UpKWRbZV09alF1ZXJ5LnBhcnNlSlNPTihoKTtiKCl9KX0oalF1ZXJ5KX0pO2EuZ3N8fCgidW5kZWZpbmVkIiE9PXR5cGVvZiBtZWpzY3NzJiZhLmNzc2xvYWQobWVqc2NzcyksYS5ncz1qUXVlcnkuZ2V0U2NyaXB0KG1lanNwYXRoLGZ1bmN0aW9uKCl7YS5ncz0hMDthLmluaXQoKTtqUXVlcnkoYS5pbml0KTtvbkFqYXhMb2FkKGEuaW5pdCl9KSl9KSgpOzwvc2NyaXB0Pg==&#034;&gt;&lt;/div&gt; &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Un prochain article pr&#233;sentera les commandes possibles et la messagerie CAN.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;une valeur pr&#233;cise n'est pas n&#233;cessaire, il suffit d'avoir une valeur correspondant &#224; une position o&#249; aucun des interrupteurs de fin de course n'est enfonc&#233;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>La carte de commande 6 servo-moteurs, le mat&#233;riel</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article36</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article36</guid>
		<dc:date>2013-07-06T12:25:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>servo</dc:subject>

		<description>
&lt;p&gt;La commande des actionneurs des 42 aiguilles de Messingrohrstadt (voir &#171; Conception et mise en &#339;uvre &#187;) n&#233;cessite la conception d'une carte ad-hoc qui prendra en charge des fonctions que les bo&#238;tiers ou cartes de commande de servo-moteurs disponibles dans le commerce n'offrent pas. Cette carte s'inspire beaucoup de la carte con&#231;ue par Pierre. La diff&#233;rence majeure est la fonction de commande des alimentations des servos. &lt;br class='autobr' /&gt;
Les fonctions &#224; assurer sont : l'allumage et l'extinction des servos (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot5" rel="tag"&gt;servo&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La commande des actionneurs des 42 aiguilles de &lt;i&gt;Messingrohrstadt&lt;/i&gt; (voir &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article35' class=&#034;spip_in&#034;&gt;Conception et mise en &#339;uvre&lt;/a&gt; &#187;) n&#233;cessite la conception d'une carte ad-hoc qui prendra en charge des fonctions que les bo&#238;tiers ou cartes de commande de servo-moteurs disponibles dans le commerce n'offrent pas. Cette carte s'inspire beaucoup de la carte con&#231;ue par Pierre. La diff&#233;rence majeure est la fonction de commande des alimentations des servos.&lt;/p&gt;
&lt;p&gt;Les fonctions &#224; assurer sont :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; l'allumage et l'extinction des servos individuellement.&lt;/li&gt;&lt;li&gt; la commande du servo proprement dite ;&lt;/li&gt;&lt;li&gt; la prise en charge des interrupteurs de fin de course ;&lt;/li&gt;&lt;li&gt; la connexion au bus CAN des accessoires (voir &#224; ce propos &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article11' class=&#034;spip_in&#034;&gt;L'architecture g&#233;n&#233;rale&lt;/a&gt; &#187;).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Avec ces fonctions, le nombre de broches d'entr&#233;/sortie disponible sur le micro-contr&#244;leur choisi fixe le nombre de voies &#224; 6. &#199;a sera donc une carte permettant de commander 6 servos.&lt;/p&gt;
&lt;p&gt;Le micro-contr&#244;leur choisi est un PIC 18F46K80 de Microchip. Il poss&#232;de une interface CAN et a suffisament d'entr&#233;es/sorties logiques. Il est disponible en bo&#238;tier DIP 40 broches.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Allumage et extinction individuels des servo-moteurs&lt;/h2&gt;
&lt;p&gt;Les servos sont con&#231;us pour &#234;tre aliment&#233;s entre 4,8 V et 6 V (ce qui correspond respectivement &#224; l'utilisation de 4 accumulateurs NiMH de 1,2 V ou 4 piles b&#226;ton de 1,5 V en mod&#233;lisme). Pour disposer du meilleur couple possible les servos vont &#234;tre aliment&#233;s en 6 V. Leur alimentation va &#234;tre synth&#233;tis&#233;e &#224; partir du 9 V qui sert &#224; l'&#233;lectronique du r&#233;seau et au moyen d'un r&#233;gulateur 7806.&lt;/p&gt;
&lt;p&gt;Le courant maximum consomm&#233; par les servos utilis&#233;s (des HK15178 de chez HobbyKing) lorsqu'ils sont bloqu&#233;s est d'environ 100 mA. Par ailleurs, quand on allume un servo-moteur, il a un fr&#233;tillement et donc consomme imm&#233;diatement. Par cons&#233;quent, on peut craindre que l'allumage simultan&#233; d'environ 70 servos (42 pour les aiguilles, une vingtaine pour la signalisation, 6 pour les portes des remises), engendre un appel de courant d'environ 7 A qui va effondrer l'alimentation g&#233;n&#233;rale et planter les micro-contr&#244;leurs.&lt;/p&gt;
&lt;p&gt;L'allumage des servo-moteurs est donc pilot&#233; et va &#234;tre op&#233;r&#233; selon une s&#233;quence pour limiter l'appel de courant. Le sch&#233;ma suivant accompli cette tache.&lt;/p&gt;
&lt;div class='spip_document_100 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;606&#034; data-legende-lenx=&#034;xxxxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH284/alim_servo-ee79c.png?1692744475' width='500' height='284' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-100 '&gt;&lt;strong&gt;Alimentation pilotable pour les servo-moteurs
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-100 '&gt;CA0 est la commande en provenance du micro-contr&#244;leur. Quand CA0 est &#224; 0V (0 logique), T7 est bloqu&#233;, ce qui a pour effet de bloquer T1. T1 est un darlington qui inclue une r&#233;sistance de tirage de la base au potentiel de l'&#233;metteur, c'est &#224; dire 6V. R27 assure le blocage de T7 si le micro-contr&#244;leur ne pilote pas CA0. Quand CA0 est &#224; 5V (1 logique), T7 est passant et tire la base de T1 &#224; la masse. Ceci a pour effet d'allumer la LED t&#233;moin et de rendre T1 passant. La sortie AL0 est donc &#224; la tension de l'&#233;metteur de T1 (6V) moins le seuil du transistor.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;En agissant sur l'entr&#233;e CA0, le micro-contr&#244;leur peut permettre ou non l'alimentation du servo-moteur. Ce sch&#233;ma est r&#233;p&#233;t&#233; pour chacune des voies (commandes CA0, CA1, CA2, C3, CA4 et CA5). 6 sorties logiques sont par cons&#233;quent occup&#233;es.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;La commande du servo proprement dite&lt;/h2&gt;
&lt;p&gt;Un servo-moteur est command&#233; via une PWM : un signal ayant alternativement pour valeur 0V ou 5V et qui se r&#233;p&#232;te &#224; intervalle r&#233;gulier. L'information est transmise par le temps pass&#233; dans un &#233;tat. Pour les servo-moteurs, il s'agit du temps pass&#233; &#224; l'&#233;tat haut (5 V). cette impulsion est r&#233;p&#233;t&#233;e toutes les 20 ms et la dur&#233;e de l'impulsion code la position du servo-moteur. Un signal haut d'une dur&#233;e de 0,5 ms correspond &#224; l'une des positions extr&#234;me du servo (-90&#176;), d'une dur&#233;e de 2,5 ms &#224; l'autre position extr&#234;me (+90&#176;) et une dur&#233;e de 1,5 ms &#224; la position milieu (0&#176;).&lt;/p&gt;
&lt;div class='spip_document_101 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;169&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L413xH268/commande_servo-68ed1.png?1692301737' width='413' height='268' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-101 '&gt;&lt;strong&gt;La PWM de commande d'un servo
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-101 '&gt;Seuls les dur&#233;es extr&#234;mes de l'impulsion et la dur&#233;e m&#233;diane sont montr&#233;es mais toutes les valeurs entre 0,5 ms et 2,5 ms sont possibles.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Bien &#233;videmment, toutes les positions interm&#233;diaires sont possibles et en faisant varier continuement et doucement la dur&#233;e de l'impulsion, il est possible d'obtenir un mouvement de vitesse voulue.&lt;/p&gt;
&lt;p&gt;La PWM est g&#233;n&#233;r&#233;e par logiciel et cette g&#233;n&#233;ration sera d&#233;crite en d&#233;tail dans un prochain billet. 6 sorties logiques sont occup&#233;es par les 6 PWM qui sont nomm&#233;es de PWM_0 &#224; PWM_5. 6 r&#233;sistances de 10 k&#937; tirent chacune de ces sorties &#224; la masse afin de ne pas envoyer des parasites sur les PWM si le micro-contr&#244;leur ne les pilote pas, ceci afin d'&#233;viter des mouvements erratiques des servo-moteurs.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;la prise en charge des interrupteurs de fin de course&lt;/h2&gt;
&lt;p&gt;Chaque servo-moteur dispose de deux interrupteurs de fin de course. Le servo-moteur &#233;tant aliment&#233; en 6V, on ne peut pas utiliser l'&#233;tat haut pour indiqu&#233; qu'un fin de course est enfonc&#233;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;&#192; moins de placer un diviseur de tension dans le circuit mais cela (&#8230;)&#034; id=&#034;nh3-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; car le micro-contr&#244;leur ne tol&#232;re pas une entr&#233;e qui soit au del&#224; de 5V. L'information &#171; interrupteur de fin de course enfonc&#233; &#187; correspond donc &#224; un 0 logique. 2 entr&#233;es logique par voie sont utilis&#233;es. Un r&#233;seau de r&#233;sistance tire chaque entr&#233;e &#224; l'&#233;tat haut (5 V) quand l'interrupteur n'est pas enfonc&#233;. L'&#233;tat de ces interrupteurs indique indirectement la position de l'aiguille :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='idd61e_c0'&gt; Fin de course Horaire &lt;/th&gt;&lt;th id='idd61e_c1'&gt; Fin de course trigo &lt;/th&gt;&lt;th id='idd61e_c2'&gt; Signification &lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idd61e_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd61e_c1'&gt;0&lt;/td&gt;
&lt;td headers='idd61e_c2'&gt;Probl&#232;me de collage&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='idd61e_c0'&gt;0&lt;/td&gt;
&lt;td class='numeric ' headers='idd61e_c1'&gt;1&lt;/td&gt;
&lt;td headers='idd61e_c2'&gt;L'aiguille est en position horaire&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td class='numeric ' headers='idd61e_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idd61e_c1'&gt;0&lt;/td&gt;
&lt;td headers='idd61e_c2'&gt;L'aiguille est en position trigo&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td class='numeric ' headers='idd61e_c0'&gt;1&lt;/td&gt;
&lt;td class='numeric ' headers='idd61e_c1'&gt;1&lt;/td&gt;
&lt;td headers='idd61e_c2'&gt;L'aiguille est en court de mouvement&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ces informations ne suffisent pas pour diagnostiquer une panne. En confrontant la valeur demand&#233;e de la PWM &#224; l'&#233;tat des interrupteurs de fin de course, il est possible d'affiner le diagnostic comme nous le verrons dans le billet consacr&#233; au logiciel.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;La connexion au bus CAN des accessoires&lt;/h2&gt;
&lt;p&gt;Deux broches CANRx (r&#233;ception CAN) et CANTx (&#233;mission CAN) permettent de connecter le micro-contr&#244;leur au bus CAN. Le bus CAN &#233;tant un bus diff&#233;rentiel pour garantir une certaine immunit&#233; au bruit, il faut ajouter un transceiver qui convertira les signaux logiques en signaux diff&#233;rentiels. Le MCP2551 de Microchip remplit ce r&#244;le. Des connecteurs RJ11 sont employ&#233;s pour le bus CAN.&lt;/p&gt;
&lt;p&gt;Enfin, 7 cartes seront n&#233;cessaires pour les aiguilles. Il est donc n&#233;cessaire de pouvoir les distinguer sur le bus en leur donnant des adresses diff&#233;rentes. C'est le r&#244;le d'un DIP-switch &#224; 4 interrupteur qui permet 16 adresses diff&#233;rentes.&lt;/p&gt;
&lt;div class='spip_document_102 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;40&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/png/micro.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH251/micro-5dabd.png?1692744475' width='500' height='251' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-102 '&gt;&lt;strong&gt;Le micro-contr&#244;leur et l'interface CAN
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;L'alimentation&lt;/h2&gt;
&lt;p&gt;Il s'agit d'un montage tout &#224; fait classique &#224; base de r&#233;gulateur de tension 7805 pour l'alimentation de la logique et de 7806 pour l'alimentation des servo-moteurs. Le 7806 a un courant de sortie maximum de 1,5 A ce qui est suffisant pour couvrir la consommation maximum des 6 servos.&lt;/p&gt;
&lt;p&gt;En entr&#233;e, une diode de protection permet de pr&#233;venir les erreurs de branchement. Les deux condensateurs filtres la basse fr&#233;quence et la haute fr&#233;quence sur l'alimentation.&lt;/p&gt;
&lt;div class='spip_document_103 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;28&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH193/alim_carte6servos-f8af0.png?1692744475' width='500' height='193' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-103 '&gt;&lt;strong&gt;L'alimentation de la carte
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Le typon&lt;/h2&gt;
&lt;p&gt;La sch&#233;matique de la carte son dessin ont &#233;t&#233; r&#233;alis&#233;s avec le logiciel &lt;a href=&#034;http://canari.rts-software.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Canari&lt;/a&gt;. Elle est dessin&#233;e en double face et occupe une surface de 98,2 mm x 55,2 mm. La figure suivante montre l'implantation des composants.&lt;/p&gt;
&lt;div class='spip_document_106 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;29&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH281/carte-6-servos-aiguille-v8-legendTopSide-gbr-2e805.png?1692744475' width='500' height='281' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-106 '&gt;&lt;strong&gt;Implantation des composants
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Les deux figures suivantes montrent le typon.&lt;/p&gt;
&lt;div class='spip_document_104 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;24&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH281/carte-6-servos-aiguille-v8-layoutTopSide-gbr-1d7f4.png?1692744475' width='500' height='281' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-104 '&gt;&lt;strong&gt;Pistes c&#244;t&#233; composants
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_105 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;21&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH281/carte-6-servos-aiguille-v8-layoutBottomSide-gbr-ff631.png?1692744475' width='500' height='281' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-105 '&gt;&lt;strong&gt;Pistes c&#244;t&#233; soudure
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb3-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 3-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&#192; moins de placer un diviseur de tension dans le circuit mais cela demanderait 12 r&#233;sistances suppl&#233;mentaires.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Alimentation des cantons</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article21</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article21</guid>
		<dc:date>2012-12-06T10:31:25Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>cantonnement</dc:subject>
		<dc:subject>alimentation traction</dc:subject>

		<description>
&lt;p&gt;Domestiquer la masse de fils qui courent sous un r&#233;seau en analogique n'est pas une mince affaire. &lt;br class='autobr' /&gt;
Comme expliqu&#233; dans &#171; La carte d'alimentation 4 cantons &#187;, pour chaque sens de circulation, un canton comporte 1 zone d'arr&#234;t et une zone de pleine voie. &lt;br class='autobr' /&gt;
Chaque canton est donc aliment&#233; par 4 fils, un pour la zone de pleine voie droite (+, PVD), un pour la zone de pleine voie gauche (-, PVG), un pour la zone d'arr&#234;t droite (+, AD) et un pour la zone d'arr&#234;t gauche (-, AG). La totalit&#233; du (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot2" rel="tag"&gt;cantonnement&lt;/a&gt;, 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot3" rel="tag"&gt;alimentation traction&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Domestiquer la masse de fils qui courent sous un r&#233;seau en analogique n'est pas une mince affaire.&lt;/p&gt;
&lt;p&gt;Comme expliqu&#233; dans &#171; &lt;a href='https://modelleisenbahn.triskell.org/spip.php?article12' class=&#034;spip_in&#034;&gt;La carte d'alimentation 4 cantons&lt;/a&gt; &#187;, pour chaque sens de circulation, un canton comporte 1 zone d'arr&#234;t et une zone de pleine voie.&lt;/p&gt;
&lt;div class='spip_document_26 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;22&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH105/canton-68516.png?1692338816' width='500' height='105' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-26 '&gt;&lt;strong&gt;Anatomie d'un canton
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Chaque canton est donc aliment&#233; par 4 fils, un pour la zone de pleine voie droite (+, PVD), un pour la zone de pleine voie gauche (-, PVG), un pour la zone d'arr&#234;t droite (+, AD) et un pour la zone d'arr&#234;t gauche (-, AG). La totalit&#233; du r&#233;seau comporte 24 cantons qui seront donc g&#233;r&#233;s par 6 cartes d'alimentations 4 cantons.&lt;/p&gt;
&lt;p&gt;Ce sont donc 96 fils d'alimentation qui courront sous le r&#233;seau. &#192; cela il faut ajouter la r&#233;-alimentation des c&#339;urs d'aiguille, soit environ 40 fils.&lt;/p&gt;
&lt;p&gt;Il faut toutefois noter que l'usage des cartes d'alimentations qui sont reli&#233;es au calculateur central via un bus CAN permet de les implanter &#224; proximit&#233; des cantons qu'elles alimentent. Cela permet de simplifier le c&#226;blage car seuls les fils des bus CAN et des alimentations courent d'un bout &#224; l'autre du r&#233;seau.&lt;/p&gt;
&lt;p&gt;Comme je veux pouvoir dans un premier temps alimenter la partie construite avec un transformateur ordinaire, il faut :&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; avoir un organisation rationnelle ;&lt;/li&gt;&lt;li&gt; avoir une connexion fiable des fils de cantons ;&lt;/li&gt;&lt;li&gt; ne pas faire un c&#226;blage temporaire qui soit remis en cause lors du la mise en place des cartes d'alimentation ;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;La solution consiste &#224; positionner un petit bornier 4 fils pour rassembler les fils d'alimentation d'un canton. Le bornier est implant&#233; sous le canton de mani&#232;re &#224; minimiser la longueur de fil. Il est aussi rep&#233;r&#233; par une &#233;tiquette. Concernant la fiabilit&#233;, j'ai opt&#233; pour la soudure plut&#244;t que pour des connecteurs qui sont &#224; la fois plus chers et dont la multiplication augmente les chances de mauvais contacts.&lt;/p&gt;
&lt;p&gt;Le bornier choisi, &lt;a href=&#034;http://www.conrad.fr/ce/fr/product/530445/Barrette-relais-1-range-4-cosses-longueur-36-mm&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;disponible chez Conrad&lt;/a&gt;, d'un co&#251;t n&#233;gligeable (environ 20 &#8364; pour 50 pi&#232;ces) est pr&#233;sent&#233; ci-dessous et mesure 36 mm x 9 mm. Il servira &#233;galement pour le raccordement des alimentations des c&#339;urs d'aiguilles.&lt;/p&gt;
&lt;div class='spip_document_58 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;35&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L400xH400/barrette-e9898.jpg?1692233851' width='400' height='400' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-58 '&gt;&lt;strong&gt;Barrette de raccordement &#224; souder
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>La carte d'alimentation 4 cantons</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article12</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article12</guid>
		<dc:date>2012-07-12T10:31:35Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>alimentation traction</dc:subject>

		<description>
&lt;p&gt;Je viens de terminer de monter une carte d'alimentation 4 cantons avec mes camarades. Nous avons mis 2 jours pleins pour monter 3 cartes, chacun la sienne. Cela repr&#233;sente un travail assez important qu'il va me falloir effectuer encore 8 fois pour mon r&#233;seau. Il faut dire qu'il y a plus de 400 composants sur cette carte qui est assez complexe mais fait beaucoup de choses. &lt;br class='autobr' /&gt;
La s&#233;rie pr&#233;liminaire comportait 5 tirages de la carte. 4 sont maintenant mont&#233;es et vont servir &#224; des essais pouss&#233;s (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot3" rel="tag"&gt;alimentation traction&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Je viens de terminer de monter une carte d'alimentation 4 cantons avec mes camarades. Nous avons mis 2 jours pleins pour monter 3 cartes, chacun la sienne. Cela repr&#233;sente un travail assez important qu'il va me falloir effectuer encore 8 fois pour mon r&#233;seau. Il faut dire qu'il y a plus de 400 composants sur cette carte qui est assez complexe mais fait beaucoup de choses.&lt;/p&gt;
&lt;p&gt;La s&#233;rie pr&#233;liminaire comportait 5 tirages de la carte. 4 sont maintenant mont&#233;es et vont servir &#224; des essais pouss&#233;s cet &#233;t&#233;. La suite sera de lancer la fabrication des exemplaires de la carte d&#233;finitive pour les 3 r&#233;seaux, soit au total une trentaine de cartes.&lt;/p&gt;
&lt;p&gt;Chaque carte embarque 4 modules d'alimentation. Les fonctions assur&#233;es par un module sont d&#233;crites ci-dessous.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Qu'est ce qu'un canton ?&lt;/h2&gt;
&lt;p&gt;Il ne s'agit &#233;videmment pas exactement de la d&#233;finition donn&#233;es pour les trains r&#233;els. Ici, un canton est une portion de voie aliment&#233;e ind&#233;pendamment. Cela peut correspondre &#224; un canton tel que d&#233;fini pour les trains r&#233;els mais cela peut &#234;tre aussi une portion beaucoup plus petite comme une travers&#233;e de jonction double qui va &#234;tre toute seule dans son canton. De plus, un canton peut comprendre une section de pleine voie et une zone d'arr&#234;t, et ce dans chaque sens de circulation.&lt;/p&gt;
&lt;p&gt;La mat&#233;rialisation de la section de pleine voie et de la zone d'arr&#234;t est r&#233;alis&#233;e par une coupure sur le rail gauche vu dans le sens de circulation (c'est &#224; dire le rail de polarit&#233; &#8211;). Quand le sens de circulation est invers&#233;, le rail (-) devient le rail (+) et la zone d'arr&#234;t passe de l'autre c&#244;t&#233; du canton. L'anatomie d'un canton est pr&#233;sent&#233; &#224; la figure ci-dessous :&lt;/p&gt;
&lt;div class='spip_document_26 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;22&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH105/canton-68516.png?1692338816' width='500' height='105' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-26 '&gt;&lt;strong&gt;Anatomie d'un canton
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;De cette mani&#232;re, il est possible, moyennant l'&#233;lectronique ad&#233;quate de mesure du courant qui passe par le rail (-), de conna&#238;tre la position d'une rame &#224; l'int&#233;rieur d'un canton : seulement en pleine voie, en pleine voie &lt;i&gt;et&lt;/i&gt; en zone d'arr&#234;t, seulement en zone d'arr&#234;t. Ceci est illustr&#233; dans la figure suivante :&lt;/p&gt;
&lt;div class='spip_document_27 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;400&#034; data-legende-lenx=&#034;xxxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH439/detection-caa71.png?1692614554' width='500' height='439' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-27 '&gt;&lt;strong&gt;D&#233;tection de la position d'une rame
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-27 '&gt;Sur cette figure, les 3 cas possibles sont pr&#233;sent&#233;s. En haut, la locomotive est en pleine voie, le courant est d&#233;tect&#233; sur l'amp&#232;rem&#232;tre en orange. Au milieu, la locomotive est &#224; cheval entre la pleine voie et la zone d'arr&#234;t, les deux amp&#232;rem&#232;tres d&#233;tectent le courant. Enfin la locomotive est en zone d'arr&#234;t, seul l'amp&#232;rem&#232;tre en orange d&#233;tecte sa pr&#233;sence.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Pour d&#233;tecter les wagons, il est n&#233;cessaire de graphiter les essieux. En effet, les roues des wagons, bien que pour la plupart m&#233;talliques, sont isol&#233;es l'une de l'autre. Afin de rendre l'essieu conducteur (modestement), il est graphit&#233; (voir &lt;a href=&#034;http://amfn.chez.com/graph.htm&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;A.M.F.N : le graphitage des essieux&lt;/a&gt;).&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;L'alimentation par PWM&lt;/h2&gt;
&lt;p&gt;L'alimentation des locomotives est faite au moyen d'une PWM&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb4-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Pulse Width Modulation ou Modulation de Largeur d'Impulsion en Fran&#231;ais&#034; id=&#034;nh4-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;. Traditionnellement, les moteurs &#224; courant continue sont aliment&#233;s avec une tension que l'on va faire varier pour que le moteur tourne plus ou moins vite. Le probl&#232;me de ce mode d'alimentation sont les pertes &#233;nerg&#233;tique qui r&#233;sultent de l'abaissement de la tension.&lt;/p&gt;
&lt;p&gt;Avec une PWM, le moteur est aliment&#233; via un signal carr&#233; passant alternativement de 0 &#224; la tension d'alimentation maximum. Dans notre cas, ce signal a une fr&#233;quence de 20KHz (soit une p&#233;riode de 50&#181;s). Il en r&#233;sulte que la vitesse du moteur est proportionnelle au rapport entre la portion de temps pass&#233;e &#224; l'&#233;tat de tension maximum et la p&#233;riode du signal, c'est &#224; dire ce que l'on appelle le &lt;a href=&#034;http://fr.wikipedia.org/wiki/Rapport_cyclique&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;rapport cyclique&lt;/a&gt;. Pour changer la vitesse de rotation du moteur, il suffit de changer le rapport cyclique.&lt;/p&gt;
&lt;p&gt;La gestion de la PWM est confi&#233;e &#224; un micro-contr&#244;leur&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb4-2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;C'est &#224; dire un micro-processeur qui incorpore des circuit additionnels pour (&#8230;)&#034; id=&#034;nh4-2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt; de type PIC 18F26K80 de Microchip. Le signal &#233;mis par le PIC n'est pas suffisant, ni en tension, ni en intensit&#233;, pour alimenter le moteur. Il est donc n&#233;cessaire de l'amplifier pour attaquer un transistor PMOS qui se chargera de commuter la tension d'alimentation du moteur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La synchronisation des PWM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu'une rame passe d'un canton &#224; un canton adjacent, les deux alimentations sont bien s&#251;r r&#233;gl&#233;es sur la m&#234;me valeur de mani&#232;re &#224; ce que la locomotive garde la m&#234;me vitesse. Ce r&#233;glage n'est pas pris en charge implicitement par les modules d'alimentation mais est envoy&#233; aux modules d'alimentation concern&#233;s par la carte LPC2294 car seul le logiciel centralis&#233; de gestion du r&#233;seau connait le graphe des cantons.&lt;/p&gt;
&lt;p&gt;Mais cela ne suffit pas. En effet, le micro-contr&#244;leur PIC de chaque module poss&#232;de sa propre horloge et va donc synth&#233;tiser sa PWM ind&#233;pendamment de celle des autres PIC. Par cons&#233;quent, il n'y a aucune raison pour que les signaux des PWM soient synchrones. Par cons&#233;quent, au moment o&#249; une locomotive passe d'un canton a un autre, prenant ainsi le courant de traction dans les deux cantons &#224; la fois, elle verra une PWM qui est la superposition de celles des deux cantons et effectuera un bond. La figure ci-dessous illustre ce ph&#233;nom&#232;ne.&lt;/p&gt;
&lt;div class='spip_document_28 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;240&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L429xH149/synchro-4cfec.png?1692233852' width='429' height='149' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-28 '&gt;&lt;strong&gt;PWM asynchrones
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-28 '&gt;Les deux cantons A et B sont r&#233;gl&#233;s sur un rapport cyclique de 25% mais ne sont pas synchrones. Par cons&#233;quent une locomotive passant d'un canton &#224; l'autre verra la PWM en rouge, superpositions des deux PWM A et B &#224; 37,5%.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Pour &#233;viter ce comportement disgracieux, il est n&#233;cessaire de synchroniser les PWM de tous les modules d'alimentation. &#192; cet effet, le PIC de la carte Mezzanine diffuse un signal de synchronisation &#224; tous les PIC des modules d'alimentation. Ces derniers recalent leur PWM en changeant l&#233;g&#232;rement &lt;br class='autobr' /&gt;
la p&#233;riode en fonction du d&#233;calage qu'ils constatent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&#192; suivre...&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb4-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh4-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 4-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Pulse Width Modulation ou Modulation de Largeur d'Impulsion en Fran&#231;ais&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb4-2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh4-2&#034; class=&#034;spip_note&#034; title=&#034;Notes 4-2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;C'est &#224; dire un micro-processeur qui incorpore des circuit additionnels pour g&#233;rer des capteurs et des actionneurs et de la m&#233;moire : un ordinateur complet dans un seul composant.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>L'architecture g&#233;n&#233;rale</title>
		<link>https://modelleisenbahn.triskell.org/spip.php?article11</link>
		<guid isPermaLink="true">https://modelleisenbahn.triskell.org/spip.php?article11</guid>
		<dc:date>2012-07-06T10:00:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Luc</dc:creator>


		<dc:subject>bus CAN</dc:subject>

		<description>
&lt;p&gt;L'architecture g&#233;n&#233;rale de l'&#233;lectronique et de l'informatique n'est pas de ma conception mais essentiellement de celle de Pierre. Pour r&#233;sumer rapidement, le contr&#244;le des convois est effectu&#233; par un seul calculateur plut&#244;t costaud et les contr&#244;les des appareils de voie, des signaux et des alimentations de cantons sont d&#233;l&#233;gu&#233;s &#224; des calculateurs plus simple du type PIC. L'interconnexion entre les calculateurs est assur&#233;e par 3 r&#233;seaux CAN. &lt;br class='autobr' /&gt;
Le c&#339;ur du syst&#232;me &lt;br class='autobr' /&gt;
Le mat&#233;riel &lt;br class='autobr' /&gt;
Le calculateur (&#8230;)&lt;/p&gt;


-
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?rubrique8" rel="directory"&gt;L'&#233;lectronique et l'informatique&lt;/a&gt;

/ 
&lt;a href="https://modelleisenbahn.triskell.org/spip.php?mot6" rel="tag"&gt;bus CAN&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;L'architecture g&#233;n&#233;rale de l'&#233;lectronique et de l'informatique n'est pas de ma conception mais essentiellement de celle de Pierre. Pour r&#233;sumer rapidement, le contr&#244;le des convois est effectu&#233; par un seul calculateur plut&#244;t costaud et les contr&#244;les des appareils de voie, des signaux et des alimentations de cantons sont d&#233;l&#233;gu&#233;s &#224; des calculateurs plus simple du type PIC. L'interconnexion entre les calculateurs est assur&#233;e par 3 r&#233;seaux CAN&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb5-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir &#224; ce propos l'article de Wikip&#233;dia &#171; Controller Area Network &#187;&#034; id=&#034;nh5-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;div class='spip_document_25 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;47&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH386/archigenerale-2-30fc2.png?1693453101' width='500' height='386' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-25 '&gt;&lt;strong&gt;Architecture g&#233;n&#233;rale du syst&#232;me &#233;lectronique
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Le c&#339;ur du syst&#232;me&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Le mat&#233;riel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le calculateur central est une carte L2294 fabriqu&#233;e par la soci&#233;t&#233; &lt;a href=&#034;https://www.olimex.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;OLIMEX&lt;/a&gt; et &#233;quip&#233;e d'un micro-contr&#244;leur ARM LPC2294 de Philips cadenc&#233; &#224; 60MHz. Cette carte est &lt;a href=&#034;http://www.lextronic.fr/P1679-platine-arm7-lpc-l2294.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;distribu&#233;e en France par la soci&#233;t&#233; Lextronic&lt;/a&gt;. La carte offre 4 bus CAN. 3 d'entre eux sont utilis&#233;s et nous verrons leur usage plus loin. De plus un contr&#244;leur Ethernet est pr&#233;sent.&lt;/p&gt;
&lt;p&gt;Afin de compl&#233;ter cette carte, Pierre a d&#233;velopp&#233; une carte mezzanine&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb5-2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;C'est &#224; dire une carte qui s'enfiche par dessus une autre via des connecteurs&#034; id=&#034;nh5-2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt; comportant plusieurs fonctions additionnelles :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; un &#233;cran LCD permettant l'affichage de messages de contr&#244;le et de d&#233;verminage ;&lt;/li&gt;&lt;li&gt; un micro-contr&#244;leur PIC accessible via l'un des bus CAN et remplissant plusieurs r&#244;les : contr&#244;le de l'&#233;cran LCD, synth&#232;se d'un signal de synchronisation &#224; destination des cartes d'alimentation de cantons, synth&#232;se d'un signal de d&#233;clenchement de mesure de vitesse (plus d'informations sur ces fonctions seront pr&#233;sent&#233;es dans un billet consacr&#233; &#224; la carte d'alimentation de cantons) ;&lt;/li&gt;&lt;li&gt; 2 circuits amplificateurs pour 2 des bus CAN. En effet, la carte L2294 n'a qu'un seul des bus CAN &#233;quip&#233; d'une amplification, il est donc n&#233;cessaire d'ajouter ces circuits pour exploiter les autres bus ;&lt;/li&gt;&lt;li&gt; plusieurs boutons-poussoir, commutateurs permettant de 1) d&#233;marrer la carte dans plusieurs modes, 2) mettre en oeuvre un arr&#234;t d'urgence ;&lt;/li&gt;&lt;li&gt; quelques diodes &#233;lectro-luminescentes (LED) permettant une interaction avec l'utilisateur pour indiquer le fonctionnement, normal ou non, du syst&#232;me.&lt;/li&gt;&lt;/ul&gt;&lt;div class='spip_document_22 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;42&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/jpg/7321418522_06d0b.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH231/7321418522_06d0b-5cf10.jpg?1693453101' width='500' height='231' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-22 '&gt;&lt;strong&gt;Carte mezzanine d&#233;pourvue de l'&#233;cran LCD
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Le logiciel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le logiciel reste &#224; &#233;crire. Pierre et Philippe emploierons un logiciel de suivi de convois appel&#233; &lt;i&gt;Caniche&lt;/i&gt; et &#233;crit par Pierre alors que je compte &#233;crire le mien. J'ai quelques id&#233;es, que j'exposerai dans un billet futur, sur la mani&#232;re dont l'exploitation automatique du r&#233;seau sera impl&#233;ment&#233;e. Le logiciel d'exploitation reposera sur un syst&#232;me d'exploitation temps-r&#233;el (ou RTOS&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb5-3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Real Time Operating System&#034; id=&#034;nh5-3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;) appel&#233; &lt;a href=&#034;http://trampoline.rts-software.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Trampoline&lt;/a&gt;. Trampoline impl&#233;mente la norme ISO OSEK/VDX et aussi la norme AUTOSAR 4.0. Ces deux normes sont employ&#233;es dans l'industrie automobile pour les syst&#232;mes &#233;lectroniques embarqu&#233;s &#224; bord des v&#233;hicules. Il s'agit d'un RTOS destin&#233; &#224; de petits syst&#232;mes temps-r&#233;els dits durs, ou stricts, dont le comportement doit &#234;tre facilement pr&#233;visible.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les cartes d'alimentation de cantons&lt;/h2&gt;
&lt;p&gt;Ces cartes ont &#233;t&#233; con&#231;ues par Pierre. Un des 3 bus CAN est r&#233;serv&#233; &#224; la communication avec ces cartes. Chaque carte regroupe 4 alimentations et poss&#232;de un syst&#232;me d'adressage sur 4 bits via un DIP switch permettant de distinguer les cartes entre elles. Il est donc possible d'avoir jusqu'&#224; 2&lt;sup&gt;4&lt;/sup&gt; = 16 cartes, soit 64 cantons, sur le bus.&lt;/p&gt;
&lt;div class='spip_document_21 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;36&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://modelleisenbahn.triskell.org/IMG/jpg/7315323598_9d078.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://modelleisenbahn.triskell.org/local/cache-vignettes/L500xH196/7315323598_9d078-51f99.jpg?1693453101' width='500' height='196' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-21 '&gt;&lt;strong&gt;La carte 4 alimentations de canton
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Un prototype de cette carte est op&#233;rationnel et a &#233;t&#233; test&#233; de mani&#232;re tr&#232;s satisfaisante. &lt;a href=&#034;http://lestrainsdutertre.redheberg.com/TouteVapeur/Les_trains_du_Tertre/Entrees/2012/6/15_La_carte_de_commande_de_4_cantons.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Philippe a post&#233; un billet &#224; ce propos&lt;/a&gt;. De plus amples informations seront donn&#233;es sur ces cartes dans un futur billet.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les cartes de contr&#244;le des appareils&lt;/h2&gt;
&lt;p&gt;Ces cartes sont connect&#233;es sur un second bus CAN r&#233;serv&#233; aux &#171; accessoires &#187;. Ces cartes sont de mon cru et sont con&#231;ues de mani&#232;re modulaire : une carte m&#232;re banalis&#233;e comporte l'interfa&#231;age avec le r&#233;seau CAN, le micro-contr&#244;leur PIC, quelques LED, un DIP switch pour fixer son adresse comme pour la carte d'alimentations de cantons, une carte fille &#171; mezzanine &#187; permettant de personnaliser la fonction. Pour l'instant, sont con&#231;ues et dessin&#233;es 3 cartes mezzanine remplissant les fonctions suivantes :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Carte de commande de 10 aiguilles &#224; moteur &#233;lectromagn&#233;tique avec retour de position ;&lt;/li&gt;&lt;li&gt; Carte de commande de 8 aiguilles &#224; FAM avec retour de position ;&lt;/li&gt;&lt;li&gt; Carte de commande de 16 moteurs &#224; FAM sans retour de position pour les d&#233;teleurs et les signaux m&#233;caniques.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;L&#224; aussi, 16 cartes sont possibles sur ce bus mais comme les logiciels seront diff&#233;rents, l'adressage pourra aussi &#234;tre distingu&#233; de mani&#232;re logicielle et il est donc possible d'avoir 16 carte par type de logiciel.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les postes de conduite&lt;/h2&gt;
&lt;p&gt;Le 3e et dernier r&#233;seau CAN est destin&#233; &#224; recevoir des postes de conduite qui pourront se connecter &#224; chaud. Ils permettent une exploitation manuelle du r&#233;seau. Un poste de conduite regroupe un afficheur LCD, un bouton rotatif reli&#233; &#224; un codeur num&#233;rique, un clavier 12 touches et quelques commutateurs et poussoir. 4 postes de conduite sont possibles.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Connexion PC&lt;/h2&gt;
&lt;p&gt;La carte L2294 poss&#233;dant un port Ethernet, il est ais&#233; de le raccorder &#224; un ordinateur. Pierre a &#233;crit une pile TCP/IP qui tourne sur la carte. Cela permettra de communiquer avec elle via le r&#233;seau de la maison. De nombreux usages sont possible : maintenance du logiciel des PIC, supervision, tra&#231;age des messages CAN, etc.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb5-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh5-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 5-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Voir &#224; ce propos l'article de Wikip&#233;dia &#171; &lt;a href=&#034;http://fr.wikipedia.org/wiki/Controller_Area_Network&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Controller Area Network&lt;/a&gt; &#187;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb5-2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh5-2&#034; class=&#034;spip_note&#034; title=&#034;Notes 5-2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;C'est &#224; dire une carte qui s'enfiche par dessus une autre via des connecteurs&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb5-3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh5-3&#034; class=&#034;spip_note&#034; title=&#034;Notes 5-3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;Real Time Operating System&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
