mardi 12 septembre 2017

les petits pcb

nous avons vu dans l'article précédent qu'il est possible de faire un tas de petites choses pratiques avec des petits pcb faits par oshpark  (là, je ne leur fais pas de pub, car je pense que pour eux seuls les moyens et grands pcb sont rentables)

la connexion jst 2.54mm vers rj11/12 :
le réseau rs485 (voir le synoptique, article le plus ancien) doit aussi desservir l'aiguillage double qui me sert de prise d'information pour le compte tour (module switch)
le raccordement du réseau au niveau de l'aiguillage ne peut pas se faire en rj11/12 pour des raisons d'encombrement. Jai donc équipé l'aiguillage avec du jst 2.54mm. Pour le raccorder au réseau en cordons rj11/12, j'ai réalisé ce module, qui relie un connecteur femelle jst 2.24mm 4 fils à un connecteur rj12 femelle :









le convertisseur usb <-> rs485 :
j'ai réalisé ce module pour épier le trafic du réseau rs485 depuis mon PC. Il s'agit d'un convertisseur usb <-> série, que j'ai prolongé par un petit pcb portant un convertisseur série <-> rs485 à base de max485

l'utilisation de convertisseur usb <-> série, prévu par le fabricant pour le téléverement par bootloader vers un arduino pro mini ( j'ai choisi celui-ci car il ne coûte rien ), nécessite le remplacent du condensateur (prévu pour l'impulsion rst) par une résistance de faible valeur, afin d'avoir un signal dtr permanent pour activer la ligne de commande de/re du max485

schéma :


photo :
( la résistance de 1k est descendue d'un étage pour remplacer le condensateur évoqué ci-dessus )
( ... le quartz a été "rectifié" par mes "soins" ...)



Les programmateurs / débogueurs

sur la photo ci-dessous, j'ai rassemblé trois de mes st-link v2 (je n'en utilise qu'un à la fois). Ces programmateurs / débogueurs sont des clones achetés 1€50 en chine. Ils conviennent pour les stm32 et pour les stm8. Pour fonctionner avec le stm8, ils doivent être upgradés au firmware V2.J27.S6. Cela fonctionne alors très bien (si l'on ne veut pas utiliser la fonction trace que je ne sais pas à quoi ça sert)
je les ai complétés par des petits pcb (en violet) servant à les interfacer avec des connecteurs jst de 1.25mm, plus compacts et fiables que les dupont. La partie femelle du jst est sur le petit pcb joint au st-link, la partie mâle est raccordée avec ses fils sur le module où se trouve le mcu à programmer / déboguer

le jst femelle est un 6 pôles, dont 2 ou 3 pôles ne sont pas utilisés. Le jst mâle est à 3 ou 4 pôles. Il ne faut pas se tromper dans l'alignement du raccordement : c'est un inconvénient, mais en contrepartie  cela s'insère puis se sépare facilement
(cela devrait aussi fonctionner avec des jst femelle de 5 pôles, j'ai pris ce que j'avais sous la main)

pour le stm8, l'usage du fil nrst n'est pas nécessaire pour le téléversement et pour le débogage, dès qu'on n'utilise pas, dans l'application, le port D1, sur lequel est raccordé le fil swim.

- le st-link bleu en bas à gauche, permet de programmer / déboguer les stm8 et les stm32
pour passer de l'un à l'autre il faut permuter les dupont au niveau du HE-10 du st-link :



pcb
st-link v2 dupond HE-10 jst 6*1.25 jst 4*1.25
stm8 +5v rouge câblage fixe des dupond +5v rouge
gnd noir gnd noir
swim jaune swim jaune
nrst vert nrst vert
ou
stm32 +3v3 rouge câblage fixe des dupond +3v3 rouge
gnd noir gnd noir
swclk jaune swclk jaune
swdio vert swdio vert


- le st-link doré, pour stm8
pcb spécialisé créé pour l'interface directe avec un module à stm8, équipé du cordon jst mâle 3 ou 4 fils
la spécialisation évite d'avoir à permuter les fils dupont au niveau du st-link (ce ne sont pas les mêmes fils que pour le stm32 et la permutation est synonyme d'usure prématurée des dupont et de risque d'erreur) :
st-link v2 pcb jst 6*1.25 jst 4*1.25
stm8 +5v routage pour stm8 +3v3 rouge
gnd gnd noir
swim swim jaune
nrst nrst vert

(édit d'avril 2018 : malheureusement j'étais parti pour mettre le nrst en 3ème position, me reste à faire l'inversion : mettre le swim en position 3 et le nrst (facultatif) en position 4)


le st-link bleu en bas à droite, pour stm32
pcb spécialisé créé pour l'interface directe avec un module à stm32équipé du cordon jst mâle 4 fils. Ainsi, pour passer de stm8 vers stm32, je change simplement de st-link ... :
st-link v2 pcb jst 6*1.25 jst 4*1.25
stm32 +3v3 routage pour stm32 +3v3 rouge
gnd gnd noir
swclk swclk jaune
swdio swdio vert



au bout du connecteur il y a une autre "création", c'est le connecteur pogo pin. Un petit pcb est créé pour "fabriquer" une sonde avec des pointes, afin d'établir la connexion par simple contact. Le but est de se passer de cordon jst mâle 4*1.25 ou 3*1.25 installé à demeure sur mes petits modules : on applique la sonde sur des pastilles (ne pas se tromper), et hop, le programme est dans le mcu. C'est pratique quand on a des séries de modules à programmer, mais il faut que le module soit bien fixé et que ses pastilles de programmation soient accessibles. Si non, et aussi dans les cas où du débogage est à faire, il faut avoir recours au connecteur jst 4*1.25 (ou 3*1.25) mâle ...

photo des mini pcb (réalisés par oshpark), bien pratiques et très bon marché :


lundi 14 août 2017

montage sur carréra

class c dtm : c'est du propre !
on voit que la surface des pcb des feux dépasse celle du décodeur

















z4 : il y a moins de place ici. Il a fallu penser à l'emplacement des connecteurs sur les pcb des feux. L'arrière a du être placé vers ... l'arrière, car il n'y a pas d'autre espace. Les pcb sont montés verticalement.
Le connecteur multicolore sert à la programmation de la puce.
On remarque la dégradation des pneumatiques arrière : il ne s'agit pas d'usure, mais d'un état de décomposition dû à une mauvaise tenue dans le temps, que je déplore sur plusieurs modèles de la marque carrera.


vendredi 11 août 2017

scx gt

Équipement d'une GT du constructeur Scx

le schéma :
microcontrôleur stm8s003f3u6 en boîtier ufqfpn20 3x3mm et sa cour de composants miniaturisés 


Les pcb pour scx gt : commandés et payés 5, livrés : 18, besoin : 1 ...
Je suis paré pour une belle collection !


















détail recto et verso :






































après détachage du socle (cutter - attention les mains ! - et finition à la lime à ongle + aspirateur) :



















et assemblage à froid :















composants sur la face avant, les "gros" fils c'est le câblot jst 4x1.25 pour la programmation de la puce :
à ce stade, il y avait un court-circuit entre la les 2 "broches" en haut à gauche du stm8s, invisible sur la photo. Il faut toujours faire toutes les vérifications possibles avant la mise sous tension !
Suite à l'inutilité du raccordement du nrst pour les stm8s (dès qu'on n'utilise pas le fil swim pour d'autres tâches que la programmation), le fil vert et la pastille correspondante disparaîtront. Le câblot jst sera 3x1.25



















et arrière, la double paire des transistors permet l'alimentation des feux en pseudo canal P, ce qui permet de conserver le câblage original, réalisé avec le pole négatif des feux au 0v :



















vu de l'avant. Le décodeur est soudé sur sa base. L'ensemble, en T inversé, vient se substituer à la petite  platine de régulation des feux. Le maintient du décodeur est ainsi assuré, et consolidé par les connections sur les lamelles de cuivre des contacts à la piste. La led infrarouge est soudée sur le pcb, il faut plier les pattes pour qu'elle soit bien en place
pour la lisibilité de la photo, le condensateur chimique n'est pas encore en place

vue côté moteur : on voit les connections vers les lames, qui fiabilisent les connexions électriques et la stabilité. Les fils noir et rouge portent le connecteur du + des feux. Les connexion du - sont assurées par les lames d'origine. La lame du + du moteur est isolée par un thermorétractable. La connexion du + est faite par un fil de cuivre de 5/10mm (gaine bleue claire) : il est assez souple pour préserver le pivotement du bloc moteur + essieu arrière, la ductilité du cuivre faisant office d'amortisseur.





























joli , mais le moteur des scx est poussif, donc pas de nouvelle acquisition avant de trouver un moteur qui le fisse ...

mercredi 7 juin 2017

le compte tours


Le module blue communique avec un PC via une liaison bluetooth HC06

Ce que le module blue envoie au PC, c'est grosso modo le numéro de la voiture qui franchit la ligne d'arrivée. Charge est au PC de déterminer les temps et d'établir le classement

Le programme utilisé sous windows et vb net. Il aurait peut-être été plus pertinent d'utiliser processing, mais j'ai mes habitudes avec vb net

copie d'écran (pc ou télé grâce au hdmi) :























Les lignes et les colonnes sont des labels créés par programmation
La hauteur des lignes est adaptée à la taille de l'écran
Quand une voiture dépasse une autre, elle prend sa place sur la ligne, et inversement

En haut à droite il y a des vu-mètres qui montrent les tensions et les courants théoriques et réels
Une fenêtre est ouverte à la demande au 1er plan qui permet l'affectation des voitures : dans l'exemple,  la voiture 6 est affecté à la manette 4, la voiture 5 à la manette (en cours) 5, la voiture 13 à la manette 7, etc





 







mercredi 31 mai 2017

la fin ...

rien n'est jamais fini

mais au 23 mai 2017 toutes les question techniques semblent avoir trouvé une réponse : le système fonctionne à 100%

c'est donc le moment d'envisager une pause (déjà largement entamée)

ce qui devrait encore être fait :
- équiper les véhicules nouvellement achetés
- faire faire les pcb des feux pour la z4 et la gt-r
- dessiner et réaliser les platines feux pour la A5 et la class C DTM
- au niveau du blog, faire un article sur le compte tour
Édit de sep 2017 : tout ce qui précède est réalisé (il ne fallait pas être pressé)

ce qui pourrait encore être fait :
- revendre les platines d'origine
- améliorations : idées spontanées ou suite à essais ou courses

mardi 31 janvier 2017

Le protocole InfraRouge

J'aurais pu l'appeler le protocole aiguillage.
Il s'agit d'un signal infrarouge émis par le véhicule vers le sol, reçu par un capteur au niveau de la piste, et qui permet d'identifier le véhicule.

Cette identification à 2 utilités :
1) détection du passage sur la ligne d'arrivée pour renseigner le compte tours
2) identification du véhicule en amont de l'aiguillage : d'abord, les informations de bifurcation des véhicules sont transmises aux aiguillages depuis le module "blue", ainsi, les aiguillages savent quelle voiture doit bifurquer, ou pas. Un aiguillage donné doit encore savoir si un véhicule l'aborde, et quel est son numéro. Quand il a décodé le signal infrarouge et par là reconnu la voiture, il doit encore regarder dans sa mémoire si ce véhicule doit bifurquer ou pas, puis, le cas échéant,il manœuvre l'aiguille (le flipper).

Le  code est simple, c'est un signal périodique composé d'une impulsion de lumière de 20µs et d'une obscurité de longueur variable afin de compléter la période






Les 36 valeurs :
la première ligne est le numéro du véhicule
la ligne en gras est la période en µs du signal infrarouge émis par la voiture correspondante






les 2 valeurs encadrantes, exemple 30 et 32µs pour la voiture 1, sont également admises par l'aiguillage ou le compte tour. Ainsi, si l'aiguillage mesure une période de 77µs, il considère qu'il s'agit de la voiture n°16,  s'il mesure 78µs, il considère qu'il s'agit de la voiture n°17

il peut y avoir des erreurs. La première mesure, souvent erronée, n'est pas utilisée. La 2ème mesure fait l'objet d'une petite correction.

Pour détecter les erreurs j'utilise un principe simple : on regarde à quel véhicule correspondent les impulsions, dès qu'un véhicule à 4 impulsions qui lui correspondent, il est validé.

Lors les tests effectués il y a une erreur sur environ mille mesures, toujours immédiatement corrigée par 4 bonnes mesures. Le système est donc très fiable car le risque d'erreur est nul.
Notez que la méthode nécessite une bonne précision des oscillateurs des microcontrôleurs sur les décodeurs et les modules d'aiguillage. Cette précision est obtenue sans quartz grâce à la méthode décrite dans l'article "protocole circuit"

A pleine vitesse, le véhicule n°35 génère encore environ 8 périodes mesurables lors de son passage. Cela est suffisant pour pouvoir corriger l'une ou l'autre éventuelles erreurs

Techniquement, ce code est généré par un module pwm, dont le "on" (pulse) est fixe, et dont la période varie en fonction du numéro de la voiture

A la lecture, il faut un bon module capture pour déterminer les durées. Le calcul statistique doit également se faire rapidement, à fortiori dans le cas d'un aiguillage double ou d'un compte tours, car quand 2 véhicules se présentent simultanément, il faut faire les 2 calculs parallèlement.
Pas de souci pour le stm32f0, et dans ce cas également, la hiérarchisation des interruptions est appréciée.