{"id":709,"date":"2011-06-20T20:08:17","date_gmt":"2011-06-20T18:08:17","guid":{"rendered":"http:\/\/electronicapractica.crearblog.com\/?p=709"},"modified":"2019-06-13T19:39:16","modified_gmt":"2019-06-13T17:39:16","slug":"motores-pap-unipolares","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/motores-pap-unipolares","title":{"rendered":"Motores PaP Unipolares"},"content":{"rendered":"<h2><strong><span style=\"color: #003366;\">Prologo.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Esta documentaci\u00f3n, pretende ser una aproximaci\u00f3n pr\u00e1ctica a las formas de control de motores paso a paso, tambi\u00e9n conocidos en la terminolog\u00eda inglesa como, stepper&#8217;s. Hemos de distinguir entre dos tipos de motores paso a paso, podemos encontrar motores bipolares y motores unipolares. Este, es el que vamos a tratar en este art\u00edculo, los motores unipolares.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/motor04.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-915\" title=\"motor04\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/motor04.jpg\" alt=\"\" width=\"240\" height=\"226\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">En este <a href=\"http:\/\/www.hispavila.com\/3ds\/tutores\/motorpap.html\" target=\"_blank\" rel=\"noopener noreferrer\">sitio<\/a>, puede encontrar un art\u00edculo m\u00edo, de hace algunos a\u00f1os que, trata extensamente sobre los motores paso a paso, donde puede disipar cualquier duda sobre los mismos. En ese documento, se hace un an\u00e1lisis de los tipos de motores paso a paso, su constituci\u00f3n, su l\u00f3gica y adem\u00e1s se presentan algunos ejemplo, con el uso del puerto paralelo del PC. La caracter\u00edstica principal de los motores paso a paso, es el hecho de poder moverlos un paso con cada impulso aplicado. Los pasos necesarios para dar un giro de 360\u00ba, depende de la constituci\u00f3n de cada motor, pueden variar desde 90\u00ba cada paso, a pasos de 1&#8217;8 grados por pulso.<!--more--><\/p>\n<p style=\"text-align: justify;\">Doy por sentado que el lector tiene conocimientos b\u00e1sicos sobre los motores paso a paso. En esta ocasi\u00f3n, vamos a abordar el tema desde la perspectiva pr\u00e1ctica en la que se propone la puesta en servicio de un control para un motor paso a paso del tipo unipolar.<\/p>\n<h2><strong><span style=\"color: #003366;\">Motor Unipolar.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Esta ser\u00eda, una descripci\u00f3n muy acertada sobre los motores paso a paso, podemos considerar que son una serie de electroimanes que rodean una armadura, formada por un im\u00e1n. Piense en una br\u00fajula con un eje conectado al centro de la aguja. La aguja se convierte en el rotor del motor. Para girar el rotor, se encienden y se apagan los electroimanes, por la parte exterior de la br\u00fajula, haciendo que la aguja de un \u00abpaso\u00bb (o punto) de un electroim\u00e1n al siguiente. Esta imagen mental, puede ayudar a ilustrar el movimiento dentro de un motor paso a paso.<\/p>\n<p style=\"text-align: justify;\">Los motores paso a paso unipolares, b\u00e1sicamente, se componen de dos bobinas, cada una con una derivaci\u00f3n en el centro. Las derivaciones del centro son llevadas fuera del motor como dos cables separados (como se muestra en la Figura 2) o conectados entre s\u00ed internamente y llevados fuera del motor como uno de los cables. Como resultado, los motores unipolares tienen 5 o 6 cables. Independientemente del n\u00famero de cables, los motores unipolares son manejados de la misma manera. El cable de toma central (s) est\u00e1 ligado a una fuente de alimentaci\u00f3n y los extremos de las bobinas son llevados alternativamente a tierra.<\/p>\n<p style=\"text-align: justify;\">Los motores unipolares paso a paso, como todos los motores de im\u00e1n permanente e h\u00edbridos, funcionan de manera diferente de los motores de reluctancia variable. En lugar de funcionar, minimizando la longitud de la trayectoria del flujo entre los polos del est\u00e1tor y los dientes del rotor, en la direcci\u00f3n del flujo de corriente a trav\u00e9s de los bobinados del est\u00e1tor, es irrelevante, estos motores funcionan mediante la atracci\u00f3n de los polos norte o sur permanentemente el rotor magnetizando a la polos del est\u00e1tor.<\/p>\n<p style=\"text-align: justify;\">As\u00ed, en estos motores, la direcci\u00f3n de la corriente a trav\u00e9s de las bobinas del est\u00e1tor determina que, los polos del rotor se sentir\u00e1n atra\u00eddos por los polos del est\u00e1tor. La orientaci\u00f3n de corriente en los motores unipolares, depende de que la mitad de una bobina se energiza. F\u00edsicamente, las dos mitades de las bobinas se enrollan paralelas entre s\u00ed. Por lo tanto, una de las partes o devanado, ya sea polo norte o sur, dependiendo de cual es la mitad que se alimenta.<\/p>\n<figure id=\"attachment_916\" aria-describedby=\"caption-attachment-916\" style=\"width: 255px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-916\" title=\"unipolar\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar.jpg\" alt=\"\" width=\"255\" height=\"131\" \/><\/a><figcaption id=\"caption-attachment-916\" class=\"wp-caption-text\">Motor b\u00e1sico unipolar<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">La figura que sigue, muestra la secci\u00f3n transversal de un motor paso a paso unipolar de 30 grados. El bobinado n\u00famero 1 del motor se distribuye entre los polos, parte superior e inferior del est\u00e1tor, mientras que la bobina n\u00famero 2 del motor, se distribuye entre los polos izquierdo y derecho del motor. El rotor es un im\u00e1n permanente con seis polos, tres al norte y tres al sur, como se muestra en esta figura.<\/p>\n<p style=\"text-align: justify;\">La diferencia entre un motor paso a paso de im\u00e1n permanente y un motor paso a paso h\u00edbrido, radica en c\u00f3mo se construyen el rotor multipolar y est\u00e1tor multipolar. Esta ser\u00eda una secuencia de 12 pasos para mover el motor.<\/p>\n<p><em>Ejemplo secuencia 1<\/em><br \/>\nWinding 1a: 100010001000<br \/>\nWinding 1b: 001000100010<br \/>\nWinding 2a: 010001000100<br \/>\nWinding 2b: 000100010001<\/p>\n<p style=\"text-align: justify;\">Nota: S\u00f3lo la mitad de cada bobina se activa en un tiempo en la secuencia anterior. Como antes, la siguiente secuencia girar\u00e1 del motor hacia la derecha 12 pasos o una revoluci\u00f3n.<\/p>\n<p><em>Ejemplo secuencia 2<\/em><br \/>\nWinding 1a: 110011001100<br \/>\nWinding 1b: 001100110011<br \/>\nWinding 2a: 011001100110<br \/>\nWinding 2b: 100110011001<\/p>\n<p style=\"text-align: justify;\">A diferencia de la primera secuencia descrita, en la segunda secuencia, dos mitades de la bobina se energizan al mismo tiempo. Esto le da al motor m\u00e1s par motor, pero tambi\u00e9n aumenta el consumo de energ\u00eda del motor. Cada una de las secuencias anteriores describe pasos simples o paso nominal en su tama\u00f1o paso a paso del motor (en este caso 30 grados). La combinaci\u00f3n de estas dos secuencias permite la mitad del motor paso a paso. La secuencia combinada se muestra en el ejemplo 4 (24 pasos por vuelta).<\/p>\n<p style=\"text-align: justify;\">Este m\u00e9todo mueve el motor en pasos que son la mitad de su tama\u00f1o de paso nominal. Es importante tener en cuenta que el par generado por el motor durante esta secuencia no es constante, como medidas alternas tienen mitades de uno y dos de un bobinado energizado, respectivamente.<\/p>\n<p><em>Ejemplo secuencia 3<\/em><br \/>\nWinding 1a: 11000001110000011100000111<br \/>\nWinding 1b: 00011100000111000001110000<br \/>\nWinding 2a: 01110000011100000111000001<br \/>\nWinding 2b: 00000111000001110000011100<\/p>\n<p style=\"text-align: justify;\">La figura anterior, muestra el motor unipolar m\u00e1s b\u00e1sico. Para mayor resoluci\u00f3n angular, el rotor debe tener m\u00e1s polos. Se han hecho rotores de imanes permanentes con 100 polos y esa cifra de polos es com\u00fanmente logrado para los rotores h\u00edbridos, usando dientes de tapas finales en un simple im\u00e1n permanente bipolar. Cuando el rotor tiene un recuento alto de polos, los polos del est\u00e1tor son siempre dentados de modo que cada bobina del est\u00e1tor va en contra de un gran n\u00famero de polos rotor.<\/p>\n<p style=\"text-align: justify;\">Para hacer girar un motor unipolar, se aplican impulsos en secuencia a sus devanados, la secuencia de estos impulsos, se aplican con un controlador electr\u00f3nico externo. Los controladores se dise\u00f1an de manera que el motor se pueda mantener en una posici\u00f3n fija y tambi\u00e9n para que se le pueda hacer girar en ambos sentidos. Los motores unipolares, se pueden hacer avanzar a frecuencias de audio, lo que les permite girar muy velozmente. Este es el motivo por que se suele decir que un motor \u00abcanta\u00bb, debido a la frecuencia a la que se produce la conmutaci\u00f3n. Con un controlador apropiado, se les puede hacer arrancar y detenerse en cualquier instante y en una posici\u00f3n determinada. Este es en teor\u00eda, el s\u00edmbolo de un motor unipolar.<\/p>\n<p style=\"text-align: justify;\">Har\u00e9 hincapi\u00e9 en este punto, el punto decisorio para mover un motor unipolar, estriba en la secuencia que se aplica a los devanados del mismo.<\/p>\n<p style=\"text-align: justify;\">Como ya se ha comentado, estos motores, tienen varios bobinados que, para producir el avance de un paso, deben ser alimentados en una secuencia adecuada. Al invertir el orden de esta secuencia, se logra que el motor gire en sentido opuesto. El torque de detenci\u00f3n hace que, un motor unipolar con tensi\u00f3n, se mantenga firme en su posici\u00f3n cuando no est\u00e1 girando.<\/p>\n<p style=\"text-align: justify;\">Si adquirimos un motor paso a paso, es bastante sencillo conocer las caracter\u00edsticas del motor, sin embargo, lo m\u00e1s com\u00fan es que nos encontremos ante un motor de desguace. C\u00f3mo distinguir ante que motor nos encontramos; el procedimiento es bastante sencillo, el primer paso es mirar en el cuerpo del motor si permanece alguna leyenda que nos pueda servir de orientaci\u00f3n como puede ser, el fabricante, modelo, la tensi\u00f3n o alguna otra pista que nos indique las caracter\u00edsticas m\u00e1s inmediatas.<\/p>\n<p style=\"text-align: justify;\">Si no se dispusiera de dichas indicaciones, generalmente presentan varios cables de conexi\u00f3n. Los motores paso a paso unipolar generalmente con seis cables, en dos tr\u00edos, cada tr\u00edo alimenta una bobina con toma central. En ocasiones, encontraremos un motor unipolar con s\u00f3lo cinco cables, aqu\u00ed los dos \u00abcomunes\u00bb se han unidos internamente.<\/p>\n<p><a style=\"text-align: center;\" href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-917\" style=\"border-style: initial; border-color: initial;\" title=\"unipolar2\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2.gif\" alt=\"\" width=\"170\" height=\"185\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><strong>Identificar los bobinados<\/strong>, es bastante f\u00e1cil la identificaci\u00f3n, cada uno usa su propio m\u00e9todo, uno puede ser este, aplicando una tensi\u00f3n entre dos terminales, se pueden identificar los correspondientes a cada bobinado, teniendo en cuenta que hay un com\u00fan para cada bobina, seg\u00fan se muestra en la figura que sigue. La nomenclatura de los cables (A, B, C, D) es totalmente arbitraria.<\/p>\n<p style=\"text-align: justify;\">Otra forma de identificaci\u00f3n es mediante un Ohmetro, comparando la resistencia entre pares de cables, teniendo en cuenta que cada devanado tiene una toma intermedia. Debido a que estos motores, disponen de un im\u00e1n permanente, con la aplicaci\u00f3n de una tensi\u00f3n entre los terminales de una bobina, el flujo de corriente a trav\u00e9s de la bobina, har\u00e1 mover el eje en una direcci\u00f3n, observando el siguiente movimiento en la misma direcci\u00f3n, nos indicar\u00e1 los pasos de la secuencia, siga probando con la bobina del otro devanado hasta completar la secuencia de los cuatro pasos necesarios. Cuando tenga los cuatro pasos, dispondr\u00e1 de la secuencia para girar en esa direcci\u00f3n.<\/p>\n<figure id=\"attachment_918\" aria-describedby=\"caption-attachment-918\" style=\"width: 188px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar1.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-918 \" title=\"unipolar1\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar1.gif\" alt=\"\" width=\"188\" height=\"232\" \/><\/a><figcaption id=\"caption-attachment-918\" class=\"wp-caption-text\">conexiones motor unipolar<\/figcaption><\/figure>\n<h2><strong><span style=\"color: #003366;\">Secuencia Simple.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">En esta secuencia, se activa solo una bobina a la vez. En algunos motores, esto brinda un funcionamiento mas suave. La contrapartida es que al estar solo una bobina activada, el torque de paso y retenci\u00f3n es menor.<\/p>\n<p style=\"text-align: justify;\">En esta secuencia se alimenta s\u00f3lo una bobina a la vez, lo que proporciona un menor par motor y una menor potencia de entrada. Al mover un paso en la secuencia a la siguiente, hace mover el motor un paso. Si vamos hacia adelante en la secuencia, el motor se mueve hacia adelante un paso y si lo hacemos al rev\u00e9s, el motor se mueve un paso atr\u00e1s.<\/p>\n<table style=\"border-collapse: collapse;\" width=\"80\" border=\"0\" cellspacing=\"0\" align=\"center\">\n<tbody>\n<tr style=\"text-align: center;\">\n<td rowspan=\"7\" width=\"45\" height=\"0\"><\/td>\n<td colspan=\"5\" align=\"center\" bgcolor=\"#ffffff\" width=\"20\" height=\"1\"><strong>Secuencia simple<\/strong><\/td>\n<td rowspan=\"7\" width=\"45\" height=\"0\"><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" align=\"left\" bgcolor=\"#ffffff\" width=\"5\" height=\"1\"><\/td>\n<td colspan=\"4\" align=\"center\" bgcolor=\"#ffffff\" width=\"15\" height=\"1\">Bobinas<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">A<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">C<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">B<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">D<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso1<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso2<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso3<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"16\" height=\"1\">Paso4<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">Es momento de realizar alg\u00fan ejercicio que ilustre tanta teor\u00eda. Empezaremos por presentar un c\u00f3digo que ya esta en la red, cuya autor\u00eda queda reflejada en el propio c\u00f3digo. Creo que es suficiente como ejemplo y est\u00e1 probado.<\/p>\n<pre lang=\"php\">\/* Motor paso a paso\r\n* --------------------------- *\r\n* Programa para manejar un motor paso a paso unipolar extra\u00eddo de\r\n* una unidad de disquete de 5'25. De acuerdo a la documentaci\u00f3n \u00a0\r\n* que he encontrado, este: \"[...] motor paso a paso fabricado por\r\n* Copal Electronics, con 1,8 grados por paso y 96 ohmios por cada\r\n* vuelta (de la bobina), con una etapa central conectada a\r\n* diferentes cables [...]\"\r\n* [http:\/\/www.cs.uiowa.edu\/~jones\/step\/example.html]\r\n* Es un motor paso a paso unipolar con cinco cables:\r\n* El color de los cables puede ser diferente\r\n* - rojo: conector de alimentaci\u00f3n, lo tengo a 5V y funciona bien\r\n* - naranja y negro: bobina 1\r\n* - marr\u00f3n y amarillo: bobina 2\r\n*\r\n* (cleft) 2005 DojoDave for K3\r\n* http:\/\/www.0j0.org | http:\/\/arduino.berlios.de\r\n* @author: David Cuartielles\r\n* @date: 20 Oct. 2005\r\n*\/\r\n int motorPin1 = 8; \/\/ PIN-es del Motor\r\n int motorPin2 = 9;\r\n int motorPin3 = 10;\r\n int motorPin4 = 11;\r\n int delayTime = 500; \/\/ Delay que determina la velocidad de giro\r\n\r\nvoid setup()\r\n{\r\n pinMode(motorPin1, OUTPUT); \/\/ Configuraci\u00f3n de PIN-es como salida digital\r\n pinMode(motorPin2, OUTPUT);\r\n pinMode(motorPin3, OUTPUT);\r\n pinMode(motorPin4, OUTPUT);\r\n}\r\nvoid loop() {\r\n\/\/ Los pines se activan en secuencia\r\n digitalWrite(motorPin1, HIGH); \/\/ Primer paso\r\n digitalWrite(motorPin2, LOW);\r\n digitalWrite(motorPin3, LOW);\r\n digitalWrite(motorPin4, LOW);\r\n delay(delayTime);\r\n digitalWrite(motorPin1, LOW); \/\/ Segundo paso\r\n digitalWrite(motorPin2, HIGH);\r\n digitalWrite(motorPin3, LOW);\r\n digitalWrite(motorPin4, LOW);\r\n delay(delayTime);\r\n digitalWrite(motorPin1, LOW); \/\/ Tercer paso\r\n digitalWrite(motorPin2, LOW);\r\n digitalWrite(motorPin3, HIGH);\r\n digitalWrite(motorPin4, LOW);\r\n delay(delayTime);\r\n digitalWrite(motorPin1, LOW); \/\/ Cuarto paso\r\n digitalWrite(motorPin2, LOW);\r\n digitalWrite(motorPin3, LOW);\r\n digitalWrite(motorPin4, HIGH);\r\n delay(delayTime);\r\n}<\/pre>\n<p style=\"text-align: justify;\">Como es de costumbre, puede copiar dicho c\u00f3digo y probar su efectividad, pulse sobre \u00abVer c\u00f3digo\u00bb y proceda como viene haciendo en anteriores casos.<\/p>\n<h2><strong><span style=\"color: #003366;\">Secuencia en Onda.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Esta es la secuencia que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por impulso y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y retenci\u00f3n, es la secuencia m\u00e1s usada.<\/p>\n<table style=\"border-collapse: collapse;\" width=\"80\" border=\"0\" cellspacing=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td rowspan=\"7\" width=\"30\" height=\"0\"><\/td>\n<td colspan=\"5\" align=\"center\" bgcolor=\"#ffffff\" width=\"30\" height=\"1\"><strong>Secuencia en onda<\/strong><\/td>\n<td rowspan=\"7\" width=\"30\" height=\"0\"><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" align=\"left\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\"><\/td>\n<td colspan=\"4\" align=\"center\" bgcolor=\"#ffffff\" width=\"8\" height=\"1\">Bobinas<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">A<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">C<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">B<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">D<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso1<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso2<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso3<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<tr>\n<td align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso4<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">En esta segunda secuencia, se alimentan dos bobinas a la vez y produce un par motor de aproximadamente un 40% mayor que el de la secuencia anterior, mientras que tambi\u00e9n, consume el doble de energ\u00eda, ver la tabla anterior.<\/p>\n<pre lang=\"php\">\u00a0\/* Stepper Unipolar Advanced\r\n* -------------------------\r\n*\r\n* Program to drive a stepper motor coming from a 5'25 disk drive\r\n* according to the documentation I found, this stepper: \"[...]\r\n*\r\n* Se trata de un motor paso a paso unipolar con cinco cables:\r\n* It is a unipolar stepper motor with 5 wires:\r\n*\r\n* Los colores de los cables puede variar\r\n* - red: power connector, I have it at 5V and works fine\r\n* - orange and black: coil 1\r\n* - brown and yellow: coil 2\r\n*\r\n* (cleft) 2005 DojoDave for K3\r\n* http:\/\/www.0j0.org | http:\/\/arduino.berlios.de\r\n*\r\n* @author: David Cuartielles\r\n* @date: 20 Oct. 2005\r\n*\/\r\nint motorPins[] = {8, 9, 10, 11}; \/\/ declara matriz pines\r\nint count = 0;\r\nint count2 = 0;\r\nint delayTime = 500;\r\nint val = 0;\r\n\r\nvoid setup() {\r\nfor (count = 0; count &lt; 4; count++) { \/\/ declara matriz 4 pines de salida\r\npinMode(motorPins[count], OUTPUT);\r\n}\r\n}\r\n\r\nvoid moveForward() {\u00a0 \/\/ giro de avance\r\nif ((count2 == 0) || (count2 == 1)) {\r\ncount2 = 16;\r\n}\r\ncount2&gt;&gt;=1;\r\nfor (count = 3; count &gt;= 0; count--) {\r\ndigitalWrite(motorPins[count], count2&gt;&gt;count&amp;0x01);\r\n}\r\ndelay(delayTime);\r\n}\r\n\r\nvoid moveBackward() { \/\/ giro de retroceso\r\nif ((count2 == 0) || (count2 == 1)) {\r\ncount2 = 16;\r\n}\r\ncount2&gt;&gt;=1;\r\nfor (count = 3; count &gt;= 0; count--) {\r\ndigitalWrite(motorPins[3 - count], count2&gt;&gt;count&amp;0x01);\r\n}\r\ndelay(delayTime);\r\n}\r\n\r\nvoid loop() {\r\nval = analogRead(0); \/\/ pin analogico 0, al pot.\r\nif (val &gt; 540) {\r\n\/\/ se mueve m\u00e1s r\u00e1pido cuanto mayor sea el valor del potenci\u00f3metro\r\ndelayTime = 2048 - 1024 * val \/ 512 + 1;\r\nmoveForward();\r\n} else if (val &lt; 480) {\r\n\/\/ se mueve m\u00e1s r\u00e1pido cuanto menor sea el valor del potenci\u00f3metro\r\ndelayTime = 1024 * val \/ 512 + 1;\r\nmoveBackward();\r\n} else {\r\ndelayTime = 1024;\r\n}\r\n}<\/pre>\n<p style=\"text-align: justify;\">En esta ocasi\u00f3n, el c\u00f3digo a utilizar contiene unas funciones que, conviene tener en cuenta en nuestros propios c\u00f3digos. Este c\u00f3digo, tambi\u00e9n hace referencia al autor al que pertenece.<\/p>\n<p style=\"text-align: justify;\">Quiero destacar, algunos aspectos que se aportan en este c\u00f3digo, por ejemplo: en la declaraci\u00f3n de pines de salida para el motor, se ha empleado una matriz (<strong>array<\/strong>) de cuatro elementos y esta es la forma que tiene: <span style=\"color: #00008c;\"> int motorPins[] = {8, 9, 10, 11}; <\/span><\/p>\n<p style=\"text-align: justify;\">Otro aspecto a destacar, se refiere al uso de los bucles <strong>for<\/strong> , como vemos en esta secuencia del c\u00f3digo: <span style=\"color: #00008c;\"> for (count = 0; count &lt; 4; count++) { pinMode(motorPins[count], OUTPUT); }<\/span><\/p>\n<p>y los <strong>if<\/strong>, como en este caso:<\/p>\n<pre lang=\"php\">if ((count2 == 0) || (count2 == 1)) { count2 = 16; }<\/pre>\n<p style=\"text-align: justify;\">Deben entenderse bien estos procedimientos, para poder utilizarlos en nuestros c\u00f3digos, esto, los har\u00e1 m\u00e1s compactos y cortos, si bien no los utilizo a menudo, para dar una mayor claridad a quien la necesite.<\/p>\n<h2><strong><span style=\"color: #003366;\">Secuencia de medio-paso.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Esta secuencia es, la resultante de a\u00f1adir a cada paso de la secuencia anterior, un paso, en otras palabras, es la suma de las dos secuencias anteriores. Esto significa que esta secuencia, consta de ocho paso, justo el doble que cada una de las dos anteriores, veamos la tabla.<\/p>\n<table style=\"border-collapse: collapse;\" width=\"80\" border=\"0\" cellspacing=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td rowspan=\"11\" width=\"30\" height=\"0\"><\/td>\n<td colspan=\"5\" align=\"center\" bgcolor=\"#ffffff\" width=\"30\" height=\"1\">\n<p align=\"right\"><strong>Secuencia medio-paso<\/strong><\/p>\n<\/td>\n<td rowspan=\"11\" width=\"30\" height=\"0\"><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" align=\"left\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\"><\/td>\n<td colspan=\"4\" align=\"center\" bgcolor=\"#ffffff\" width=\"8\" height=\"1\">Bobinas<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">A<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">C<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">B<\/td>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"4\" height=\"1\">D<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"10\" height=\"1\">Paso1<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"6\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"6\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"6\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"6\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso2<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso3<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso4<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso5<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">0<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso6<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso7<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" bgcolor=\"#ffffff\" width=\"6\" height=\"1\">Paso8<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#33ccff\" width=\"4\" height=\"1\">&#8211;<\/td>\n<td align=\"center\" bgcolor=\"#ff0000\" width=\"4\" height=\"1\">+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">Esto, se traduce en un giro m\u00e1s suave y preciso de modo que, el avance depender\u00e1 de la frecuencia en que se aplican los pulsos. Dicho esto, es conveniente no olvidar la inercia que presentan estos motores, por lo que, hay tener en cuenta el tiempo del impulso y la frecuencia de los pulsos. Si no se pone cuidado en la frecuencia de los pulsos, el motor puede reaccionar de modo inesperado, tal que no gire o que gire de modo arbitrario.<\/p>\n<p style=\"text-align: justify;\">La frecuencia de los pulsos a aplicar, depende de factores como; la inercia del rotor, la tensi\u00f3n de trabajo y sobre todo el ancho del pulso, esto se puede obtener mediante, ensayo\/prueba\/error. Para obtener un arranque suave y preciso, conviene comenzar con una frecuencia de pulso baja e ir aument\u00e1ndola gradualmente hasta alcanzar la velocidad deseada, sin superar la m\u00e1xima tolerada por el motor. El cambio de direcci\u00f3n de giro, debe realizarse primero, bajando la velocidad de giro y luego cambiar el sentido de rotaci\u00f3n.<\/p>\n<h2><span style=\"color: #003366;\"><strong>Conexionado de un motor unipolar.<\/strong><\/span><\/h2>\n<p style=\"text-align: justify;\">Se puede mover un motor unipolar, de distintas formas, en algunos casos lo podemos hacer utilizando cuatro salidas del micro, en otros casos debido a tener limitadas las salidas, debemos utilizar s\u00f3lo dos y en este caso, debemos cumplimentar de alg\u00fan modo las dos bobinas que quedan libres. Como de costumbre, unos peque\u00f1os ejemplos ilustrar\u00e1n mejor lo descrito.<\/p>\n<h2><strong><span style=\"color: #003366;\">Control con cuatro cables.<\/span><\/strong><\/h2>\n<figure id=\"attachment_919\" aria-describedby=\"caption-attachment-919\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar4_cables.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-919 \" title=\"unipolar4_cables\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar4_cables.jpg\" alt=\"\" width=\"560\" height=\"344\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar4_cables.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar4_cables-300x184.jpg 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><figcaption id=\"caption-attachment-919\" class=\"wp-caption-text\">Unipolar con 4 hilos<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">En este ejemplo el c\u00f3digo es muy sencillo y descriptivo, en primer lugar, se definen los pasos necesarios para girar 360\u00ba, sigue la configuraci\u00f3n de los pines a utilizar del motor y el resto del corto c\u00f3digo, para que gire en ambos sentidos, separado por una peque\u00f1a pausa.<\/p>\n<pre lang=\"php\">#include \"Stepper.h\"\r\n#define STEPS 400 \/\/360\u00b0 divided by step angle\r\nStepper stepper(STEPS, 8, 9, 10, 11); \r\n\r\nvoid setup(){\r\n stepper.setSpeed(30); \/\/RPMs\r\n}\r\n\r\nvoid loop(){\r\n stepper.step(100);\r\n delay(100);\r\n stepper.step(-100);\r\n delay(100);\r\n}<\/pre>\n<p style=\"text-align: justify;\">La sencillez del c\u00f3digo es debido principalmente al uso de la librer\u00eda &lt;<strong>Stepper.h<\/strong>&gt; que, nos facilita el trabajo. Aunque es cierto que esta librer\u00eda es muy b\u00e1sica, queda claro que es suficiente para este caso.<\/p>\n<h2><strong><span style=\"color: #003366;\">Control con dos cables.<\/span><\/strong><\/h2>\n<figure id=\"attachment_920\" aria-describedby=\"caption-attachment-920\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2_cables.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-920 \" title=\"unipolar2_cables\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2_cables.jpg\" alt=\"\" width=\"560\" height=\"364\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2_cables.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/unipolar2_cables-300x195.jpg 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><figcaption id=\"caption-attachment-920\" class=\"wp-caption-text\">Unipolar con 2 hilos<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">En este segundo ejemplo, el c\u00f3digo es igual de sencillo. La diferencia estriba en lo que en la propia librer\u00eda llaman construcci\u00f3n del motor (se refiere a la definici\u00f3n de los pines utilizados como salidas para el motor), he coloreado la l\u00ednea que corresponde a dicha definici\u00f3n.<\/p>\n<pre lang=\"php\">\u00a0\r\n#include \"Stepper.h\"\r\n#define STEPS 400 \/\/360\u00b0 divided by step angle\r\nStepper stepper(STEPS, 8, 9);\r\n\r\nvoid setup(){\r\n stepper.setSpeed(30); \/\/RPMs\r\n}\r\n\r\nvoid loop(){\r\n stepper.step(100);\r\n delay(100);\r\n stepper.step(-100);\r\n delay(100);\r\n}<\/pre>\n<p style=\"text-align: justify;\">Como se puede comprobar he utilizado el mismo c\u00f3digo. El cambio reside en la declaraci\u00f3n de lo que se ha dado en llamar constructor del motor. Si revisamos la mencionada librer\u00eda <strong><em>Stepper.h<\/em><\/strong>, podemos observar que dispone de dos tipos de constructores de motor:<\/p>\n<p><span style=\"color: #339900; font-size: small;\">\/\/ constructors:<\/span><\/p>\n<ul>\n<li><span style=\"font-size: small;\"> Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); <\/span><\/li>\n<li>Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4);<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Es bastante explicito. Veamos ahora un caso m\u00e1s sofisticado.<\/p>\n<h2><strong><span style=\"color: #003366;\">Control de direcci\u00f3n y velocidad.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">El siguiente esquema, representa el esquem\u00e1tico que voy a utilizar, en esta ocasi\u00f3n para controlar el avance o retroceso del giro de un motor unipolar. Dispondr\u00e9 de dos pulsadores, para iniciar los sentidos de giro y mediante el potenci\u00f3metro, modificar\u00e9 la velocidad a voluntad en cada momento. He utilizado la rutina \u00abparar todo\u00bb para hacer una parada antes de iniciar cada modo de giro, tiempo suficiente para vencer la inercia adquirida por el motor.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/stepper_arduino.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-922\" title=\"stepper_arduino\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/stepper_arduino.jpg\" alt=\"\" width=\"560\" height=\"441\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/stepper_arduino.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2011\/06\/stepper_arduino-300x236.jpg 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">He aqu\u00ed un peque\u00f1o ejemplo de conexi\u00f3n del uso de la plataforma Arduino, para controlar las cosas en el mundo real, sin necesidad de utilizar las librer\u00edas \u00abStepper.h\u00bb. Sigue, el listado del c\u00f3digo que se encarga de generar los ocho pasos de la secuencia, descritos en los p\u00e1rrafos anteriores.<\/p>\n<pre lang=\"php\">\/*\r\n\u00a0stepperunipolar1.pde\r\n\r\nhttp:\/\/www.bristolwatch.com\/arduino\/arduino_unipolar_stepper.htm\r\nDependiendo del tipo de motor intercambiar los cuatro n\u00fameros de\r\nabajo (8-11) hasta que funcione el motor.\r\nDisponemos dos pulsadores para girar en dos sentidos y un pot.\r\npara variar la velocidad de giro.\r\nLa secuencia que sigue, procede a trav\u00e9s de la experimentaci\u00f3n con\r\neste motor unipolar. Puede ser diferente para otro motor.\r\nLa velocidad se controla por un retardo entre cada paso. A\r\nmayor retardo, velocidad mas lenta.\r\nPara mayor velocidad cambiar el 10 por 2. Esta\r\nse calcula entre cada paso para variar la velocidad, mientras\r\nque se mueve.\r\n\r\nEl valor del retardo se obtiene de la lectura y conversi\u00f3n\r\nanal\u00f3gico-a-digital (AD0 en este caso), entregando un valor entre 0\r\ny 1023. Los valores son divididos por 4 y se suma 10 para el retardo\r\nen milisegundos: delay(analogRead(0)\/4 +10)\r\n\r\nModificado y actualizado: 05.05.2011\r\npor: V. Garc\u00eda\r\n\r\nLos siguientes comandos ser\u00e1n compilados en c\u00f3digo de m\u00e1quina\r\ny cargados en el microcontrolador.\r\n\r\nTama\u00f1o compilado con IDE Arduino v0013: 3154 bytes.\u00a0\r\n*\/\r\n\r\n#define Motorpin1 8 \/\/ D1, devanado 1 del motor, pin 8\r\n#define Motorpin2 9 \/\/ D2, devanado 2 del motor, pin 9\r\n#define Motorpin3 10 \/\/ D3, devanado 3 del motor, pin 10\r\n#define Motorpin4 11 \/\/ D4, devanado 4 del motor, pin 11\r\n\r\n#define CW 3 \/\/ SW0 pulsador, pin 3\r\n#define CCW 4 \/\/SW1 pulsador, pin 4\r\n\/\/ Entrada anal\u00f3gica potenci\u00f3metro en pin 0.\r\n\r\n#define ledPin 13\r\nint v = 2 ; \/\/ variar velocidad\r\n\r\nvoid setup() {\r\n pinMode(CW, INPUT);\r\n pinMode(CCW, INPUT);\r\n\r\n digitalWrite(CW, 1); \/\/ activa la RPA, pull up on\r\n digitalWrite(CCW,1); \/\/ activa la RPA, pull up on\r\n pinMode(Motorpin1, OUTPUT);\r\n pinMode(Motorpin2, OUTPUT);\r\n pinMode(Motorpin3, OUTPUT);\r\n pinMode(Motorpin4, OUTPUT);\r\n\r\n\/\/ inicia con todas las bobinas apagadas\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n\r\n\/\/ set up the LED pin: indicador\r\n pinMode(ledPin, OUTPUT);\r\n\/\/ blink the LED:\r\n blink(3);\r\n}\r\n\r\nvoid loop() {\r\n \/\/ Comentar para bloquear, l\u00ednea que sigue\r\n all_coils_off(); \/\/ apaga bobinas, rueda libre. \r\n if (!digitalRead(CW)) \/\/ espera que se presione pulsador avance\r\n {  \r\n  forward(20000); \/\/ pasos que avanza\r\n  blink(3); \/\/ parpadea LED\r\n }\r\n\r\nif (!digitalRead(CCW)) \/\/ espera que se presione pulsado reverso\r\n {\r\n reverse(20000); \/\/ pasos que retrocede\r\n blink(3); \/\/ parpadea LED\r\n }\r\n} \/\/ final del lazo (loop)\r\n\r\nvoid all_coils_off(void) { \/\/ apaga bobinas\r\n\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n}\r\n\r\nvoid forward(int i) { \/\/ gira como el reloj\r\n\r\nwhile (1) { \/\/ i = 20000\r\n\/\/ 1\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v); \/\/ pin anal\u00f3gico 0, entrada pot.\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 13\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 3\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 32\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 2\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 24\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 4\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 14\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n }\r\n}\r\n\r\nvoid reverse(int i) { \/\/ gira contra el reloj\r\n\r\nwhile (1) {\r\n\/\/ 14\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 4\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 24\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 1);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 2\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 23\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 1);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 3\r\n digitalWrite(Motorpin1, 0);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 13\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 1);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\nif (i &lt; 1) break;\r\n\/\/ 1\r\n digitalWrite(Motorpin1, 1);\r\n digitalWrite(Motorpin2, 0);\r\n digitalWrite(Motorpin3, 0);\r\n digitalWrite(Motorpin4, 0);\r\n delay(analogRead(0)\/4 + v);\r\n i--;\r\n if (i &lt; 1) break;\r\n  }\r\n}\r\n\r\n\/\/ Blink el indicador LED:\r\nvoid blink(int howManyTimes) {\r\nint i;\r\nfor (i=0; i&lt; howManyTimes; i++) {\r\n digitalWrite(ledPin, HIGH);\r\n delay(200);\r\n digitalWrite(ledPin, LOW);\r\n delay(200);\r\n }\r\n}<\/pre>\n<p style=\"text-align: justify;\">En este ejemplo, he utilizado la opci\u00f3n de aplicar una salida de Arduino, a cada uno los cuatro drivers del ULN2003 y sus salidas a cada devanado del motor unipolar. El terminal com\u00fan, se aplica al positivo de la tensi\u00f3n que necesita el motor, en mi caso, al positivo +12V, recordar que s\u00f3lo los negativos de ambas alimentaciones deben estar unidos. Con este m\u00e9todo, no se requiere la librer\u00eda que habitualmente se utiliza para controlar el motor unipolar.<\/p>\n<h2><strong><span style=\"color: #003366;\">Unipolar frente bipolar.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Im\u00e1n permanente y los motores paso a paso h\u00edbridos est\u00e1n disponibles con bobinas unipolar, bipolar o bifilar, esta \u00faltima se puede utilizar en configuraciones unipolar o bipolar. La elecci\u00f3n entre el uso de un sistema de accionamiento unipolar o bipolar se basa en cuestiones de la simplicidad y la unidad de potencia \/ peso.<\/p>\n<p style=\"text-align: justify;\">Motores bipolares tienen aproximadamente un 30% m\u00e1s de par que un motor equivalente unipolar del mismo volumen. La raz\u00f3n de esto es que s\u00f3lo la mitad de una bobina es energ\u00eda en un momento dado en un motor unipolar. Un motor bipolar utiliza la totalidad de una bobina cuando est\u00e1 energizado.<\/p>\n<p style=\"text-align: justify;\">El par m\u00e1s alto generado por un motor bipolar se no obtiene sin un precio. Los motores bipolares requieren circuitos de control m\u00e1s complejo que los motores unipolares. Esto tendr\u00e1 un impacto en el costo de una aplicaci\u00f3n. En caso de duda, un motor unipolar o el motor bifilar son buenas opciones. Estos motores se puede configurar como un motor unipolar o bipolar y la aplicaci\u00f3n de pruebas con los motores que operan en cualquiera de los modos.<\/p>\n<h2><strong><span style=\"color: #003366;\">PAR NOMINAL o TORQUE.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">El torque es una consideraci\u00f3n cr\u00edtica al elegir una motor paso a paso. Los motores paso a paso tienen diferentes tipos de par nominal. Estos est\u00e1n en:<\/p>\n<ul>\n<li style=\"font-size: 10pt;\"><strong>Par de bloqueo<\/strong> &#8211; Al torque requerido para girar el eje del motor a la vez que las bobinas se energizan.<\/li>\n<li style=\"font-size: 10pt;\"><strong>Par de palanca<\/strong> &#8211; El par contra el que un motor puede acelerar desde cero sin perder ning\u00fan paso, cuando se maneja a una velocidad constante paso a paso.<\/li>\n<li style=\"font-size: 10pt;\"><strong>Par Extra\u00edble<\/strong> &#8211; A la carga que un motor puede mover cuando est\u00e1 en velocidad de funcionamiento.<\/li>\n<li style=\"font-size: 10pt;\"><strong>Par de Ret\u00e9n<\/strong> &#8211; Al torque requerido para girar el eje del motor, mientras que las bobinas no est\u00e1n energizados.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Los fabricantes de motor paso a paso, especifican varios o todos de estos momentos de torsi\u00f3n en sus hojas de datos para sus motores.<\/p>\n<h2><strong><span style=\"color: #003366;\">Motores h\u00edbridos.<\/span><\/strong><\/h2>\n<p style=\"text-align: justify;\">Los motores h\u00edbridos comparten los principios de funcionamiento de ambos motores paso a paso, im\u00e1n permanente y de reluctancia variable. El rotor de un motor paso a paso h\u00edbrido es la cabeza de arranque m\u00faltiple, como el motor de reluctancia variable y contiene un im\u00e1n magnetizado axialmente conc\u00e9ntrico alrededor de su eje. Los dientes en el rotor proporcionan una camino que ayuda a guiar el flujo magn\u00e9tico a lugares preferidos del entrehierro&#8230;<\/p>\n<p style=\"text-align: justify;\">Bueno, esto ya se sale del cometido de este tutorial. Si est\u00e1 interesado en el tema, le aconsejo que lea la nota de aplicaci\u00f3n AN907 (Stepper).<\/p>\n<p style=\"text-align: justify;\">Este, ha sido un art\u00edculo en el que se ha intentado presentar, distintas formas de controlar el movimiento de un motor paso a paso unipolar. En los c\u00f3digos, se presenta tres formas de activar las bobinas y de alguna forma los rendimientos de cada uno de los c\u00f3digos.<\/p>\n<p style=\"text-align: justify;\">Como es de costumbre, puede copiar dicho c\u00f3digo y probar su efectividad, pulse sobre \u00abCODIGO: Seleccionar todo\u00bb y proceda como viene haciendo en anteriores casos.<\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Prologo. Esta documentaci\u00f3n, pretende ser una aproximaci\u00f3n pr\u00e1ctica a las formas de control de motores paso a paso, tambi\u00e9n conocidos en la terminolog\u00eda inglesa como, stepper&#8217;s. Hemos de distinguir entre dos tipos de motores paso a paso, podemos encontrar motores bipolares y motores unipolares. Este, es el que vamos a tratar en este art\u00edculo, los [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":915,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[22,15,36],"tags":[112,113,165,136,145],"class_list":["post-709","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-microcontroladores","category-motores-unipolares","tag-motor-pap","tag-motor-unipolar","tag-motores-paso-a-paso","tag-stepper","tag-unipolar"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/comments?post=709"}],"version-history":[{"count":53,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"predecessor-version":[{"id":4834,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/709\/revisions\/4834"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/915"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}