drawbotmain

Séance 2 | Drawbot

Deter­mi­ner la contrainte sous la forme d’un sys­tème méca­nique et d’un programme.

Concep­tion et réa­li­sa­tion d’un DRAWBOT.

Draw­bot est la contrac­tion de “dra­wing” et de “robot”, lit­té­ra­le­ment machine à des­si­ner, Il s’agit d’imaginer de nom­breuses dévia­tions par rap­port aux sys­tèmes d’impression clas­siques que sont les impri­mantes par exemple.

Les draw­bots vont du simple bri­co­lage jusqu’à des réa­li­sa­tions très com­plexes (polar­graph, plot­ter à dessiner…)

www.reso-nance.org

www.hackaday.com

Quelques exemples de des­sins réa­li­sés au polargraph

Démo

Le prin­cipe

Le dépla­ce­ment du crayon est généré par la rota­tion de deux ou trois moteurs. Un Draw­bot est consti­tué à minima d’un chas­sis, de deux moteurs avec roue, d’un crayon, une d’une carte arduino.

La dif­fi­culté pourra rési­der dans la tra­duc­tion du dépla­ce­ment linéaire (des­sin) avec des moteurs qui eux uti­lisent la rotation.

Les moteurs

Ils existent trois types de moteurs pos­sibles : les servo moteurs, les moteurs à cou­rant continu (DC) et les moteurs pas à pas. →voir ici

Deux choix sont pos­sibles pour cette séance : soit uti­li­ser des moteurs continu à réduc­tion, soit des ser­vos moteurs.

Les moteurs à cou­rant continu

M3J-moteur-DC

Il faut choi­sir des moteurs avec boite de reduc­tion. Les moteurs à cou­rant continu ont une grande vitesse de rota­tion, il faut donc qu’il pos­sède un sys­tème de réduc­tion pour avoir des vitesses de rota­tions uti­li­sables pour un draw­bot : →voir ici
Avantage/inconvénient : moindre cout, couple moteur faible, plus dif­fi­cile à cabler (com­po­sant supplémentaire)

Les ser­vos moteurs

servomoteur

Les ser­vos moteurs emportent avec eux une élec­tro­nique de com­mande et sur­tout pos­sèdent un angle de rota­tion pré­dé­fini. (60°, 180°, 360°). Par exemple un servo moteur de 60° peut tour­ner de 60° à gauche et 60° à droite, soit un angle de rota­tion totale de 120°. →voir ici
Il existe éga­le­ment des ser­vos moteurs à rota­tion continu mais sont sou­vent plus cou­teux.
Avantage/inconvénient : plus oné­reux, couple moteur fort, faci­lité de câblage.

Solu­tion alternative:

Il existe une solu­tion alter­na­tive qui consiste à modi­fier un ser­vo­mo­teur en moteur à rota­tion continu. Cette solu­tion à l’avantage d’obtenir une rota­tion continu à moindre cout.

Ce prin­cipe consiste à démon­ter le servo moteur, de déso­li­da­ri­ser le poten­tio­mètre qu’il y a à l’intérieur du servo moteur et de sup­pri­mer une petite butée qui empêche la rota­tion continu. Ensuite fixez la posi­tion médiane : il suf­fit d’alimenter le ser­vo­mo­teur et lui don­ner la consigne cor­res­pon­dant à l’arrêt ( voir pro­gramme ci des­sous “centering_ stop_servo”) et faire tour­ner le poten­tio­mètre jusqu’à ce que le moteur s’arrête. Col­ler le poten­tio­mètre avec de la super glue.
vidéo 1

solu­tion 2 : Sup­pri­mer la butée, et rem­pla­cer le poten­tio­mètre par un pont de deux resis­tance de 2,5k.
video 2

code :
Posi­tion­ner le servo moteur au centre : → centering_stop_servo

Trou­ver la posi­tion médiane d’un servo moteur modi­fié : → trouver_le_point_neutre
(Ne pas oublier d’actionner le moni­teur, icône en haut à droite de la fenêtre Arduino)

Schéma de branchement

Connec­tique

Le ser­vo­mo­teur a besoin de trois fils de connexion pour fonc­tion­ner. Deux fils servent à son ali­men­ta­tion, le der­nier étant celui qui reçoit le signal de commande :

rouge : pour l’alimentation posi­tive (4.5V à 6V en géné­ral)
noir ou mar­ron : pour la masse (0V) – GND sur la carte Arduino
orange, jaune, blanc, … : entrée du signal de commande

Bran­che­ment d’un ser­vo­mo­teur sur la carte arduino

branchement_servo

Bran­che­ment de deux ser­vo­mo­teur sur la carte arduino

2_servo_bb

Maté­riel

  • Deux ser­vos moteurs
  • une carte arduino uno
  • une pile 9v avec conecteur
  • une bread board
  • des cor­dons male/male
  • deux roues
  • bois, carton,colle etc….

Le code

# include <Servo.h>; // Pour commencer on appelle la libraire servo

Servo monservo; // on rentre une variable pour son servomoteur

void setup()
{
monservo.attach(9); // On attache le servomoteur à la patte 9 de l'arduino
}
void loop()
{
monservo.writeMicroseconds(1000); // le servo moteur tourne à la vitesse maximale en arriére.
}

Un servo moteur fonc­tionne avec une posi­tion neutre,( pas de rota­tion) et une rota­tion soit avant, soit arrière.

Com­man­der un servo s’écrit soit en degré de rota­tion, soit en micro secondes. Atten­tion car la posi­tion neutre ne cor­res­ponds pas 0 micro­se­conde ou 0 degré.

rotation

exemple

servo.write (180) ou servo.writeMicroseconds(2000) : le moteur tourne à sa vitesse max dans un sens.
servo.write (0) ou servo.writeMicroseconds(1000); le moteur tourne a sa vitesse max dans l’autre sens.

si on veut arrê­ter un moteur il suf­fit de lui attri­buer la valeur de 90° ou 1500 Micro­se­condes.
Il faut éga­le­ment défi­nir un temps de rota­tion en attri­buant un delay. un delay de 1000 équi­vaut à une seconde.
Un exemple de code pour faire un cercle en avant puis en arrière: →exemple

Sources, réfé­rences

Un mon­tage Draw­bot en PDF→ Arduino-Drawbot

→ www.instructables.com

www.rasterweb

Doo­dle Bot

www.behance.net

0