Girouette Numérique à PIC 16F628
1 Les directions désirées et les signaux
1.1 Généralités
1.2 La partie mécanique

2 Quelques principes physiquGIROU5es
2.1 Principe potentiométrique
2.2 Principe magnétique
2.3 Principe lumineux
2.3.1 Les règles incontournables
2.3.2 La solution PIC12F629
2.3.3 Avec PIC 10F202 et CMOS 4021
2.3.4 Avec sommateur AOP et sortie analogique
2.3.5 Avec PIC 16F628 et transmission SYNCHRONE
2.3.6 Schémas, circuits et commentaires
3 La réalisation
3.1 Le principe par réflexion
3.2 LED et Phototransistors
3.3 Le PIC 16F628
4 Conclusions

Si vous arrivez directement sur cette page par un moteur de recherche, vous pouvez avoir accès à la table des matières et à chaque article, en page d'accueil.    L'accès se fait par l'un des deux liens en tête de colonne de droite ----->


Avant-propos

Cette réalisation est seulement en projet lors de l'écriture du début de cet article. Les principes de base et les éventuels échecs ainsi que les points importants seront évoqués. Ainsi, pour ceux qui souhaitent modifier tel ou tel point, les écueils seront ainsi signalés.
Cette façon de faire n'est cependant pas idéale pour expliquer au mieux, mais elle a l'avantage d'éviter d'oublier moins d'éléments utiles au sens pratique.

Une idée significative de réalisation est la partie économie d'énergie du montage, car aujourd'hui cette vision est toujours plus impérative, car cela évite de dissiper bêtement de l'énergie dont le prix ne cessera de grimper.
La deuxième idée de base est de ne transiter qu'un nombre de fils réduit, jusqu'à une centrale météo ou tout autre appareil chargé de collecter ces données (PC par exemple).
Ces deux principes simples dirigent les solutions potentielles. En effet l'électronique associée devrait tenir dans la petite partie électronique située sous ou dans l'appareil lui-même.
Ce dernier point impacte largement le nombre de composants possibles, et donc toutes les solutions "volumineuses" ne pourront pas convenir, même si elles sont économes en énergie…

1 Les directions désirées et les signaux

1.1 Généralités

On peut souhaiter avoir les 4 directions principales (NESO). En numérique 2 bits suffisent.
Si l'on veut mieux, on prendra les 4 directions complémentaires (NORD EST par exemple...), ce qui amènerait en numérique à coder sur 3 bits pour 8 directions.
Enfin, pour une précision encore plus élevée, on acceptera encore les sous divisions suivantes (NORD NORD EST par exemple...), avec cette fois un codage numérique sur 4 bits et donc 16 directions possibles.

Si il faut la précision angulaire du degré, alors il faudra s'orienter vers des codeurs absolus ou d'autres types de capteurs, mais cela dépasse notre cadre d'amateur, et on va donc oublier cette solution (Qui est tout de même sur le même principe que le procédé optique décrit ci-après).

Les signaux de sortie seront de type analogique 0 à 5V ou numérique codé.

Pour la solution numérique, il faudra obligatoirement sérialiser les données issues des différents capteurs, pour n'avoir qu'un seul fil de données.
Pour la partie de génération des directions du vent, un codage de type GRAY sera nécessaire pour éliminer les défauts d'alignement en limite de zones. Ce type de code ne fait changer qu'un seul bit à la fois ce qui autorise de petits dés-alignements des voies.
(Il n'y a pas de codes intermédiaires entre deux codes numériques binaires, ainsi entre 3 et 4 en comptage binaire pur, il aurait pu se glisser les erreurs instantanées suivantes 3,5,4 ou 3,6,4, voire même 3,7,4. Le code GRAY qui ne varie que d'un seul bit entre deux positions consécutives donnera toujours des résultats exacts sans valeurs intermédiaires erronées)

Ce codage sera de préférence réalisé sur la périphérie d'un capot circuGIROU6laire, où chaque piste aura la même longueur (Cloche type boîte de conserve ou Capuchon de bombe aérosol par exemple) et non sur un disque suivant un rayon qui donnerait une moins bonne précision de positionnement, surtout pour le codage situé le plus près de l'axe.

(On remarquera dès maintenant que le code GRAY en fonction barre est également un code de type GRAY dont un seul bit change de valeur).

1.2 La partie mécaniqGIROU7ue

Le principe est assez proche de l'anémomètre, avec un seul roulement serré entre deux plaques en appui sur la cage extérieure, dont l'une constitue l'équerre support.
J'ai réalisé une modification en cours de réalisation en remplaçant l'axe de 3 mm (Tige filetée laiton) par une tige filetée de 4mm (Pas en laiton mais en acier cadmié faute de mieux!) 

On verra que la "cloche" est une boîte de conserve de petits pGIROU9ois, que le bras de la girouette est une tige de PVC de 10mm achetée en GSB.
Le "drapeau" est constitué de verre Epoxy de circuit imprimé (Nu sans cuivre) de 9/10 environ et en tête se trouve un contre poids laiton dont la position est réglable finement.

L'équilibrage est donc fait pour qu'aucun effort ne soit situé en dehors de l'axe central.

GIROU8Le poids est aussi un critère important qui permet de vérifier les "sautes" de vent qui sont finalement des petits tourbillons locaux issus d'obstacles.

Pour l'anecdote, lors de la photo de tête d'article, j'ai fait un petit montage comme pour l'anémomètre sur une latte et j'ai pu constater que le fait de me positionner de façon assez proche, faisait changer légèrement de direction la girouette. C'était simplement ma position qui déviait le courant de l'air, et j'ai pu vérifier ainsi l'extrême sensibilité de rotation de l'appareil.

La sensibilité de cette girouette est telle que j'ai dû la bloquer avec un petit bout de bois pour pouvoir prendre la photo avec le bon angle ! Cela ne veut pas dire non plus que ce soit le summum, car ce n'est pas un petit tourbillon local qui doit faire oublier la direction principale du vent !

GIROU10Le circuit imprimé de diamètre 50mm est simplement fixé par une vis laiton dans un trou taraudé de l'équerre support avec une petite équerre inox.
Un cache en polycarbonate de récupération obture sans frotter le fond de la cloche.
Ce cache sera peint en noir intérieurement et en blanc extérieurement (Tout comme la cloche d'ailleurs)

Ce circuit imprimé supporte le petit CI LED et Phototransistor, mais supporte aussi le nouveau petit CI de réglage de la tension des LED avec le LM317LZ et le potentiomètre de réglage. (C'est la petite verrue ajoutée !)

Les quelques photos montrent donc l'ensemble sans la cloche et sous divers angles.

Le schéma de montage de l'axe est également représenté, montrant clairement les rondelles caoutchouc qui assurent l'étanchéité.

Sur cette dernière photo les flèches rouges indiquent les rondelles situées sous la cloche avec leur rôle depuis le roulement :

Première rondelle : Assise sur la cage interne du roulement
Rondelle d'épaisseur
Rondelle de surface nylon pour assurer l'application de la rondelle de caoutchouc
Rondelle d'étanchéité en caoutchouc (Morceau de Chambre à air de voiture)

A la relecture de cet article, je me pose la question de l'utilité de la rondelle caoutchouc interne à la cloche, qui donne peut-être un peu trop d'élasticité à celle-ci. (La rondelle externe caoutchouc étant quant à elle impérative)
Cette rondelle interne sera peut être retirée car elle permettra une meilleure assise à la cloche.
(Vérification faite, les faux ronds sont améliorés, par cette suppression de la rondelle interne en caoutchouc. L'étanchéité ne sera réalisée que par l'extérieur, ce qui devrait être suffisant, mais restera à vérifier).

2 Quelques principes physiques

Concevoir suivant les principes énoncés n'est pas toujours très facile, aussi je vais donner ma démarche, et les différentes solutions auxquelles j'ai pensé (Il y en a d'autres...), et la raison de leur abandon.

Une des qualités de la girouette dont je n'ai pas parlé est la sensibilité. C'est à dire que le dispositif ne devra pas freiner la rotation de l'axe. Cette qualité suivant les cas pourra être au contraire un élément nécessaire dans le cas de sautes de directions du vent, et comme déjà mentionné. Cependant, il sera toujours plus facile de réduire cette sensibilité que de trouver des solutions inverses...

On remarquera aussi qu'avec la sensibilité doit apparaître la notion de masse ou d'inertie. En effet un excès de masse donnera une information fausse de direction car elle sera alors génératrice "d'overshoot" tant au démarrage qu'à l'arrêt.
La rigueur d'une direction est directement tributaire de l'inertie de l'équipement.

2.1 Principe potentiométrique

Le principe potentiométrique est un bon principe, simple et qui peut parfaitement convenir, mais le coût d'un tel élément est trop élevé, car le potentiomètre doit être d'un modèle spécial à course de 360° avec une zone d'ombre nulle ou de quelques degrés seulement. Le potentiomètre doit être de grande qualité car il sera en extérieur et soumis aux difficiles conditions météo (comme tous les autres d'ailleurs, mais encore plus pour ce dernier qui devra maintenir un contact électrique dans toutes conditions climatiques).

Cette solution est abandonnée à cause du coût, car tous les autres points sont conformes.
(Énergie OK, place OK, nombre de fils OK)
Ce principe délivre une information analogique.

Il peut être possible de réaliser une girouette suivant ce principe si on élimine les butées mécaniques d'un potentiomètre standard, mais il sera difficile de traiter l'absence de signal dans l'angle mort.

Une variante "par bonds" est constituée de balais qui frottent sur des pistes imprimées et codent ainsi les directions. Ce principe est simple mais à mon sens peu fiable, à cause de l'usure des pistes et des mauvais contacts de balais. De plus la réalisation demanderait aussi une très bonne précision.
C'est un peu le principe des programmateurs des anciennes machines à laver, et l'on sait combien d'inondations ont eu lieu…

J'abandonne également cette variante à regret pour sa simplicité à cause de son risque élevé  de mauvais contacts  et de la difficulté de réalisation mécanique avec des isolations pas toujours simples à résoudre avec les "moyens du bord" !

Ces solutions mécaniques introduisent par principe même des frottements non négligeables.

2.2 Principe magnétique

(Un peu comme l'anémomètre, voir cet article), Les aimants doivent être calibrés et ne pourraient jamais être positionnés suivant un rayon, mais seulement en périphérie d'une "boîte cylindrique" (Capot). La hauteur nécessaire serait importante et le découpage des aimants devrait être précis et permettre le réglage, ce qui serait difficile à réaliser.
Le positionnement d'aimants "courbes" suivant des circonférences (Internes) pourrait déformer la rotondité du capot plastique envisagé, et la stabilité du collage pourrait également en souffrir.

Dans le cas d'utilisation d'un disque, là aussi il serait difficile de jouer avec des aimants en forme de "portions de camembert"…!

Cette solution présente les inconvénients de la place nécessaire pour loger les aimants ainsi que la précision requise pour leur placement. De plus il ne suffit pas de compter comme pour l'anémomètre, il faut aussi reconnaître la position et donc le sens de rotation, ce qui est loin d'être évident.
Dans le cas d'un code GRAY "inductif", les aimants proches pourraient s'influencer et modifier les valeurs escomptées…Bref ce n'est pas très évident à priori !

Comme les autres solutions, il faudrait aussi convertir les 4 bits d'information pour ne pas avoir à "traîner" tous ces fils…
Ce principe est trop délicat à cause de la forme des aimants que l'on aurait du mal à façonner avec des moyens amateur et trop d'incertitude sur les influences mutuelles d'aimants proches.

2.3 Principe lumineux

C'est le principe le plus connu que j'ai retenu, pour sa (théoriquement) "relative facilité" de réalisation avec un minimum de mécanique. Il était possible à priori d'utiliser des OPB707 (LED et Phototransistor darlington associés, mais je n'en ai pas) ou LED et Phototransistors BPX81

J'ai donc utilisé ces derniers avec un très gros point d'interrogation, car le niveau de sortie dépendra pour beaucoup de la distance que je serai amené à utiliser. Cette distance ne sera pas la plus petite nécessairement mais l'orientation LED/Phototransistors devra permettre de renvoyer un maximum de lumière sur une surface circulaire alternée noire et blanche, avec je le suppose des variations dues aux faux ronds.

J'espère ne pas avoir à réaliser de masque ou de fenêtre pour obtenir un pinceau de lumière plus fin.

De même, j'espère ne pas avoir à insérer des séparations entre pistes pour qu'il n'y ait pas de "mélanges"…
(J'étais tombé dans le piège car j'ai voulu rétrécir au maxiGIROU1mum avec un pas de 3.81mm l'ensemble, mais j'ai du refaire une itération au double, soit 7.62mm).

Dans le premier montage j'avais même prévu des petites bandes pour souder par l'arrière des séparations de voies…Peine perdue c'était si fin qu'il était même difficile de passer le fer à souder…J'ai tout de même essayé de coller à la colle cyanoacrylate des petits cartons de séparation sans réelle amélioration. (Photo de premier montage ci-contre, après démontage. Remarquez vers la pièce, la connectique par fils au pas de 1.27... C'est tout fin ! )

J'ai choisi des LED rouges de 1.8 mm à 700 nm simplement parce que je n'ai trouvé que cela, mais ça devrait convenir pour la plage des longueurs d'onde des phototransistors BPX81 qui donneront 80% de sensibilité à cette longueur d'onde de 700 nm.
(Pour les lecteurs qui sont surpris de telles approches "à l'emporte pièce", il faut comprendre qu'en province, sans distributeurs de composants, on recherche toujours les solutions non exotiques et comprenant des matériels très connus et distribués par une majorité de fournisseurs ou dont on a un petit stock).

LED et Phototransistors seront donc placés sur un très petit CI (Plié délicatement à 150° environ, à l'aide d'un trait de scie de chaque côté) situé parallèlement à l'axe de rotation. Ce petit CI sera fixé sur le CI principal perpendiculaire, et comprenant les autres composants, simplement par les fils de connexion. Ce dernier (CI principal) est perpendiculaire à l'axe de rotation de la girouette. Voir le principe sur la photo ci-dessus correspondant à l'ancienne version.

Ainsi que déjà énoncé, la détection des secteurs en code GRAY se réalisera par réflexion sur des parties blanches, (le noir étant l'absence de réflexion).
Les 4 LED (Tension de 1.82V) seront alimentées en série depuis le 12V d'alimentation générale par un circuit de commande de coupure (Dernière modification à voir ci-après concernant la régulation). Un régulateur LP2950 assurera l'alimentation logique de l'ensemble restant.

Une éventuelle alimentation non permanente et pilotée directement à partir de la centrale météo reste possible mais nécessiterait des modifications de programme et des timings plus longs pour assurer la charge des condensateurs d'alimentation, tant en 12V que 5 V.

On réalisera au niveau programme l'initialisation du PIC avec la programmation I/O et des TRIS. Un délai de 1ms sera établi pour l'alimentation des LED, avec acquisition des valeurs des phototransistors puis arrêt de l'alimentation.
Le ratio de courant est donc extrêmement faible puisqu'il y a un courant de 6 mA durant seulement 1ms et que le reste du temps est sans courant LED durant 249ms soit un courant moyen de 24 µA !

Ce processus ce répétera maintenant toutes les 250 ms ce qui est largement suffisant pour cette mesure. La vitesse d'horloge d'accompagnement des données série ne sera pas critique, puisque cette horloge transitera jusqu'à la centrale météo. Par "déontologie", on la fera régulière et dans une valeur moyenne de 2400 bps.
Bien qu'il y ait une faible inertie mécanique, il me semble inutile de lire la position toutes les 100 ms comme initialement prévu, pour ne pas trop "distraire" la centrale météo aussi j'ai donc allongé les écarts entre mesures à 250 ms qui me semble un meilleur compromis.

Enfin dernier point, le niveau noir corresGIROU3Dpondra à un niveau logique 0 sur l'émetteur des phototransistors (Absence de courant sans lumière) et le niveau 1 correspondra à une zone blanche (Avec éclairement et courant du phototransistor). La réalisation des secteurs du code GRAY sera donc basée sur ce principe.
Sans inversion logique au niveau programme PIC on a exactement l'inverse en sortie...C'est encore un coup des Open collector !
Le noir indique donc finalement le 1 logique en sortie.

Sur la photo les gros chiffres représentent l'ordre de progression dans la rotation, alors que les petits chiffres représentent la valeur binaire correspondante au code GRAY. (Idem pour les très petits chiffre en bas).

(Les bandes situées au delà de "Pf et PF" sont des recopies de la bande précédente pour éviter d'éventuels phénomènes de réflexions parasites d'extrémités mais n'ont aucune autre utilité logique).

On peut ajouter une variante avec fibres optiques Emission/réception qui permettrait beaucoup plus de précision. Mais si le principe est séduisant, la réalisation est un peu "méli-mélo", car avec 4 fibres en émission et 4 fibres en réception, il faut des moyens de fixation fiables de ces fibres face aux LED (Ou une seule LED) et aux 4 phototransistors, et là c'est un peu plus compliqué à réaliser.
Je pense que les fibres E/R sont bien adaptées à UNE seule détection, mais au delà ça devient vite compliqué à mettre en oeuvre, d'autant qu'il y a tout de même, des rayons de courbure à respecter pour ne pas trop perturber la transmission.

Une solution alternative à la fibre optique serait l'utilisation de LED en éclairage direct et de garder 4 fibres en réception seule pour garantir la précision. Cela ne devrait pas changer énormément l'électronique, car seules les résistances d'émetteur seraient certainement à augmenter si on ne parvient pas à augmenter le plus lumineux direct. C'est à évaluer ! L'énergie reçue dans une petite fibre optique de 5/10 est très faible !
Un fonctionnement en impulsion d'une LED haute luminosité permettrait peut-être de ne rien changer.

2.3.1 Les règles incontournables

- Ne pas véhiculer plus de 4 fils au total.
- Faible consommation implique de commander l'énergie des LED.
- Ne pas bloquer de port Série sur le PIC de la centrale météo (RS232) utiliser seulement les changements d'état sur un port pour que la centrale puisse transmettre la totalité des informations par RS232 vers un ordinateur ou autre dispositif centralisateur.
- Avoir un système simple et bon marché.
- Je vais ajouter de ne pas distraire trop souvent l'horloge temps réel de la centrale, pour compter avec précision le temps et ne pas interrompre trop souvent par l'interrupt de la résolution de temps (Timer 0 le plus souvent)
- Enfin la place disponible sur un petit CI interne à l'appareil ne laissera pas beaucoup de possibilités pour réaliser une logique compliquée.
- Dans le cas où c'est le programme de la girouette qui doit générer les signaux, cela implique un fonctionnement sans interruptions, pour garantir la précision nécessaire à une (éventuelle) reprise en direct par un USART ou autre (Stabilité du baud rate).
- On s'arrangera pour ne pas avoir de quartz à utiliser directement pour gagner de la place.
- La vitesse devra pouvoir être modifiée facilement, aussi un microcontrôleur (PIC) est pratiquement nécessaire dans cette optique.

2.3.2 La solution PIC12F629

J'ai un instant envisagé cette solution pour générer un signal RS232 avec START bit et STOP bit à 9600 bps. PIC de 6 I/O (4 datas + Cde alim + RS232)
J'ai "revu ma copie" à cause des temps un peu serrés que la centrale météo devrait supporter. J'ai tout de même réalisé le bout de programme sur MPLAB et utilisé pour la première fois l'analyseur logique inclus dans MPLAB. C'est prodigieux comme ça marche bien ! Le programme tourne parfaitement mais….( Télécharger GIROUET1 ce petit programme assembleur de 10K, attention aux délais qui ont été bousculés un peu. C'est fourni tel quel !)

Seule ombre au tableau, il n'y aura qu'une entrée RX sur la (future) centrale météo sur les PIC 16F 886 (Je n'irai pas plus haut dans la gamme des PIC !)
Il faut ajouter l'impossibilité de couper l'alimentation LED car sur le 12F629, il n'y a que 6 I/O. Aussi couper l'alimentation depuis la centrale pose le problème du temps d'établissement qui devra être plus conséquent…
Alors j'ai abandonné cette solution pour des questions techniques seulement, mais elle devrait fonctionner pour ceux qui souhaiteraient la réaliser sans coupure ou en acceptant le temps d'établissement.

2.3.3 Avec PIC 10F202 et CMOS 4021

Encore plus petit que le précédent (Seulement 4 I/O), mais la sérialisation des dGIROU2onnées des phototransistors serait réalisée extérieurement au PIC sur un circuit CMOS 4021. Cette fois il resterait même une I/O de libre sur le PIC (En plus de la commande de tension des LED).
J'ai donc débuté tout de suite l'étude du CI avec le souci de la place disponible dans un cercle de l'ordre de 5 cm avec des contraintes complémentaires pour loger deux petits CI perpendiculaires, portant LED et Phototransistors…
Sans aller jusqu'au routage, la simple surface des composants était "limite".
J'avais prévu de réguler le courant des LED avec un LM317LZ, mais même sans cela c'était trop juste en place.

Cette solution est donc abandonnée pour la seule question de place. (Économiquement cette solution était la moins chère)
Il est malgré tout peut-être possible de l'utiliser, mais il faudrait peut-être sortir l'électronique du capteur lui-même, et dans ce cas, c'est une bonne solution si les phototransistors ne sont pas trop éloignés, ou trouver une autre implantation plus performante.
(On pourrait aussi mettre le CI vertical en espérant un gain de place ?)

C'est à chacun de voir, mais cette solution est théoriquement correcte avec des entrées CMOS pour les phototransistors.
Télécharger le programme d'essais GIROUET2.ASM

2.3.4 Avec sommateur AOP et sortie analogique

C'est une solution ANALOGIQUE cette fois qui permet un seul fil de sortie et un seul amplificateur opérationnel (AOP).
On retrouve ici le problème d'ajustement des résistances suivant des valeurs binaires, mais ce n'est pas la seule difficulté, car la dispersion des tensions de sortie des phototransistors va induire des divergences de valeurs de tension de référence de chaque entrée de sommateur. (Avec en plus les zones d'incertitude de basculement logique)

Pour rester simple, on peut admettre de n'avoir qu'un seul octet à comparer sur la centrale météo, dans ce cas 256 valeurs seraient suffisantes. 16 valeurs différentes s'échelonneraient donc entre 0 et 1.25V. (Il n'est en effet pas question de changer la référence 5 V du convertisseur du PIC de la centrale météo !)
Les écarts entre zones seraient inégaux à cause des valeurs de résistances et nécessiteraient de "borner" chaque valeur dans un gabarit de valeurs et par conséquence des comparaisons assez nombreuses pour chaque voie.
Alors cette solution est abandonnée aussi pour ces diverses raisons.

2.3.5 Avec PIC 16F628 et transmission SYNCHRONE

J'avais initialement écarté cette solution de PIC16F628 car je la trouvais un peu luxueuse pour le sujet, mais après réflexion …Cette solution était évaluée délicate aussi à cause de la nécessité d'un quartz et de la place disponible, mais je suis obligé d'y revenir, car parmi tous les problèmes, cette solution me semble finalement la plus acceptable des autres possibilités.
Il est vrai que les possibilités du 16F628 sont largement supérieures au besoin réel, mais à cause des autres contraintes, il n'y a pas vraiment d'autre choix possible.

Je pense que du fait d'une transmission SYNCHRONE en mode maître, il serait possible d'utiliser une simple résistance pour l'oscillateur. Le quartz à 32 KHz ne permettrait pas de fournir la plage de baud rate normale, puisque le cycle d'une instruction serait seulement de 122µs.

Mais il y a aussi l'oscillateur interne à 4 MHz (Cette partie est si confuse que j'avais toujours pensé que cet oscillateur était À RÉALISER avec des résistances Externes ! à priori ce n'est pas le cas ! et je ne m'en étais jamais aperçu ! …On apprend tous les jours !)
Finalement pas besoin de quartz, on utilisera donc l'oscillateur interne à 4 MHz du PIC (_INTRC_OSC_NOCLKOUT), et c'est encore un composant de gagné au niveau place !

Par mesure de sécurité je garde sous le coude les I/O spécifiques au PWM (RB3), car on ne sait jamais …

Le port RA4 (open collector) sera utilisé pour le clock synchrone et non pour la commande d'alimentation qui sera obligatoirement réalisée avec un transistor externe à cause de la tension de 12 V qui assurera le courant des LED et qu'il est nécessaire d'écarter du microcontrôleur par nécessité (A priori 8.5V maxi))….

J'ai également prévu un cavalier pour une éventuelle vitesse de transmission différente et/ou un mode 4 ou 8 bits (C'est gratuit et c'est une entrée seule, on verra ci-après à quoi on l'utilisera …)

Les 4 phototransistors ont donc chacun leur entrée logique, RB4 à RB7 et le programme assurera le décalage des 4 bits vers le carry avec attente entre chaque demi période. La vitesse sera de l'ordre de 2400 bps, mais en mode synchrone, cela a peu d'importance.

2.3.6 Schémas, circuits et commentGIROUET1aires

Le premier typon est celui du petit circuit portant les LED et les phototransistors.
Je n'ai pas fait de schéma de principe seul, mais seulement le typon car c'est très simple. (En réalité j'ai fait l'ajout LED et phototransistor sur le schéma principal pour la compréhension).
Les LED sont en série et les phototransistors sont tous avec un commun (Collecteur) au + 5V. (Voir les photos et repères au § 3.2)

Ce mini-CI est à traiter en miroir pour qu'il soit pliable du bon côté, avec les composants situés "regardant vers l'extériGIROUET3eur".

NOTA : Ceux qui sont surpris de voir 2 fois le même CI doivent savoir que j'utilise 2 typons superposés pour insoler et obtenir un noir absolu. Cela me permet d'avoir de bons niveaux de qualité des CI.
De plus j'imprime ces typons avec l'un des exemplaires décalés d'une ou deux buses de l'imprimante. Ainsi il n'y a aucune zone noire "oubliée" ou de mauvaise qualité.

Le schéma principal est donc des plus simples et le PIC, les phototransistors et deux transistors sont alimentés par uGIROU3Bn LP2950 en 5V.

Un condensateur de 100 µF est nécessaire en entrée à cause des "petits impacts" de courant du circuit des LED, car à ce jour, je ne sais pas sous quel courant je vais les alimenter, et cela dépendra des essais. Mais en cas de nécessité, je pourrais très bien fonctionner en mode impulsionnel.
En réalité le courant sera tout ce qu'il y a de plus "sage" à 6 mA, et il n'y a donc "pas de quoi fouetter un âne", et les 100µF sont plus que surdimensionnés mais ça ne dérange pas !

Attention aux condensateurs chimiques sur le schéma d'implantation les + et - sont peut-être inversés, à vérifier !

3 La réalisation

3.1 Le principe par réflexion

C'est ce que j'ai choisi par facilité de réalisation, (Mais sans fenêtre optique augmentant la précision). Pourtant, pour que chaque poids binaire ait une précision identique, cette réflexion se fera sur le pourtour d'un cyliGIROU4Bndre (cloche) et non sur un disque percé.

On notera tout de même un équilibre délicat à respecter pour obtenir en fonction de la distance et de l'éclairement, un niveau 0 ou 1 pour le PIC.
J'avais initialement mis des résistances de 470K, mais j'ai dû les remplacer par des 2.2M.ohms, car il était difficile d'obtenir pour certaines voies le niveau logique haut lors d'un éclairement .

Il sera de plus nécessaire de trier un peu les phototransistors pour des caractéristiques proches, mais on y reviendra…
Dans le même ordre d'idées, on contrôlera aussi la valeur des résistances insérées dans les émetteurs des phototransistors.

Je n'ai pas trouvé autre chose comme matériau blanc réfléchissant, qui puisse être imprimé au jet d'encre, qu'un bristol qui devra joindre parfaitement en intérieur du cylindre et se terminer en bord à bord, pour réaliser le codage GRAY en réflexion.

J'avais pris le principe d'une séparation de 3.81mm des LED et phototransistors, mais le mélange des pistes était réel, (Associé avec d'autres incidences également), alors je suis passé à 7.62 mm entre pistes. Je pense que cette distance est maintenant suffisante.
(Le dernier rempart face à ce problème serait de réaliser des séparations s'approchant au plus près du bristol).

La cloche, abri de l'électronique, mais aussi porteuse des informations de codage n'est autre qu'une "boîte de conserves de petits pois"…Mais pas n'importe laquelle ! C'est une boîte en aluminium avec un côté embouti (Et non serti). Il faudrait de préférence rendre ce côté arrondi (et non en creux) pour éviter que l'eau ne stagne et finisse par aller mouiller l'intérieur.
J'ai "débossé" le fond pour supprimer le creux, mais c'est un véritable dilemme, car "ou c'est cuvette pour la pluie ou c'est manque de rigidité" !
C'est le prix de la récupération d'un élément tout fait.
Je n'ai pas pu réutiliser un capuchon de bombe aérosol, car ceux-ci ne sont pas assez hauts pour loger l'électronique.

J'insiste sur la précision du trou central qui sera à localiser avec précision puis à percer, car de cette précision dépendra la "parfaite rotation" (Sans "faux rond"). J'ai utilisé le même principe que pour l'anémomètre en changeant toutes fois pour un axe de 4mm au lieu de 3mm. (Changement réalisé suite aux nombreux démontages, ayant laissé apparaître une usure de la tige filetée laiton).

Il y aura toujours des faux ronds, mais ceux-ci se corrigeront par dégauchage opposé, (Un peu comme pour aligner les portières d'un véhicule avec la caisse…)

Il n'y a pas d'autre modèle que "gondolé" et il faudra faire avec. Il faudra un bristol intérieur plat pour coder les bits de direction suivant le code GRAY.
La réalisation très précise de ce bristol a dû être faite avec TURBOCAD pour pouvoir avoir la précision requise, tant en largeur de pistes qu'en longueur développée. Il y aura ainsi plusieurs itérations pour tomber parfaitement….MAIS…

J'ai tout de même un doute à cause de l'humidité extérieure, et je crains que ce bristol finisse par gondoler (Tout comme la boîte !)

Encore une petite précision, tout l'intérieur de la boîte a été peint en noir mat pour éviter tous les problèmes de flux lumineux parasites, tout comme le petit CI portant LED et phototransistor, dont le côté LED et BPX81 a été peint en noir mat.

Ces influences lumineuses extérieures sont à prévoir, car le fond ne joint pas parfaitement car il faut du jeu pour ne pas frotter ! Aussi un peu lumière s'infiltrera toujours...

En outre une "casquette" côté ouverture a été placée sur le CI porteur des LED et phototransistors pour éviter toute arrivée de lumière directe par l'ouverture inférieure ?

NOTA : En soi, une arrivée de lumière semblerait utile et éviterait des LED ...? Pas tout à fait, car cette luminosité ajoutée amplifie de façon non linéaire les disparités des composants et finit par perturber le délicat équilibre des 4 phototransistors.

3.2 LED et PhototransistoGIROU4rs

Les LED de 1.8 mm n'ont même pas de référence, tant ces éléments sont devenus du domaine "commun". Seule la couleur, diamètre et longueur d'onde (700nm) sont indiqués lors de la vente.

J'ai choisi rouge pour "voir" ce qui se passe et cela devrait aussi convenir aux phototransistors relativement aux longueurs d'ondes.

Il sera nécessaire d'acheter un lot d'une dizaine de LED, car tout démontage est pratiquement la mort du composant.
Ces LED ont une apparence d'éclairement standard. Elles seront mises les 4 en série sans autre forme.
 (En cas de doute, on peut vérifier avec un photo transistor si l'éclairement est identique...Mais il faut beaucoup de rigueur pour conclure et faire très attention aux éclairages parasites par réflexion (Même de ses propres vêtements !)

Concernant les phototransistors, lors des essais, j'ai pu constater la grande sensibilité, car certains poids binaires apparaissaient et d'autres disparaissent…Pourquoi ? J'aurais pu largement m'en douter, mais j'ai toujours vu ce type de montage décrit et jamais personne n'a dit qu'il avait des problèmes, alors j'ai suivi les yeux fermés…!
Bref je me suis fait piéger par habitude…En effet le gain des phototransistors varie d'un composant à un autre, et là aussi il faut commander une dizaine de phototransistors, pour essayer d'apparier un peu ces composants.
On regardera la tension de sortie sur l'émetteur pour une lumière diffuse ne commandant pas la saturation. On choisira les caractéristiques les plus identiques pour chacun des 4 phototransistors. De même on vérifiera les résistances d'émetteur.

Mais ce n'est pas terminé, car j'ai été obligé de reprendre de nouveau à cause des tensions d'alimentation. En effet un 12 V est une tension générique dont la valeur peut varier de 11 à 14 V environ.  Mais ces variations sont trop importantes pour les LED qui vont éclairer par réflexion les phototransistors.
Il a donc été nécessaire de réguler cette tension par un LM317LZ, ce que j'avais initialement prévu dans un montage d'essais puis abandonné à cause de la place très restreinte. Il y a donc quelques petites "verrues" en plus.

Chaque entrée de PIC répond aussi avec son seuil spécifique, si bien que tout foisonne tous azimuts et en plus un(e) hystérésis vient s'ajouter qui rend cette fois la position différente suivant que l'on tourne dans un sens ou dans l'autre.
(Les entrées RB4 à RB7 ne sont pas des entrées avec trigger de Schmitt et ont des zones d'incertitude assez élevées)

3.3 Le PIC 16F628

Le programme est très proche des essais avec les autres PIC, et on travaillera sans interruptions. J'ai réalisé une double possibilité de transmission. Une de type SYNCHRONE 4 bits et l'autre en RS232 Asynchrone en 8 bits.

Un strap permet de choisir le mode Synchrone 4 bits à 2400 bps ou RS232 8 bits à 2400 bps.
Le mode synchrone sera décodé très facilement au front descendant de l'horloge sur la centrale météo.

Le mode RS232 en 8 bits 1 START, 1 STOP sans parité comporte en plus l'ajout d'une valeur 40 hexa qui donnera les valeurs "@" à "O", ce qui permettra à tout programme en langage évolué d'exploiter de l'ASCII standard hors codes de contrôle, et d'attribuer à chaque valeur l'orientation réelle.

Au niveau de la vérification des signaux de sortie, les fortes résistances de test des open collector déforment largement les temps de montée, ce qui est normal.
(Ces résistances de forte valeur sont ajoutées pour "éviter de ne rien voir" et de chercher pour rien un problème qui n'en est pas un).

Il faut donc mettre de véritables résistances de charge en bout des lignes de raccordement. Là, les niveaux sont plus élevés et sans déformation (J'ai mis 1K pour vérifier et c'est OK) !

Un dernier piège enfin concernant le bristol dont les valeurs en noir représentent sur les signaux de sortie des valeurs à 1, ne soyez pas surpris, c'est encore un coup des open collector en sortie que l'on oublie systématiquement ! (Un open collector inverse le signal).
Le codage GRAY du bristol est donc un codage barre, ce qui ne change rien, car il y a autant de zones blanches que de zone noires…

La vérification finale…j'ai donc ajouté mon réglage de tension pour les LED sur un petit CI vertical placé à la place de la résistance série initiale (Plus une masse) et j'ai fait varier cette tension jusqu'à ce qu'il y ait des aberrations pour chaque poids de sortie. Ces aberrations doivent concerner non seulement le poids en essais (sur les 16 valeurs), mais aussi les autres poids.

On note donc le mini et le maxi pour chaque poids et on fait ensuite les 3 suivants. La fenêtre de bon fonctionnement est donc le "maxi des minis" et le "mini des maxi" (Pour être à peine plus clair, c'est le plus restrictif qui est retenu, et j'ai noté dans mon cas 8.3 à 8.7 V ce qui correspond à un certain courant dans les LED. J'ai donc réglé à 8.5 V ?

4 Conclusions

La girouette est un capteur important de toute centrale météo. La girouette présente pour moi l'intérêt de repli de mon panneau solaire, pour luter contre les coups de vents, en positionnant le panneau au mieux.

Finalement si le principe avec LED et phototransistors est simple, (Comme tout le monde s'applique à le dire), la réalisation reste très minutieuse et coûte beaucoup de temps. Cette girouette est plus compliquée à réaliser que l'anémomètre.
Il restera à vérifier que le fonctionnement soit correct en fonction de la température, ce que je ne peux pas encore dire.

Le problème de fond qui sera à "évaluer" est la différence de gain des phototransistors. Alors dans cette vision, et plutôt que de régler tout avec un gain identique par 4 amplificateurs (On a pas la place ! ou 4 résistances abaisseuses de niveau), il serait également possible d'utiliser 4 sorties différentes du PIC avec 4 résistances différentes pour chacune des LED.
(Dans ce cas, le réglage ne sera pas plus facile à réaliser et je pense qu'il faudrait ne pas monter tout de suite le CI "LED/Photo", mais évaluer l'ensemble sur table avec un gabarit d'essais).


Cela aussi reste du domaine délicat car, après un essai de résistance d'émetteur de 470K, je me suis aperçu d'un manque de montée du signal dans certains cas, et j'ai dû passer à 2.2 M ohms. Aussi régler des résistances à ce niveau de valeurs n'est pas plus aisé.

Tous les réglages nécessitent de nombreux démontages de la cloche, et c'est réellement pénible.

Bref, je crois que la meilleure formule reste d'apparier les composants au mieux et de vérifier au préalable sur table que tout se passe bien.

Pour ces réglages, il est important de les réaliser en lumière extrêmement faible, et avant montage sur la platine finale. En conséquence, on ne montera pas les résistances d'émetteur tant que ces vérifications n'auront pas été réalisées. (Ces résistances sont logées sur la platine principale). Au besoin, et en résultats des essais on identifiera les paires d'éléments qui vont bien ensemble (Phototransistor et résistance)

A ce sujet je vais encore ajouter que ce sera très aléatoire, car l'impédance de l'oscillo ou du voltmètre devient trop importante pour mesurer une tension aux bornes de 2.2 m Ohms...Alors il ne reste plus que le courant et un microampèremètre (à insérer dans les circuits)... Je vous recommande donc d'apparier le plus possible...

Pour ma part le montage est déjà réalisé et je n'ai pas l'intention de recommencer pour régler au mieux ces éléments, d'autant que j'ai essayé d'apparier les phototransistors pour des valeurs proches, mais je vous conseille de le faire, car les réglages aux marges de tension par exemple seront d'autant moins critiques. Cela sera également favorable pour la stabilité en température.

Enfin un dernier point serait de vérifier la précision angulaire des directions indiquées, mais là je ne me fais pas trop d'illusion à cause des incertitudes de niveau des entrées logiques, associées aux "faux ronds" et également à l'absence de fenêtre précise des pinceaux lumineux qui perturberont nécessairement ces valeurs. Cette précision sera donc très aléatoire, et c'est normal.

ATTENTION : Le typon de réalisation du circuit principal (Circuit circulaire) est là seulement pour modèle, mais n'est pas à jour du fait de la régulation de tension des LED qui a été ajoutée.

Ainsi un sujet si simple au début, ne l'est plus tout à fait au final…Les girouettes ne sont donc pas tout à fait en code GRAY mais en code GRIS, car le monde numérique n'existe pas c'est bien connu !

Tournez manège !

 _____ ( retour en début d'article ) ____

_____ ( retour accueil lokistagnepas ) ____
_____ ( retour accueil bricolsec ) ____