Chrono Agility : nouveau

ddaweb

New Member
Slt la cie,

Après une pause, je me suis remis au chrono et j'ai enfin fait le circuit imprimé qui est développé maintenant : 5 PCB pour 28 € avec frais d'envoi !

24341

Il est composé de 3 parties qui peuvent être découpées sur les lignes et mesure 270 x 100 mm :
- L'afficheur extérieur à gauche
- Le chrono avec alimentation au centre (séparables également pour le SAV)
- Le boitier des juges à droite en 2 parties

Une plaquette afficheur extérieur est soudée, avec des afficheurs 7 segments pour tester : cela fonctionne nickel ... merci @MGU pour ton modèle.
La synchronisation avec un câble Cat6e de 15m avec le chrono fonctionne sans faille.

J'ai monté 2 chronos complet et hoooo surprise, en les pilotant en parallèle, j'obtiens majoritairement le même temps (de temps en temps 1/100 de différence, probablement du au facteur correctif) ... également avec des temps > 240 sec.
Le picaxe 28x2 avec quartz semble donc être assez homogène quand à sa base de temps.

Les plaquettes du boitier des juges s’emboitent très bien et se monte directement sur un cadre 5 afficheurs 7 segments.

C'est grâce à votre aide que j'ai su mettre tout cela sur pied ... merci à vous.

Comme les entrées du mon chrono et le vieux que j'ai ont identiquement les mêmes composants, je vais maintenant les mettre en parallèle et voir s'il y a des différences.

@+
DDA
 
Last edited:

ddaweb

New Member
Je viens d'avoir une très bonne surprise en diminuant le settimer et supprimant tout facteur correctif : L'afficheur LCD est celui du chrono compilé

24344

Je reste à 2/100 sur 238 sec.
Après mes dernières modification au programme, je suis arrivé à quelque chose d'assez fiable et stable.
Approximativement 100-110 sec est un temps max. de parcours après quoi le concurrent est éliminé par dépassement du temps et là je suis à 1/100, ce qui peut s'expliquer par un arrondi du temps.

Voici mon banc d'essais : le vieux chrono est à 100.96 sec.

24345

En haut à gauche, vous vous doutez que c'est l'afficheur extérieur ;)
A droite un chrono de plus de 15 ans d'âge (plutôt 20).

digit.PNG

Pour l'instant j'éteins les 10 et 100 sec. lorsque le temps n'est pas encore 10 ou 100 sec. (il suffit d'envoyer 15 ou 63 en ASCII).
Durant le chronométrage, il n'y a pas de centièmes, cela ne sert strictement à rien de toute manière.

Je suis donc très satisfait du résultat final et de la stabilité des temps obtenus. J'ai eu beaucoup de bon conseils ici :love:
Je vais tout de même encore regarder si je peux encore optimiser des petits bout de code, mais là je commence à être au bout de ce que je peux encore faire. Plus de bug constaté !

Après c'est au tour du programme de l'afficheur extérieur qui se fige uniquement à l'affichage par moment, pour reprendre au temps réel ... j'ai mit le 20x2 à 64 Mhz ... je crois que les circuits de commande n'ont, par moment, pas le temps de suivre la cadence :confused:
Peut-être redescendre à 16 Mhz ?
 

ddaweb

New Member
Il ne me reste plus qu'à vous montrer le résultat final du chrono.

La face avant du chrono : boitier pupitre 216 x 130 x 51-80 mm

24347

La led 5v n'est pas allumée car il n'est pas en 220v et donc pas de 5v, mais uniquement USB du PC.
A ce moment, la led Statut clignote.
La connexion au 220v est donc une option et n'est pas absolument nécessaire : prix de revient diminue tout de même de 30 € sans cette connexion 220v ... j'ai juste 2 ponts à mettre sur l'alimentation pour travailler sans !

L'arrière :

24353

J'ai du déplacer un support fusible, avec le support de l'afficheur, il était impossible de fermer le boitier ... c'est pour cela que le support fusible en dessous de l'USB n'est pas aligné.
La DB9 ne sert à rien, au départ pour programmer le Picaxe, maintenant c'est via un connecteur 3 pines dont le câblage est standardisé sur tous mes PCB.

A l'intérieur :

24348

Il y a un petit booster 5v -> 12v pour alimenter les cellules.
Les bornes non utilisées du Picaxe sont prévues avec la possibilité de mettre une R au +5v ou 0v et un bornier ... je sais donc facilement mettre de l'I2C par exemple.
Les entrées barrières peuvent être soit via la partie 12v, soit sur le Picaxe directement si des barrières en 5v ... bref il peut évoluer.
Juste pour les tests de finalisation et ma facilité, j'ai prévu une connexion USB sur le PCB côté alimentation, les futurs version ne l'auront pas.

Je n'ai pas encore raccordé la liaison vers l'afficheur extérieur, la fiche qui sera placée est utilisée dans mon banc d'essai (celle non raccordée, à droite dans le boitier, va servir pour l'afficheur extérieur ... quelques trous d'aération + ceux de la version précédente, même s'il ne chauffe pratiquement pas (juste un peu la R de charge pour le Powerbank lorsqu'il est en 220v, sinon le PowerBank s'éteint : min 70 mA sont nécessaire).

Le PCB complet fait 85 x 100 mm, très compact :p

Lors d'un concours, un petit PowerBank de 3000mA a tenu la journée avec le boitier des juges qui a 2 leds consommant chacune 70 mA lorsqu'elle est allumée ... les leds doivent être vues à l'autre bout du terrain, et au soleil, d'où cette consommation très élevée !

Le boitier des juges :

24350

24352

Les leds sont un peu cloisonnée, ce qui évite le mélange de couleur ... le rendu de la photo des leds allumées n'est pas un rendu tout à fait réel, la différence de couleur est plus visible (j'ai forcé l'allumage des 2 leds simultanément pour la photo, c'est assez rare que cela se produise, ou alors pour un temps assez faible ... sauf durant le réglage des barrière où ce boitier indique laquelle est encore en alarme : fixe = OK, clignotement rapide = alarme).
Les leds sont assez directionnelles, ce qui explique les ronds bien nets.

8 pages sur le forum pour arriver à ce résultat :ROFLMAO:

@+
DDA
 
Last edited:

ddaweb

New Member
Bonjour à tous,

J'ai repris le développement du chrono pour plusieurs raisons :
1. J'avais un reset du chrono lors du retour 220v que je n'ai pas su résoudre avec le PCB
2. Il y a 1 an j'avais implémenté un auto start automatique du chrono avec un temps programmable / 15 sec jusque 1 min. : en voulant afficher le décompte sur l'afficheur extérieur, je me suis rendu compte que mon code était un peu pourri avec cet ajout. Cet auto start est intégré dans la règlementation des concours depuis 2023, je monte maintenant à 2 min. du coup

Concernant le reset du chrono, j'ai retiré l'alimentation 220v pour la remplacer par une alimentation de chargeur de GSM et utilisé un multiplexeur automatique de tension qui fait le basculement du chargeur vers le powerbank quand le 220v tombre et vis versa lorsqu'il revient.
Le module utilisé : TPS2113A de Pololu -> Doc multiplexeur

Pour l'auto start, j'ai réécrit le code du chrono en reprenant +/- 80% de l'ancien code : ce qui fonctionnait bien j'ai évidemment gardé.
J'ai ajouté le code pour l'afficheur extérieur qui affiche le décompte et démarre après celui-ci (sauf si on rappuie sur le BP auto start avant la fin -> annulation).
Pour tester la fiabilité du chrono j'ai écrit un petit pour un timer (avec un min. d'affichage sur le display) que j'ai téléchargé dans un 2me chrono identique avec les entrées en parallèle : jusque 600 sec., j'ai de temps en temps une différence de 1/100 que je mettrais sur le compte des arrondis des 1/1000.

Le code du timer :
Code:
;10/04/2022 : CHRONO DE TEST

#picaxe 28X2            'Type de Picaxe
#no_data
#no_table

; ################################ Initialisation du Picaxe ################################
;setfreq m16            'Sans quartz
;hsersetup B2400_16, %10     'Sans quartz : 2400 baud, inverted TXD pour afficheur OLED 133Y : LCD
;settimer 64917            'Sans quartz : reglage timer 1/100 s ... augmenter = accelerer 64917 (16Mhz, sans quartz)

setfreq em64            'Avec quartz : Frequence quartz 16 Mhz -> mettre em64 (16 x4 = 64 Mhz reel !!, pause 1 = 4 microsec.)
hsersetup B2400_64, %10     'Avec quartz : 2400 baud, inverted TXD pour afficheur OLED 133Y : LCD
settimer 63040            'Avec quartz : reglage timer 1/100 s ... augmenter = accelerer (defaut : 63040)

; --------------- Variables systeme type WORD
symbol val_temps=w4        'temps reel chrono
symbol val_old1=w5        'memoire temps +1

; --------------- Les borne de type B
symbol barriere1=pinB.0        'Pin B.0 (In)  : Cellules barriere1 -> START
symbol barriere2=pinB.1        'Pin B.1 (In)  : Cellules barriere2 -> STOP

; --------------- Les borne de type C
symbol LCD=C.6             'Pin C.6 (Out) : NE PAS MODIFIER -> sortie serie afficheur LCD (HSEROUT) : 2.400 baud

; --------------- Affichage au demarrage
pause 20000                'Pause initialisation LCD

; ################################ Initialisation du chrono ################################
; *************** boucle du chrono ***************
chrono:
    do
        ;================================ Boucle attente du START ================
        hserout LCD,(254,128,"Chrono de test  ")                'Affichage LCD 1ere ligne
        bintoascii val_old1, b1,b2,b3,b4,b5
        hserout LCD,(254,192,"Memoire ",b1,b2,b3,",",b4,b5," s")    'Affichage dernier temps -> decomposition en ASCII + affichage 2m ligne
        val_temps=0
        timer=0
        setint or %00000000,%00010001,B                    '---------- interruption : BP Start/Stop ou barriere Start : barriere1
       
        do {                                        'Boucle attente START
        }  
        loop until val_temps>0
        ;================================ Boucle attente du STOP ================
        timer=0
        val_temps=0
        hserout LCD,(254,128,"START ...       ")        'affichage LCD 1ere ligne
        SETINT OFF                            'suppresion de l'interruption
        setint or %00000000,%00010010,B            '---------- interruption : BP Start/Stop ou barriere stop : barriere2
       
        do {                                'Boucle attente STOP
        }
        loop until val_temps>0
        ;================================ Enregistrement du temps ================
        val_old1=val_temps
    loop

interrupt:
    val_temps=timer
return
Voici un photo de mon banc de test avec mon chrono de test, le timer et l'afficheur extérieur version test : les 3 affichent le même temps :love:

25781

NB : on peut voir la partie alimentation modifiée au milieu en haut dans le chrono de test -> PCB ajouté en reprenant les les anciens contacts de l'alimentation 220v et les témoins

Si quelqu'un a un afficheur d'occasion axe133Y comme sur la photo à vendre, je suis preneur : mon 3me afficheur a rendu l'âme, j'ai remplacé le picaxe 18M2 par un 18M2+ (qui serait 100% compatible) pour voir, mais cela n'a rien changé, il affiche toujours des caractères erronés, mais régit.
 

ddaweb

New Member
Voici un complément d'information sur l'affichage extérieur et son fonctionnement :

1. Si le chrono démarre normalement, le temps s'affiche directement
2. Si le BP auto start est actionné (c'est à dire que le juge siffle le départ et le chien doit démarrer dans le temps imparti), une fois le temps atteint, le chrono démarre, même si le chien n'a pas encore démarré -> le décompte du temps se fait sur l'afficheur et ensuite le temps du chrono
3. Si l'auto start est actionné et que le juge arrête ce départ -> repousser sur BP auto start arrête le décompte et chrono revient à 0
4. L'afficheur ext. a son propre picaxe 20x2 pour les temps de décompte ou du chrono, le temps final est envoyé en serial
5. Quand le BP auto start est actionné, le temps de l'auto start est envoyé en sérial

Câblage entre le chrono et l'afficheur, en 4 fils, sorties du chrono :
- 1 commande auto start : 0v= repos et +5v= activé
- 1 commande start chrono : 0v= repos et +5v= activé (n'est pas activée en même temps que l'auto start ci-dessus)
- 1 TX
- Le 0v

Le fichier .bas du code de l'afficheur joint, si quelqu'un a une idée pour l'optimiser, cela serait bien car il dévie légèrement par rapport au chrono qui a un picaxe 28x2 avec un quartz 16Mhz (+/- 7 centièmes sur 300 sec.), les 2 sont à 64Mhz :
NB : il y a du code de débug pour un afficheur 16x2 caractères en sérial axe133Y

J'ai fait une petite vidéo, mais on ne sait malheureusement pas la télécharger directement.
 

Attachments

Top