Go Down

Topic: Robot sauteur (Read 2278 times) previous topic - next topic

edwinre

Jan 19, 2013, 12:36 pm Last Edit: Jan 19, 2013, 12:39 pm by edwinre Reason: 1
Bonjour à tous,

Actuellement élève en 1°S Si, nous avons été inscrit aux Olympiades des sciences de l'ingénieur qui se dérouleront prochainement. Le projet est un robot sauteur propulsé par un vérin.
Je m'occupe de la partie programmation et j'aurai quelque questions:

- Quelle carte Arduino faut-il utilisé pour ce genre de robot , je dispose déjà de carte Arduino Uno et Arduino Mega 2560, mais on est libre d'utiliser la carte que l'on veut.

- Pour les shields, se branches-t-il tous sur les cartes méga et lequel utilise pour le contrôle du robot en wifi? L'éthernet shield?

- Avant son saut, le robot doit-être incliné à un certain angle, j'ai déjà programmé ce programma pour l'inclinaison du robot par servomoteur, fonctionne-t-il ?

Code: [Select]
#include <Servo.h> // librairie arduino pour servomoteur

const int POS_MIN=550; // mise a zero pour un servomoteur position minimale
const int POS_MAX=2330; // position maximale servomoteur

int angle_servo=40; //angle voulu

const int broche_servo=2; //broche selon branchement (2)
const int Voie_0=0; //constante pour passage en analogique

int mesure_brute=0;// résultat brut
float mesuref=0.0;// résultat décimal

Servo mon_servo;  // pour le control du servomoteur

void setup()   { // debut de la fonction setup()


mon_servo.attach(broche_servo, POS_MIN, POS_MAX);  // broche commande servo


pinMode(broche_servo, OUTPUT); //met la broche en sortie
}
void loop(){ // fonction loop() infini
mesure_brute=analogRead(Voie_0);

angle_servo=map(mesure_brute,0,1023,0,180);  // conversion  en angle °

mon_servo.write(angle_servo); // positionne le servo à l'angle voulu

delay (100); // pause entre 2 mesures et modif position servomoteur
}


Dans le code, le servo doit-être incliné à 40°.

- Connaissez-vous des servomoteurs qui peuvent aller à plus de 180° et faire les 360°?

Merci pour vos réponses.


Christian_R

Le choix de la carte se fait selon le cahier des charges complet: compter le nombre d'entrées / sorties dont on a besoin.

Utiliser un shield wifi : http://arduino.cc/en/Main/ArduinoWiFiShield

Un servo limité à 180° peut tourner à 360° avec une simple paire d'engrenages multiplicateurs.
Christian

Artouste


Bonjour à tous,

Actuellement élève en 1°S Si, nous avons été inscrit aux Olympiades des sciences de l'ingénieur qui se dérouleront prochainement. Le projet est un robot sauteur propulsé par un vérin.
Je m'occupe de la partie programmation et j'aurai quelque questions:

- Quelle carte Arduino faut-il utilisé pour ce genre de robot , je dispose déjà de carte Arduino Uno et Arduino Mega 2560, mais on est libre d'utiliser la carte que l'on veut.

- Pour les shields, se branches-t-il tous sur les cartes méga et lequel utilise pour le contrôle du robot en wifi? L'éthernet shield?

- Avant son saut, le robot doit-être incliné à un certain angle, j'ai déjà programmé ce programma pour l'inclinaison du robot par servomoteur, fonctionne-t-il ?

Code: [Select]
#include <Servo.h> // librairie arduino pour servomoteur

const int POS_MIN=550; // mise a zero pour un servomoteur position minimale
const int POS_MAX=2330; // position maximale servomoteur

int angle_servo=40; //angle voulu

const int broche_servo=2; //broche selon branchement (2)
const int Voie_0=0; //constante pour passage en analogique

int mesure_brute=0;// résultat brut
float mesuref=0.0;// résultat décimal

Servo mon_servo;  // pour le control du servomoteur

void setup()   { // debut de la fonction setup()


mon_servo.attach(broche_servo, POS_MIN, POS_MAX);  // broche commande servo


pinMode(broche_servo, OUTPUT); //met la broche en sortie
}
void loop(){ // fonction loop() infini
mesure_brute=analogRead(Voie_0);

angle_servo=map(mesure_brute,0,1023,0,180);  // conversion  en angle °

mon_servo.write(angle_servo); // positionne le servo à l'angle voulu

delay (100); // pause entre 2 mesures et modif position servomoteur
}


Dans le code, le servo doit-être incliné à 40°.

- Connaissez-vous des servomoteurs qui peuvent aller à plus de 180° et faire les 360°?

Merci pour vos réponses.



Bonjour
puisque tu es en science de l'ingenieur, commence déjà par raisonner comme un futur ingenieur !  :smiley-mr-green:
reflechi aux possibilités, meme les plus farfelues avant d'en evacuer pour telle ou telle raisons.

question liminaire : cette course sur 360° est imperative ?

1ere question : c'est foutu comment un servo basique 0/180° et que faudrait il faire et où pour que la course angulaire "apparente" passe de 0/180° à 0/360°?

edwinre

Merci pour le shield.

Pour le servo, il me faut une course supérieure à 180°, comment faire?
Le servo dont je dispose à ces caractéristiques suivantes:
Couple: 5.5 kg/cm
Course: 0.19 secs /60°
Dimensions: 41*20*41
Poids: 64g
Tension in: 4.8-6 V
Conso repos/travail: 2/180 mAh
conso charge max: 500 mAh
paliers: 2 roulements
pignons: métal

Artouste



Pour le servo, il me faut une course supérieure à 180°, comment faire?


une course > à 180° n'implique pas nécessairement une course de 360°  :smiley-mr-green:

edwinre

Pour le servo, le problème est réglé, j'en ai trouvé un qui avait une course à 360°.
Merci.

papybricol

Bonjour,

Un comme celui-ci? http://www.zartronic.fr/servo-df05sr-%C3%A0-rotation-%C3%A0-360-degr%C3%A9s-55kg-p-301.html

Si c'est pour faire rouler un mobile d'accord, si c'est pour tenir une position angulaire entre 0 et 360 il ne peut pas.
Je te laisse lire la doc...d'ailleurs au titre trompeur et mensonger!
La vraie fonction est "à rotation continue".

Un autre de 0 à 1260°  :smiley-mr-green:  ,  http://www.robotshop.com/ProductInfo.aspx?pc=RB-Hit-53
lui tient la position. 

Pour les servos, il y a du choix, le tout c'est de trouver le bon   ;)

Bonne recherche.





...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

papybricol

#7
Jan 19, 2013, 04:23 pm Last Edit: Jan 19, 2013, 06:24 pm by papybricol Reason: 1
et pour le programme:

delay (100) c'est du brutal!  si la variation de l'angle est grande, voire extrême, entre 2 cycles loop. ça va remuer!
Voir si la mécanique le permet.
Commencer par un delay long est toujours prudent. Le raccourcir lors de la mise au point.

Edit:
avec des servos standards la vitesse maxi est voisine de 200ms pour 60°. Donc avec un delay(100) + des broutilles (analogRead...)   dans la boucle, le servo n'a même pas le temps de finir  son angle de 60°.
Si angle_servo varie progressivement d'un cycle à l'autre, c'est jouable.
...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

edwinre

Merci. Pour le projet, je vais rester sur un servo à course de 180° car l'angle maximun que je devrais avoir est de 90°.

Pour le temps du delay, je vais sans doute passer à 300 ms même si le temps que j'ai est bon et fonctionne avec les essais que j'ai pus effectuer.

Mon programme doit contrôler deux servomoteurs, comment faire? Dois-je multiplier par deux mon programme en changeant les broches de branchement?

Je vais utiliser un wifi shield pour le contrôle du moteur à distance.
Pour le contrôle des roues motrices du robot, dois-je utiliser un motor shield?
Pour le contrôle total des moteurs à distance, qui se fera sans doute par joystick, dois-je prévoir une sorte de joystick shield?
Pour l'alimentation de tous les shields et de la carte arduino, comment les alimenter car la batterie sera embarquée sur le robot et non sur secteur ou sur pc?

Christian_R

Sur quoi sera connecté le joystick, une seconde carte Arduino servant de télécommande wifi, ou sur un PC ?
Christian

edwinre

Je pense plutôt pc mais la seconde carte arduino serait une bonne idée

edwinre

Bonjour à tous, je voudrais savoir quels étaient les différences entre:

Adafruit Motor / Stepper / Servo Shield - v1.0
et
Arduino Motor Shield Rev3
et
Arduino Motor Shield Rev3 - Retail

Et entre:
Joystick Shield Kit
et
Joystick TINKERKIT

Pour la batterie située sur le robot, avez-vous une idée de références ainsi que comment alimenter les cartes arduino à partir de ces batteries?
Auriez-vous aussi une idée des références concernant des servomoteur pour contrôler une barre de direction sur un robot, pour contrôler une inclinaison d'un robot? Et des références concernant des moteurs à courant continu pour les roues motrices du robot?

Merci

Christian_R

#12
Jan 20, 2013, 01:13 pm Last Edit: Jan 20, 2013, 01:15 pm by Christian_R Reason: 1
Il semble préférable d'alimenter ton robot sauteur sur pile (9V ) ou avec une petite batterie rechargeable (les Lipo sont très légères) plutôt qu'avec un grand fil.
La carte Arduino accepte jusqu'à 12V en entrée, elle a son propre convertisseur 5V intégré.
L'idéal est de choisir des petits moteurs de moins de 12V pour avoir une alimentation commune à Arduino et à la partie puissance.

La plupart des servomoteurs usuels et moteurs CC devraient pouvoir marcher, sauf si ton engin est particulièrement lourd/encombrant. Mais je présume que ce sera léger si ça doit pouvoir sauter.

Le branchement d'un joystick sur un Arduino est très simple (c'est juste 2 résistances variables) et ça ne prend que 2 entrées + 2 fils d'alim, donc pas forcément besoin d'un shield spécifique pour connecter ça, sauf si tu es allergique au fer à souder.
http://www.arduino.cc/en/Tutorial/JoyStick

Quelle est la tension de fonctionnement du vérin qui sert à sauter, et sa puissance ?
Christian

edwinre

Merci.
Pour les moteurs à courant continu des roues motrices ou des servomoteurs, faut-il un shield comme dit précedemment?

Récapitulatif:

     - Dans le robot:
- Shield wifi
- Carte arduino
-  moteurs cc et 2 servo
- vérin et distributeur
- batterie

     - A distance:
- Moyen de contrôle

Une question, comment contrôler le robot en wifi avec l'arduino?
Le code que j'ai pour contrôler le servomoteur, comment dois-je faire si je dois en contrôler deux? Dois-je multiplier le code par deux et mettre des entrées doubles?

Christian_R

Un servomoteur (3 fils :+V, Gnd et commande) se pilote avec 1 seule sortie Arduino , pas besoin de shield.

Un moteur CC peut se contrôler de nombreuses manières .
- Simple marche/arrêt : un relais ou un transistor
- Changement de sens de rotation : pont en H
- Variations de vitesse : impulsions pwm
Que devra faire le moteur ?

Il faut utiliser une broche par servo, et du code spécifique à chacun.
Par contre la librairie servo n'est incorporée qu'une seule fois en début de code.
Christian

Go Up