Robot sauteur

edwinre:
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 ?

#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 ! :grin:
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°?

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: 412041
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

edwinre:
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° :grin:

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

Bonjour,

Un comme celui-ci? http://www.zartronic.fr/servo-df05sr-à-rotation-à-360-degrés-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° :grin: , 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 :wink:

Bonne recherche.

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.

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?

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

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

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

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.

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

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?

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.

Le moteur cc devra faire avancer le robot en marche avant, arrière, plus ou moins vite.

Pour la batterie, comment faire, quelles référence de lipo irait le mieux avec l'utilisation préconisée (2 voire 3 servos, 2 moteurs cc, un vérin, un distributeur, la carte arduino, le shield wifi)? Comment ensuite connectée la batterie à tout car ce sont des connecteurs comme les servos?

Pour la carte, quels références de cartes iraient le mieux pour cette utilisation?

Pour le programme qui contrôle les deux servos, celui-ci marcherait-il?

#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
const int POS_MIN_2=550; // mise a zero pour un servomoteur position minimale
const int POS_MAX_2=2330; // position maximale servomoteur

int angle_servo=x; //angle voulu

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

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

Servo mon_servo; // pour le control du servomoteur
Servo mon_servo_2; // pour le control du servomoteur

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

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

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

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

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

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

edwinre:
Le moteur cc devra faire avancer le robot en marche avant, arrière, plus ou moins vite.

Dans ce cas regarder du côté des ponts en H et commande par impulsions PWM (composant : L298 ou motor shield)

Choix de batterie : en fonction de ce que consomme le montage complet et la durée d'autonomie souhaitée.

Pour les moteurs a cc, pas de problemes pour les programmes, je vais me pencher sur les ponts en h.

Pour les batteries, lesquelles tiennent mieux au niveau de temps et de durée? Les piles, les lipos, les lifes, les Nimh ou celles au plomb?

Pour la direction du robot, que conseillez-vous, une barre de direction reliée à un servomoteur ou un système qui injecte plus ou moins de courant pour tourner?

Merci

Batterie : à tension et Ampère.heure identiques l'autonomie sera la même.

  • Piles jetables pas très écolo, des rechargeables c'est mieux.
  • Le LiPo a besoin d'un chargeur un peu plus cher.
  • Le poids des Pb est assez élevé.

Quand le robot saute, il retombe forcément sur ses roues ?
.

Et quand est-il des lifes et des Nimh?

Le robot retombe forcément sur ces roues quand il saute. Le problème c'est quand il retombe, on ne sait pas si c'est sur le ventre ou le dos donc il faudrait créer un système qui indique si il retombe sur le ventre ou sur le dos afin que les deux servos qui commande l'inclinaison du robot avant son saut se déploient soit sur le dos soit sur le ventre à moins qu'il y est un système qui le fait retomber que sur le dos ou le ventre ou que sur les roues arrière ou avant.

Pour les moteurs cc, vaut mieux utiliser un L298 ou un motor shield? sachant qu'il y a deux moteurs cc car deux roues motrices, et si on prend les ponts en H, il en faut deux ou juste un seul?

Où peut-on voir et comparer les moteurs cc, les servos et les pont en H?

Et pour le code pour contrôler les deux servomoteurs, fonctionne-t-il?

Bonjour à tous,

Pour le vérin qui fera sauter le robot, il nous faut des cartouches de gazs, du CO2 ou NO2. En existe-t-il adaptées au vérin et aux cartes arduino? Où en trouver?

Merci