{"id":34,"date":"2015-02-18T05:02:03","date_gmt":"2015-02-18T05:02:03","guid":{"rendered":"https:\/\/possibleapp.com\/blog\/?p=34"},"modified":"2016-05-20T15:48:44","modified_gmt":"2016-05-20T15:48:44","slug":"control-de-motor-paso-a-paso-con-arduino","status":"publish","type":"post","link":"https:\/\/possibleapp.com\/blog\/2015\/02\/control-de-motor-paso-a-paso-con-arduino\/","title":{"rendered":"Control de Motor a Pasos con Arduino UNO."},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" title=\"Control de un Motor a Pasos con Arduino.\" width=\"1080\" height=\"810\" src=\"https:\/\/www.youtube.com\/embed\/-1muKnzJ0pw?feature=oembed\"  allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<p>Los motores paso a paso son ideales para la construcci\u00f3n de mecanismos en donde se requieren movimientos muy precisos.<!--more--><\/p>\n<p>La caracter\u00edstica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90\u00b0 hasta peque\u00f1os movimientos de tan solo 1.8\u00b0, es decir, que se necesitar\u00e1n 4 pasos en el primer caso (90\u00b0) y 200 pasos para el segundo caso (1.8\u00b0), para completar un giro completo de 360\u00b0.<\/p>\n<p>Estos motores poseen la habilidad de poder quedar enclavados en una posici\u00f3n o bien totalmente libres. Si una o m\u00e1s de sus bobinas est\u00e1n energizadas, el motor estar\u00e1 enclavado en la posici\u00f3n correspondiente y por el contrario quedar\u00e1 completamente libre si no circula corriente por ninguna de sus bobinas.<\/p>\n<p>A continuaci\u00f3n se muestra como realizar la conexi\u00f3n f\u00edsica de un motor a pasos en conjunto con un microcontrolador Arduino Uno y un circuito integrado ULN2003A para llevar a cabo el funcionamiento del motor en 4 posiciones distintas, cada una de ellas de 90 grados.<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p style=\"text-align: left;\"><strong>Material:<\/strong><\/p>\n<ul style=\"text-align: left;\">\n<li>Microcontrolador Arduino UNO (Puede ser tambien Arduino MEGA)<\/li>\n<li>Circuito integrado ULN2003A<\/li>\n<li>Motor a Pasos Unipolar de 5 o 6 hilos<\/li>\n<li>Protoboard<\/li>\n<li>Cable para conectar componentes<\/li>\n<li>Fuente de Alimentaci\u00f3n<\/li>\n<\/ul>\n<p style=\"text-align: left;\"><strong>Diagrama de conexi\u00f3n para funcionamiento de motor a pasos:\u00a0<\/strong><\/p>\n<p style=\"text-align: left;\">En este diagrama se muestra la forma de conectar el circuito con cada uno de los componentes necesarios. Cabe se\u00f1alar que la conexi\u00f3n puede variar dependiendo del modelo de\u00a0cada motor para lo cual basta con identificar sus cables comunes y conectarlos\u00a0<span style=\"line-height: 1.5;\">a la l\u00ednea de alimentaci\u00f3n del circuito.<\/span><\/p>\n<p style=\"text-align: left;\"><a href=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/Diagrama-de-MPP-Unipolar_bb1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-44\" src=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/Diagrama-de-MPP-Unipolar_bb1-300x125.jpg\" alt=\"Diagrama de MPP Unipolar_bb\" width=\"518\" height=\"216\" srcset=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/Diagrama-de-MPP-Unipolar_bb1-300x125.jpg 300w, https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/Diagrama-de-MPP-Unipolar_bb1-1024x426.jpg 1024w, https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/Diagrama-de-MPP-Unipolar_bb1-1272x529.jpg 1272w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><\/p>\n<p style=\"text-align: left;\"><strong>Diagrama interno del circuito integrado ULN2003A<\/strong><\/p>\n<p style=\"text-align: left;\">Este diagrama muestra los pines de entradas, salidas del integrado que nos permite incrementar el voltaje que se le suministra al motor. Para mayor informaci\u00f3n acerca de este integrado se recomienda revisar su datasheet en la siguiente liga. <a href=\"http:\/\/www.ti.com\/lit\/ds\/symlink\/uln2003a.pdf\">http:\/\/www.ti.com\/lit\/ds\/symlink\/uln2003a.pdf<\/a><\/p>\n<p style=\"text-align: left;\"><a href=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/uln2003a.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-37\" src=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/uln2003a-281x300.jpg\" alt=\"uln2003a\" width=\"402\" height=\"429\" srcset=\"https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/uln2003a-281x300.jpg 281w, https:\/\/possibleapp.com\/blog\/wp-content\/uploads\/2015\/02\/uln2003a.jpg 315w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/a><\/p>\n<p style=\"text-align: left;\"><strong>C\u00f3digo de control <\/strong><\/p>\n<p style=\"text-align: left;\">Recuerden guardar el c\u00f3digo con la extensi\u00f3n .ino para que pueda funcionar correctamente el Sketch en el IDE de Arduino.<\/p>\n<p style=\"text-align: left;\"><!--?prettify linenums=true?--><\/p>\n<pre class=\"prettyprint\">\/Control de MOTOR a Pasos en Secuencia Normal (2 bobinas activadas por cada paso) para 4 estaciones\r\n\r\nint motorPin1 = 8; \/\/ Pines del Motor\r\nint motorPin2 = 9;\r\nint motorPin3 = 10;\r\nint motorPin4 = 11;\r\nint delayTime = 3000; \/\/ DelayTime determina la espera entre uno y otro paso\r\nint delayTime1 = 100; \/\/ DelayTime1 determina la velocidad de giro entre uno y otro paso\r\nint count = 0;\r\n\r\nvoid setup()\r\n{\r\npinMode(motorPin1, OUTPUT); \/\/ Configuraci\u00f3n de los Pines como salida digital\r\npinMode(motorPin2, OUTPUT);\r\npinMode(motorPin3, OUTPUT);\r\npinMode(motorPin4, OUTPUT);\r\n}<\/pre>\n<pre class=\"prettyprint\">\/\/Control de MOTOR a Pasos en Secuencia Normal (2 bobinas activadas por cada paso) para 4 estaciones\r\n\r\nint motorPin1 = 8; \/\/ Pines del Motor\r\nint motorPin2 = 9;\r\nint motorPin3 = 10;\r\nint motorPin4 = 11;\r\nint delayTime = 3000; \/\/ DelayTime determina la espera entre uno y otro paso\r\nint delayTime1 = 100; \/\/ DelayTime1 determina la velocidad de giro entre uno y otro paso\r\nint count = 0;\r\n\r\nvoid setup()\r\n{\r\npinMode(motorPin1, OUTPUT); \/\/ Configuraci\u00f3n de los Pines como salida digital\r\npinMode(motorPin2, OUTPUT);\r\npinMode(motorPin3, OUTPUT);\r\npinMode(motorPin4, OUTPUT);\r\n}\r\n\r\nvoid loop()\r\n{\r\n\r\nfor (count = 0; count &lt; 3; count++) \/\/ Aqui en el for es donde se manipulan los grados que se desean asignar al motor\r\n{\r\n\r\n<\/pre>\n<pre class=\"prettyprint\">\/\/ Los pines se activan en secuencia de las manecillas del reloj\r\n\r\n\/\/ Punto A (Primero)\r\ndigitalWrite(motorPin1, HIGH); \/\/cafe \u2013 A\r\ndigitalWrite(motorPin2, LOW); \/\/negro \u2013 B\r\ndigitalWrite(motorPin3, LOW); \/\/morado \u2013 C\r\ndigitalWrite(motorPin4, HIGH); \/\/naranja \u2013 D\r\ndelay(delayTime1); \/\/ Un micro segundo de espera\r\n\r\n\/\/ Punto B (Segundo)\r\ndigitalWrite(motorPin1, HIGH);\r\ndigitalWrite(motorPin2, HIGH);\r\ndigitalWrite(motorPin3, LOW);\r\ndigitalWrite(motorPin4, LOW);\r\ndelay(delayTime1);<\/pre>\n<div style=\"display: none;\">} \/\/End For}\/\/End Loop\/\/\/\/\/\/\/\/\/<\/div>\n<p><!--?prettify linenums=true?--><\/p>\n<pre class=\"prettyprint\">\/\/ Punto C (Tercero)\r\ndigitalWrite(motorPin1, LOW);\r\ndigitalWrite(motorPin2, HIGH);\r\ndigitalWrite(motorPin3, HIGH);\r\ndigitalWrite(motorPin4, LOW);\r\ndelay(delayTime1);\r\n\r\n\/\/ Punto D (Cuarto)\r\ndigitalWrite(motorPin1, LOW);\r\ndigitalWrite(motorPin2, LOW);\r\ndigitalWrite(motorPin3, HIGH);\r\ndigitalWrite(motorPin4, HIGH);\r\ndelay(delayTime1);\r\n\r\n} \/\/End For\r\n\r\ndelay(delayTime); \/\/ Se espera 3 segundos despues de cada paso y al iniciar la secuencia\r\n\r\n}\/\/End Loop<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Los motores paso a paso son ideales para la construcci\u00f3n de mecanismos en donde se requieren movimientos muy precisos.<\/p>\n","protected":false},"author":1,"featured_media":84,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-34","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tuturiales"],"_links":{"self":[{"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/posts\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/comments?post=34"}],"version-history":[{"count":22,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/posts\/34\/revisions"}],"predecessor-version":[{"id":804,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/posts\/34\/revisions\/804"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/media\/84"}],"wp:attachment":[{"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/media?parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/categories?post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/possibleapp.com\/blog\/wp-json\/wp\/v2\/tags?post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}