baniere

PC-RM4

V 2.2
Programme du chronocomparateur PC-RM4 en
Téléchargements
Aperçus d'écrans
Documentation
Bugs connus
Anciennes versions

Introduction

Le logiciel téléchargeable sur cette page est le programme du chronocomparateur PC-RM4. Vous trouverez ici toutes les indications pour réaliser la partie matérielle de ce chronocomparateur. Pour mémoire, ce chronocomparateur d'atelier est de faible coût tout en proposant une résolution de mesure de 25ns au lieu de 4µS pour les versions précédentes.

Le chargement du logiciel sur le chronocomparateur nécessite l'utilisation d'une sonde ST-LINK V2 de faible coût. Vous trouverez toutes les informations à ce sujet sur la page déjà mentionnée.

image  image

Exécutable pour le chronocomparateur PC-RM4

Chargement Version 2.2 : ce programme permet de mesurer les caractéristiques d'une montre mécanique afin d'en effectuer le réglage. Les données mesurées sont l'écart par rapport au battement attendu, la moyenne de cet écart depuis le début de la mesure, l'avance-retard sur 24h00, le tout, avec une très grande résolution et précision de mesure. Il permet également de mesurer l'angle de levée et propose un affichage de la forme du signal récupéré par le capteur qui mmesure le tic-tac de la montre.

Documentation technique

Environnements et plateforme cible

Fichiers et répertoires

Il existe plusieurs versions du logiciel selon la configuration choisie pour l'affichage (320x240, bus parallèle, 480x320, bus SPI, Carte DevEBox, carte STM32_F4VE, etc.).

Les parties indépendantes du matériel (comprendre, indépendante de l'écran, du TouchScreen et des LED) sont regroupées dans le répertoire pcrm4_commun nommé [1] par la suite.

Les autres parties sont dans les répertoires nommés [2] :

Précisions sur le contenu des fichiers

touch.c et touch.h

Il y a 4 constantes de compilations pour la mise au point ou la vérification du bon fonctionnement du TouchScreen :

Ces constantes sont prises en compte dans principal.c et permettent l'appel aux fonctions de test de touch.c.

Autres constantes à considérer parmi d'autres :

lcd.c et lcd.h

Constantes à considérer parmi d'autres :

utilitaires.c et utilitaires.h

Les textes affichés par le programme se trouvent dans ces fichiers. Pour ajouter une nouvelle langue&snbp;:

Explications de la logique pour le comptage

Une horloge interne du processeur (42 à 84MHz) fournit une horloge AB1 qui va alimenter des compteurs 32 bits (TIM2 et TIM5) du microcontrôleur, les compteurs étant pilotés par une logique de commande réalisée autour de deux bascules U3A et U3B pilotée par le microcontrôleur. C'est la principale nouveauté de PC-RM4 par rapport aux précédents chronocomparateurs PC-RM1 et PC-RM3, la commande des compteurs est indépendante de l'activité du microcontrôleur.

Notations:

La sortie de la carte amplificatrice "Horloge" est reliée aux entrées U3AC et U3BC (C par la suite) des bascules.

La sortie de la carte amplificatrice "Analog" est reliée à l'entrée analogique PA4 du microcontrôleur.

Les entrée U3AS et U3BS sont inactive (reliée à H).

Le microcontrôleur génère un signal Enable sur PA2 et sur PA3.

Les entrées U3A/C et U3C/C sont reliées au OU de PA2 et PA3. Donc, pour arrêter tout comptage, il faut positionner PA2 et PA3 à L.

L'entrée U3AD est reliée à PA2. L'entrée U3BD est reliée à PA3.

U3A/Q et U3B/Q sont reliés à PA0 et PA1 du microcontrôleur. Le changement d'état de U3A/Q ou U3B/Q génére une interruption sur le microcontrôleur et surtout, autorise le comptage en mode Gated sur le microcontrôleur.

Récapitulatif du câblage :

Carte capteur Microcontrôleur
U3A/Q (6)Compteur 1PA0TIM2
U3B/Q (8)Compteur 2PA1TIM5
U3AD (2)PA2
U3BD (12)PA3
HorlogeU3AC et U3BC
AnalogSignal analogiquePA4Entrée analogique

Le tableau ci-après donne les différents états du comptage avec pour chaque état, la valeur initiale des principales entrées et sorties (0=L, 1=H).

La partie en bleu donne les entrées avant un changement d'état sur C, la partie orange donne les sortie après ce changement d'état. Un X dans la colonne C indique que les valeurs des sorties sont les mêmes que C change détat ou non. Un 0 dans la colonne C indique que la valeur de C vaut 0 (ou L) et ne change pas. Une flêche indique un changement d'état (dans le cas présent, uniquement de L vers H).

Etats du système de comptage
Etats du système de comptage

Durée d'occultation

Pour comprendre les explications ci-après, il est nécessaire d'expliquer la notion de fenêtre d'occultation.

img

Supposons qu'un certain Tic intervienne au temps T1. Le suivant doit intervenir au temps T2 = T1+durée d'une demi période.

La fenêtre de mesure autorisée est centrée sur T2. Les impulsions ne sont prises en compte que dans la zone verte. Si une impulsion survient dans la première zone grisée en rouge (avant T2), elle est ignorée. Si l'impulsion survient au delà de la zone verte, cela signifie probablement qu'un signal a été perdu. Le chronocomparateur ignore cette donnée et tente de se resynchroniser sur une autre impulsion.

Pour une montre qui bat à 18000 coups par heure, la demi-période (durée entre un Tic et un Tac) est de 200ms. Si l'on choisit une durée d'occultation de 9/10, les impulsions ne seront prises en compte qu'entre T1+180ms et T1+220ms.

Une durée d'occultation de 9/10 de la pdemi-période permet d'éliminer les phénomènes parasites.

Etat initialisation (Etat0)

Le programme du processeur bloque le comptage en mettant PA2 et PA3 à L ce qui active U3A/R et U3B/R et positionne les sorties U3A/Q et U3B/Q à L. Donc, quelque soit la valeur de C, /Q1 et /Q2 valent L et ce, quelques soient les variations de C et TIM2 et TIM5 ne s'incrémentent donc pas.

Démarrage du comptage (Etat1)

Le programme attend un début de TIC (ou de TAC). Pour ce faire, il attend que le signal sur C vaille L "un certain temps" qui dépend du battement de la montre. Ce temps écoulé sans qu'un TIC ou un TAC ait eu lieu, le programme initialise TIM2 et TIM5 à 0 et positionne PA2 à H alors que PA3 reste à L. U3AD = PA2 vaut H et U3BD = PA3 vaut L.

Tant qu'il n'y a pas de signal sur C, U3A/Q et U3B/Q restent à leur valeur initiale (celle de l'état précédent), c'est à dire H. Donc, TIM2 et TIM5 ne s'incrémentent pas.

Etat Comptage 1 (Etat2)

Une première impulsion arrive sur C. Comme U3AD vaut H, U3A/Q va passer à L ce qui va entrainer le comptage dans TIM2. Comme U3BD vaut L, U3B/Q reste à H et donc TIM5 ne s'incrémente pas.

Le changement d'état de U3A/Q génère une interruption sur le processeur qui va alors déclencher le timer de la fenêtre d'ocultation ce qui correspond à l'Etat3. A la fin de cette fenêtre, on passe dans l'état Fin Fenêtre 1 (Etat 4).

Etat Fin Fenêtre 1 (Etat4)

Le microcontrôleur positionne PA3 à H et PA2 à L (dans cet ordre, sinon, on réinitialise les bascules à U3A/Q = U3B/Q = H).

Puisqu'on vient de sortir de la fenêtre d'occultation, le signal en sortie d'amplificateur connecté à C ne bouge pas et est à l'état L (sauf si la montre présente de graves défauts ou si la valeur du battement sélectionnée est (très) incorrecte). On a donc toujours U3A/Q qui vaut L et U3B/Q qui vaut H. Donc, TIM2 continue de s'incrémenter et TIM5 ne s'incrémente pas.

Tant que le signal en sortie de l'amplificateur ne change pas, on reste dans cet état. Si le signal change (passe à l'état H sur C, Etat5), la logique passe dans l'état Comptage 2 (Etat6).

Etat Comptage 2 (Etat6)

PA2 vaut L, PA3 vaut H, un front d'horloge arrive sur C.

Puisque U3BD vaut PA3 qui vaut H, la sortie U3B/Q va prendre la valeur L et donc TIM5 va commencer à compter les impulsions d'horloge. A l'inverse, U3A/Q va passer à H et donc TIM2 ne s'incrémentera plus. On utilise le changement d'état de U3A/Q ou U3B/Q pour générer une interruption qui permettra au microprocesseur de lire la valeur du compteur TIM2, le remettre à 0 et déclencher le timer de la fenêtre d'occultation. A la fin de cette fenêtre, on passe dans l'état Fin Fenêtre 2 (Etat 7).

Etat Fin Fenêtre 2 (Etat7)

Le microcontrôleur positionne PA2 à H et PA3 à L (dans cet ordre, sinon, on réinitialise la bascule à U3A/Q = U3B/Q = H).

Puisqu'on vient de sortir de la fenêtre d'occultation, le signal en sortie de l'amplificateur ne bouge pas et est à l'état L (sauf si la montre présente de graves défauts ou si la valeur du battement sélectionnée est (très) incorrecte). On a donc toujours U3B/Q qui vaut L et U3A/Q qui vaut H, et donc, TIM5 continue de s'incrémenter tandis TIM2 ne compte pas d'événements.

Au premier changement d'état de C, on passe dans l'Etat Comptage 1bis (Etat8).

Etat Comptage 1bis (Etat8)

PA2 vaut H, PA3 vaut L, un front d'horloge arrive sur la logique de commande.

Puisque U3AD vaut PA2 qui vaut H, la sortie U3A/Q va prendre la valeur L. A l'inverse, U3B/Q va passer à H et donc TIM5 ne s'incrémente plus. On utilise le changement d'état de U3A/Q ou U3B/Q pour générer une interruption qui permettra au microprocesseur de lire la valeur du compteur TIM5, de le remettre à 0 et de déclencher le timer de la fenêtre d'occultation. A la fin de cette fenêtre, on passe dans l'état Fin Fenêtre 1 (Eta4), et ainsi de suite.

L'intérêt de cette logique est que le comptage ne dépend plus du programme avec les risques de masquage des interruptions dues au traitement d'autres interruptions.

Les interruptions générées par U3A/Q ou U3B/Q ne nécessittent pas un traitement immédiat. Les durées se comptent en dizaines de millisecondes du côté du signal provenant de la montre alors que le déclenchement de l'interruption et le traitement vont se compter en microsecondes côté programme. Mais ce qui est important, c'est que le comptage ne dépend pas des éventuels délais de réaction du microprocesseur, tant qu'on ne passe pas quelques dizaines de millisecondes ce qui (sauf bug) ne se produit jamais (on sera plutôt au niveau de quelques microsecondes).

Avec les timers TIM2 et TIM5, il est possible de compter jusqu'à 107 secondes avec une précision de 25nS (40MHz).

Bugs connus

Vous pouvez signaler les bugs des programmes en utilisant le contact indiqué sur la page d'accueil. "m" pour mineur, "M" pour majeur, "A" pour amélioration.

Version 2.2

A : Simplification du calcul de l'amplitude. Les versions précédentes proposaient une recherche de 2 ou 3 pics pour calculer l'amplitude. Seule la version 2 pics est conservées (1er pic = déclenchement, 3ème pic = pic de valeur la plus élevée.

A : Amélioration de l'affichage en mode "scope" avec F0 (pas de filtre).

Version 2.1

Première version mise en Téléchargement.

sommaire