Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Code pour Encodeur incremental rotatif
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#21 Message par paulfjujo » lun. 7 déc. 2015 20:21

bonsoir,


voici une version pour "encodeur incremental rotatif" utilisant l'interruption RB0 pour se caler sur le signal CLK
(on l'appelellera Pulse_A) servant de reference pour l'autre signal DT ( Pulse_B).
il faut 2 fronts , 1 montant et 1 descendant pour detecter le sens de rotation et incrementer/dcrementer un compteur.

Le code est resumé à l'usage de l'encoder et d'un LCD 2x16...
Le test de l'encoder fonctionne tout aussi bien avec rajout de 2 UARTS (avec Interruptions) + mesure ADC .
reception et decodage de message UART...
Pour la demo , le programme tourne sur un cycle de 1 seconde via IT Timer0.. mais peut etre accéléré.
Le fait de gerer via interruption n'interfere pas ( ou vraiment si peu) que c'est transparant dans le main program..qui peut alors faire bien d'autre chose:
affichage amelioré OLED ? ...

Nota: il n'y a pas de filtre Hardware sur les signaux encoder
mais une tempo soft..

Tout est dans le zip...
code source + documentation incluse via les Ac (Active comments) specifiques à MikroC.
Je n'ai pas de schema particulier .. vu qu'il n'y a que 5 fils à raccorder pour l'encoder
Le LCD s'enfiche sur le PORTD de la carte.

j'ai testé OK, la routine d'interrupt encoder sur un encoder 500 pulses/ tour.

18F45K22_LCD_2x16_Encoder_Projet_MikroC.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Code pour Encodeur incremental rotatif
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#22 Message par Jérémy » lun. 7 déc. 2015 22:30

Excellent Paul, merci pour ce programme de qualité .

J'avoue ne pas avoir tout compris malheureusement, mais on sent le gros niveau .... :D

C'est un encodeur optique ou mécanique ? un lien vers la DS ?

Merci ! Pour la participation, je suis sur mon compte à rebours en ce moment , et j’ai bientôt finis
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Code pour Encodeur incremental rotatif
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#23 Message par paulfjujo » mar. 8 déc. 2015 10:21

C'est un encodeur optique ou mécanique ?


Mecanique, comme le tien,je suppose

voir aussi les AC ( Active Comment) dans le source C , photo du composant en passant la souris dessus le AC.( // Encoder)
En sortie d'interrupt tu dispose du sens : horaire et trigo , et du cumul de pulses comptabilisées.
Le BP de l'encorder ne sert ici qu'à faire la RAZ du comptage
le comptage est limité ici à +- 500
On pourrait aussi utiliser l'interrupt sur BP1 pour modifier le pas d''incrementation comptage
ou d'affectation du comptage à seconde ou minutes ...

Endocage_signaux_Keyes.jpg



question: il est ou le BP DS (datasheet) ?
VU, mais non visible en mode edition
pas de datasheet sur ce composant (Chintoque)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 15 invités