Dernière mise à jour :
30/05/2010
Présentation
Ce projet a été élaboré suite à la
demande d'un internaute, propriétaire d'une moto Suzuki Bandit (DL650),
qui souhaitait disposer d'un affichage du rapport de vitesse, sur un
afficheur sept
segments à leds.
Je ne connaissais strictement rien au sujet, aussi m'a-t-il parût
interressant de m'y interresser, pour deux raisons au moins :
- en apprendre un peu plus sur ce qui se faisait dans ce domaine;
- me pousser à explorer de nouveaux composants électroniques pouvant
répondre au besoin exprimé.
Evolution de l'indicateur de vitesse 001
Suite à plusieurs courriers reçus concernant la réalisation de cet indicateur, j'ai conçu l'
indicateur de rapport vitesse 002
qui est plus simple à réaliser et qui convient à
plusieurs types de
motos. En outre ce dernier est plus facile à adapter pour de
nouveaux
types de moto, car conçu dès l'origine pour être
extensible. La mise à jour publiée le 30/05/2010 sera la
dernière pour cet indicateur vitesse 001. Je ne
ferai plus de mise à jour pour l'indicateur de rapport
vitesse 001, mais continuerai avec l'indicateur de rapport vitesse 002.
Merci de votre compréhension.
Données connues
Il existe déjà dans le commerce des boitiers permettant
l'affichage du rapport, adapté à la quasi-totalité
(ou même totalité) des motos. Pour déterminer le
rapport de vitesse engagé, ces boitiers effectuent une
comparaison entre le nombre d'impulsions du compteur de vitesse avec le
nombre d'impulsions du compte-tours, en un temps donné. Dans le
cas présent, la Suzuki est déjà
équipée d'un capteur de rapport de boite de vitesse
engagée, dont l'information est fournie au calculateur de la
centrale
d'injection pour optimiser le fonctionnement du moteur. Il semblait
donc possible de réaliser la fonction d'affichage assez
simplement. Le schéma disponible est le suivant :
La position du commutateur K1 dépend du rapport de vitesse
engagé. Comme on peut le voir, il permet de disposer d'une
tension continue dont la valeur dépend de sa position physique,
au travers d'un
pont
diviseur résistif
dont le facteur de division dépend de la résistance
"horizontale" mise en circuit avec la résistance "verticale" de
1K. Exception faite pour la position N° 2 qui correspond au point
mort, et pour laquelle aucune résistance "horizontale" n'est
mise en circuit, ceci ayant pour effet de trouver au point Vout, une
tension maximale très proche de +5 V. Sachant cela, on peut
envisager au moins trois solutions pour l'affichage du rapport de
vitesse :
1 - Voltmètre à base de CA3161 et 3162. Le couple CA3161
/
3162 revient à lui seul à plus de 30 euros, je trouve que
ça fait un peu "luxe" pour l'application qui nous concerne.
D'autant plus qu'il faudrait certainement "corriger" la tension lue
Vout pour afficher une valeur correcte à chaque position.
2 - Afficheur à base de compteur et comparateur. Solution
relativement économique et qui fonctionnerait très
certainement fort bien, mais au prix d'une complexité plus
grande du montage.
3 - Afficheur à base d'un convertisseur analogique / numérique (ADC ou
CAN) et PIC 16F84. Solution la plus
simple que j'entrevois pour l'heure, assez économique, mais nécessité
de programmer un composant programmable. Le présent article décrit un
montage de ce type.
Schéma
La complexité du montage n'est pas bien grande, surtout si on
regarde la partie "active" (section inférieure) et qu'on exclue
la partie régulation d'alimentation et filtrage de la tension
venant du capteur de rapport de vitesse (section supérieure).
Filtrage tension d'entrée
Ce filtrage est indispensable, car on peut facilement retrouver,
superposé à la tension utile prise au point central du
diviseur de tension mis en circuit par le capteur / commutateur K1, des
tas de parasites de tous poils. Heureusement que l'on peut se contenter
d'un filtre passe-bas simple, du premier ordre, qui prend ici la forme
de R1 et de C1. La diode zener D1 n'est pas obligatoire mais
fortement conseillée, en vue de protéger l'entrée
analogique du circuit intégré U3.
Régulation alimentation
La section d'affichage repose sur deux circuits intégrés
qui doivent être alimentés sous une tension de +5 V par
rapport à la masse. Cette tension de +5 V est produite par un
régulateur de tension
intégré de type LM7805, bien connu des
électroniciens et très bon marché, à partir
de la tension +12 V de la batterie de la moto. Une diode de
redressement de type 1N4007 (D2) est montée en amont du
régulateur de tension, afin de protéger le montage en cas
d'inversion de polarité. Cette diode est facultative et vous
pouvez la remplacer par un strap, mais je vous conseille vivement de la
laisser en place. La chute de tension qu'elle provoque est
négligeable et le régulateur aura toujours sur son
entrée une tension suffisante pour travailler dans de bonnes
conditions.
Conversion analogique / numérique
C'est la première fois que j'utilise le convertisseur ADC0831,
de type série. Ce choix résulte de deux aspects : d'une
part, j'ai déjà travaillé avec des convertisseurs
"série" et ai donc déjà une idée de leur
fonctionnement général; d'autre part, il me fallait ici
un composant de petite taille, de précision suffisante (8 bits
de quantification sont suffisants), et d'un coût raisonnable (ce
circuit coûte dans les 3 euros). La liaison de ce circuit avec le
microcontrolleur se fait via trois fils :
- CS = Chip Select (sélection circuit) - Cette patte permet
d'initialiser le processus de conversion, et d'aller lire son
résultat.
- CLK = Clock (horloge) - Cette patte permet de "rythmer" les
échanges de données. Elle reçoit une série
d'impulsions qui permetent au convertisseur d'envoyer le
résultat de la conversion, sur la patte DO.
- DO = Data Out (sortie données) - Cette patte met à
disposition le résultat de la conversion, bit après bit,
au rythme des impulsion d'horloge transmises sur la patte CLK.
Le fonctionnement n'est pas compliqué, il "suffit" de lire la
procédure d'exploitation indiquée par le constructeur,
dans son datasheet. La procédure complète de demande de
conversion et de lecture de son résultat est effectuée
par le microcontrolleur, en quelques lignes de code seulement (voir
dans le code source, procedure ADCRead).
Important : les deux bornes
d'alim du convertisseur ADC0831 n'apparaissent pas sur le
schéma. La borne 4 doit être reliée à la
masse, et la borne 8 doit être reliée au +5V.
Affichage
J'aurais fort bien pû utiliser un PIC16F877, qui inclue
déjà des convertisseurs analogique / numérique,
mais le prix de ce composant, bien supérieur à l'addition
ADC0831 + 16F84, était un argument en sa défaveur. Sans
compter sa taille... C'est pourquoi je me suis contenté d'un PIC
16F84 et d'un convertisseur externe (à l'époque où j'ai fait ce choix,
je ne connaissais pas encore le 16F88 qui m'a servi pour la version
002). Le travail demandé au PIC
est tellement minime que sa vitesse d'exécution ne
réclame point un quartz de 20 MHz. Le faire travailler un 1 MHz
ou à 4 MHz suffit bien amplement. Le 16F84 dispose de
suffisemment de lignes d'entrée / sortie pour faire ce que l'on
veut ici. Le port B de huit lignes est réservé à
la connection de l'afficheur sept segments (il reste une ligne de libre
que l'on pourrait mettre à contribution pour sélectionner
le type d'afficheur, Anode Comune ou Cathode Commune), et le port A de
cinq lignes dont trois sont utilisées pour le dialogue avec le
convertisseur analogique / numérique. Une mesure de tension
d'entrée (Vout) est effectuée toutes les 100 ms environ,
chaque mesure demande moins de 1 ms.
Horloge du PIC
Le
PIC 16F84 peut fonctionner avec un quartz ou avec un réseau RC.
L'emploi d'un réseau RC pour constituer la base de temps conduit à une
stabilité moindre de la fréquence d'horloge, qui varie selon la
température ambiante, mais dans notre cas, cela n'a aucune importance
car le timing des opérations effectuées par le programme n'a pas besoin
d'être précis. Les valeurs données au couple R9 / C4 (10 KO / 100 pF)
conduit à une fréquence d'oscillation de quelques 600 KHz.
Avertissement
Je
n'ai pas réalisé personnellement ce montage,
je l'ai juste conçu. La personne qui me l'a demandé ne m'a pas encore
donné de nouvelles et je ne sais pas si elle en est satisfaite. Mais
depuis la publication de cette page, une autre personne a manifesté son
interêt pour ce circuit, et l'a réalisé avec succès, après quelques
adaptations mineures du programme (il s'agit d'une autre moto, et les
tensions
délivrées ne sont pas les mêmes que celles de la Suzuky Bandit).
J'ai donc décidé de modifier le programme afin de permettre une
sélection parmi plusieurs "courbes", afin de rendre ce montage
compatible avec plusieurs modèles de moto. Bien entendu, comme je ne
m'y connais rien en moto, les valeurs de tension délivrées en fonction
des rapports de vitesse doivent m'être communiquées pour que je puisse
les intégrer dans le programme. La sélection se fera par appui sur un
bouton poussoir raccordé à la ligne RA3 du PIC, et sera sauvegardée en
EEPROM (interne au PIC) pour que les bonnes valeurs soient chargées à
chaque mise sous tension.
Logiciel du PIC
Le code source inclue la totalité des fichiers utilisés :
fichiers source au format Pascal et fichier binaire au format .hex. La
version du 30/05/2010 est compilée pour fonctionner avec une
Suzuki Bandit DL650, mais le code source inclue en commentaire les
modifications à apporter pour une Suzuki SV1000S.
Indicateur
rapport vitesse 001 - (30/05/2010)
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé de mon côté. Mais Pierre,
possesseur de la moto en question, l'a réalisé et m'a
envoyé ces quelques photos. Les deux circuits imprimés
(celui qui comporte les circuits intégrés et celui qui
supporte l'afficheur) sont superposés.