samedi 3 décembre 2016

la journée test

1er déc 2016 : le grand jour

on se rend compte que faire un système permettant de rouler avec 31 véhicules simultanément est plutôt ambitieux :

nous aurions pu être 7, mais nous ne nous retrouvâmes qu'à 4

j'ai été étonné par la persévérance de mes amis qui ont roulé 3 heures, alors que je me lasse au bout de 10 minutes ...

le système a bien fonctionné dans l'ensemble, je déplore les points suivants, qui donneront lieu à des investigations et corrections :
- le dispositif d'arrêt d'urgence n'a pas pu être utilisé, une des voitures continuant à rouler au ralenti ! (a)
- l'affichage du compte tours présentait un défaut de perte de couleur (la désignation de la voiture reprends la couleur de la voiture, pour une bonne lisibilité) : il y a un bug à trouver dans le programme vb net (b)
- par ailleurs cet affichage (vb net sous windows) rame à la réception des données bluetooth en provenance du module blue : il n'est ainsi pas possible d'avoir un chronométrage précis, ou un affichage dynamique des tensions et des courants (c)
- une des voitures est tombée en panne, heureusement lors d'une séance d'essai (d)

il y a d'autres enseignements :
- le local est trop petit vu le nombre de participants
- le circuit est trop en longueur, on n'a pas une bonne visibilité de la partie éloignée :
il faudra donc dans l'avenir faire un circuit en forme de C pour réduire les distances
- il faut plus de convivialité pour l'affectation des voitures aux différentes manettes : pouvoir pour chaque manette choisir dans la liste des voitures disponibles (e)
- mettre en service le dispositif de protection contre les court-circuit (f)
- les essais n'ont pas relevé de faiblesse de la fiabilité du compte tours, qui néanmoins  n'est théoriquement pas à 100% (g)

à noter que le logiciel ultimate racer est désormais payant ...

je remercie les participants, les personnes ayant mis à disposition local et outils, et au vpciste du sud de la France qui propose du matériel à prix raisonnable

corrections :
(a) : fait : prise en compte de la variable "global_stop" dans le scheduler "switch (straight_repeat[throttle_num])" et "switch (thrown_repeat[throttle_num])"
(b) : défaut sans objet dans la nouvelle version du soft du 2 mai 2017
(c) : résolu 4 mai 2017 ! : maîtrise d'une (des?) méthode(s)
(d) : fait : contact tresse / guide suite à la surchauffe :  nettoyage du guide et "recambrage" des tresses
(e) : fait : 2 mai 2017
(f) : fait 23 mai 2017 ; faire test en situation
(g) : changement de protocole : 100% au 2 mai 2017 













jeudi 6 octobre 2016

le protocole circuit

le courant délivré dans le circuit est créé par le module blue et amplifié par le module yellow
ce courant a 2 fonctions : alimenter les véhicules et transmettre les messages de vitesse
le messages de vitesse est composé du numéro du véhicule, suivi de la consigne de vitesse
le format utilisé est série, 9 bits, durée d'un bit de 13µs, pas de parité. Le choix du format série se justifie par la présence d'un périphérique uart dans le mcu des décodeurs à bord des véhicules, ce qui simplifie la programmation et apporte de la robustesse
le niveau 1 correspond à la tension d’alimentation, ici 15v, le niveau 0 correspond à 0v.
* voici la forme des octets transmis :











on voit qu'en plus du bit start, qui est obligatoirement à 0, un seul bit parmi le 9 bits normalement significatifs est aussi à 0 : en effet, si tous les bits étaient à 0, il n'y aurait plus de courant dans le circuit et les voitures ne pourraient pas rouler. J'ai donc fixé le principe suivant :
- il y a 1 et 1 seul bit significatif devant être à 0
- le bit 0, celui qui suit le start, n'est pas autorisé car je ne veux pas 2 bits consécutifs à 0v

on a donc un mot qui ne peut prendre que 8 valeurs différentes, au lieu des 512 normalement permises par les 9 bits

l'inconvénient de ce format (perso) c'est une baisse "dramatic" de la bande passante
les avantages sont :
- la simplicité électrique au niveau du module jaune (1/2 pont suffit)  et des décodeurs (pas besoin de pont de graetz)
- une tension moyenne constante et peu diminuée
- un faible risque de perversion par les parasites, d'où une robustesse qui permet de se passer de mot de contrôle

la bande passante reste cependant très satisfaisante, la durée de transmission pour 1 véhicule étant de 1.04 ms. Pour un circuit comportant 6 voitures en courses, il faut 7.28 ms (une voie est réservée au système), ce qui fait un taux de rafraîchissement de 137Hz, qui dit mieux ?


** voici le format des messages :






les messages se suivent en boucle :
- numéro + vitesse voiture n°1
- numéro + vitesse voiture n°2
- etc.
- numéro + vitesse voiture n°31 (dernier)
- numéro + vitesse voiture n°1
- numéro + vitesse voiture n°2
- etc.


un message signifie le numéro et la vitesse d'une voiture
il est constitué d'un idle state suivi de 4 mots
les messages suivants ont le même format et se succèdent immédiatement. La durée de chaque message est invariablement de 1.04 ms, il n'y a pas de temps mort entre les messages successifs

l'idle state de 468 µs a 2 utilités :
- augmenter la tension moyenne pour être précisément et constamment la tension d'alim moins 10%. J'ai fixé cette valeur arbitrairement.
- désigner sans équivoque le début de chaque message

la durée rigide et précise de chaque message à 1040µs permet aux mcu réceptrices de régler précisément leur horloge rc internes et de se passer de quartz
la précision est nécessaire pour le rs232 (asynchrone), mais surtout pour l'identification des véhicules par infrarouge


*** à propos du protocole :
on aurait pu regrouper  les 4 mots de chaque message de la manière suivante :
- les 2 premiers mots (rappel : un mot peut prendre 8 valeurs différentes) constituant 64 valeurs différentes et désignant le numéro du véhicule
- les 2 mots suivants et derniers  constituant 64 valeurs différentes et désignant la vitesse à laquelle le véhicule (qui vient d'être désigné par son numéro) doit rouler

mais cela ne me convenait pas : 64 c'est trop grand pour le nombre de véhicules, et pas assez pour la précision de la vitesse (je ne peux pas faire moins bien que scalex !)
j'ai donc retenu le principe suivant :
- dans le premier groupe de 2 mots, 2 valeurs parmi 64 sont affectées à chaque véhicule, exemple :
2 et 3 pour la voiture 1
4 et 5 pour la voiture 2
...
62 et 63 pour la voiture 31

les valeurs 0 et 1 sont réservées au système
si le nombre est pair, exemple 4 pour la voiture 2, la vitesse sera basse
si le nombre est impair, exemple 5 pour la voiture 2, la vitesse sera haute

- le complément de vitesse est donné par le 2nd groupe de 2 mots, dont les valeurs sont comprises entre 0 et 63 :

si la vitesse est basse la vitesse finale sera de 0 à 63, selon la valeur de ce 2nd groupe
si la vitesse est haute la vitesse finale sera de 64 + la valeur du 2nd groupe, ie. les valeurs comprises entre 64 et 127

il y a 4 cas particuliers :
- la vitesse 0 c'est le freinage, il n'y a pas de roue libre, c'est de la course, pas de l'écologie !
- la "vitesse" 1 n'est pas destinée aux voitures mais aux aiguillages. Le message signifie que la voiture désignée par son numéro ne veut pas (plus) bifurquer aux aiguillages
- la "vitesse" 2 n'est pas destinée aux voitures mais aux aiguillages. Le message signifie que la voiture désignée par son numéro veut bifurquer aux aiguillages
- la vitesse 127, (en doutiez-vous ?) correspond à la vitesse maximale

il appartient à chaque véhicule de reconnaître son numéro et d'appliquer la vitesse correspondante en jouant sur la largeur du pwm commandant le moteur, en fonction de la vitesse reçue par le message
la vitesse 0 n'implique pas que la coupure du moteur, mais également l'activation du frein


il appartient aux aiguillages de décoder et de garder en mémoire : quelle voiture doit, ou ne doit pas, bifurquer


les messages système seront décrits ultérieurement, le protocole à ce stade est embryonnaire et sujet à modification

à suivre : le protocole IR









nouveau problème, nouvelle solution

Lors d'un test un véhicule a "désloté" et le guide s'est désolidarisé de son axe. Les tresses se sont donc retrouvées libres, et l'une d'elle s'est mise à cheval sur les 2 rails inox. Cela a provoqué un cour-circuit, drainant le courant maximal de l'alim, soit 20A. La tresse s'est mise à chauffer et a fait fondre le guide.

Avec l'alim d'origine, de 2 ou 3A, cet incident ne se serait probablement pas produit. Il y a donc un défaut dans mon système, mettant en péril notamment l'intégrité des véhicules. Le fusible dans le véhicule ne sert à rien dans ce cas.

Comment détecter les court-circuits ou les charges anormales ?
C'est faisable : le module blue a une idée du nombre de véhicules en service et de leurs consommation instantanées, donc il peut calculer la somme des ampères devant parcourir le circuit, du moins avec une précision satisfaisante. Reste à mesurer la consommation totale et à la comparer à la consommation calculée. En cas de différence patente, le courant sera coupé.

Cela m'a obligé à réaliser un nouveau module blue et un nouveau module yellow, et à rajouter les softs nécessaires

mercredi 31 août 2016

fonctionnement correct de l'ensemble

fonctionnement correct de l'ensemble le 22/8/2016 à 18h00

20 pcb décodeur carrera, 5 modules red et 10 modules switches ont été assemblés par elecrow en chine
expérience concluante malgré une petite erreur : sur les modules red les couleurs des leds 5 à 8 devaient être orange jaune orange jaune, interprétation chinoise : orange orange jaune jaune. Pas de souci pour ce qui me concerne, j'ai pu permuter les leds incriminées

dimanche 17 avril 2016

disclaimer

je ne suis pas ingénieur en électronique, je me suis efforcé de respecter les bonnes pratiques, mais je n'ai aucune assurance que tout soit comme il faut
il est donc possible que mes réalisations présentent un danger d'ordre électrique, des perturbations radio, etc ...
par conséquent, qui veut reproduire mes montages le fera sous son entière responsabilité

les schémas présentés ne sont pas tous validés
la plupart a fait l'objet de modifications indispensables pour le bon fonctionnement, ou de simples améliorations

les schémas définitivement validés remplaceront les anciens dans ce blog

merci de me contacter si vous souhaitez les fichiers

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */


mardi 29 mars 2016

le module blue

c'est le centre nerveux du système
- génère les signaux trk (format série 76923,n,9,0 généré par un timer) et les transmet au module yellow qui les amplifie
- reçoit du module yellow les mesures des tensions et du courant (dédié, format série sur 1 fil)
- maître du rs485 :
   interroge les modules red et black pour connaître les actions sur les manettes
   indique aux modules red et black l'allumage de leurs leds
   interroge le(s) modules(s) lap counter sur le passage des voitures
   fournit l'alimentation des modules red et black
- bluetooth avec le pc
(le fonctionnement des modules hc06/05 SPP-CA est concluant)
  transmet au pc le passage des voitures, ainsi que les infos de tension et de courant pour l'affichage
  reçoit du pc les configurations à respecter : numéro de voiture pour chaque manette
- utilise stm32F103C8T6 pour + de puissance, de connectivité, et de mémoire
- validé


le schéma :



















le pcb :
















photo :



samedi 12 mars 2016

les pcb pour feux

schéma et pcb validés

j'ai réalisé les pcb (par véhicule : avant et arrière) pour les voitures carréra évolution suivantes :
bmw z4 (remplace avantageusement l'original, trop fragile)
porsche 997 gt3
nissan gtr (pas validé)
ferrari 599xx
ferrari 458
mercedes amg gt3 (1er modèle)
mercedes class c dtm

audi A5 dtm (il semblerait qu'il y ait un souci de dimension, qui entraîne une fixation lâche, à voir)


le schéma :



















le pcb pour sls amg gt3 et f458 gt3 :
court circuit à éliminer lors de la séparation


































le pcb pour f599xx et p997 gt3 :






























j'ai également dessiné pour la nissan gtr et la bmw z4

les pcb pour feux et le décodeur dans la F 458 : en comparaison, l'original fait pâle figure au niveau de la qualité et de la solidité...

samedi 27 février 2016

le module switch

le module switch : 1 ou 2 switch
prévu pour être monté dans les aiguillages carréra simples ou doubles

pcb et soft validés (sauf partie du soft lap counter seul, sans objet dans ma configuration)

les 4 configurations possibles :
- switch (aiguillage) simple : stm32f030f4p6, une seule voie équipée
- switch double : stm32f030f4p6, 2 voies équipées
- switche double + lap counter (compte tours) :  nécessite un 2nd uart, obligeant le choix d'un mcu plus complet : stm32f042f6p6 ou stm32f070f6p6). Liaison rs485 avec connectique jst. Un petit pcb est réalisé pour interfacer le rs485 de jst vers rj/11/12 : voir article "les petits pcb".
- lap counter seul :  stm32f030f4p6, les fonctions switch(es) ou lap counter seul utilisent le même soft. La différentiation se fait par la présence ou non de la résistance r8. Le soft de la fonction lap counter seul n'est pas testé, donc pas validé

les connections des fils se font à plat sur le pcb (pas through hole), pour faciliter le câblage
la fonction anti-collision est implémentée (y compris , un rectangle détachable du pcb facilite la mise en place d'un photo-transistor sur l'autre voie. Il sert de support pour le composant ainsi que de gabarit pour le perçage
notons que carrera utilise des comparateurs pour traiter les signaux en provenance des phototransistors. Grace au schéma et au protocole que j'ai créé, c'est inutile ...


schéma:

















 top :













 bot :



le module yellow

le module yellow : 1/2 pont
2 mosfets canal P en boitier D2pak
acs712 current sensor
mesure de la tension de l'alim et de la tension à la voie

capacité de 20 ampères, pouvant être portée à 30 ampères




top :












bot :












photo :














le module red

le module red : extension pour 4 manettes carréra, via rs485
visualisation par led de l'état de la manette vis à vis de la fonction arrêt d'urgence
pcb et soft validés

le choix de la connectique s'est porté sur du 4p/4c (ou rj9/10/22) pour des raisons de compacité et de disponibilité. Les câbles des manettes carréra devront donc être remplacés. Attention de ne pas arracher les pastilles du pcb des manettes carrera, de mauvaise qualité
la connectique du réseau rs485 est 6p/6c (ou rj11/12)

numérotage des modules :
(les throtles (manettes) 1 et 2 sont gérés par le module blue)

module 1module 2module 3module 4module 5module 6module 7module 8
J1no10k10k10k10k4.7k2.2k1k
J210k1k2.2k4.7k10k10k10k10k
LED1LED2LED3LED4LED1 + LED2LED1 + LED3LED1 + LED4LED1 + 2 + 3
throtle3,4,5,67,8,9,1011,12,13,1415,16,17,1819,20,21,2223,24,25,2627,28,29,3031

schéma:


top :












 
bot :












photo :


les décodeur scalextric et scx

le décodeur scalextric :

(dessin original avec stm32 non validé)
(version dpr dessinée, mais pas réalisée)

pcb utilisant un stm8s003f3p6 en boîtier ufqfpn20 3x3mm (stm8s003f3u6), ainsi qu'une cour de composants miniaturisés : résistances 0603, transistors sot-323(sc-70), mosfet d-pack double n+p
janvier 2017 : version stm8s003f4 validée (fonctionnement parfait)

scalextric version salon non dpr : une autre façon d'imaginer un pcb :













le dessin compact du cœur du décodeur permet de l'adapter à différentes formes de pcb, en fonction des contraintes de place et des connexions à assurer dans les différents véhicules

le décodeur scx :
ci-dessous un pcb fait sur mesure pour une seule voiture ! (l'option d'oshpark permettant une épaisseur de 0.8mm pour le support et 2oz pour le cuivre encourage bien des choses : j'ai payé 3€42 pour 3 pcb identiques, port compris)

la scx abarth 1000 berlina corsa tourne comme une horloge sur ma piste digitale, avec phares et feux stop fonctionnels, alors que scx ne peut pas la proposer en version digitale du fait de la grosseur de ses décodeurs et du peu de place dans le tout petit capot de l'engin, (ça ne rentre pas) ...
le pcb et le soft sont validés


la soudure de l'ufqfpn20 me donne quand-même des sueurs froide, vu ma méthode très artisanale ...

un petit mot sur le stm8s003f3p6: c'est le moins cher de la gamme des microcontrôleurs stm8S / stm8L (2.20€ les 10, port compris)
il est disponible en boîtier ufqfpn20, utilisé ici, et en tssop20
l’inconvénient, à part la difficulté de le souder (on n'a rien sans rien), est le nombre de réécritures en flash limité à 100 : c'est pour cela que j'utilise pour le développement un module à base de STM8S103F3P6, reprogrammable à l'envi, et ne coûtant gère plus de 0.50€ port compris ...
(avec le programmateur / débogueur st-link V2 à 1.5€, l'investissement est nul ...)
J'utilise gratuitement le compilateur de Cosmic, mais il faut demander une nouvelle clé tous les ans. Une alternative toute libre serait l'utilisation de SDCC.

Dans l'avenir je n'utiliserai plus que stm8s pour les décodeurs de véhicules, avantages :
- 5 volts, permet une meilleure commande des mosfets, moins de travail pour le régulateur de tension
- un seul fil (swim) nécessaire pour le téléversement (et le débogage), donc 3 fils pour la conection (avec le gnd et le +5v) au lieu de 4, cela permet de libérer de la place sur le pcb
- temps de setup beaucoup plus court après reset, en cas de perte de courant suite à un passage sur un aiguillage (interruption des "rails"). Le redémarrage de l'arm est long du fait de la complexité du setup,  il s'en suit un à-coup dans l'allure du véhicule, ce qui n'est pas perceptible avec le stm8s.
- un peu moins cher
Le 8 bits n'est pas mort !



la version scx gt fait l'objet d'un article dédié


 







vendredi 26 février 2016

le décodeur carréra

décodeur carréra :

soft validé, pcb validé en l'état
cependant cette version n'a pas d'avenir, si c'était à refaire, j'utiliserais un stm8s003f3p6, plus rapide à redémarrer après un reset

le schéma a été simplifié au maximum pour limiter le nombre, donc l'encombrement des composants
le mcu choisi est le stm32f030f4p6, qui anime aussi les modules red, black, switch et yellow

côté alim, un fusible est nécessaire compte tenu du courant devant être délivré dans un circuit sur lequel roulent des voitures en grand nombre : 20A dans mon cas. L'augmentation de la tension à 16v m'a conduit à placer une diode zener de 6v2 avant le régulateur 3v3, afin de lui éviter surtension et surchauffe
le transistor a1 a été choisi du type biased, car il intègre une résistance entre la base et le gnd, ce qui évite une commande intempestive par des parasites quand le mcu est en haute impédance (reset). Cela évite des désagréments du genre conduction simultanée et court-circuit des mosfets de puissance. Le fusible évite aussi les destructions




















top :




















bot :




















J'ai fait réaliser 20 décodeurs par elecrow en chine. Le prixde revient est d'environ 10€ pièce. Fait soi-même, c'est moins de 5€ pièce, mais c'est pas mal de travail

photos, bottom  :
















bon, j'ai mis un photo-transistor à la place de la photodiode dans la liste des composants ... il a fallu les remplacer

top :













le fusible n'est pas en place, je voulais tester différents modèles

une résistance n'est pas droite, cela fonctionne quand-même, mais il serait bien de revoir la forme du masque ou du pad, du-moins faire mieux les prochaines fois

jeudi 25 février 2016

le synoptique

Synoptique :

description sommaire du système :
- ensemble de modules électroniques et de logiciels nécessaires au fonctionnement d'un circuit de slot car digital
- open source (mise à disposition sur simple demande)
- nouveaux protocoles (donc non compatibles avec tout ce qui existe), destinés à obtenir la meilleure performance
- coût réduit des modules et large disponibilité des composants
- modularité du nombre de voitures en piste : 2 de base + groupes de 4 jusqu'à 31 voitures. Utilisation de manettes carréra ou scalextric, suivant le module de 4 (module red ou black) utilisé
- réseau rs485 performant et peu cher, gère les modules red ou black,  ainsi que les informations de passage (compte tours, etc.)
- module de puissance séparé de 20 ampères, mesure du courant et des tensions. Le calcul du courant total théorique permet de détecter les court-circuits
- modules aiguillage développé pour pistes carréra, extension envisageable pour d'autres systèmes de piste (sauf scx...). Le module aiguillage selon son équipement peut aussi être relié au réseau rs485 pour donner les information de passage des voitures, pour par exemple compter les tours
- logiciel de compte tours et de paramétrage du système
- décodeurs 1/32ème pour :
... carréra gt
... scalextric gt ancien
... scalextric gt dpr
... scx gt
... décodeurs custom pour modèles particuliers (scx abarth 1000, ...)
... platines de feux pour les modèles gt carréra en ma possession