Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier. Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer. Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens). Les pages seront ajoutées ou modifiées petit à petit. Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater. Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr . Tout message reçoit une réponse Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche Pour laisser un message, allez dans le "LIVRE D'OR" Bonne visite
UTILISATION D'ENCODEURS ROTATIFS AVEC SYSTÈME PICAXE
Les encodeurs rotatifs sont très utilisés pour introduire des paramètres dans un système à µC, ils sont une alternative aux poussoirs et sont plus pratiques et plus rapides. Il y en a de multiples exemples, mais le principe est toujours le même, il sagit de deux interrupteurs qui s'ouvrent et se ferment lorsque l'on tourne l'axe, l'astuce réside dans le décalage de ces ouvertures et fermetures. Par contre, le nombre de pas par tour et la position des crans sont variables. Une analyse des tensions lues nous permet ici d'incrémenter ou décrémenter des compteurs en fonction de la rotation de l'axe.
Exemple n°1, l'encodeur + inter, EC11E15244G1, "30 crans, 15 impulsions".
La doc est ICI, proposé en France par ce distributeur pour moins de 3 euros.
Deux petits dessins issus de cette doc:
A gauche, un schéma interne l'encodeur, les interrupteurs sont sur les broches A et B, la broche C est commune. A droite, les variations de tensions sur A et B lorsque l'on tourne l'axe, les pointillés représentent la position des crans (positions stables). L'état OFF indique que l'inter est ouvert et la sortie est à 5V, l'état ON indique que l'inter est fermé et la sortie est à 0V. Il faut deux crans pour passer d'un état haut (A par ex) à l'état haut suivant (càd une impulsion), pour un tour complet, on a donc 30crans et 15 impulsions
Et donc, c'est très simple: On décrit par exemple le signal A, de la gauche vers la droite (sens horaire de la rotation de l'axe), on voit que lorsque le signal A passe de 5V à 0V, le signal B est à 5 V. Par contre, si on décrit le signal A de la droite vers la gauche, lorsque le signal A passe de 5 V à 0 V, le signal B est à 0 V. Il suffit de traduire cette remarque dans une ligne de programme....et c'est fini.
Schéma du test:
Sans tenir compte des circuits de programmation, il reste trois composants: le picaxe 08M2, l'encodeur, l'afficheur série LCD. Les résitances de pullup internes au µC sont activées et remplacent les résistances externes.
Petite vidéo de démo:
Les picaxes et les afficheurs série ne sont pas rapides, il est toutefois possible de balayer la table de caractères du LCD en quelques secondes. La vidéo ne le montre pas, mais si le poussoir est appuyé plus de 2 s, on efface tout et on recommence.
'================================ 'Encodeur 15 pulses 30 crans '================================ #picaxe 08M2 setfreq m32 symbol InputA = pinc.4 symbol InputB = pinc.3 symbol baud = N4800_32 symbol intro = pinC.1 symbol Aact = bit0 'Valeur de A actuelle symbol Aprec = bit2 'Valeur de A pecédente symbol Compt = w13 'compteur symbol pos = b1 pullup %11010 ;pullup sur C.1 pause 500 '________________________________________________ compt=48 ;initialisation sur chiffre 0 pos=192 ;curseur début 2ème ligne serout C.0,baud, (254,1) ;effacement écran serout C.0,baud, (254,128,compt," ") do loop while intro=0 do do time=0 if intro=0 then do if time>2 then ;si appui plus de 2 s, reset ;on efface endif ;tout loop while intro=0 ;attente relachement serout C.0,baud, (254,pos,compt," ") ;affichage LCD inc pos ;incrémentation curseur endif bit0 = InputA ;sauvegarde inputA dans bit0 bit1 = InputB ;sauvegarde inputB dans bit1 loop while Aact=Aprec ;vivement le changement compt= bit0 xor bit1 *2 + compt-1 ;formule magique PieM Aprec=Aact serout C.0,baud, (254,128,compt," ") loop
Exemple n°2, type EC20A, 20 crans, 20 impulsions
Le test porte sur un exemplaire chinois, (10 pour moins de 5 euros). La qualité n'est pas la même que le précédent.
Sur ces encodeurs, les crans sont placés sur les niveaux OFF du signal A. On a donc une impulsion par cran sur cette broche. Le code est un peu différent, mais le résultat est le même:
'================================ 'décodeur Grey Version 04 'Codeur 20 impulsions 20 crans 'PieM 140519 '================================ #picaxe 08M2 setfreq M32 symbol InputA = pinC.3 symbol InputB = pinC.4 symbol intro = pinC.1 symbol baud = N4800_32 symbol Compt = w13 'compteur pullup %11010 ;pullup sur C.1,C.3,C.4
setint NOT %11000,%11000 '________________________________________________ main: pause 500 serout C.0,baud, (254,1) ;effacement écran do serout C.0,baud, (254,128,#compt," ") if intro=0 then serout C.0,baud, (254,192,#compt," ") endif loop
interrupt: Compt = InputB *2 + Compt - 1 do while inputA=0 or inputB= 0 : loop setint NOT %11000,%11000 return