Go Down

Topic: Gestion moteur pwm double sens et double valeur analogique (Read 1 time) previous topic - next topic

greggycool

Bonjour à tous!

Je débute  dans le monde de l'arduino et de sa programmation.

Je développe une application de pilotage moteur à courant continu.
J'utilise un joystick. Ce joystick est consitué d'un potentiomètre.
Quand le jostick est à sa position zéro son potentiomètre se trouve sur la valeur du milieu.
Donc 2,5v pour 5v.
Ce que je souhaite, c'est de piloter mon moteur sens droite et sens gauche.
J'arrive très bien à gérer le droite et gauche en y mettant des valeur min et Max afin de piloter un bit ou l'autre.

Mon problème se situe dans la vitesse.
Je l'ai déclaré comme suit:

//----- gestion de la vitesse de rotation

  //mesure tension résistance variable
  mesure_brute=analogRead(Voie_0); // mesure tension sur la voie analogique
  mesure_brute=map(mesure_brute,573,1023,0,255); // adaptation échelle valeur

Je souhaiterai le faire aussi pour les valeurs 450 a 0 vers 0 a 255.

Ce qui me permettrai de faire mon pilotage droite gauche avec mon joystick tout en variant la vitesse.

Merci pour votre aide et votre lecture.

Greg
 

Super_Cinci

Salut,

vive les balises!!!

Code: [Select]

//----- gestion de la vitesse de rotation

byte marche_avant, marche_arriere;

  //mesure tension résistance variable
  mesure_brute=analogRead(Voie_0); // mesure tension sur la voie analogique
  marche_avant = 0;
  marche_arriere = 0;
  if (mesure_brute > 572) {
    marche_avant=map(mesure_brute,573,1023,0,255); // adaptation échelle valeur
  } else if (mesure_brute < 451) {
    marche_arriere=map(mesure_brute,450,0,0,255); // adaptation échelle valeur
   }


je pense que c'est ce que tu cherchais à faire?

B@tto

Salut,

Il te suffit de gérer les deux cas :
Code: [Select]

mesure_brute=analogRead(Voie_0);
if( mesure_brute>573) {
mesure_brute=map(mesure_brute,573,1023,0,255);
// routine pour commander le moteur avec  mesure_brute dans un sens
} else if( mesure_brute<451) {
mesure_brute=255-map(mesure_brute,0,451,0,255);
// routine pour commander le moteur avec  mesure_brute dans l'autre sens
} else {
//routine pour arrêter le moteur
}


Pense à utiliser les balises code # quand tu postes du code

EDIT : grilled :)
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

greggycool

Désolé pour ma réponse un peu tardive.

Merci pour vos infos les gars!

Bonne continuation!

Super_Cinci


Go Up