Dernière mise à jour :
22/12/2013
Présentation
Chenillard 8 voies à base de PIC 16F628 ou 16F628A. Plusieurs
programmes internes
offrant chacun une suite de plusieurs figures, qui peuvent se
succéder les uns aux autres de façon automatique ou de
façon manuelle, au choix de
l'utilisateur.
Ce chenillard est le successeur du
chenillard
003a
basé sur un 16F84A, et présente plus de figures
préprogrammées (ceci dit vous pouvez toujours vous faire
plaisir avec le chenillard 003a s'il vous reste des 16F84A qui dorment
dans un tiroir). Les PIC 16F628 et 16F628A diffèrent
légèrement dans leur mise en oeuvre physique et
logicielle, c'est pourquoi vous trouverez ici deux schémas
différents et deux ensembles de fichiers différents pour
la programmation du PIC, selon le modèle que vous choisirez.
Remarque :
au départ, je
n'avais prévu de travailler qu'avec le 16F628A et non avec le
16F628. Un internaute m'a envoyé des PIC 16F628 après
m'avoir demandé si je pouvais lui mettre dedans le programme de
mon chenillard 003c. Comme j'ai débuté avec le 16F628A
sans avoir au préalable travaillé avec le 16F628, j'ai
vite constaté que l'échange n'était pas aussi
simple, mon programme pour 16F628A ne fonctionnait pas pour le 16F628.
Après quelques recherches sur le net, j'ai vite compris que la
raison principale en était les modes d'oscillateurs externes qui
différaient, et ai adapté ce qu'il fallait pour que le
programme tourne avec l'un ou l'autre (avec deux fichiers binaires
différents à la clé bien entendu).
Schéma avec PIC 16F628A (conseillé)
Le circuit est fonctionnel, il m'a suffit de modifier un peu le code
que
j'avais employé pour mon
chenillard
003a
et de le recompiler, afin que le fichier
binaire (*.hex) soit correctement digéré par le 16F628A.
Le schéma de l'ancien chenillard et du nouveau sont donc
identiques, au type de PIC près.
Oscilateur / horloge
L'horloge assurant le cadencement des instructions du PIC n'a nullement
besoin d'être très stable, et un simple réseau RC
(C1 / R14 + RV1) suffit amplement. Et hop, économie d'un quartz ! La
vitesse est réglable de deux façons :
- par le biais du potentiomètre RV1, qui joue directement sur la
fréquence de base du cadencement des instructions du PIC, et
- par voie logicielle, avec une routine dotée d'une variable
incrémentée à chaque interruption du Timer 0.
En pratique, le potentiomètre RV1 est placé en position
médiane, et la vitesse est ajustée par des boutons
poussoir "SpeedUp" (Plus vite) et SpeedDown" (Moins vite) reliés
au port B du PIC. Mais rien ne vous interdit de faire comme bon vous
semble, c'est bien la pratique qui dictera la meilleur méthode. A noter
que sur mon proto, l'oscillateur fonctionnait en l'absence du
condensateur C1, comme au bon vieux temps avec le PIC 16F628 et sa
simple résistance externe. Si la plage de réglage du potentiomètre ne
vous convient pas (ça peut bloquer aux extrêmes), modifiez le réseau RC
câblé sur la broche RA7 du PIC (par exemple 1,8 kO fixe + 4,7 kO
ajustable).
Interrupteur et poussoirs
Ce chenillard dispose de cinq boutons de commande, qui jouent les rôles
suivants :
- Interrupteur
SW1 / ProgAuto -
Si cet interrupteur est ouvert, le même programme (la même
suite de figures) est répété indéfiniment,
jusqu'à appui sur les poussoirs ProgNext ou ProgPrev. Si cet
interrupteur est fermé, la fin d'un programme laisse suite au
programme suivant. Les suites de figures se succèdent donc de
façon totalement automatique.
- Poussoir SW2
/ ProgNext -
L'appui sur ce poussoir n'est pris en compte que si l'interrupteur SW1
/ ProgAuto est ouvert. Il permet de passer directement au programme qui
suit celui en cours.
- Poussoir SW3
/ ProgPrev -
L'appui sur ce poussoir n'est pris en compte
que si l'interrupteur SW1 / ProgAuto est ouvert. Il permet de passer
directement au programme qui précède celui en cours.
- Poussoir SW4
/ SpeedUp - Permet
d'augmenter la vitesse de défilement des figures pour l'ensemble des
programmes.
- Poussoir SW5
/ SpeedDown -
Permet de diminuer la vitesse de défilement des figures pour l'ensemble
des programmes.
Alimentation
J'ai utilisé un petit régulateur de tension tripode de
type LM7805 pour fournir au PIC une tension stabilisée de +5 V
à partir d'une pile 9 V.
Je l'ai prévu sur le circuit imprimé que j'ai
réalisé, mais celà n'est pas obligatoire, vous
pouvez tout à fait vous passer du régulateur et utiliser
une pile plate de 4,5 V.
Schéma avec PIC 16F628
La seule différence de cablage physique réside au niveau
de l'oscillateur. Le 16F628A réclame un circuit externe RC
(résistance + condensateur) pour son mode de fonctionnement
"oscillateur RC" (RC = Resistor / Capacitor), alors que le 16F628 ne
demande qu'une résistance externe pour son mode de
fonctionnement "oscillateur ER" (ER = External Resistor).
On supprime donc ici le condensateur C1 qui était auparavant
associé à R14 et RV1, et on cable la "résistance
externe" constituée de RV1 et de R14, entre la borne 16 (OSC1)
et la masse. Tout le reste ne subit aucune modification.
Prototypes
-
Premier prototype
Les deux premiers protos, avec 16F628 et 16F628A, ont
été réalisés sur plaque
d'expérimentation sans soudure.
Proto avec 16F628A
L'oeil informé et attentif aura reconnu le circuit que j'avais déjà
utilisé pour le
chenillard
003a
à base de 16F84A. Il m'a en effet suffit de sortir le 16F84A de
son "support" et de le remplacer par son successeur 16F628A... pour
constater après mise sous tension que les trois premières
leds ne s'allumaient pas correctement. Elles s'allumaient bien quand il
le fallait, mais avec une intensité lumineuse faible. Hum...
quelques secondes de reflexion, et déclic, je me dit que j'ai du
oublier de désactiver les comparateurs du 16F628A. Je recherche
la fameuse ligne CMCON = 7, que je ne trouve évidement pas dans
mon code. Je l'ajoute, et hop, problème résolu. J'aurais
pû chercher plus longtemps, du fait que les leds
émettaient tout de même de la lumière... Bref, tout
ça pour dire que le code était bien digéré
par mon simulateur, qui n'y voyait que du feu, et le code publié
ici avant le 21/10/2008 n'était donc pas correct à 100%.
Mais si vous vous souvenez bien, j'avais justement
précisé que la simulation fonctionnait bien mais qu'il
fallait attendre la réception de mes PICs pour confirmer le bon
fonctionnement dans le monde réel.
Deuxième prototype
Réalisé selon dessin de circuit imprimé proposé plus loin.
Sur la deuxième photo du CI réalisé, on peut voir
trois commutateurs, au lieu de cinq comme sur le schéma
électronique. La raison en est simple : les deux boutons
poussoir utilisés pour la vitesse sont remplacés par un
unique inverseur de type ON-OFF-ON momentanné (dès qu'on
le lache, l'axe mécanique revient en position centrale).
Même chose pour les deux boutons poussoirs pour avancer ou
reculer dans les numéros de programmes. Cette idée m'a
été proposée par un internaute qui a
réalisé le chenillard, je l'ai trouvée bonne et
l'ai appliquée.
Prototype de Jean-Luc F.
Réalisé en "miniature" pour ses enfants.
C'est tout mignon, non ?
Circuit imprimé
Réalisé en simple face.
Typon aux format PDF, EPS et Bitmap 600 dpi
Fichiers Sources et Binaire
Code source au format MikroPascal,
et fichier binaire compilé (hex) prêt à charger
dans le PIC avec le programmateur de votre choix.
Chenillard 003c - 16F628A.zip - Pour 16F628A, version du
28/12/2011
Chenillard 003c - 16F628.zip - Pour 16F628, version du
28/10/2008
Si
vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Historique
22/12/2013
- Ajout infos concernant l'oscillateur du PIC 16F628A. Les deux
derniers PIC que j'ai programmés (17/12/2013) avec le programme proposé
ici fonctionnaient sans le condensateur C1, et j'ai diminué la valeur
des résistances fixe et ajustable reliées sur la broche RA7.
01/01/2012
-
Correction erreur mineure dans code logiciel du PIC 16F628A : le bit
BODEN était activé au lieu d'être désactivé. Sans aucune conséquence
avec une alimentation stable, mais reset automatique possible du PIC
avec une
pile ou un accu faible au moment où toutes les LED s'allument (par
exemple usage d'accu 4,8 V alimentant directement le PIC, sans passer
par un régulateur).