Go Down

Topic: Problèmes d'encodeur EC11 (Read 39434 times) previous topic - next topic

LamiRene

Bonjour Jacques,


Bonjour Rene,
j'ai le catalogue complet ALPS EC11 devant moi, il n'y a pas de modele 20 detentes, c'est 18, 30 ou 36.


Si vous regardez dans le nom et descriptif du premier produit, il y à « Codeur Dode Commutateur / EC11 / ... ». Et je viens de recompter le nombre des clics pour 360° directement sur l'encodeur et c'est bien 20 clics. Je n'ai pas d'autres sources d'information.

Codeur Dode Commutateur / EC11 / Audio potentiomètre numérique - vert + Silver (2 PCS)
MaiTech manche court 5 broches molette commutateurs - argent (2 PCS)

Quote

Dans le message #39 tu disais que tu avais besoin de 12 encodeurs, comment vas-tu faire ?


Oui, environ 12 encodeurs, et de nouvelles perspectives s'ouvrent à moi.

Je devrais sûrement arriver (avec un peu d'aide) à déporté le travaille de lecture des encodeurs à des CI dédiés qu'a cela, ainsi je n'aurai plus de perte de clic ou de portion de clic dû au 60 à 85 millisecondes de la boucle « loop () ». Et le besoin des broches avec interruptions disparait pour les encodeurs.

Je devrais partir prochainement à la recherche des exemples des codes sources d'un Mega qui communique avec un ATMEGA328-PU ou ATTINY84 ou Arduino Nano enfiché sur plaque d'expérimentation sans soudure "BreanBoard" pour récupérer les données d'un capteur (ex. : potentiomètre ou encodeur, capteur de température ou de luminosité, etc.). Si je suis chanceux, je trouverai avec un encodeur, mais peu importe, du moment qu'il y a un capteur et la transmission des données du CI enfiché, vers la carte Mega.

Quote

De combien de pins disponibles pour tes encodeurs disposes-tu sur ton Mega ?
Bonne fin de nuit
Jacques


La question est ambiguë, de base, toutes les broches de Mega peuvent être utilisées. Pourriez-vous préciser votre question ?

L'ami René
Tous pour un et un pour tous !

Artouste

#61
Sep 06, 2014, 01:21 pm Last Edit: Sep 06, 2014, 01:25 pm by Artouste Reason: 1

...
Je devrais sûrement arriver (avec un peu d'aide) à déporté le travaille de lecture des encodeurs à des CI dédiés qu'a cela, ainsi je n'aurai plus de perte de clic ou de portion de clic dû au 60 à 85 millisecondes de la boucle « loop () ». Et le besoin des broches avec interruptions disparait pour les encodeurs.
...



bonjour
si tu pars vers cette solution, il faut aussi te poser la question du protocole de mise à dispositions des infos (et lesquelles ) vers ton MCU de gestion globale.

si toujours tu veux partir sur tes 328 (DIP* ) je partirais sur de la mise à disposition par I²C
sous reserves d'erreurs , il te resterait dispo 16 pins exploitables pour de l'encodeur simple A/B  (soit 8 encodeurs)

les pins 1, 2,3,7,8,9,10,20,21,22,27,28 du 328 etant "reservés" = en vrac les alims/serial/I²C/reset/QZ

le temps de boucle en polling reste extrement faible (pour de l'encodeur "manuel" , mais pas pour de l'encodeur derriere moteur) , il suffit donc simplement de mettre à jour un compteur par encodeur , compteurs lisibles par le MCU de gestion en I²C.
ce qui est largement à la portée du 328

Intuitivement , je verrais bien un "pseudo protocole" consistant à interroger regulierement/polling  I²C les "modules X encodeurs" qui renverraient une reponse " à l'ouest rien de nouveau"  :smiley-mr-green:  ou "il y a eu du changement  :smiley-mr-green: " avec action en consequence.

AMHA , la reflexion doit  surtout etre portée sur l'organisation des "compteurs"  (valeurs absolues ou pas ? , etendue, flag de changement, etc) et la discussion I²C qui doit rester la plus concise possible (= si je n'ai rien d'interessant à dire , je repond juste que je n'ai rien à dire  :smiley-mr-green:  )

* sauf à me planter les 328 en CMs (nano dispose de 2 pins de plus)


jean-I

pour deux interruption supplementaire voir http://forum.arduino.cc/index.php?topic=265311.msg1870993#msg1870993
il t'en manquera quand meme 4.

il te reste une solution, si tu as assez de broches, c'est d'utiliser une interruption sur changement d'etat d'un port complet.
tu aura besoin de 2 port, de preference dédié uniquement a ca.
http://playground.arduino.cc/Main/PinChangeIntExample

le code sera un peu plus compliqué, car il faut traiter tout les codeurs du port.
cette routine sera necessairement un peu plus longue, la frequence admissible sera donc legerement moindre.

j'ai jamais fait sur ATMEL, mais ca marchais bien ailleurs.
et c'est certainement ce que tu fera si tu dedie un circuit a faire du comptage codeur.

malheureusement, sur le MEGA, tu n'as que le pin ana 8 à 15 (pcint16 à 23), les pwm 10 à 13, MISO, MOSI, et SCK (pcint1 à 7), Tx, RX  (pcint9 et 10). les autres ne ressortent pas.
du coup si t'as besoin de ces fonction ca limite quand meme, mais tu peut panacher les 2 solutions INT et PCINT.

tu peut egalement utiliser cette solution PCINT sur le 328, pour les 2 INT0 et INT1 dispo, et communiquer ensuite avec le MEGA.

JMe87

Bonjour,
ce n'est pas ma question qui est ambigue, c'est ta reponse.
Le probleme est tout different si tu utilises deja 4 ou 40 pins sur ton Mega.
A part que ta boucle Loop tourne en 80mS, on ne sait pas grand chose sur ton montage.
Mes felicitations pour ton effort pour te mettre a l'anglais. Juste pour info, on n'ecrit pas "BreanBoard" qui ne veux rien dire mais "BreadBoard" que les francophiles traduisent par "planche a pain"
Je te souhaite bien du plaisir pour relier 2 ou 3 328 a ton Mega.
Jacques

LamiRene

Bonjour à tous,

Et merci pour votre aide et votre support !



...
déporté le travaille de lecture des encodeurs à des CI dédiés qu'a cela,
...

...
si tu pars vers cette solution, il faut aussi te poser la question du protocole de mise à dispositions des infos
...


Oui, l'I²C, SPI et Wire font partie des possibles, mais je ne connais aucunes de ces technologies et solutions.

Ça me fait beaucoup d'études à faire et de choix à prendre, je me donne au moins la semaine pour lire et suivre vos conseils, suggestions et hyperlien et fouillé le Web pour trouver la solution qui allie le plus la performance et la simplicité de mise en oeuvre.

Quote

si toujours tu veux partir sur tes 328 (DIP* ) je partirais sur de la mise à disposition par I²C
sous reserves d'erreurs , il te resterait dispo 16 pins exploitables pour de l'encodeur simple A/B  (soit 8 encodeurs)

les pins 1, 2,3,7,8,9,10,20,21,22,27,28 du 328 etant "reservés" = en vrac les alims/serial/I²C/reset/QZ
...
il suffit donc simplement de mettre à jour un compteur par encodeur , compteurs lisibles par le MCU de gestion en I²C. ce qui est largement à la portée du 328
...


Oui, c'est une bonne option, 8 encodeurs, plus les 5 ou 6 déjà sur la carte Mega, ça peut donc allé jusqu'à 14 encodeurs. Je suis sur la bonne voie. Je pense à drapeau et compteur ou texte de la commande a exécuter.


pour deux interruption supplementaire voir http://forum.arduino.cc/index.php?topic=265311.msg1870993#msg1870993
il t'en manquera quand meme 4.

il te reste une solution, si tu as assez de broches, c'est d'utiliser une interruption sur changement d'etat d'un port complet.
...


J'élimine ces deux options par manque de dextérité et de connaissances. Et trop complexe pour ma tête.


Bonjour,
ce n'est pas ma question qui est ambigue, c'est ta reponse.
Le probleme est tout different si tu utilises deja 4 ou 40 pins sur ton Mega.


Là, je comprends mieux ton contexte de la question.

Je ne pouvais répondre à la question, car je suis en progression dans tout ce processus et à mesure que je maîtrise une technique, je l'incorpore dans le prototype alpha du tableau de bore du cockpit.

Mais on peut être sûr que côté broches disponible, il n'y aura pas de gaspillage, 98 % devraient être utilisés, j'en suis à 46 sur le Mega (2 x écrans LCD, 12 boutons, 5 encodeurs, 9 interrupteurs et un capteur infrarouge pour signaux de télécommande). C'est un cockpit générique, donc pour petit Cessa, gros Airbus ou Boeing en passant par le militaire et les chasseurs. Ça fait des centaines de boutons de toutes sortes, interrupteurs deux ou trois position et manettes et plusieurs écrans LCD 20x4 au moins 3.

Dans le cahier des charges, une carte maître Arduino Mega avec une carte d'extension "sheild" Ethernet. Un ou des CI en renfort, c'est OK. Mais le nombre final des bidules m'est inconnu pour le moment, c'est les broches qui le détermineront.

Quote

Mes felicitations pour ton effort pour te mettre a l'anglais. Juste pour info, on n'ecrit pas "BreanBoard" qui ne veux rien dire mais "BreadBoard" que les francophiles traduisent par "planche a pain"


Oups !

Ça me fait bien rigoler, mais je trouvais justement illogique le lien - plaque d'expérimentation - "planche a pain", là je comprends. Merci de faire le point sur le sujet.

Quote

Je te souhaite bien du plaisir pour relier 2 ou 3 328 a ton Mega.
Jacques


Je ne suis pas sadomasochiste, alors si je peux m'en sortir avec un , c'est OK pou moi.

Encore merci à vous tous !

L'ami René
Tous pour un et un pour tous !

Artouste



Oui, l'I²C, SPI et Wire font partie des possibles, mais je ne connais aucunes de ces technologies et solutions.

Ça me fait beaucoup d'études à faire et de choix à prendre, je me donne au moins la semaine pour lire et suivre vos conseils, suggestions et hyperlien et fouillé le Web pour trouver la solution qui allie le plus la performance et la simplicité de mise en oeuvre.



bonjour
rapide
par hasard ton"systeme" n'embarquerait pas "déjà"  une rtc ds1307 ?

jean-I

tu peut economiser du cablage et des pin pour tes afficheur lcd egalement
voir le fil
http://forum.arduino.cc/index.php?topic=265217.msg1872036#msg1872036

JMe87

Bonjour Rene,
ton probleme est mal pose a la base. Tu parles de quelques encodeurs puis dans le dernier message, ton mega est super-plein.
Pour resoudre ton probleme tu dois passer par des "I/O expanders"

Un petit exemple je j'ai eu a resoudre il y a quelques annees.
Soit une platine de demo Atmel "Butterfly"
http://www.atmel.com/tools/avrbutterfly.aspx
qui utilise un AtMega169 qui est un circuit 100 pins mais dont beaucoup d'entre-elles sont utilisees par le display.
Pas beaucoup de possibilites d'ajouter des entrees/sorties.
J'ai utilise un ou 2 PCA9555
www.nxp.com/documents/data_sheet/PCA9555.pdf
Il y a plein de modeles semblables a ce circuit en 8 ou 16bit de large.
Suppose que tu as 16 boutons ou interrupteurs, tu les connectes a ton I/O expander et, quand tu en actionnse un, le circuit demande une interruption au micro et le micro vient questionner le circuit pour voir quel bouton a ete actionne.
Si tu as besoin de 17 boutons, tu installes un 2eme circuit et cela te permet d'avoir de 17 a 32 entrees avec seulement 3 pins utilisees sur le micro.
A la place de boutons en entree, tu peux utiliser des leds en sortie.
Ce qui veux dire que la limite pour ton Mega devient software.
Tu peux imaginer 200 boutons et 200 leds sans probleme.
Pour tes encodeurs, il doit etre possible de connecter 8 encodeurs sur un PCA9555 ou equivalent.
Je n'ai jamais vu une telle realisation mais j'estime que cela doit etre possible. Sinon, un tout petit micro par encodeur et 1,5 I/O expander pour 8 encodeurs.
Bonne reflexion
Jacques



LamiRene


...
bonjour
rapide
par hasard ton"systeme" n'embarquerait pas "déjà"  une rtc ds1307 ?


Bonjour Artouste,

Le DS1307, je connais pas. C'est un « 64 x 8, Serial, I2C Real-Time Clock », je ne voie pas ce que cela apporterait de plus au projet qu'un Arduino Nano ou un ATMEGA328-PU ou un ATTINY8X et est-ce programmable par l'IDE Arduino ?

L'ami René

Tous pour un et un pour tous !

LamiRene


tu peut economiser du cablage et des pin pour tes afficheur lcd egalement
voir le fil
http://forum.arduino.cc/index.php?topic=265217.msg1872036#msg1872036


Bonjour Monsieur Jean,

Je garde la référence sous le coude, au cas où.

Merci !

L'ami René
Tous pour un et un pour tous !

LamiRene

Bonjour Jacques,

Merci pour l'aide !


Bonjour Rene,
ton probleme est mal pose a la base. Tu parles de quelques encodeurs puis dans le dernier message, ton mega est super-plein.


J'ai parlé, du cockpit dans mon troisième ou quatrième message pourtant. Mais, je suis désolé si cela est source de confusion.

Cela semble s'imposer que j'explique ma situation. Par hasard, l'an passé je suis tombé sur la programmation Arduino avec son langage C. Je suis donc presque novice en la matière. Mais programmeur informatique de 1989 à 1999, j'ai une bonne base en programmation en langage Pascal sur PC et Mac, de l'époque. Mais pour ce qui est de l'électronique pure et des autres contrôleurs programmables, je suis un vrai bleu, même pas un vert ! Il y a un mois, je ne savais pas ce qu'était un encodeur et il y a deux ou trois ans, je n'avais jamais fait de soudure ou joué avec des résistances ou des condensateurs. Je suis unilingue francophone et j'ai 52 ans.

Passionné d'aviation, j'ai toujours utilisé depuis leurs sorties, les simulateurs de vol les plus réalistes du moment. Mais piloter un simulateur de vol comme X-Plane 10 aujourd'hui, avec les quatre modes (normal, Contrôle, Majuscule et AltCar) des touches d'un clavier étendu, c'est pas toujours la joie. Une planche de tableau de bord et de console de cockpit, ça agrémenterait bien les vols.

Il y a deux mois, l'idée m'est venue de fusionner mon ancienne passion (simulateur de vol) et la nouvelle (l'électronique programmable, les contrôleurs). Cela me faisait un projet concret sur lequel poursuivre mon apprentissage de ma nouvelle passion.

Mais ne perdez pas de vue que j'ai tout a apprendre... ou presque !

Quote

Pour resoudre ton probleme tu dois passer par des "I/O expanders"
...


Si cela se programme avec l'IDE Arduino et qu'il y a des exemples de code source pour l'utiliser, je vais regarder ça, sinon, pour ce projet, je n'y toucherai pas.

Mais, merci, j'apprécie toujours votre aide !

L'ami René
Tous pour un et un pour tous !

JMe87

Rene,
c'est sur que cela se programme avec un Arduino.
tu vas sur Google et tu cherches : "I/O expander Arduino" et il y a 110.000 liens.
bonne lecture.
Que font les autres passionnes de simulateurs ? Quel hardware utilisent-ils ? Il n'y a pas des forums specialises qui parlent de realisations de simulateurs ?.
Jacques

LamiRene

Rebonjour Jaques,

Merci pour l'information !


...
c'est sur que cela se programme avec un Arduino.


J'avais l'impression du contraire.

Quote

tu vas sur Google et tu cherches : "I/O expander Arduino" et il y a 110.000 liens.
...


C'est ce que je vais faire.

Quote

Que font les autres passionnes de simulateurs ? Quel hardware utilisent-ils ? Il n'y a pas des forums specialises qui parlent de realisations de simulateurs ?.
Jacques


Ça existe, mais s'est rare et les bons, encore plus rares. Je suis sur le seul bon en français que j'ai trouvé, et je me suis basé pour partir mon projet, sur les codes sources d'exemples d'un site en anglais, mais je n'y suis pas inscrit, la langue étant une barrière pour moi.

Mais comble de chance, cette nuit, j'y ai trouvé une nouvelle publication « X-Plane I/O library for Arduino --- (Current version - 1.0 / Sept. 01.2014) » et qui va dans le sens de mon projet avec un exemple de communication entre des cartes Arduino par I2C. Entre mes passages ici, j'étudie les codes sources qu'ils fournissent. Donc, Mega et Nano, je tiens peut-être une bonne solution.

Pour ATTINY et ATMEGA328-PU, je n'ai pas trouvé d'exemple là ou ailleurs, pour le moment.

Merci pour ton support !

L'ami René

Tous pour un et un pour tous !

jean-I

j'ai pas grand chose de plus a dire, sinon que la solution i2c me parait la meilleur.
Si c'est avec un I/O exander tu aura juste a comuniquer avec, et tu pourra meme y gerer des codeurs dans de bonnes conditions grace a la sortie INT s'il y en a (c'est le cas pour le pca9555)
Si c'est avec un autre µC, au hasard, le ATMEGA328, tu aura sa programation en plus a faire, mais tu pourra y gerer d'autres fonctions en plus.

il ne te "reste plus qu'a" plancher sur l'i2c.
(et eventuelement prendre des cours d'anglais. surpenant pour un canadien, meme quebequois, pas du tout anglophone!)

LamiRene

Rebonjour Jean,

Je pense à tout ça ! Un grand merci pour tout. J'ai trouvé ici même sur le forum de quoi faire pour ATTINY et j'ai d'autres sites a écumer.

Il ne me manque que des exemples avec ATMEGA328-PU, mais je n'ai pas terminé mes recherches.

Un détail, si j'ai bien compris, si je développe avec Mega en I2C avec Nano, côté programmation, je pourrai après remplacer le Nano par un ATMEGA328-PU sans rien changer au code source ?

Et si je reste simple en déportant du Mega (pas de bibliothèque exotique), il pourrait en être de même avec ATTINY, à l'exception des numéros des broches qui pourraient varier ?

Là, j'ai sommeil..., bon dimanche !

Merci encore pour tout !

L'ami René
Tous pour un et un pour tous !

Go Up