Mon petit projet Arduino :)

Hello tout le monde :wink:

Voilà j’ai depuis peu une carte Arduino UNO et j’aimerais dans un premier temps me construire un robot qui évite les obstacles.
Hier j’ai modifié deux servos pour qu’ils fonctionnent en rotation continue. Cependant j’ai remarqué qu’ils ne tournent pas tous les 2 à la même vitesse (j’ai suivi ce tuto http://www.robotix.fr/tutoriel-1-53-modification-dun-servomoteur-en-moteur-a-courant-continu.html) le neutre est correctement configuré et je ne vois pas trop ce qui cloche :confused:

Voici le programme que j’ai écrit pour le moment (il y a juste un potard qui permet de choisir entre 4 vitesses dont l’arrêt et un BP pour l’inversion du sens de rotation). Attention je ne suis pas un pro en C :stuck_out_tongue:

#include <Servo.h>
Servo moteurGauche, moteurDroit;
int neutreGauche = 75, neutreDroit = 164;

void setup()
{
  moteurGauche.attach(9);
  moteurDroit.attach(10);
  pinMode(12, INPUT); //BP inversion
  pinMode(7, OUTPUT); //LED sens 1
  pinMode(8, OUTPUT); //LED sens 2
}

void loop()
{
  int sens = digitalRead(12);
  int vitesse = map(analogRead(A0),0,1023,0,3);
  rotationMoteur(moteurGauche,neutreGauche,sens,vitesse);
  rotationMoteur(moteurDroit,neutreDroit,sens,vitesse);
  delay(50);
}

void rotationMoteur(Servo servo, int neutre, int sens, int vitesse)
{
  int v[6] = {0,5,10,50};
  
  if (sens) {
    int out = neutre + v[vitesse];
    servo.write(out);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
  }
  else {
    int out = neutre - v[vitesse];
    servo.write(out);
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
  }
}

Ensuite j’aimerais avoir votre avis concernant l’alimentation de mes servos. Pour le moment ils sont alimentés par la carte UNO mais je pense peut-être me faire un shield qui combinerait la gestion de l 'alimentation pour mes 2 servos (Je compte en rajouter plus tard pour éventuellement une pince ou gadget du genre) et une sorte de proto-shield. Reste à voir pour l’encombrement…

Voici à quoi ressemble mon “montage” pour le moment (qualité portable dsl) :

J’attends vos commentaires et critiques :slight_smile:

Salut ! :)

Je n'ai pas pris de servos parallax car je fais également de l'aéro/automodélisme et j'ai une floppée de vieux servos dont je ne me sers plus :p Calibré mes servos ? En fait avec la méthode que j'ai linkée plus haut, on supprime le portard du servo et le remplace par un pont diviseur de tension.. Il faut ensuite déterminer le "neutre" du servo, quand il est à l'arrêt. Dans mon cas j'en ai un a 75° et un à 164° .

Les 2 servos sont identiques?

Il faut ensuite déterminer le "neutre" du servo, quand il est à l'arrêt. Dans mon cas j'en ai un a 75° et un à 164°

L'écart entre les deux neutres donne à penser qu'ils sont assez différents dans leur performances et cela pourrait expliquer ton problème. De toute façon, il ne faut pas se leurrer, tu ne trouveras jamais 2 moteurs qui tournent à la même vitesse. Il y aura toujours un décalage qui entrainera une dérive de ta plateforme.

Première étape tu peux faire 2 tables de vitesse (au lieu de ta table 0,5,10,50) pour essayer d'appairer de manière empirique la vitesse des moteurs. La deuxième étape c'est de placer des codeurs sur les roues pour faire un asservissement de vitesse.

Oui, c'est 2 servos Futaba S3003. Faire une deuxième table j'y ai pensé oui... Je vais p-e être d'abord essayer de simplement obtenir deux vitesses identiques et on verra par après pour la faire varier... Dommage :(

Normalement les servos sont alimentés en 5 Volts, tu peux essayer de "sous" alimenter le servo qui va le plus vite.

Je viens de remplacer toutes mes résistances que j'ai mis à la place du pot. j'en ai mis 4 de 2K2 (comme dans le tuto, 2 par servo ^^ ) je trouve qu'ils tournent déjà un peu plus à la même vitesse mais par contre pour en stoper un, j'ai du mal car le neutre est pile etre 74 et 75. Que faire ? chercher dans les décimales pour l 'arrêt ?