Electromag1 Circuits électroniques et Picaxes

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:

 
signaux encod

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.

Le code:
Fortement inspiré par PieM, le principal pilier du forum Picaxe francophone.


'================================
'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

 
 



Créer un site
Créer un site