Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

como grabar movimientos de un servomotor y ejecutarlo

un saludo a todos

soy nuevo en este programa y mi intencion es crear un brazo robotico controlado por labwiew y arduino, he hecho una pequeña prueba la dejo abajo (no se asusten ya he dicho ue soy nuevo) mis dudas son las siguientes :

 

-1 como puedo hacer para grabar posiciones y luego reproducirlas, osea muevo el brazo a la posicion y al darle a un boton que guarde la posicion y asi sucesivamente hasta crear todos los movimientos y luego reproducirlos 

 

-2 como puedo cambiar los pulsos que envia al servo, por que al poner el dial a 0 o 180 se ve el servo forzado y no es la posicion exacta ejempolo el rango va 540 a 2400 us quiero ponerlo de 600 a 2300

 

-3 como controlo la velocidad de cada sevo, esto seria para hacer los movientos mas suaves y que vallan los servos sincronizados ejemplo un servo tiene que moverse de 80 a 180 y otro de 0 20 simultaneamente, entonces un servo llegaria a la posicion final antes que el otro y lo que yo pretendo es que lo hagan en el mismo tiempo sin importal la distancia a la que debe moverse cada servo 

 

espero haberme explicado bien un saludo y gracias

 

PD no espero que me hagan el codigo con que pongan algun ejemplo o algun enlace donde lo explique me valdria

0 kudos
Mensaje 1 de 3
6.212 Vistas

subo el codigo correjido aver si alguien se anima a hecarme una mano

0 kudos
Mensaje 2 de 3
6.176 Vistas

Hola, esta es la primera vez que me inscribo en paginas de este tipo, bien por falta de tiempo, trabajo, niños, proyectos, arduino....

 

Aqui tienes tus soluciones.

 

1º) Como poder mover servos y grabar posiciones?

 

Solucion: Abres el servomotor, y localizas el dial del potenciometro que tiene en su interior, y le sueldas un cable muy fino. Asi tienes un servo con 4 hilos.

 

Este cable lo colocas en una entrada analogica de arduino A0(x ejemplo).

Haces un`pqueño programa en arduino que lleve al servo a 0 grados y consultas esta entrada y la haces salir por el puerto serie. Asi veras el valor minimo que da

el`potenciometro y los mismo para 180 grados y asi tienes los limites.

 

Bien teniendo los limites puedes mapear el valor de la analogica para saber en que grado se encuentra el servo:

 

   PosicionServomotor= map(ValorMinimo,vlormaximo,0,180);

 

de esta forma  PosicionServomotor sera un valor comprendido en el rango del servo.

 

Despues lo grabas en la eeprom o en variables, como quieras.

 

2º) Como conseguir que los servos 1,2,3,4,5,n... lleguen al mismo tiempo viniendo cada uno de un sitio cualquiera?

 

Solucion: teorema bresenham. Busca algun ejemplo, aunque sea en otro lenguaje y lo adaptas al lenguaje arduino, yo lo hice y fue tremendo. Para que te hagas una idea, imaginate que para mover 6 servos y cada uno en una posicion inicial hacia una posicion final tienes que hacer tantos movimientos para todos los servos tal que asi... 

 

Inicial

                      S1 160

                      S2  89

                      S3  32

                      S4  180

                      S5 100

                      S6   0

Final

                      S1 170

                      S2  85

                      S3  30

                      S4  182

                      S5  90

                      S6  100

 

Solucion:       S1 160,161,162,163,164,165,166,167,168,169,170

                      S2  89, 89  ,  88, 88 ,  87, 87 ,  86,  86, 85, 85  , 85

                      S3 ....,.

 

 

 

SaludosEmoticono feliz

 

 

 

0 kudos
Mensaje 3 de 3
5.759 Vistas