DUDA: Arduino o Circuito simple?

Buenas tardes a todos,

Estoy haciendo el TFG y tengo una duda sobre la parte electrónica de mi producto.

El producto es un juguete y la función que quiero que desempeñe, es que un cilindro interno que tiene gire en diferentes posiciones.

Quiero ponerle a nuestro producto un motor (servomotor), que pare en 5 posiciones cuando se accionen los detectores, los que hemos visto solo giran 180º y necesitaríamos 360º, siendo las paradas del servo equidistantes entre sí (cada 72º).

Hemos estado viendo diferentes opciones, que el servomotor este controlado por un circuito integrado 555 o por arduino, prefiero que la opción sea lo más sencilla posible ya que no controlo el tema de la programación con arduino.

¿Esto podría funcionar con un circuito simple en una protoboard sin necesidad de arduino?

Alguien me podría ayudar???

Un saludo. :):):):)
 
Lo más versátil es ponerle un microcontrolador (la elección del micro ya sería tema aparte). Ahora bien, como algo curioso, hace muchos años lo que propones se puede hacer con la teoría BEAM (busca robots BEAM en Google y ve de lo que son capaces con circuitos muy simples)

En cualquier paso, para obtener 5 posiciones precisas yo usaría un motor paso a paso, lo que casi me lleva a concluir que se tiene que hacer sí o sí con microcontrolador (y la programación no es tan difícil, en muchos sistemas hay librerías para todo).

Edit: Y como ves en mi avatar, soy fan del 555, pero en este caso lo apropiado es lo que te digo, aunque haria falta mayor información.
 
Última edición:
Con arduino se puede controlar con control remoto, el 555, tambien pero es mas dificil. Lo ideal para el 555 es un preset o un potenciometro
 
Palurdo,

No entiendo mucho de electrónica, pero según tengo entendido los motores paso a paso, no mantienen la posición exacta, con la inercia del movimiento no se quedan fijo en la posición que deseo.

Me podrías indicar los elementos que tengo que tener para que funcione el mecanismo?

Me gustaría tener tres detectores que al activarse (de forma combinada) manden un impulso, para cada posición del motor (0º, 72º, 144º, 216º y 288º). Pero desconozco como podría realizar el mecanismo y los componentes necesarios.
 
Si empleas "Arduino", sería en la etapa prototipo, luego podés armar un circuito final solo con el micro AVR... (siendo que le cargas un programa "Arduino')
 
Hola
Buenas tardes a todos,

Estoy haciendo el TFG y tengo una duda sobre la parte electrónica de mi producto.

El producto es un juguete y la función que quiero que desempeñe, es que un cilindro interno que tiene gire en diferentes posiciones.

Quiero ponerle a nuestro producto un motor (servomotor), que pare en 5 posiciones cuando se accionen los detectores, los que hemos visto solo giran 180º y necesitaríamos 360º, siendo las paradas del servo equidistantes entre sí (cada 72º).
bueno ., si exiten los servos de 360" ., y se consiguen facilmente ., (son comunmete usados en radio control)​
Aunque con el 555 ., no creo que lo púedas comandar (distinto ancho de pulso para los grados)​
Te dejo un link con una reforma de uno comun a 360"​
http://www.instructables.com/id/Servo-360-rotation-mod-Parallax/
Palurdo,

No entiendo mucho de electrónica, pero según tengo entendido los motores paso a paso, no mantienen la posición exacta, con la inercia del movimiento no se quedan fijo en la posición que deseo.
Los motores pap ., son exactos., todo depende de el programa de comando (y porsupuesto la cantidad de pasos en la cuenta y sus grados)​
 
También se pueden hacer con motores DC y un sencillo encoder, recordar que las platinas para CD's y DVD'S utilizan motores DC y tienen excelente presición.
Se puede utilizar motores DC con caja reductora y encoder que hay en cantidades en el mercado
motor-con-reductora-701-con-encoder.jpg
725-1-800x800.jpg
 
Vale, me he decidido por usar un motor paso a paso, comandado por un controlador. Ahora, ¿Cómo puedo hacer que vaya a una posición especifica cada vez que se accionan los detectores?
 
Con motorreductor la perdida que genera la caja puede detener el motor en una posición cercana a la deseada, no ocupas un super encoder si solo ocupas un botón para la siguiente posición, en ese caso una rueda con muescas en las posiciones deseadas y un optointerruptor pueden hacer que se detenga, un simple transistor puede manejar el motor y la lógica de forma minimalista es un OR que podría hacerse hasta con resistencias.

Los motores a paso so mucho mas precisos que un servomotor, todo depende del angulo de giro, hay motores pequeños que vienen con reductora y requieres como 1023 pasos por vuelta.
 
Vale, me he decidido por usar un motor paso a paso, comandado por un controlador. Ahora, ¿Cómo puedo hacer que vaya a una posición especifica cada vez que se accionan los detectores?

Para empezar necesitas saber donde está así que le tienes que poner un final de carrera o algo para marcar un cero y6 a partir de ahí moverlo a donde quieras
 
En el motor paso a paso tienes un número de pasos por vuelta, por lo que puedes dividir por 5 y así tendrás cinco posiciones separadas por 72° cada una (total 360°). También debes implementar un sistema de origen o "home". Puede ser un pequeño imán en el cilindro y un sensor de efecto Hall. Esto es para resincronizar cada vez que se lleva a origen. Las órdenes que le tiene que dar el procesador son sencillas. Pongamos que los 3 sensores codifican esta tabla de verdad, cuando tienes un paso a paso de 360 pasos por vuelta (un paso por grado, pero podía se otra cantidad, pongamos 180 pasos por vuelta, o 400 pasos por vuelta, depende de tu motor pap).

S1 S2 S3 Pos

0 0 0 0
0 0 1 72
0 1 0 144
0 1 1 216
1 0 0 288
1 0 1 0
1 1 0 72
1 1 1 144

Entonces el programa lleva un contador con la posición actual. Si por ejemplo el.contador tiene el valor 144 (posición 2) y la nueva posición es 72, Una resta te dice el movimiento que debe hacer el motor. Resta siempre el final menos el principio. Si restas 72-144 =-72, lo que indica que tienes que decirle al controlador "retrocede 72 pasos" (un valor positivo es avanzar, y uno negativo es retroceder). Procura que cualquier movimiento nunca tenga que dar más de media vuelta, es decir, si la resta te da más de 180, restas 360, y si da menos de -180, sumas 360. Por ejemplo, estás en la posición 288 (posición 4) y vas a ir a 72, (posición 1), entonces la resta sale -216 pero como es menor de -180 sumas 360 y te queda que avanzas 144, en efecto, si avanzas dos posiciones desde la zona 4 pasas por la 0 y vas hacia la 1(72°). Cuando el contador se acerque a 0, por ejemplo cuando ya es menor a 10 o mayor de -10, mientras el motor se mueve, te fijas en el momento el sensor de origen se active, y descartas la cuenta que lleve el contador forzándolo al valor 0, y luego continuas actualizándolo como si nada mientras se sigue moviendo el motor hacia su objetivo.
 
El compañero se refirio muy bien a un mecanismo que se denomina "Rueda de Ginebra" más conocida como "Cruz de Malta" que es ampliamente utilizada en incexadores
FB2.gif
220px-Internal_Geneva_wheel_ani.gif
 
En el motor paso a paso tienes un número de pasos por vuelta, por lo que puedes dividir por 5 y así tendrás cinco posiciones separadas por 72° cada una (total 360°). También debes implementar un sistema de origen o "home". Puede ser un pequeño imán en el cilindro y un sensor de efecto Hall. Esto es para resincronizar cada vez que se lleva a origen. Las órdenes que le tiene que dar el procesador son sencillas. Pongamos que los 3 sensores codifican esta tabla de verdad, cuando tienes un paso a paso de 360 pasos por vuelta (un paso por grado, pero podía se otra cantidad, pongamos 180 pasos por vuelta, o 400 pasos por vuelta, depende de tu motor pap).

S1 S2 S3 Pos

0 0 0 0
0 0 1 72
0 1 0 144
0 1 1 216
1 0 0 288
1 0 1 0
1 1 0 72
1 1 1 144

Entonces el programa lleva un contador con la posición actual. Si por ejemplo el.contador tiene el valor 144 (posición 2) y la nueva posición es 72, Una resta te dice el movimiento que debe hacer el motor. Resta siempre el final menos el principio. Si restas 72-144 =-72, lo que indica que tienes que decirle al controlador "retrocede 72 pasos" (un valor positivo es avanzar, y uno negativo es retroceder). Procura que cualquier movimiento nunca tenga que dar más de media vuelta, es decir, si la resta te da más de 180, restas 360, y si da menos de -180, sumas 360. Por ejemplo, estás en la posición 288 (posición 4) y vas a ir a 72, (posición 1), entonces la resta sale -216 pero como es menor de -180 sumas 360 y te queda que avanzas 144, en efecto, si avanzas dos posiciones desde la zona 4 pasas por la 0 y vas hacia la 1(72°). Cuando el contador se acerque a 0, por ejemplo cuando ya es menor a 10 o mayor de -10, mientras el motor se mueve, te fijas en el momento el sensor de origen se active, y descartas la cuenta que lleve el contador forzándolo al valor 0, y luego continuas actualizándolo como si nada mientras se sigue moviendo el motor hacia su objetivo.

Muchas gracias por la respuesta tan completa palurdo, me ha sido de gran ayuda. Voy a intentar hacerlo de la forma que tu me estas diciendo.

Una cosa más, ¿sabes si con twincat y un diagrama de estados se puede programar esto? ¿o que otra manera es más adecuada?
 
Atrás
Arriba