J’ai pas mal galèré pour celui là. Au début je voulais utiliser l’USART du PIC mais je n’ai pas réussi à faire communiquer les deux. Je suppose qu’ils ne sont pas compatibles l’un avec l’autre. Si vous avez une solution je suis preneur.
Du coup je me suis rabbatu sur une programmation plus simple de la communication. Le schéma de montage est le suivant :

L’ADC 0831 est connecté au PIC par les port RB1 = Do, RB2 = CLK et RB3 = CS. J’ai ajouté des LEDs pour vérifier la communication elles n’ont plus d’utilité par la suite. La tension de référence est fixée à 5V et U- est fixé à la masse. L’entrée U+ est reliée à un potentiomètre pour faire varier la tension.
Le port A du PIC permet d’afficher les 5 bits de poid fort de la valeur lue. Notez le branchement de la LED sur RA4 qui est une sortie open drain. Cette sortie ne peut donc pas fournir un courant.
Voici le montage réalisé :

La valeur indiquée est 10101XXX soit entre 168 et 175. Ca nous donne un tension comprise entre 3.28V et 3.42V. La preuve par l’image…
Le programme de lecture se trouve ici.
Le capteur infrarouge ITR8307 rassemble une diode infrarouge et un photo-transistor.
Le montage est très simple. Une résistance de 560R pour alimenter la LED IR a gauche et une de 56K pour le photo-transistor.

Un bout de papier permet d’activer le capteur en faisant office de reflecteur.

Les resistances ainsi choisies permettent de faire basculer un CI CMOS. Ici un inverseur trigger (CD40106).


L’idée de ce fil est de présenter le code gray. L’une des applications est de pour pouvoir mesurer la position d’une roue.

Le principe du code gray est qu’il n’y a qu’une seule commutation de bit entre chaque valeur. Ceci permet de limiter les parasites et les erreurs.
La conversion binaire vers gray et réciproquement est décrite dans ce fichier C++. Passer du binaire vers le code gray se fait très simplement par un simple décalage et un XOR. L’inverse nécessite d’itérer sur les bits.
La roue est générée par ce fichier C++. Il produit directement des fichiers PGM pour un codage 8, 16, 32, 64, 128 et 256 qu’il est ensuite possible de convertir en JPG. J’ai utilisé la taille d’un CDROM comme référence. Il faut imprimer l’image de telle sorte que sa taille fasse 116mm pour pouvoir le coller directement sur le CDROM. Chaque piste mesure 2×2.54mm soit 2 pas de circuits électronique.
La prochaine étape sera de faire un montage avec un moteur et des capteurs IR et un programme pour lire la position.
J’ai fait ce petit montage pour tester la fonction de comparateur analogique du 16F628.
Il possède deux comparateurs analogiques qui peuvent comparer la tension appliqué sur 2 broches ou comparer la tension d’une broche par rapport a une tension de référence programmable.
J’ai également modifié les flags du programme pour ne plus avoir a débrancher les câbles de programmation.

Le schéma utilisé est le suivant :
- 4 LEDs pour faire joli, afficher la valeur de la tension et afficher le résultat du test
- Un voltmetre branché sur RA2 pour mesurer la tension de référence
- Un potentiometre pour faire varier la tension mesurée

Le tableau suivant indique la valeur de la tension de référence en fonction des bits 0 à 3 de VRCON et du bit VRR.
| VR<3:0> |
VRR=1 |
VRR=0 |
| 0 |
0 |
1,25 |
| 1 |
0,21 |
1,41 |
| 2 |
0,42 |
1,56 |
| 3 |
0,63 |
1,72 |
| 4 |
0,83 |
1,88 |
| 5 |
1,04 |
2,03 |
| 6 |
1,25 |
2,19 |
| 7 |
1,46 |
2,34 |
| 8 |
1,67 |
2,5 |
| 9 |
1,88 |
2,66 |
| 10 |
2,08 |
2,81 |
| 11 |
2,29 |
2,97 |
| 12 |
2,5 |
3,13 |
| 13 |
2,71 |
3,28 |
| 14 |
2,92 |
3,44 |
| 15 |
3,13 |
3,59 |
Le source
Une fois le PIC programmé il ne reste plus qu’a lancer le programme. On peut eventuellement deconnecter complétement le programmateur COM84.
Un resistance de pull-up sur MCLR permet de lancer le programme et ainsi de faire clignoter la LED.
