¿Cómo puedo mover un motor PaP en distintos ángulos programados?

Hola, amigos!!

Mi nombre es Antonio García y soy de Málaga. Soy técnico electrónico, aunque los estudios sólo me sirvieron para entretenerme con circuitos varios y proyectitos de bricolaje y electricidad. Pero la parte de programación se me escapa de las manos, ya que me considero más analógico que digital.

Después de esta pequeña presentación, os voy a contar lo que quiero conseguir con mi Arduino, ya que un gran amigo me comentó de su existencia y propiedades, y aunque en un principio rechacé su idea para mis proyectos, finalmente "he entrado por el aro", puesto que ya me lo han recomendado más personas y me encuentro ante un proyecto difícil de resolver con electrónica analógica. Resulta que estoy construyendo una maqueta para trenes donde irá instalado un puente giratorio para dar la vuelta a locomotoras y establecer conexiones de vías en distinto ángulo. En principio descarté la idea de comprar este puente ya electrificado, puesto que su precio supera los 200€, mientras que yo he conseguido uno manual por 17€. Mi idea era comprar un motorcillo pequeño con su reductora y conectarlo al eje del puente y a funcionar, jejeje!! Pero un compañero del foro de trenes al que pertenezco me ha quitado esa idea de la cabeza, porque este sistema tan mecánico no es preciso, ya que el motor lleva una cierta inercia cuando se para y sería muy difícil pararlo justo en el milímetro exacto donde las vias quedan alineadas para el paso del tren. Además, ese motorcillo con tanta reducción ofrece mucha holgura en su eje, cosa que se multiplica aún más en los extremos del puente. Y esto no puede ocurrir. Solución que me da: Un motor paso a paso que puede parar en un ángulo concreto y que no presenta holgura en su eje. Esto hay que controlarlo con electrónica digital para mandarle los pulsos adecuados al motor. Existen Pic´s que pueden servirme, pero quizá la mejor idea sea la de montar un Arduino como cerebro de este motor. Y aquí me tienen asustado con el invento y sin saber "ni papa" sobre qué debo hacer. Ya tengo el Arduino Uno y el motor de 5v 28BYJ48 con su controladora ULN2003. La idea es la siguiente:

Las vías colocadas como radios por fuera del puente están unas de otras a 18º o 20º para que no se entorpezcan unas a las otras y no se rocen unas locomotoras con otras. Yo necesito tener dos pulsadores: uno para hacer girar el puente a la izquierda y otro para que lo haga a la derecha. En principio, me gustaría que al pulsar momentaneamente el pulsador de giro a la izquierda, el puente empezara a girar en esa dirección hasta recorrer esos 18º o 20º (los grados puedo modificarlos sin problema) y que el motor parara en cuando llegara a ese punto. Pero con el mismo pulsador quiero que, al mantenerlo siempre pulsado, el puente no pare de girar a la izquierda hasta que lo vuelva a soltar y vuelva a parar otra vez en la próxima marca múltiplo de esos 18 o 20º. No sé si me explico, pero lo que quiero evitar con el pulsador siempre accionado es que el puente no se pare cada 18 o 20º de recorrido y haya que volver a accionarlo con el pulsador para que haga otros 18 o 20º más.

Pulso corto en pulsador a la izquierda: 18 o 20º en esa dirección.

Pulso continuado en pulsador a la izquierda: movimiento continuo en esa dirección hasta que al dejar de mandar ese pulso el motor se pare en los siguientes 18 o 20º establecidos.

Otra forma de explicarlo:

Si simplificamos la idea poniendo tan sólo 4 paradas a 90º una de la otra (como serían las 3, 6, 9 y 12 de un reloj), si el motor está parado por ejemplo a las 12, que al mandar un pulso por el pulsador de giro a la derecha, el motor empiece a girar hasta parar en las 3 del supuesto reloj. Pero que si mantengo el pulsador accionado, no pare en "las 3" y siga girando. Y si por ejemplo me da por soltar el pulsador una vez pasadas las 6 del supuesto reloj, que el motor se pare ya en las 9 de ese supuesto reloj.

Espero que se me entienda y espero que esto sea posible. El problema es que yo no sé programar el Arduino para conseguir esto. Después, y para complicar más la cosa, el motor debe girar bastante lento para ser realista en la maqueta, aunque esto creo que hay quien lo ha conseguido con un simple potenciómetro. A ver si alguien tiene el suficiente valor y conocimiento para poderme echar una mano. Desde ya le estoy plenamente agradecido, aunque sea solamente por leer este tocho.

Un saludo y gracias por adelantado!!

Sin entrar en mas detalles, yo para un giro fijo de unos grados no usaria ni motor CC ni paso-paso. Lo mejor y mas simple es un motor tipo servo. Le das la orden adecuada y gira exactamente los grados que quieres (de -90 a +90). Mirate el tema porque es muy simple de usar.

Jopapa www.jopapa.me

Yo veo bien un paso a paso, para la aplicación que se le quiere dar. Un servo, tiene la limitación de no poder hacer un giro de más de 180º.

Es más, yo, aprovecharía la funcionalidad del arduino, y en vez de hacer lo de apretar el botón y que pare en la siguiente vía, pero que no pare hasta que lo sueltes, haría un botón por cada vía, y solamente apretando ese botón, que gire hasta posicionarse en esa vía. no creo que la plataforma giratoria tenga más de 4 ó 5 posiciones posibles, de forma que solo serían 4 ó 5 botones y sería mucho más práctico así.

Hola de nuevo!! Jopapa, realmente me interesa que pueda girar mas de los 180°. Carmeloco, tu idea sería lo más interesante y lo mas ideal, pero desconozco si el arduino es capaz de almacenar su memoria y reconocer en qué posición se encuentra para saber el número de pasos que debe realizar para colocarse en la posición seleccionada sin depender. de algunos sistemas externos. Aunque esa idea sería la mas ideal. Pero cómo puedo desarrollar eso?

Se puede llevar el motor a una posición concreta según el pulsador que yo use e independientemente de la posición en la que se encuentre inicialmente el motor? Supongo que será necesario sensores de algún tipo para que el motor vaya girando hasta llegar a la posición establecida desde el pulsador concreto y que parará en cuanto el sensor de dicha posición le mande la orden. Pero esto no sería muy conveniente en mi proyecto, ya que el sensor (que normalmente es activado por energías mecánicas o físicas) puede dar un cierto margen de desequilibrio en su funcionamiento con lo que puede hacerme parar el motor 1 milímetro más atrás o delante de la posición correcta, y eso no puede suceder. Y supongo que ni el motor ni el arduino tienen capacidad para saber en qué posición se encuentra el eje y en qué posición debe parar. Yo supongo que sólo puedo darle órdenes para que gire unos ciertos grados con cada pulsación enviada, o un giro continuo con una pulsación continua. Por eso era lo de usar este tipo de programación. Pero que si me podéis ayudar con cualquiera de las dos formas me sentiré igualmente agradecido. A ver cómo lo veis, que yo ando perdido.

A mi se me ocurre, poner un sensor de posición inicial, es decir, que al encender el sistema, el motor se posicione a una posición inicial conocida, y a partir de ahí, no es más que dar el número de pasos para cada posición.

Por cierto, una sugerencia, es que cambies el título del primer mensaje del post, por alguno que explique un poco de que va, ya que el que tiene, no ayuda a encontrarlo de nuevo, ni a que posibles interesados en el tema, entren en él.

Una idea loca loca, a la antigua usanza, es decir un motorcillo normal y un microinteruptor haciendo las veces de final de carrera Con un motor que se mueva despacito, la inercia va a ser poca, y si puedes situar el final de carrera al final del racio de giro, el margen va a ser muy pequeño :)

Hola de nuevo!!

El usar la programación que propuse al principio (cada vez que yo accione el pulsador, que el motor gire unos grados concretos, y si lo quiero continuo, mantener el pulsador accionado) es lo único que creo puede llegar a hacer el Arduino sin necesidad de colocar sensores en cada vía. Es que lo de usar sensores me complica el diseño, y si debo usarlos, para eso hago lo que dice el compañero Marcial: Un final de carrera unido a la vez con el pulsador de cada vía que desactive el motor sólo cuando selecciono esa misma. Y lo que intento evitar son estos elementos mecánicos. De hecho, la idea que se me viene a ocurrir ahora es la de comandar el motor PaP con un sencillo secuencial de cuatro pulsos construido con el NE555 y el CD4017 y al que le puedo regular la velocidad de la secuencia. Eso me daría un funcionamiento bastante estable (sin inercias) y un control muy exsaustivo de velocidad para ir frenando a la llegada de la vía con la que quiero encarar el puente. De este modo no necesito sensores ni programación con el Arduino, aunque claro está, mi idea es que el Arduino pueda parar cada “X” grados. ¿Cómo lo veis?

Un saludo y gracias por los comentarios!!