Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies. En savoir plus

MARGOT la femme ROBOT pleine de charme

Sauvegarder: 3 J'aime

Partager:

Difficulté:

lancez vous.



avec ce tutoriel vous apprendrez à utiliser au moins 6 servomoteurs fonctionnant simultanément en n’utilisant que l’alimentation d’une petite carte ARDUINO, sans prévoir d’alimentation externe . c’ est assez pratique si vous concevez un bras robotisé par exemple.
– L’idée m’est venue dans un souci de simplicité . Je n’avais pas envie de gérer une batterie supplémentaire pour MARGOT.

Matériel :

Budget : 1€

  • J’ai utilisé:
  • – une carte Arduino
  • – 3 SERVOS FUTABA S3001
  • – 8 SERVOS TowerPro SG90 9G Mini Servo

Etape 1 : présentation de MARGOT

En 2015 Mon fils de 16 ans en première scientifique m’a dit papa, le thème de mon TPE est la robotique et j’aimerais que tu m’aides à construire un robot ! Je lui ai répondu pas de problème.

Au début n’ayant aucune notion de programmation et de robotique nous avions un projet ambitieux : présenter un dispositif fait maison qui devait permettre d’allumer une lampe en claquant des doigts.
Nous avons donc commandé une carte arduino + un capteur de son + une diode + une résistance . Nous nous attendions à souder, à programmer pendant des semaines, cependant, à notre grand étonnement, la mise au point du dispositif fut très rapide.
Nous avons donc compliqué notre projet en remplaçant la diode par une lampe branchée sur un relai 5 v. Puis avons remplacé le relai par un émetteur 433 mzz commandant une lampe sans fil . Puis nous avons rajouté une carte de reconnaissance vocale easy VR pour commander la lampe à la voix, mais nous étions limités à 30 phrases et devions enregistrer les réponses du robot à l’avance . Nous avons donc découvert le langage Python qui fonctionne sur tout système . Il était maintenant possible de reconnaître toutes les phrases possibles, et de faire prononcer au robot tous les textes possibles .
Disposant d’une imprimante 3D depuis début 2015 nous avons décidé d’imprimer un support pour le robot . Puis une tête articulée qui bougeait comme C3 PO dans starWars , puis nous avons compliqué le programme, et appris à utiliser un bon logiciel de 3D Blender car avant, nous fabriquions les pièces sous SKETCH UP (maitrisable en 6 H) mais n’étions pas capables de créer des pièces concaves et convexes .
Nous étions peu formés en mécanique mais avons appris 2 principes assez simples Le fonctionnement des ressorts de compensation (comme sur les lampes d’architectes), et le principe du fonctionnement des engrenages.
nous avions enfin le minimum requis pour créer un humanoïde, Margot est ainsi née en février 2015.
Nous aurions pu aborder la conception 3 D, l’impression de pièces mécaniques fines, la démultiplication mécanique de force de servos standard, la reconnaissance vocale , la synthèse vocale, la transmission 433 mzz la simulation d’intelligence artificielle , la caption d’informations sur internet, mais tout cela existe déjà sur le net.
Nous allons donc vous parler d’une petite combine je l’espère innovante, qui permet d’utiliser plus de 3 servos moteurs simultanément sur une carte Arduino, sans utiliser de batterie auxiliaire pour les servos mais simplement l’alimentation de l’ arduino .
C’ est très intéressant si vous voulez utiliser un dispositif connecté à un Pc, un bras articulé par exemple, ou comme moi utiliser un humanoïde. Vous branchez le câble USB et c’est tout.

Etape 2 : L’ astuce

Petit rappel : si nous comparons le courant électrique à un fleuve :
La Tension en volt -> c'est la largeur d'un fleuve.
l'Intensité en ampère -> c'est la vitesse du passage de l'eau

Pourquoi sommes nous limités à utiliser simultanément que 2à3 servos standards ou 6à8 mini servos sur nos cartes arduino reliées par usb à un pc, tout simplement à cause de l' intensité (vitesse de passage) du courant délivrée par la broche 5V de nos cartes arduino, soit 500mA.

Si divers capteurs ainsi que les servos pompent trop d' intensité, la carte ne dispose plus assez d' intensité pour fonctionner, et plante.

Comment l' astuce fonctionne :
les cartes arduino sont livrées avec la library Servo
qui permet d' utiliser très simplement des servomoteurs de modélisme. Un exemple d' utilisation:

met le servo sous tension
réalise un mouvement (par exemple place le palonnier à 180 °)
attend un peu (le temps de faire le mouvement)
débranche le servo .

Si vous voulez ralentir la vitesse des servo il faut réaliser des petites pauses entre chaque mouvements du servo par exemple :

initialisation
met le servo sous tension
place le palonnier à 0 °
attend un peu (le temps de faire le mouvement)

programme principal (à exécuter en boucle) .

Si la position du palonnier n' est pas à 180° :
rajoute 1 à la position du servo 1.
Fait une petite pause de 0,4 secondes.

Il est également possible d' écrire l' algorithme du programme principal ainsi:
en créant une variable qui enregistre le temps écoulé depuis le début du programme
la variable lngTemps , ainsi le programme n' est pas bloqué en pause à attendre que le mouvement de 1° soit réalisé, il continu d' exécuter le programme principal en boucle.

Programme principal (à exécuter en boucle) .
Si lngTemps + 0,4 secondes < temps
Si la position du palonnier n' est pas à 180° :
rajoute 1 à la position du servo 1.
lngTemps = temps

en ajoutant à notre programme un booléen (un type de variable à 2 valeurs possibles vrai ou faux) , la variable 'bolutilisationduservo1 ' il est possible d' utiliser le temps d' inaction du servomoteur 1 pour bouger un autre servomoteur.

Programme principal (à executer en boucle) .

Si lngTemps + 0,2 secondes < temps

si bolutilisationduservo1 == vrai
debrancher le servo 2
brancher le servo 1
si la position du palonnier du servo 1 n' est pas à 180° :
rajoute 1 à la position du servo 1.
bolutilisationduservo1 = faux

ou
debrancher le servo 1
brancher le servo 2
si la position du palonnier du servo 2 n' est pas à 180° :
rajoute 1 à la position du servo 2.
bolutilisationduservo1 = vrai

lngTemps = temps

Voilà le principe de l'astuce :
un servomoteur est débranché pendant que l'autre effectue un mouvement de 1°.
Les 2 servomoteurs semblent bouger ensemble et le mouvement reste fluide.
Ainsi, l'intensité sollicitée pour assurer le fonctionnement des 2 servomoteurs est divisée par 2.
voici un extrait du programme de Margot, ou 11 servomoteurs semblent bouger ensemble sans que la carte plante.

//*****************************************************************************************
//*********************************** parler **********************************************
//*****************************************************************************************
void proParler()
{
if (lngChronoMicroPauseMachoire + intVitesseMachoire < millis())
{
proMouvement_Machoire();
lngChronoMicroPauseMachoire = millis();
}

if (lngChronoMicroPause_Cou_Yeux + intVitesseCou< millis())
{

if (boolCouActifs == true)
{
Servo_EyeR_Lid1.detach();
Servo_EyeR_Lid2.detach();
Servo_EyeL_Lid1.detach();
Servo_EyeL_Lid2.detach();
Servo_EyeR_GD.detach();
Servo_EyeL_GD.detach();
Servo_EyeR_HB.detach();
Servo_EyeL_HB.detach();

ServoGauche.attach(7);
ServoDroit.attach(8);
Servo_Machoire.attach(25);
proMouvement_cou();
boolCouActifs = false;
}
else
{

ServoGauche.detach();
ServoDroit.detach();
Servo_Machoire.detach();
if(int_Etat_Clignement == 0)
{
Servo_EyeR_Lid1.attach(11);
Servo_EyeR_Lid2.attach(12);
Servo_EyeL_Lid1.attach(23);
Servo_EyeL_Lid2.attach(24);
Servo_EyeR_GD.attach(9);
Servo_EyeL_GD.attach(13);
Servo_EyeR_HB.attach(10);
Servo_EyeL_HB.attach(22);
proMouvement_Yeux();
}
boolCouActifs = true;
}

lngChronoMicroPause_Cou_Yeux = millis();
}

if (lngChronoMicroPausePaupieres + intVitessePaupiere < millis())
{
proClignerYeux();
}
}

Tigroux
02 - 10 - 2016 : 00:00

Salut bon là j'ai pas beaucoup de temps là, mais j'ai testé le silicone : http://www.ebay.com/itm/TFC-Silikon-Kautschuk-Typ-13-transluzent-Shore-00-1kg-1-1-super-weich-soft-/360964313755?hash=item540b26529b:g:E4QAAOSwQJhUj~tJ C'est un bi composant et c'est vraiment bien par contre y a plusieurs variantes moi j'ai testé que le type 13. Cela polymérise très vite y faut le pigmenter. Ça fait un beau résultat, mais c'est fragile et une fois crystalisé ce n’est pas remaniable. Le top serait du TPV pour thermos plastique vulcanisé, mais je n'en ai pas trouvé. Ce plastique font au-delà de 60° et il est modulable à souhait et hyper élastique, etc. C'est à mon sens le mieux. On reste en contact je trouve votre projet en phase avec ce que je fais déjà.

Tigroux
02 - 10 - 2016 : 00:00

re, pour corriger je dirais qu'il faut plutôt du TPE et non du TPV. A+

Tigroux
02 - 10 - 2016 : 00:00

Je suis en train de regarder rapidement. Il faut chercher un TPE durometer scale proche de 0. L'unité est précédé d'un A par exemple celui là est trop dure : http://www.globalsources.com/si/AS/Jiangsu-Jinling/6008847422394/pdtl/TPE-SEBS-Compound/1121280187.htm

Tigroux
02 - 10 - 2016 : 00:00

Je sais je fais plein de message :) mais c'est pour la bonne cause. Bon je pense avoir trouvé une solution acceptable, je vais tester et je vous dirais. L'idée c'est que ce soit DU TPE, TPR ou TPV, il faut que ce soit assez soft du coup j'ai commandé des jouer adule sur aliexpress qui sont sensé être dans ce matériaux et ça devrait pouvoir se refondre... Gros avantage c'est déjà couleur peau... Cela revient à environs 50€ le kilo... A dans 3 ou 4 semaines.

Sauvegarder: 3 J'aime

Partager:

Recevez une fois par mois les meilleurs tutoriels Déco dans votre boîte mail


Ces tutoriels devraient vous plaire

Redonnez vie à vos anciens ordinateurs avec Chrome OS
Ruban à leds RGB connecté
Montez votre console de jeu rétrogaming multi-plateformes avec RECALBOX !

SEGOT

Suivre

Vues: 598
J'aime: 3

Découvrez d'autres tutoriels de

SEGOT

Découvrez tous les tutoriels partagés sur Oui Are Makers