Arduino Forum

International => Français => Topic started by: Indox on Oct 17, 2016, 07:14 pm

Title: Servomoteur 6 fils
Post by: Indox on Oct 17, 2016, 07:14 pm
Bonjour,
Je modifie une voiture rc de marque nikko.
Le servomoteur est composé de 6 fils.
Ma question : comment utiliser ce genre de servomoteur avec un motor shield?
Merci.
Title: Re: Servomoteur 6 fils
Post by: aligote on Oct 17, 2016, 07:36 pm
Je modifie une voiture rc de marque nikko.
Le servomoteur est composé de 6 fils.
Ma question : comment utiliser ce genre de servomoteur avec un motor shield?

Bonsoir,

Une question préalable : il s'agit bien d'un servomoteur ? avec "6fils" pour la commande électrique et un palonnier pour la commande mécanique ?

Serge .D
Title: Re: Servomoteur 6 fils
Post by: kamill on Oct 17, 2016, 07:38 pm
Bonjour,

Voir ici (http://nikkoevolution.fr/article/article_fiche.php?articleID=278) pour les servo Nikko
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 17, 2016, 07:54 pm
Bonjour,

Voir ici (http://nikkoevolution.fr/article/article_fiche.php?articleID=278) pour les servo Nikko
Merci Kamill. Mais je ne m'y connais pas trop en électronique je suis juste un bidouilleur...
Un peu plus d'explication svp. Merci.
Title: Re: Servomoteur 6 fils
Post by: aligote on Oct 17, 2016, 07:56 pm
Voir ici (http://nikkoevolution.fr/article/article_fiche.php?articleID=278) pour les servo Nikko
Bravo. Tout y est dit.
Dans un servo ordinaire(3 fils : le - le + et le signal de commande) le signal de commande est exploité par une platine électronique interne au servo qui se charge de piloter le moteur à partir de l'information de commande disponible sur le fil "signal".
Dans ce cas l'arduino n'a qu'a se charger d'élaborer le signal de commande. (PWM 1-2ms période vers 20 ms)

Visiblement pour un servo Nikko, il faudra  que l'arduino lise la position du potentiomètre et aussi pilote lui même le moteur.

Serge .D
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 17, 2016, 09:03 pm
Merci. Mais concrètement, comment le brancher sur ce motor shield:Motor-Shield (http://images.google.fr/imgres?imgurl=http%3A%2F%2Fi.ebayimg.com%2Fimages%2Fi%2F221798329172-0-1%2Fs-l1000.jpg&imgrefurl=http%3A%2F%2Fwww.ebay.com%2Fbhp%2Farduino-motor-shield&h=1000&w=1000&tbnid=f7hV0iEDDmUEDM%3A&docid=kL5Ksp9cgC7EfM&ei=QCAFWIGDB87X6QSH0LCgCg&tbm=isch&iact=rc&uact=3&dur=453&page=0&start=0&ndsp=50&ved=0ahUKEwiBo-m6w-LPAhXOa5oKHQcoDKQQMwgoKAowCg&bih=950&biw=1920)?
Title: Re: Servomoteur 6 fils
Post by: kamill on Oct 18, 2016, 11:16 am
Servo moteur Nikko piloté par Arduino (http://www.pobot.org/Servo-moteur-Nikko-pilote-par.html)
Title: Re: Servomoteur 6 fils
Post by: Forthman on Oct 18, 2016, 05:11 pm
En fait c'est un servo sans toute la parti "intelligente" en fait ^^
Title: Re: Servomoteur 6 fils
Post by: Alain46 on Oct 18, 2016, 07:06 pm
Attention !!!

Dans le lien Servo moteur Nikko piloté par Arduino (http://www.pobot.org/Servo-moteur-Nikko-pilote-par.html)

Il indique de connecter les 2 bornes du potentiomètre sur l'alimentation 6V du moteur et de connecteur le curseur du potentiomètre sur une entrée analogique.

Il y a un grand risque d'envoyer du 6V sur l'entrée analogique dans le cas où le potentiomètre serait en butée en fin de course. Et du 6V sur un entrée analogique, les cartes Arduino n'aiment pas du tout.

Il vaut mieux connecter les bornes du potentiomètre à l'alimentation 5V de la carte Arduino
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 18, 2016, 09:09 pm
Dsl je ne.comprends pas. Je vais essayer d'aller voir un prof de technologie...
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 26, 2016, 06:27 pm
Bonjour,

Alors voici où j'en suis avec ce servomoteur Nikko à 6 fils.

j'ai branché comme conseillé les extrémités du potentiomètre de ce servo sur le 5V et ground de l'Arduino. Ensuite j'ai branché le moteur du servo sur le "M1" du moteur shield (dk electronics).

Voici le code :
Code: [Select]
#include <AFMotor.h>

AF_DCMotor motor(1);
void setup() {
  Serial.begin(9600);
  pinMode(A0, INPUT);
  motor.setSpeed(80);
  motor.run(RELEASE);
}

/*fonction placement servomoteur*/
void roues(int pos_voulue)
  {
    int pos_act;
    pos_act=analogRead(A0);
   
    if (pos_act >pos_voulue)
    {
      do
      {
         motor.run(BACKWARD);
         pos_act=analogRead(A0);
      }while (pos_act!=pos_voulue);
     
    }
     
     else if  (pos_act < pos_voulue)
     {
       do
      {
         motor.run(FORWARD);
         pos_act=analogRead(A0);
      }while (pos_act!=pos_voulue);
     }
     pos_act=analogRead(A0);
     if (pos_act == pos_voulue)
     {
       motor.run(RELEASE);
       }
   
    }

void loop() {
  roues(800);
  Serial.println(analogRead(A0));

 
}


Problème: le servomoteur se déplace bien là où il faut (on peut lire la bonne position sur le Serial) mais le servo ne s'arrête pas complètement une fois arrivé. Il continue à faire des petits mouvements.

Merci pour votre aide.
Title: Re: Servomoteur 6 fils
Post by: aligote on Oct 26, 2016, 06:49 pm
............

Problème: le servomoteur se déplace bien là où il faut (on peut lire la bonne position sur le Serial) mais le servo ne s'arrête pas complètement une fois arrivé. Il continue à faire des petits mouvements.

............
Bonsoir,

Je pense que ce comportement est normal.

On teste la position pour savoir si elle est égale à la position souhaitée.
Le déplacement est engagé et la position atteinte puis légèrement dépassée à cause de l'inertie mécanique.
Un mouvement inverse (recul) est alors démarré et ainsi de suite.

Je pense qu'il faudrait prévoir une zone morte de petite taille autour de la position recherchée.

Serge .D
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 26, 2016, 07:04 pm
Bonsoir,

Je pense que ce comportement est normal.

On teste la position pour savoir si elle est égale à la position souhaitée.
Le déplacement est engagé et la position atteinte puis légèrement dépassée à cause de l'inertie mécanique.
Un mouvement inverse (recul) est alors démarré et ainsi de suite.

Je pense qu'il faudrait prévoir une zone morte de petite taille autour de la position recherchée.

Serge .D
Merci Serge
Title: Re: Servomoteur 6 fils
Post by: Indox on Oct 26, 2016, 07:54 pm
Bonsoir,

Pour clôturer ce sujet, voici le code permettant de faire l'asservissement avec le moteur du servomoteur de la voiture Nikko.
Source:Source (https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiI6vr0hPnPAhVGWBoKHYkNAzQQFgggMAA&url=https%3A%2F%2Fforum.arduino.cc%2Findex.php%3Faction%3Ddlattach%3Btopic%3D114633.0%3Battach%3D22326&usg=AFQjCNH2AY7DXhAYSIXEuB1D_yzSXzDcWQ)
Code: [Select]
#include <AFMotor.h>

AF_DCMotor motor(1);// crée un moteur sur les pin #2 du shield moteur, fréquence (64KHzpwm)
int potpin = 0; //pin analogique A0 pour le potentiometre
int val; // variable pour la lecture de la valeur analogique
int val2;
int valeurcible; // variable a changer pour changer l'angle du moteur (peut se coupler a un autrepotar)
int hyseteris =10; // 1 donne des resultats tres precis et stoppe déjà les tremblement moteur
void setup()
{
motor.setSpeed(255); // vitesse du moteur de 1 a 255
valeurcible =22;
}
void loop()
{
val = analogRead(potpin); // lis la valeur du potentiometre entre 0 et 1023
val2 = map(val, 181, 860, 1, 180); // convertis en 0° a 280°
if (valeurcible < (val2 - hyseteris)) { motor.run(BACKWARD);} //moteur avance
else if (valeurcible > (val2 + hyseteris)) { motor.run(FORWARD);} //moteur recule
else {motor.run(RELEASE);}//moteur stoppe
}