Aller au contenu


- - - - -

PIC interface USB, encodeur en quadrature, PWM


6 réponses à ce sujet

#1 Guest_Kary78_*

Guest_Kary78_*
  • Guests

Posté 14 avril 2011 - 09:36

Bonjour,

Je suis actuellement à la recherche d'un PIC qui pourrait gérer les données d'un encodeur (grâce à une interface encodeur en quadrature), la PWM pour mon moteur,
et une interface USB pour pouvoir contrôler le tout depuis un ordinateur.

Auriez vous des idées ?
Si vous avez besoin d'autres précisions demandez :)

Bonne journée.

Kary

#2 Jbot

Jbot

    Membre passionné

  • Membres
  • PipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris
  • Interests:Robotics

Posté 14 avril 2011 - 10:16

humm, Je ne connais pas du tout les PICs mais je fais la meme chose avec un arduinoMega !


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#3 Guest_Kary78_*

Guest_Kary78_*
  • Guests

Posté 14 avril 2011 - 12:19

ton arduinoMega peut gèrer les données en sortie d'un encodeur & on peut faire de la PWM avec ?

#4 Jbot

Jbot

    Membre passionné

  • Membres
  • PipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris
  • Interests:Robotics

Posté 14 avril 2011 - 12:31

Ben, y a 4 interruptions externes donc tu peux prendre 2 encodeurs, et ca gere une 40aine de PWM je crois, donc ca devrait aller :P
Et il y a de l'USB->Serie.


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#5 Guillaume TDRIS

Guillaume TDRIS

    Nouveau membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:Saint Soupplet
  • Interests:Robotique
    Électronique

Posté 05 mai 2011 - 01:47

Bonjour,

Certains pic gèrent de façon native les encodeurs avec des registres spéciaux, le PIC184431 par exemple.

Une fois configuré de la façon suivante (en c)

PORTA = 0;
ANSEL0bits.ANS2 = 0;
TRISAbits.TRISA2 = ENTRE;
ANSEL0bits.ANS3 = 0;
TRISAbits.TRISA3 = ENTRE;
ANSEL0bits.ANS4 = 0;
TRISAbits.TRISA4 = ENTRE;
MAXCNTH = 0xFF;
MAXCNTL = 0xFF;
POSCNTH = 0;
POSCNTL = 0;
QEICON = 0;
QEICONbits.VELM = 1;
QEICONbits.QEIM1 = 1;
QEICONbits.QEIM2 = 1;

Tu peux ensuite directement accéder à la valeur courante du codeur comme si c'était un timer. Il s'incrémente et de décrémente automatiquement selon le sens sans consommer d'interruption.

On récupère la valeur de la façon suivante:

Axe_Incpos = POSCNTH; // on enregistre la nouvelle position
Axe_Incpos = Axe_Incpos << 8;
Axe_Incpos += POSCNTL;

Axe_Incpos est la valeur du timer. (de 0 à 65535)

Si tu as besoin de librairies ou d'aide n'hésite pas.

#6 Guest_Kary78_*

Guest_Kary78_*
  • Guests

Posté 05 mai 2011 - 02:09

Bonjour,

Certains pic gèrent de façon native les encodeurs avec des registres spéciaux, le PIC184431 par exemple.

Une fois configuré de la façon suivante (en c)

PORTA = 0;
ANSEL0bits.ANS2 = 0;
TRISAbits.TRISA2 = ENTRE;
ANSEL0bits.ANS3 = 0;
TRISAbits.TRISA3 = ENTRE;
ANSEL0bits.ANS4 = 0;
TRISAbits.TRISA4 = ENTRE;
MAXCNTH = 0xFF;
MAXCNTL = 0xFF;
POSCNTH = 0;
POSCNTL = 0;
QEICON = 0;
QEICONbits.VELM = 1;
QEICONbits.QEIM1 = 1;
QEICONbits.QEIM2 = 1;

Tu peux ensuite directement accéder à la valeur courante du codeur comme si c'était un timer. Il s'incrémente et de décrémente automatiquement selon le sens sans consommer d'interruption.

On récupère la valeur de la façon suivante:

Axe_Incpos = POSCNTH; // on enregistre la nouvelle position
Axe_Incpos = Axe_Incpos << 8;
Axe_Incpos += POSCNTL;

Axe_Incpos est la valeur du timer. (de 0 à 65535)

Si tu as besoin de librairies ou d'aide n'hésite pas.


Merci pour ton message. Je vais regarder ça de plus près ..
Tu utilises quoi comme compilateur pour ton PIC184431 ?
Je voulais utiliser MPLAB (parce que je l'ai déjà utilisé pendant mes 2 ans de DUT GEII)
mais j'ai remarqué que sur le MPLAB IDE v8.66 je ne peux quasiment rien faire :wacko: :(

#7 Guillaume TDRIS

Guillaume TDRIS

    Nouveau membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:Saint Soupplet
  • Interests:Robotique
    Électronique

Posté 05 mai 2011 - 04:40

J'utilisais C18 avant, maintenant c'est compilateur maison...

Tu peux avoir C18 gratuitement (version étudiante), a condition de t'inscrire sur microchip.com



Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users