Page d'accueil Vers la page d'accueil       UTS 2000 - Version matériel V3   (mise à jour au 15/02/2023)       

Présentation matérielle de la V3
<<<----------V3.7c------------------ Mise à jour au 15/02/2020 --------------------------------->>>
Informations sur les servomoteurs 90 et 180°.
Informations sur la mise sous tension.

Vous pouvez trouvez des composants en provenance de Chine à moindre prix (Configurer Paypal pour autoriser le paiement en devise et faire des achats entre 50 et 70 euro) :
  - https://www.ebay.fr/usr/electron-discount
  - https://stores.ebay.fr/UTSOURCE-STORE
  - https://www.ebay.fr/str/ICMarket2009
  - ou de Pologne : https://www.tme.eu/fr/

Et des sociétés qui fabriquent les circuits imprimé :
 - https://jlcpcb.com/
 - http://www.util-pocket.com/electronique/circuit_imprime.htm
 - https://www.oshpark.com
 - https://www.oshstencils.com

<<<------------------------------------------------------------------------------------------------------->>>
Cette page présenté les différences entre la version 2 et la version 3 compatible avec les dernières version logicielles.
Il faut commencer par lire entièrement le manuel original de UTS 2000 d'Ulysse pour comprendre le fonctionnement de base et la page consacrée à la version 2.

J'ai commencé à construire la version 2, présentée sur le site d'Ulysse et j'ai conçu les circuits imprimés pour cette version.
Les documents expliquant le fonctionnement des circuits de commande d’aiguillage et le circuit d’alimentation des leds multiplexées se trouve dans la présentation de la version V2.
 

La version 2 est une base intéressante, mais trop limitée pour mon usage. Les 16 cantons me suffisait, mais il fallait plus d'entrées/sorties pour animer le réseau.
La possibilité de rajouter une seconde carte UTS présente des inconvénients comme le dialogue RS232 avec deux cartes, mais reste nécessaire si il y a plus de 16 cantons à alimenter.

La mise au point d'un nouveau système de détection d’occupation des cantons a permis de garantir un fonctionnement sans perturbation.

Cette version V3 est une véritable évolution. La carte du PIC est modifiée et les programmes du PIC et du PC ont été améliorés.
La nouvelle carte UTS-PIC en V3 n'est plus compatible avec les anciennes versions du programme PIC et du PC V2.


La fréquence du PIC est passée de 8 à 20 Mhz pour assurer garantir la puissance cpu demandée par cette version.

Après avoir grillé mon dernier PIC 16F876A du à des passages hasardeux de l'alimentation 5V à 12 V, je suis repassé au 16F873A, un peu moins cher.
Sa mémoire de 4Ko est largement suffisante pour le programme actuel.

carte La carte UTS en V3 avec les CI additionnels 74HCT00 (ou 74HC00) câblés en l'air.
 
---------------

Évolutions matérielles

La carte du PIC se trouve maintenant épaulée par une carte périphérique de même taille, ajoutant 40 entrées, 40 sorties supplémentaires à la carte de base.
Cette carte ajoute aussi les circuits de détection d'occupation des 16 cantons. Cette carte d'extension consomme 10 mA sous 5 volts.

a   Voir la photo : 43_uts_photos_v3.jpg

Les 40 sorties supplémentaires
Le type de sorties est identiques à la carte principale à base de ULN2803 pour procurer des sorties à émetteurs communs.
Dans le logiciel du PC, les numéros de ces nouvelles sorties vont de 40 à 79 et sont gérées de la même façon que les sorties 0 à 39.
Les recommandations pour l’utilisation de la patte 'VR' est la même que pour le circuit principal. L'utilisation de cette patte est obligatoire
pour commander des bobines (aiguillages, dételeurs, relais...).

Les 40 entrées numériques supplémentaires
Contrairement à la carte de base, ces entrées ne sont pas multiplexées, ce sont des entrées directes, sensible à une tension positive.
Cette disposition permet de connecter directement des montages de type détecteurs infra-rouge ayant une sortie à 'collecteur ouvert'.

Ces entrées numériques supplémentaires peuvent être configurées matériellement de plusieurs façons en fonction du signal d'entrée.
Ces configurations se font en installant des résistances en entrée des 74HCT165.

Le PIC ne mémorise pas les états des entrées et renvoi à chaque requête l'état instantané des entrées.
Les entrées peuvent être actives au niveau haut ou au niveau bas. Il suffit de configurer les variables UTS en conséquence.

Logique de fonctionne du programme d 'acquisition du pic :
On attend un signal de validation des données sous forme d'un créneau de niveau bas pour les 74HCT165.
Le signal 'B6' est un créneau de niveau haut utilisé aussi par d'autres fonctions.
Il est inversé sur la carte d'extension par un 74HCT04 au format cms soudé sous la carte par manque de place au dessus.

Il faut bien vérifier le fonctionnement de ce circuit inverseur, car j'ai modifié cette partie du circuit imprimé après une erreur de conception,
mais je ne ai pas testé ce nouveau circuit imprimé en réel !

Dans le logiciel du PC les numéros de ces nouvelles entrées vont de 40 à 79.
La numérotation des entrées ne correspond pas aux numéros des entrées des pattes des 74HCT165, mais aux numéros du connecteur,
car l'ordre des entrées en rétabli dans le programme du PIC pour éviter de croiser les pistes du circuit imprimé.


Les circuits 74HCT165 fonctionnent avec un niveau d'entrée bas U < 0,8 Volts ou un niveau d'entrée haut U > 2 Volts.
Attention, si on utilise des 74HC165, les tensions sont alors 0,8 et 3,5 volts. Les tensions d'entrées seront alors différentes.
Le plus pratique est d'utiliser des circuits de type HCT.


Config en entrée : 1er cas (conseillé) : Entrée prévue en entrée de carte pour une commande à collecteur ouvert
ou par une mise à la masse par un interrupteur ou un relais.
Des sorties de circuits 74xx peuvent être aussi connectés directement à cette entrée.
Une résistance en série de 220 kOhms protège les entrées. Au repos, l'entrée est polarisée au +5 Volts.

           <+ 5 Volts>
               |
               R
               R   100 kOhms (SIL)
               R
               |
     (IN)   ---+---RRRRRRRRR-----> [ 74HCT165 ]
Tension inférieure 0.8 volts = entrée active.
                   220 kOhms

    Tension d'entrée (IN) > 2 Volts    = niveau haut
    Tension d'entrée (IN) < 0,8 Volts = niveau bas
    Résistance de sortie du circuit (IN) < 15 kOhms.

    Si il y a une diode en sortie du circuit de commande (IN), prendre de préférence une diode Schottky (bat46, bat41...) pour avoir une faible chute de tension en série.


Config en entrée : 2ème cas : Tension d'entrée prévue en entrée de carte entre 0 et +5 volts
Des sorties de circuits 74xx peuvent être connectées directement à ces entrées.
Une résistance en série de 220 kOhms protège les entrées.

     (IN)   ------RRRRRRRRR-------> [ 74HCT165 ]
                  220 kOhms

    Tension d'entrée (IN) > 2 Volts    = niveau haut
    Tension d'entrée (IN) < 0,8 Volts = niveau bas
    Résistance de sortie du circuit (IN) < 100 kOhms de préférence.

Config en entrée : 3ème cas : Tension d'entrée prévue en entrée de carte entre 0 et +20 Volts
Une résistance en série de 220 kOhms protège les entrées et un pont diviseur abaisse la tension à 5 Volts maximum en entrée des circuits.

     (IN)   ----RRRRRRRRR-----+---> [ 74HCT165 ] Tension supérieure 7,5 volts = entrée active.
                220 kOhms     |
                              R
                              R  100 kOhms (SIL)
                              R
                              |
                             ---
                              -


    Tension d'entrée (IN) > 7,5 Volts  (20 Volts max) = niveau haut
    Tension d'entrée (IN) < 2,5 Volts = niveau bas
    Résistance de sortie du circuit (IN) < 47 kOhms.

Le programme dans le PC signal une entrée active, quand elle est reliée à la masse.

 
Les L293D d'alimentation des voies
Depuis le PIC, on utilise un bit de sens pour l'entrée 'in' et un bit de vitesse pour l'entrée 'enable'.
Si le bit 'Enable' est à '1', le train est alimenté. Si le bit 'Enable' est à '0', les sorties du L293 sont à haute impédance.
La vitesse du train varie avec la durée de ce signal de type PWM.

Pour le sens de circulation, il faut alimenter les L293D avec un signal sur 'in1/in4'et un signal inversé sur 'in2/in3' pour que le montage en pont fonctionne.

Cette inversion sera faite par des 74HCT00 (ou 74HC00) supplémentaires à cheval sur les circuits existants. Un 74HC4094 alimente deux L293D.


Pour s'adapter aux croisements des pistes sur le circuit imprimé, des sorties du 74HC4094 sont inversés, le programme assembleur est écrit en conséquence.
Quand le sens de parcourt est positif les sorties Q4 et Q6 = 0, mais Q5 et Q7 =1.
Cette configuration permet d'avoir sur le bornier de sorties des voies = +3-3,  +2-2,  +1-1,  +0-0
ATTENTION en cas de conception d'un nouveau circuit imprimé, voir la remarque ICI

 L293 en V3.2


En V2 sur un créneau PWM, le moteur était alimenté au début du créneau puis en court-circuit sur le reste du créneau.
Maintenant en V3 sur un créneau PWM, le moteur est alimenté au début du créneau puis le circuit se met en haut impédance sur le reste du créneau.
Les L293D chauffent ainsi beaucoup moins et les moteurs sont nettement moins sollicités. La consommation à vide de la carte principale passe de 450 mA à 150 mA (3 fois moins !).


L'inconvénient est une vitesse moins proportionnelle à la consigne.  Le train démarre plus vite sur les premiers crans et
les différences aux vitesses élevées sont moins sensibles sur les derniers crans.


Avec le quartz à 20 Mhz et le timer TMR0 fixé à 250 µS, la fréquence PWM d’alimentation des voies est passée de 50 à 62 Hz (=1/(65*250µs)).



La mise sous tension des montages
A la mise sous tension générale, pendant une fraction de seconde, la tension appliquée sur les voies peut faire sursauter les trains.
A la mise sous tension de la carte à PIC, les amplis de sortie sont alimentés et leurs entrées sont déjà valides.
Le temps que le programme du pic s'initialise, les voies sont alors alimentées pendant une très courte durée.
Il est impossible de corriger cela de façon simple sur la carte existante.
Si ce phénomène est gênant, il est possible d'alimenter la partie d'alimentation des voies en 15 volts, avec un relais générant un retard d'une seconde à la mise sous tension.
Ainsi le PIC a le temps de s'initialiser, avant que les L293D/L298 soient sous tension.


Les circuits de détection d'occupation des cantons
La carte supplémentaire comporte un nouveau montage de détection d'occupation des 16 cantons.
On détecte l'occupation des 16 cantons à la fois, toutes les 16 msec quand les sorties des L293D sont à haute impédance (pendant 2 * 250µs).
En V3 les sorties PWM vers les voies fournissent un créneau à environ 62 Hz.
Les sorties passent à haute impédance pendant 0,5 msec (2*TMR0) toutes les 16 msec. On fait la moyenne des 3 dernières détections pour s'affranchir de parasites.
Avec un tics à 80 ms + 16 msec, le programme du PC est informé en moins de 100 msec en moyenne.


Cette méthode de détection est très fiable, ce qui est important pour assurer le fonctionnent correct du logiciel de supervision sur le PC.
 
Décalage maximum dans le temps pour que l'information arrive au PC :

                              PIC             +          Temps de transfert        +               PC (Timer de boucle)              =               Total                         
V2                17*64*300µs                           25 ms                                               2*250 ms                                          
                         = 326 ms                                                                                          500 ms                                         850 ms                   
V3                 4*65*250µs                            13 ms                                                2*80 ms                                            
                          = 65 ms                                                                                           160 ms                                         238 ms
 

Quand un train quitte un canton, il faut 4*16 msec pour que le canton soit reconnu libre. Le programme du PC est informé en moins de 150 msec en moyenne.

Ce circuit de détection ne fonctionne correctement qu'avec des circuits de type 74HCT165.
        <+ 12/15 Volts (alimentation fixe)>
               |
               R
               R   3,9 K Ohms (cms) Tire le rail 1 au +12/15 volt.
               R
               |
            (RAIL 1)
                      La présence d'un train fait passer du courant du rail 1 vers le rail 2.
            (RAIL 2)
               |
               +-----RRRRRRRRR-----> [ 74HCT165 ] La tension dépasse 2 volts en présence de train au
               |     220 K Ohms                   moment où le circuit d'alimentation des rails 1 et 2 est à haute impédance.
               R
               R  10 kOhms (SIL)
               R
               |
              ---
               -

 
On détecte l'occupation du canton quand la résistance entre les rails est inférieure à 33 K Ohms. Au-dessus de 120 K Ohms, rien n'est détecté.
Entre ces deux valeurs, le résultat n'est pas garanti et peut dépendre du sens et de la vitesse du convoi.


La valeur des résistances de 3,9 K peut être modifiée si la détection fonctionne mal (entre 2,2 K et 22 K).
Un nouvel utilisateur d'UTS a placé des résistances de 4,7 K et 6,2 K, pour obtenir une détection de l'ordre de 30 K.

Pour éviter au circuit 74HCT165 d'être alimenté par une tension trop élevée, au cas où les entrées sont toutes à +12 volts et
le connecteur inter-carte n’est pas branché, le circuit d'alimentation comprend une diode led qui consomme 2mA.

Comme mon montage est un  prototype, ces résistances de 3,9k au format cms sont câblées directement sous le circuit principal.
a    b  a

Le schéma alimentation des voies et détection des convois
Le schéma ci-dessous a été ajouté pour détailler cette partie.

ATTENTION : Pour que la détection fonctionne bien quand le train passe d'un canton  à l'autre, il faut que le rail relié par une résistance au +15 V soit toujours le même, par exemple celui de gauche (du même coté sauf pour un bout d'une boucle de retournement).
Si on réalise un nouveau circuit imprimé, il faut obligatoirement, quand on utilise le menu UTS : "Debug > Commande directe RS232 de la carte" et que l'on assigne à tous les cantons
une vitesse positive, que le train avance toujours dans le même sens sur tous les cantons
.

plan

Pour le circuit de détection, les circuits intégrés
74HCT165  n° 70  les entrées n° :  Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0
correspondent aux cantons n°      :   3,     1,   15,  13,   11,   9,   7,     5

74HCT165  n° 71  les entrées n° :  Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0
correspondent aux cantons n°      :   4,    6,    8,   10,   12,  14,   0,   2

Les sorties 5 servo-moteurs
La version V3 permet d'alimenter 5 servo-moteurs sans aucune perturbation. Les servos sont toujours actifs en V3. Ils peuvent servir à animer un passage à niveau, un pont tournant...
La partie servo est placée sur une petite carte satellite. UTS fonctionne avec ou sans cette carte.
Cette carte utilise le signal 'CCP1' (portc(2) du PIC). Ce signal supplémentaire doit être câblé avec du fil volant sous la carte principal à PIC. (voir le paragraphe "Adaptations matérielles pour passer de V2 en V3").
Cette carte utilise le signal 'D.out' de la carte d'extension. Ce signal supplémentaire doit être câblé avec du fil volant sous la carte E/S secondaire.
Cette carte comporte un connecteur d'extension pour une future extension.

Le logiciel sur le PC exploite complètement la commande de ces servos. On peut aussi les activer à partir du menu 'RS232'.

Le +5V des servos est produit sur cette carte pour éviter les parasites. Attention les servo-moteurs consomment beaucoup lors de leurs déplacements.
Le courant de pointe atteint facilement 1A, mais le courant en veille reste faible.


Si l'on veut un déplacement plus régulier des servo moteur à basse vitesse, on peut essayer de démonter le servo et de rajouter en série avec le moteur une résistance de quelque ohms.
a  a

Avec l'arrivé de servo 180°, le programme du PIC "873rs34-ADR0.HEX" est disponible en 5 versions, pour différents débattements de servo.
A l'origine les servos 90° avaient un débattement de 90° entre 1,00 msec et 2 msec.
Cinq versions du ".hex" suivant le créneau disponible en sortie des 5 servos.
  1 - 873rs34-ADR0-1.00à2.00ms.HEX = Créneau de  1,00 msec  |  1,50 msec  |   2,00 msec
  2 - 873rs34-ADR0-0.88à2.11ms.HEX = Créneau de  0,88 msec  |  1,50 msec  |   2,11 msec
  3 - 873rs34-ADR0-0.78à2.21ms.HEX = Créneau de  0,78 msec  |  1,50 msec  |   2,21 msec
  4 - 873rs34-ADR0-0.68à2.31ms.HEX = Créneau de  0,68 msec  |  1,50 msec  |   2,31 msec
  5 - 873rs34-ADR0-0.57à2.41ms.HEX = Créneau de  0,57 msec  |  1,50 msec  |   2,41 msec

Il ne faut pas utiliser un ".hex" ayant plus d'amplitude que ce que le servo peut absorber, sinon le servo  risque de se retrouver en buté et de forcer en continu.
La carte fournit une amplitude maximum identique pour les 5 servos.

Si vous prenez la version "5",  "873rs34-ADR0-0.57à2.41ms", et que finalement ce servo 180° ne sera utilisé que sur 90° sur le réseau, vous passez de 256 à 128 pas de résolution.
La commande de ce servo par UTS sera deux fois moins précise, car UTS envoie une consigne entre 0 et 255 à la carte.
Si on utilise que la moité de la plage possible, cela revient à envoyer à la carte une consigne entre 64 et 192 soit 128 positions possibles.
Il faut donc commencer par utiliser la version "1", et si le servo sur le réseau demande une amplitude plus importante, utiliser les versions suivantes.
Le créneau de 1,5 msec donne toujours la position centrale du servo.

Ne pas utiliser des servo 360°. Ces servo servent pour des treuils. Pour 1 msec, ils sont fixes, sinon ils tournent en continu dans un sens ou dans l'autre, pour une impulsion < ou > à 1 msec.
Il ne faut pas définir une équation pour un servo dans "config.txt", et des boutons de commandes sur un TCO, pour ce même servo. Cela reviendrait à donner des ordres contradictoires à ce servo.

Les entrées sorties du PIC en V3
Le nombre de pattes étant limité sur le PIC, les pattes vont servir à plusieurs fonctions. Le programme du PIC a été modifié pour utiliser les sorties suivantes :
HHH = Signaux d'horloge pour les registres  à décalage.
VVV = Signaux de validation pour les registres  à décalage.
**   = Signaux pour alimenter les voies PWM.
++  = Signaux pour alimenter les sorties.
 : :   = Signaux pour alimenter les entrées.


;  PORTA
;    (0) Entrée analogique potentiomètre (0)
;    (1) Entrée analogique potentiomètre (1)
;    (2) Entrée analogique potentiomètre (2)
;    (3) Entrée analogique potentiomètre (3)
;    (4) Vers led jaune clignotante
;    (5) Entrée analogique potentiomètre (4)

;  PORTB
;    (0) Entrées numériques multiplexées, entrée bit (2)
;    (1) HHH**Sortie horloge vers registre 74HC4094 voies PWM
;        HHH--Sortie horloge vers registre 74HC4094 entrées multiplexées (ancien C(4))
;        HHH<<Sortie horloge vers registre 74HCT165 détection d'occupation des cantons
;    (2) VVV**Sortie validation vers registre 74HC4094 voies PWM
;    (3)    <<Entrée données 74HCT165 détection d'occupation des cantons
;    (4) VVV<<Sortie validation vers registre 74HCT165 détection d'occupation des cantons
;    (5)    ++Sortie données vers registre 74HC4094 sorties ULN2803 [1]
;    (6) VVV++Sortie validation vers registre 74HC4094 sorties ULN2803 [1]
;        VVV//Sortie validation vers registre 74HC4094 sorties ULN2803 [2]
;        VVV::Sortie validation vers registre CD4014 entrées numériques directes [2]
;    (7) HHH++Sortie horloge vers registre 74HC4094 sorties ULN2803 [1]
;        HHH//Sortie horloge vers registre 74HC4094 sorties ULN2803 [2]
;        HHH::Sortie horloge vers registre 74HCT165 entrées numériques directes [2]

;  PORTC
;    (0) Entrées numériques multiplexées, entrée bit (0)
;    (1) Entrées numériques multiplexées, entrée bit (1)
;    (2) Créneau de 1 à 2 msec vers les servos (CCP1)
;    (3) Entrées numériques multiplexées, entrée bit (3)
;    (4)    ::Entrée données 74HCT165 entrées numériques directes (2]
;    (5)    --Sortie données vers registre 74HC4094 entrées multiplexées
;           **Sortie données vers registre 74HC4094 voies PWM (ancien B(4))
;           //Sortie données vers registre 74HC4094[2] sorties ULN2803 [2]
;    (6) Sortie du PIC vers RS232
;    (7) Entrée du PIC vers RS232

 

La carte principale consomme 170 mA à vide et 180 mA avec la carte d’extension.
La consommation du +5V augmentent en fonction des sorties activées et des cantons alimentés, indépendamment du +12 V.

 
plan
Ce schéma  est celui utilisé pour simuler le fonctionnement du programme du PIC sur simulateur électronique.
Pour cela il est simplifié, mais il est correct. Par exemple, les 74HC4094 attaquent des Leds pour simuler l'alimentation des cantons au lieu des L293.


La mini carte de barrières Infrarouges
Télécharger ces circuits (Clic droit + Enregistrer sous) : Circuits imprimésImplantation

Le circuit imprimé fait 25,5 mm x 29,5 mm pour deux barrières infra-rouge, émetteurs, récepteurs, trous de fixation et connecteurs compris! Qui dit mieux ?

L'inconvénient est sa sensibilité aux rayons du soleil, car le faisceau n'est pas modulé. Il faut protéger le phototransistors en le plaçant dans un tube noir.
Ce montage conviendrait difficilement à un réseau exposé au soleil.


Ce montage permet au programme UTS de détecter la position précise des trains pour certaines opérations, notamment les déplacements.
Ces barrières infrarouge sont par exemple indispensables pour arrêter automatiquement un train sur une voie de garage,
car UTS ne sais pas détecter le passage du canton à la voie de garage (voies alimentées par la même alimentation du canton).

J'ai choisi de construire des petits circuits imprimés avec des composant cms, pour se placer facilement sur mon petit réseau.
Les composants pour deux barrières IR indépendantes sont assemblés sur une seule plaque.


L'avantage de ce circuit, hormis la taille réduite, c'est l'hystérésis sur les entrées. Le changement d'état du signal en sortie est franc, grâce au NE556 (cms).
La porté du faisceau est de 5 à 10 cm.

Sur les photos, certains circuits sont avec ou sans la diode de protection d'inversion de polarité de l'alimentation.
Photo agrandie du circuit imprimé avant la pose du NE556.

 
a  a a

IR Sur ce schéma, le circuit est soudé dessous. Sa représentation est ici inversée.

L'alimentation se fait en + 12 volts continu (15 volts maximum). Un condensateur de 100 nF cms est placé en parallèle sur l'alimentation.
Une diode montée en inverse peut être soudée pour protéger le circuit d'une inversion d'alimentation.
Les deux sorties sont à collecteur ouvert, utilisables directement avec la carte 40 entrées/sorties.
 - La sortie est au niveau bas (0 volt) quand le faisceau est coupé
(ou en absence de phototransistor en entrée).
 - La led témoin s'allume si le faisceau IR est coupé (ou en absence de phototransistor en entrée).

On peut utiliser ce circuit imprimé pour une ou deux barrières :
  - Dans le cas d'une barrière, on n'utilise qu'une seule diode d'émission IR.
  - Dans le cas de deux barrières, on utilise les deux diodes d'émission IR en série comme indiqué sur le schéma ci-dessus.

La résistance, pour alimenter la ou les diodes d'émission, est par défaut de 680 ohms [681cms] (soit 11~14 mA dans la diode IR).
Si la portée du faisceau est trop faible, on peut souder sur le circuit imprimé à la place prévue une deuxième résistance en parallèle
pour augmenter le courant si la diode le permet (le courant passe alors à 22~28mA).

Pour les leds témoins, il faut utiliser des diodes leds rouges 3mm de diamètre de faible consommation (2mA).
Les résistances en sortie des NE556 sont des 4,7 K Ohms [472cms].


Les résistances placées en entrée du NE556 pour polariser les phototransistors sont des 47 K Ohms [473cms].
  - Si le circuit est trop sensible à la lumière ambiante, il faut diminuer les résistances placées en entrée du NE556 de 47 K à 22 K (ou 10 K Ohms),
et alors peut être augmenté le courant dans la led d'émission.

  - Si le circuit n'est pas assez sensible, il faut augmenter les résistances placées en entrée du NE556 de 47 K à 100 K Ohms.
On peut aussi utiliser des diodes et phototransistors de 5 mm, nettement plus performants que les 3 mm.


Pour tester le circuit, on peut mesurer la tension en entrée du NE556, sur le bornier (broche n°3 et 4 du bornier du bas).
 - Si le faisceau illumine le phototransistor, la tension doit être dessous de 1/3 de 12 volts (<4 volts) et la sortie n'est pas active.
 - Si le faisceau est coupé, la tension doit être dessus de 2/3 de 12 volts (>8 volts) et la sortie est activée.

Télécharger ces circuits (Clic droit + Enregistrer sous) : Circuits imprimésImplantation


 
---------------


Liaison PC-PIC
La version V3.3 du PIC est disponible en téléchargement, pour améliorer la lecture des entrées multiplexées au 20/02/2015.

En V3.x le PC envoi 55 octets et le PIC en renvoi 25 octets simultanément.
L'échange des données entre le PC et le PIC dure 14 msec. L'envoi des données se fait en une seule trame, ce qui facilitera le passage à une liaison usb si nécessaire.


Il est possible d'utiliser le logiciel UTS et de construire ses propres interfaces, si elles répondre aux spécifications ci-après.
De même, on pourrait utilise les cartes à PIC d'UTS avec un autre logiciel, si l'on peut modifier les commandes envoyées par cet autre programme de supervision de réseau.

En V3.x un octet 0x00 est ajouté en fin de trame pour fiabiliser la liaison série.
En V3.x la vitesse de la liaison est de 38400 bps. A cette vitesse, un caractère est envoyé toutes les 260 µsec.

A 20 Mhz, une instruction assembleur du PIC dure 4*1/20Mhz = 0,2 µsec.
La réception des caractères ne provoque pas d'interruption dans le PIC.
Le programme doit exécuter toutes les instructions de la boucle principale en moins de 250 µsec, soit en moins de 1250 instructions assembleur.
La V3.x grâce à répartition des charges réalisée en partie à chaque boucle, tient en moins de 900 instructions.
Pour de nouvelles évolutions, il reste donc du temps pour exécuter 350 instructions par boucle (A chaque fois que l'on passe dans 'it_timer').

Le programme du PC a été revu pour améliorer la fiabilité de la liaison PIC-PC. En cas de parasite, la liaison se resynchronise automatiquement sans intervention.
En débranchant le câble et en le rebranchant en moins de 10 secondes, le logiciel gère complètement cette coupure sans afficher de message d'erreur.
Au bout de trois essais en erreur, un message d'erreur s'affiche proposant une reprise ou un arrêt de la liaison, ce qui permet de rebrancher
un câble ou de remettre le montage sous tension. Il faut parfois réinitialiser cette liaison deux ou trois fois pour reprendre le dialogue entre le PC et le PIC, mais pas besoin de quitter le programme du PC.


La trame envoyée par le PC commence toujours par 0x01, 0x11, 0x21 ou x31 (0x01 pour la carte n°1) + 0x08 et fini par un 0x00 pour synchroniser la liaison si le PIC avait perdu un caractère.
En cas d'erreur de liaison, le programme réémet immédiatement une nouvelle trame depuis le PC.

Le pointeur 'FSR' est utilisé en interne par le PIC. Il permet de pointer sur un registre interne. Voir la déclaration de ces variables dans "873rs33.asm".
Par exemple si FSR = 0x20 et qu'on lit la valeur pointé par 'FSR', on trouve "pwm_r0" = Valeur de la vitesse sur le canton 0 (= 0 à 63).
CARDADR EQU 0 est une variable définie dans le programme assembleur. Au moment de la compilation du programme en ".hex", cette variable donne le n° de la carte à PIC.

Échanges PC-PIC : Le PC à l'initiative et envoi un octet de commande, suivi éventuellement d'octets de données :
  0x00               Resynchronise la communication série avec le PC (Le PIC ne fait rien). Utilisé aussi à la fin de l'envoi d'une trame de X octets, pour compléter si nécessaire la trame.
                         si un octet a été perdu dans la transmission. En cas de coupure de liaison, le PC réinitialise la liaison en envoyant 60 fois l'octet 0x00.
  0x01               La carte à "PIC n° 1 = CARDADR EQU 0" répond 0x83 est devient sélectionnée, les autres cartes sont désélectionnées.
  0x11               La carte à "PIC n° 2 = CARDADR EQU 1" répond 0x83 est devient sélectionnée, les autres cartes sont désélectionnées.
  0x21               La carte à "PIC n° 3 = CARDADR EQU 2" répond 0x83 est devient sélectionnée, les autres cartes sont désélectionnées.
  0x31               La carte à "PIC n° 4 = CARDADR EQU 3" répond 0x83 est devient sélectionnée, les autres cartes sont désélectionnées.
  0x02 + 0xZZ  Met à jour le pointeur d'adresse 'FSR' de la carte à PIC sélectionnée avec la valeur 0xZZ.
  0x03 + 0xZZ  Ecrit la valeur 0xZZ dans le registre mémoire pointé par [FSR] de la carte à PIC sélectionnée. Ne touche pas au registre "FSR".
  0x04               La carte à PIC sélectionnée retourne 0xZZ lu dans le registre mémoire pointé par [FSR]. Ne touche pas au registre "FSR".
  0x05 + 0xZZ  Incrémente le pointeur 'FSR' et écrit la valeur 0xZZ dans le registre mémoire pointé par [FSR] de la carte à PIC sélectionnée.
  0x06               Incrémente le pointeur 'FSR' et retourne 0xZZ lu dans le registre mémoire pointé par [FSR] de la carte à PIC sélectionnée.
  0x07               Incrémente le pointeur 'FSR' et retourne 0xZZ lu dans le registre mémoire pointé par [FSR] de la carte à PIC sélectionnée, puis efface dans le PIC le registre mémoire pointé par [FSR].
  0x08               Transfère d'une trame complète (Écriture + Lecture simultanée) entre le PC et la carte à PIC sélectionnée.

Les octets de commande 0x02 à 0x07 sont envoyés par UTS depuis la page "Debug > Commande directe de la carte rs232" du programme UTS, quand on modifie un registre du PIC.
Cela permet de lire ou d'écrire dans un registre mémoire du PIC. Pour plus d'information, voir la table "ADRESSES  DES  VARIABLES" dans le programme assembleur ".asm".
En fonctionnement habituel, UTS n'envoie pas les commandes 0x02 à 0x07.

Pour plus d'information, voir le sous-programme "SSPG_TOUJOURS" dans le programme assembleur.

Le diagramme de transfert de trame en V3.x est le suivant :

Dans le cadre d'un échange de trames complètes, le PIC renvoi un caractère tous les deux caractères reçus.
Émission de 55 octets et réception de 25 octets simultanément.

Tableau d'échange temporel d'une trame complète (exemple pour la carte n° 1) :

Nb d'octet émis

TX

RX

Nb d'octet reçus

 1

0x01

 

 

 

 

83

 1

1

0x08

 

 

2

0x24

 

 

3

0x52

 

 

 

 

F2

1

4

0x14

 

 

5

0x06

 

 

 

 

AC

2

6

0x79

 

 

7

0xA2

 

 

 

 

7E

3

8

0xBC

 

 

9

0x8F

 

 

...

...

...

...

...

...

...

...

45

0x10

 

 

46

0x8E

 

 

 

 

0

24

47

0x79

 

 

48

0x28

 

 

 

 

0

25

55

0x00

 

 




Voici la trame complète de 55 octets envoyée du PC au PIC :

   1    0x01      ; Octet de sélection de la carte (0x01 pour la carte n°1, 0x11 pour la carte n°2, 0x21 pour la carte n°3, 0x31 pour la carte n°4)
 2    0x08      ; Octet de commande d'échange de trame complète entre le PC et le PIC
 3    pwm_r0    ; Valeur de la vitesse sur le canton 0 (= 0 à 63)
 4    pwm_r1    ;     //  1
 5    pwm_r2    ;     //  2
 6    pwm_r3    ;     //  3
 7    pwm_r4    ;     //  4
 8    pwm_r5    ;     //  5
 9    pwm_r6    ;     //  6
10    pwm_r7    ;     //  7
11    pwm_r8    ;     //  8
12    pwm_r9    ;     //  9
13    pwm_r10   ;     // 10
14    pwm_r11   ;     // 11
15    pwm_r12   ;     // 12
16    pwm_r13   ;     // 13
17    pwm_r14   ;     // 14
18    pwm_r15   ;     // 15
19    pwm_s0_7  ; Valeur sens de déplacement 1 bit par canton n° 0 à  7
20    pwm_s8_15 ; Valeur sens de déplacement 1 bit par canton n° 8 à 15
21    out_out3  ; Valeur des bits des sorties   1 à  7  (IC14-ULN2008 [1])
22    out_out4  ;   //                          8 à 15  (IC15-ULN2008 [1])
23    out_out5  ;   //                         16 à 23  (IC16-ULN2008 [1]) (Les sorties 24 à 39 sont reportées vers les leds)
24    out_out21 ; Valeur des bits des sorties  40 à 47  (ULN2008 [2])
25    out_out22 ;   //                         48 à 55  (ULN2008 [2])
26    out_out23 ;   //                         56 à 63  (ULN2008 [2])
27    out_out24 ;   //                         64 à 71  (ULN2008 [2])
28    out_out25 ;   //                         72 à 79  (ULN2008 [2])
29    led_on0   ; Leds 00-07 allumées (1bit = une led)
30    led_on1   ; Leds 12-19 allumées ( bit = 1 = on )
31    led_on01  ; Leds 08-11 et 20-23 allumées
32    led_on2   ; Leds 24-31 allumées
33    led_on3   ; Leds 36-43 allumées
34    led_on23  ; Leds 32-35 et 43-47 allumées
35    led_cl0   ; Leds 00-07 clignotantes (1bit = une led)
36    led_cl1   ; Leds 12-19 clignotantes ( bit = 1 = cli)
37    led_cl01  ; Leds 08-11 et 20-23 clignotantes
38    led_cl2   ; Leds 24-31 clignotantes
39    led_cl3   ; Leds 36-43 clignotantes
40    led_cl23  ; Leds 32-35 et 43-47 clignotantes
41    led_in0   ; Leds 00-07 clignotant inversé (1bit = une led)
42    led_in1   ; Leds 12-19 clignotant inversé ( bit = 1 = inv)
43    led_in01  ; Leds 08-11 et 20-23 clignotant inversé
44    led_in2   ; Leds 24-31 clignotant inversé
45    led_in3   ; Leds 36-43 clignotant inversé
46    led_in23  ; Leds 32-35 et 43-47 clignotant inversé
47    srv_0     ; Valeur de consigne du servo n° 0
48    srv_1     ; Valeur de consigne du servo n°
1
49    srv_2     ; Valeur de consigne du servo
2
50    srv_3     ; Valeur de consigne du servo n° 3
51    srv_4     ; Valeur de consigne du servo n° 4
52    ruf1      ; LIBRE réservé utilisation future
53    ruf2      ; LIBRE réservé utilisation future
54    ruf3      ; LIBRE réservé utilisation future. Pour le PIC c'est le dernier octet de la trame. Le prochain octet 0x00 est traité comme une commande "Nulle".
55    0x00      ; Octet de fin pour resynchroniser la prochaine trame si nécessaire (Si perte d'un octet pendant le transfert).

Le dernier octet 0x00 n'est pas traité par le PIC. Il est traité comme un octet de commande 0x00 et le PIC l'ignore.
Cela sert si l'on perd un octet pendant le transfert (53 octets reçu au lieu de 54). Le PIC reçoit l'octet 0x00 comme dernier octet d'échange. La trame est bien sûr erronée, mais le PIC a bien fini le transfert d'une trame complète et
repasse en attente d'un octet de commande. Le prochain octet reçu sera donc bien traité comme un octet de commande.

En retour le PIC renvoi une trame de 25 octets vers le PC.
 
 1    0x83        ; Octet de réponse à la réception de l'octet 0x01, 0x11, 0x21 ou 0x31
 2    can_r0      ; Valeur lue sur l'entrée analogique (0) ( = 0 à 255 )
 3    can_r1      ;   //                               (1)
 4    can_r2      ;   //                               (2)
 5    can_r3      ;   //                               (3)
 6    can_r4      ;   //                               (4)
 7    in_in1      ; Valeurs des bits des 40 entrées (75HCT165 [2]) V3
 8    in_in2      ;   //
 9    in_in3      ;   //
10    in_in4      ;   //
11    in_in5      ;   //
12    det_i1      ; Un bit par canton, = 1 si le canton est occupé
13    det_i2      ;   //
14    ruf11       ; LIBRE réservé utilisation future
15    det_i1m     ; Un bit par canton, le passage à l'état 1 est mémorisé
16    det_i2m     ; Tous ces Octets sont effacés par la lecture de ces registres.
17    mat_in0     ; 4bits d'entrées colonne INA + ligne IN3 à IN0 + 4 bits mémorisation des
18    mat_in1     ;   //  INB + ligne IN3 à IN0                       états, effacés par
19    mat_in2     ;   //  INC + ligne IN3 à IN0                       la lecture de ces
20    mat_in3     ;   //  IND + ligne IN3 à IN0                       registres.
21    mat_in4     ;   //  INE + ligne IN3 à IN0
22    mat_in5     ;   //  INF + ligne IN3 à IN0
23    mat_in6     ;   //  ING + ligne IN3 à IN0
24    mat_in7     ;   //  INH + ligne IN3 à IN0
25    mat_in8     ;   //  INI + ligne IN3 à IN0


Si UTS est connecté à deux cartes à PIC, il dialogue avec la première puis avec la deuxième. Il est possible d'utiliser 4 cartes à PIC avec UTS.
Le programme sur PC fait une pause de 80 msec après avoir envoyé et reçu les trames avec tous les PIC.

Le programme du PIC a été modifié en fonction de l'utilisation des pattes de sorties. Les pattes de sorties ont maintenant plusieurs fonctions en V3.
Le diagramme suivant permet de comprendre les séquences traitées en parallèle dans le PIC :

 tableau
  Lien sur l'image taille réelle : 09_uts_fonctionnement_prg_du_pic
 

Les menus d'UTS
Les menus ont été améliorés. Dans la fenêtre d'édition, une aide s'affiche quand on sélectionne une des cases de bloc de TCO utilisables.
Il est possible d'afficher les fenêtres d'édition en appuyant sur la touche '+'. En appuyant 7 fois sur '+' les fenêtres ouvertes disparaissent.
En appuyant sur la touche 'Esc', la fenêtre recouvrant le TCO se ferme pour revenir au TCO.
La palette de couleur dans les fenêtres d'édition ne sont pas désignables et ne servent que d'information.
Il est possible de visualiser l'état des variables 'var_xxx'.

Les servos :
Si le programme envoi à la carte, dans la trame RS232,  une consigne entre 0 et 255, en interne au programme, la consigne est située entre 0 et 1023.
Les servos se commande dans la partie '#tdv' à partir des variables :
srv_cmd_xxx = consigne de position du servo de 0 à 1023.   (xxx  = numéro de variable de 000 à 004, 100 à 104...).
srv_cmd_xxx+10 = pas de déplacement du servo de 0 à 1023 à chaque tic (80 ms).(xxx  = numéro de variable de 005 à 009, 105 à 109...).
Une explication plus complète se trouve sur la page consacrée au logiciel.

Nouvelles commandes pour les variables.
Pour commander les servo, les nouvelles commandes dans le fichier 'config.txt' sont :

'=val',  Dans une équation 'equ:' si le test est ok '=val <var> valeur' alors <var>=valeur.
Exemple : equ: l in_23 =val var_45 789 (met 789 dans la variable n°45 si l'entrée n°23 = 1).

'=var',  Dans une équation 'equ:' si le test est ok '=var <var> <var2>' alors <var>=contenu de <var2>.
Exemple : equ: l in_23 =var var_45 var_46  (copie la valeur de la variable n°46 dans la variable n°45 si l'entrée n°23 = 1).

'=varx4',  Dans une équation 'equ:' si le test est ok '=varx4 <var> <var2>' alors <var>= 4 fois le contenu de <var2>.
Exemple : equ: l in_23 =varx4 var_45 can_0  (copie la valeur de l'entrée can_0 multiplié par 4 dans la variable n°45 si l'entrée n°23 = 1).
Cela sert à commander un servo-moteur(0-1023) par une entrée CAN(0-255).


Les variables peuvent être positives ou négatives. Leurs contenu doit être compris entre -25000 et +25000.

Les points
Sur les TCO, les points qui sont ajoutés automatiquement sur la voie entre deux cantons de numéros différents sont sur tous les éléments de voie.

Les éléments de voies.
Sur les TCO, des éléments de voies verticaux ont été ajoutés.

Adaptations matérielles pour passer de V2 en V3
Sur la carte principale, les pistes marquées d'une croix rouge sont déjà coupées sur le typon.
La résistance de rappel sur RB3, et les transistors et tous les autres éléments du circuit de détection sont déjà supprimés sur le CI en V3.
Il faut relier les connecteurs supplémentaires par des fils volants comme indiqué sur ce schéma vu du dessous.
Les deux broches centrales des connecteurs sont reliées au +5 volts. Les quatre broches autour de ce +5 volts sont reliées à la masse,
ce qui permet de limiter la casse si l'on se trompe de sens pour insérer le connecteur.

 
06_uts_sch_ci1_carte_mere_v2_vers_v3.2_dessous.png
 
Lien sur l'image taille réelle : 06_uts_sch_ci1_carte_mere_v2_vers_v3_dessous et sur la photo : 42_uts_photos_v3.jpg

Ces modifications de câblage sont obligatoires pour que le programme du PIC fonctionne.

La présence de nouveaux circuits 74HCT00 (ou 74HC00) ne permet pas de construire une carte simple face pour tout loger. Certains circuits intégrés devront être
placés à cheval sur d'autres pour disposer de sorties normales et inversées pour attaquer les L293D.

Sinon , il faut réaliser une version avec composants cms et circuit imprimé double face.
Il faut poser un 74HCT00 sur chaque 74HC4094 et souder les pattes en noir entre les deux circuits intégrés. Ensuite, on insère les circuits IC
sur leurs supports. (voir photos)

On relie les sorties de ces 74HCT00 vers les L293D.
Pour pouvoir dissiper les calories, les L293D doivent être directement soudés sur le circuit imprimé, et non pas installés sur des supports.

Description des liaisons à réaliser en fils volants bleus:
16_uts_modif_cablage_01.png
 
Lien sur l'image taille réelle : 16_uts_modif_cablage_01 et sur les photos :  60_uts-photos.jpg  et  41_uts_photos_v3.jpg
 

En sortie des L293D, sous le circuit imprimé, il faut souder une résistance de 3,9kOhms CMS (taille 1206) entre une sortie et l'alimentation positive
des voies (donc une piste de sortie sur deux) (voir photos ici et ici). Ces résistances sont repérées Rx dans la liste des composants.

La numérotation des sorties vers les cantons a changé en V3. La numérotation présentée ci-dessus correspond au programme du PIC en V3.
Souder les autres sorties vers la cartes d'extension pour la détection des convois.

Evolutions possibles pour le HO
Pour alimenter des trains consommant plus de 600 mA, il faudrait remplacer les L293D par des L298 pour passer à 2A.
Les L293D et L298 sont compatibles au niveau logique et fonctionnement.
Le plus simple est de câbler la carte à PIC complètement avec les 74HCT00 à califourchon, en soudant les résistances pour la détection des convois,
et les connecteurs de sortie, mais sans installer les L293D (Percer quand même les trous).
A coté du circuit principal, placer un circuit imprimé recevant les 8 x L298, sans oublier les diodes de protection externes et les condensateurs de découplage.

Il faut ensuite passer des fils entre :
 la patte n° 1 du L293D = 'Enable12' vers la patte n°  6 du L298 = 'Enable12'.
 la patte n° 2 du L293D = 'Entrée1' vers la patte n°  5 du L298 = 'Entrée1'.
 la patte n° 3 du L293D = 'Sortie1'  vers la patte n°  2 du L298 = 'Sortie1'.
 la patte n° 4 du L293D = 'Masse'   vers la patte n°  8 du L298 = 'Masse'.
 la patte n° 5 du L293D = 'Masse'   vers la patte n°  8 du L298 = 'Masse'.
 la patte n° 6 du L293D = 'Sortie2'  vers la patte n°  3 du L298 = 'Sortie2'.
 la patte n° 7 du L293D = 'Entrée2' vers la patte n°  7 du L298 = 'Entrée2'.
 la patte n° 8 du L293D = 'VCC2=+15V' vers la patte n°  4 du L298 = 'VCC2=+15V'.
 la patte n° 9 du L293D = 'Enable34' vers la patte n°  11 du L298 = 'Enable34'.
 la patte n° 10 du L293D = 'Entrée3' vers la patte n°  10 du L298 = 'Entrée3'.
 la patte n° 11 du L293D = 'Sortie3'  vers la patte n°  13 du L298 = 'Sortie3'.
 la patte n° 12 du L293D = 'Masse'   vers la patte n°  8 du L298 = 'Masse'.
 la patte n° 13 du L293D = 'Masse'   vers la patte n°  8 du L298 = 'Masse'.
 la patte n° 14 du L293D = 'Sortie4'  vers la patte n°  14 du L298 = 'Sortie4'.
 la patte n° 15 du L293D = 'Entrée4' vers la patte n°  12 du L298 = 'Entrée4'.
 la patte n° 16 du L293D = 'VCC1=+5V' vers la patte n°  9 du L298 = 'VCC1=+5V'.

Relier ensemble les pattes n°  1, 8 et 15  du L298 = 'Masse'.
On peut réaliser un circuit imprimé avec des connecteurs pour faciliter la connexion.

Sinon on peut essayer de placer un L293B sur un L293D à la place d'un seul L293D.
Il faudrait voir si en soudant toutes les pattes entre elles, on peut dépasser 1,5 A en sortie.
Prendre des L293B car ils supportent 1A en sortie. Ils sont dépourvus de diodes de protections
mais celle du L293D protégerons les deux circuits.

Il existe des circuits plus modernes genre 'FAN3227', mais ils sont difficile à trouver.

La carte d'extension
Il faut choisir le type d'entrées numérique pour câbler les résistances. Les résistances en réseaux sont difficiles à trouver et peuvent être remplacées par des résistances classiques 1/4 watt.
Pour utiliser la carte servo, il faut câbler sous cette carte, un fil entre le bornier 'D.out' et la sortie 'Do' de IC4 (patte n°10) pour envoyer vers la carte 'Servo' les données du PIC.
a  Voir la photo : 44_uts_photos_v3.jpg et ici
J'ai corrigé la mauvaise implantation du 74HCT04 cms sur le typon actuel.

 
La carte des servos
Pour utiliser la carte servo, il faut câbler sous la carte d'extension, un fil entre le bornier 'D.out' et la sortie 'Do' de IC4 (patte n°10) pour envoyer vers la carte 'Servo' les données du PIC.
Cette carte est optionnelle.
La connexion des deux cartes est indiqué sur le schéma : "06 - UTS - sch - Interconnexion des 2 cartes UTS - V3.png".
Il faut aussi relier le connecteur de détection d'occupation des cantons, par un câble plat à la carte principale. Attention au sens de connexion.
01_uts_sch_interconnexion_des_modules_uts_1_v3.2.png 
 Lien sur l'image taille réelle : 01_uts_sch_interconnexion_des_modules_uts_1_v3

 02_uts_sch_interconnexion_des_modules_uts_2_v3.2.png
 Lien sur l'image taille réelle : 02_uts_sch_interconnexion_des_modules_uts_2_v3
 

Explications sur la mise en route de la commande des aiguillages
a  s  a


La carte de commande d'aiguillages :

Voir la construction sur la page matérielle V2.
La numérotation des aiguillages commence à 0.


Après essais, j'ai retenu un condensateur C1 de 680 µF 35 volts, chargé à 24 volts. Le temps de charge est de 80 msec sous 0,15 Amp  T = C*(DeltaV / I )     DeltaV = 24 Volts   I + courant de charge en ampère, C = Capacité en Farad.

Avec 12 volts, même un condensateur C1 de 4700 µF ne permet pas d'actionner ces aiguillages à coup sûr. Les aiguillages PECO sont peu sensibles et très gourmands en courant.
La tension d'alimentation (partie aiguillages) de la carte de commande des aiguillages sur le circuit imprimé doit être de 24 volts.
Avec 470µF et 24 Volts d'alimentation cela fonctionne très bien. En cas de problème, on peut passer C1 à 1000 ou 2200µF, mais dans ce cas la commande est plus bruyante.
Pour alimenter cette carte, il faut une alimentation qui puisse débiter au moins 0,7 Amp sous 24 volts si l'on place un 2200µF.

La configuration que j'utilise commande le relais n° 6 en même temps que les autres relais. Dans ce cas, pour s'assurer que le
relais n° 6 ne commute pas avant les autres relais, on doit ajouter un retard à l'activation de ce relais (Quelque millisecondes).
Il faut couper la piste du circuit imprimé vers le relais n° 6 et ajouter une résistance de 24 Ohms en série, et un condensateur
de 2,2µF en parallèle sur le relais n° 6, comme indiqué ci-dessous.

<Broche n°6> - -------[24 Ohms]-------+----[relais n°6]----+-----<+12V>
                                      |                    |
                                      +-----[- 2 µF +]-----+

On obtient ainsi un décalage de 2 milliseconde pour le relais R6, laissant le temps aux autres relais de se positionner.

Exemple de câblage avec des composants cms. La piste sous la résistance de 24 ohms est coupée.
R et C en option
Extrait de config.txt :


#aig
[
    default_tic:0,0,1,0,0,1
    repos:out0=0 out1=0 out2=0 out4=0 out5=0 out6=0
    position_depart:a1.1 a5.1 a14.1

    aig0: prep0:    out6=0 out0=1 out1=0 out4=1 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=1 out5=1 out2=1
          go1:      out6=1

    aig1: prep0:    out6=0 out0=1 out1=0 out4=1 out5=0 out2=1
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=1 out5=0 out2=0
          go1:      out6=1

    aig2: prep0:    out6=0 out0=1 out1=0 out4=0 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=0 out5=1 out2=1
          go1:      out6=1


A partir de touches ou d'un clavier branché sur les entrées multiplexées, il est possible de commander les aiguillages.
Dans l'exemple ci-dessous, on utilise la touche [0] pour l'aiguillage 0 en position droit et la touche [19] + la touche 0 pour l'aiguillage 0 en position dévié.
Dans config.txt , section #tdv, ajouter
    equ: l in_0  an in_19 a pos0_aig_0  =set aig_cmd_0
    equ: l in_0  a  in_19 a pos1_aig_0  =clr aig_cmd_0


Pour une utilisation d'UTS avec plusieurs cartes à PIC
Si l'on désire relier plusieurs carte UTS à un PC, il faut toutes les brancher sur la même sortie série du PC, comme indiqué dans la notice d'Ulysse.
UTS cherche des cartes sur les ports de COM1 à COM6, mais ne sait pas gérer des cartes sur plusieurs ports à la fois.

J'ai testé avec succès un convertisseur USB-RS232. L'utilisation avec UTS est compatible avec ce type de convertisseur.
L'échange de trame est aussi rapide qu'avec une liaison série ordinaire.

1 - Pour réaliser soit-même un câble PC vers carte UTS (Cote carte et coté PC), sur la prise série DB9 FEMELLE coté PC,
      il faut relier les broches n° 1, n° 4 et n° 6 ensemble et les broches n° 7 et n° 8 ensemble :

   Broches 3 et 4 de CN01 (out)  ---------> DB9 FEMELLE (2) PC RX
   Broches 1 et 2 de CN01 (in)   <--------- DB9 FEMELLE (3) PC TX
   Broches 5 et 6 de CN01 (masse) --------- DB9 FEMELLE (5) PC MASSE

                                       +--- DB9 FEMELLE (1) PC
                                       +--- DB9 FEMELLE (4) PC
                                       +--- DB9 FEMELLE (6) PC

                                       +--- DB9 FEMELLE (7) PC
                                       +--- DB9 FEMELLE (8) PC




2 - Pour relier 2 cartes UTS à un PC, il faut réaliser les deux câbles PC-carte UTS ci-dessus et un adaptateur court (moins de 50 cm) à 3 prises BD9 ci-dessous.
      Réaliser un adaptateur à 3 prises DB9 (1 Femelle + 2 Mâles) avec des diodes BAT84 (Plus rapide que des 1N4148).
      Réaliser un adaptateur court, de moins de 50cm, pour éviter des problèmes de réception.
      Sur la prise série FEMELLE coté PC, il faut relier les broches n° 1, n° 4 et n° 6 ensemble et les broches n° 7 et n° 8 ensemble.

   BD9 MALE vers Carte n°1 (2) ----|>|----+------> DB9 FEMELLE (2) PC RX
                                  BAT84   |
   BD9 MALE vers Carte n°2 (2) ----|>|----+
                                  BAT84

   BD9 MALE vers Carte n°1 (3) <----------+------- DB9 FEMELLE (3) PC TX
                                          |
   BD9 MALE vers Carte n°2 (3) <----------+

   BD9 MALE vers Carte n°1 (5) -----------+------- DB9 FEMELLE (5) PC MASSE
                                          |
   BD9 MALE vers Carte n°2 (5) -----------+

                                              +--- DB9 FEMELLE (1) PC
                                              +--- DB9 FEMELLE (4) PC
                                              +--- DB9 FEMELLE (6) PC

                                              +--- DB9 FEMELLE (7) PC
                                              +--- DB9 FEMELLE (8) PC


Utilisation d'UTS avec un mini module USB
Si l'on est sûr de relier la carte UTS qu'avec un PC avec une prise usb, il est possible d'acheter ce type de mini carte usb sans installer le circuit MAX232.
photo

Ce mini module USB fonctionne parfaitement pour UTS, sous XP et Windows7.

Pour WINDOWS 10, seul le circuit de type FTDI fonctionne.

Les broches +5 volts et +3,3 volts ne doivent pas être connectées
. Elles servent à alimenter un montage externe à partir du PC, mais sous 500 mA max.

Si l'on débranche le câble usb, il faut relancer UTS pour retrouver une connexion. Les coupures sur la liaison série sont elles gérées par UTS.
Il ne faudrait pas pas un câble série blindé de plus de 5 mètres de long (coté RX/TR), car les signaux ne sont pas des signaux RS232, mais 0-5 volts.
 
Il faut uniquement relier 3 fils du module USB à la carte UTS (RX, TX et masse). Ne pas installer le MAX232, car les signaux restent en 0 +5 volts.
Relier les fils RX et TX du module USB aux pattes RX et TX (patte 10 et 9 sur le support du MAX232) et le fil de masse.
  USB (RX)   ---->   Support MAX 232 vide, patte n° 10   (Vers le PIC)
  USB (TX)   <----   Support MAX 232 vide, patte n°   9   (Depuis le PIC)
  USB (GDN) ------ Support MAX 232 vide, patte n° 15   (Masse)

Pour deux cartes UTS, il faut un seul module USB avec un montage à diodes coté RX.
Placer les diodes dans l'autre sens (anneau vers la carte à PIC) et une résistance de 10 Kohms entre USB(RX) et le +5volts.
(10) = n° patte du support du MAX232 qui n'est pas installé sur son support.
                                  +-/\/\/\-- 5Volts
   PIC Carte n°1 (10) ----|<|----++--------> USB(RX)
                         BAT84   |
   PIC Carte n°2 (10) ----|<|----+
                         BAT84

   PIC Carte n°1 (9)  <----------+---------- USB(TX)
                                 |
   PIC Carte n°2 (9)  <----------+

   PIC Carte n°1 (15) -----------+---------- USB(MASSE)
                                 |
   PIC Carte n°2 (15) -----------+

UTS2000