TODOPIC

Mecatrónica => Robótica => Mensaje iniciado por: diego_castano01 en 30 de Junio de 2006, 22:39:37

Título: posicionamiento angular de un motor DC
Publicado por: diego_castano01 en 30 de Junio de 2006, 22:39:37
Hola, alguno de ustedes conoce alguna tecnica para controlar el angulo de giro de un motor DC unido a una caja reductora en la que no se use, para ello potenciometros, que complicaciones podria tener si uso cada tipo de sensor de posicion diferente, me explico, que fallas podria tener si uso un encoder u otro metodo, que ustedes hallan observado en la practica; si uso un potenciometro y hago una conversion ADC que debo tener en cuenta, gracias
Título: Re: posicionamiento angular de un motor DC
Publicado por: RaDoN en 01 de Julio de 2006, 05:06:00
¿Para que aplicación lo necesitas? Puede que te salga mejor usar un motor paso a paso o un servo.
Título: Re: posicionamiento angular de un motor DC
Publicado por: Algec en 01 de Julio de 2006, 07:24:54
Necesitas un encoder y debe ser absoluto, o bien un sensor de posicion añadido al encoder que de un paso por cero una vez en cada giro, asi aseguras que se posiciona exacto y no hay perdida de pulsos.
Es la unica forma que conozco.
Título: Re: posicionamiento angular de un motor DC
Publicado por: diego_castano01 en 03 de Julio de 2006, 21:34:46
Hola, ya tengo el hardware montado y aunque no lo quiera debe ser con un motor DC (es la exigencia) lo que no se es como hago para controlar los angulos, hasta ahora he intentado con un potenciometro digital y una conversion ADC pero sin buenos resultados, me dicen que con un encoder , puede ser ahora me pregunto  :shock::

el dispositivo debe girar hacia la derecha por ejmplo 15 grados desde una posicion de referencia y luego debe devolverse hasta la posicion de referencia y desde esta girar otra cantidad de grados que puede variar de la anterior, cuando llegue a esta debe devolverse a la posicion de referencia y comenzar el ciclo denuevo por un tiempo determinado,

como ayuda puede ser la de una camara de seguridad a a cual yo le pueda decir que gire tantoa grados como quiera, sea a la derecha o izquierda, PERO  :? , con la condicion de que los grados de giro esten determinados por una posicion de referencia (esta puede ser de 0º, 15º, cualquiera)

Ahhhhhh, si me ayudan con codigo, me gusta programar con pic en lenguaje assembler.

Gracias, espero que haya sido un poco mas claro

CHAO  :shock: :o :( :) :-/
Título: Re: posicionamiento angular de un motor DC
Publicado por: Nocturno en 04 de Julio de 2006, 00:57:55
Imagino que, al tratarse de un motor DC, estará conectado a una reductora múltiple, y la exigencia de giro en grados es para la salida de la reductora. Supongo, por tanto, que un giro de 15º al final de la reductora, se representa con un montón de vueltas en el motor.

Si estas suposiciones son correctas, yo pondría un sensor cuentavueltas al eje del motor (hall e imán, u óptico y marca), y diseñaría un programa que hiciese girar al motor X vueltas en un sentido u otro.

Si debe controlar un giro de 15º en un motor DC sin reductora, creo que es prácticamente imposible alcanzar esa precisión.
Título: Re: posicionamiento angular de un motor DC
Publicado por: GustavoT en 04 de Julio de 2006, 10:22:17
Creo que voy a disentir con nocturno.
La idea de contar giros del motor y trasladar eso a desplazamiento angulares la salida del reductor es muy buena, pero tiene un pequeño inconveniente que se llama backlash, y es el juego mecánico que tiene los engranajes, por lo que por mucha relación que tenga en la caja reductora, en la salida voy a tener un error que no voy a estar viendo, por que no estoy midiendo directamente la variable de salida que es la posición.
Si no fuera por esto tendría una precisión del demonio, imagínate una caja con relación 1:1000 contando las miserables vueltas del motor tengo la milésima.

Por otro lado si tu backlash es suponiendo de 2°  y vos queres tener menos precisión que eso, no hay problema a contar vueltas se a dicho

Ahora les cuento mi experiencia. construyendo un brazo mecánico el años pasado colocados potenciómetros en las articulación, con el conversor AD del micro mediamos hasta la milésima del error de posición, y si bien el backlash nos traía problemas, por lo menos estábamos sabiendo de la existencia del mismo, y el control PID iba corrigiendo

Este PID era medio trucho programado a duras penas en un 18F, luego implementamos PID + control adoptivo con un PLC y lográbamos mejores resultados

Gustavo Tasquer
Título: Re: posicionamiento angular de un motor DC
Publicado por: Veguepic en 04 de Julio de 2006, 12:00:23
Hola Diego_castano01:

En este archivo podras encontrar una explicacion de como funcionan los encoders de los mouse

www.bipom.com/applications/encoder/encoder.pdf

Incluso creo que podrias sacar uno de un mouse viejo y adaptarlo a tu motor o solo tomar la idea.

Tiene limitaciones en cuanto a velocidad, el receptor no va a mas de 25 KHz.

Espero te sea de utilidad.

Saludos
Título: Re: posicionamiento angular de un motor DC
Publicado por: diego_castano01 en 04 de Julio de 2006, 19:32:07
 Hola le comento he logrado realizar que el motor se mueva 20º hacia un lado y se devuelva al captar un volatje X, esto lo logré mediante el uso de la conversion ADC (en free running): un potenciometro lineal y el micro (un ATMEL), pero presento problemas a la hora de pasar por la posicion cero del dispositivo, ademas de que observo que la conversion ADC no es como muy estable que digamos a pesar de la linealidad buena del transductor, ¿ que podrá estar pasando, sera que debo usar otra forma de realizar la conversion a parte de la de free running o usar otro ADC (uso el ADC0804)

la idea de nocturna pudiera servir pero por el momento veo la forma que uso, com la mas viable, me gusto la observacion de Gustavo, alguien tiene otras observacionjes y experiencias
Gracias-/
Título: Re: posicionamiento angular de un motor DC
Publicado por: GustavoT en 05 de Julio de 2006, 20:26:03
Free running nunca había escuchado eso en un conversor AD, talvez estoy muy metido con los pic y no conozco de otras cosas, pero te diré que la idea de usar un conversor AD externo como el 804 no es buena. lo mejor es buscar un micro del fabricante que mas te guste que tenga conversor AD integrado eso no falla, si no es muy estable,  puedes poner un pasa bajo a la entrada, o hacer un promedio con las lecturas.. eso es solucionable me gustaría saber como estas haciendo el control. que estas usando para manejar el motor, como..
Ahora no es que es eso de pasar por la posición de cero

Gustavo
Título: Re: posicionamiento angular de un motor DC
Publicado por: diego_castano01 en 06 de Julio de 2006, 14:21:38
Hola, como pongo un pasa bajo al conversor ADC, no tengo idea de de como hacerlo, como hago un promedio con las lecturas.

Ahhh el free running sirve para colocar le ADC en un muestreo y conversion continua dandole un pequeño starte al ADC e incluyendo una señal de reloj, ahor me toca con converso ADC por separado del micro por que es uno de los requisitos del diseño y tengo casi que topados todos los bits de los puertos.

La posicion cero, hace referencia a una posicion inicial en la cual se debe colocar el dispositivo antes de iniciar su trabajo, pienso hacerlo con un par de micro switch, ahora esta debe tenerse en cuenta, ya que apartir de ella es que se mediran los grados que giraran cada uno de los 2 motores que estoy usando.

El control de los motores lo realizo con un driver BA6209 y uso un micro ATMEL AT89S53 de 12K.

No se si he sido mas explicito

Gracias por sus comentarios, todavia estoy teniendo problemas con la estabilidad del ADC por favor ayudita con este problemmm.

NOTA: ha futuro realizare el software en base a PIC con ADC incorporado (pero no es posible en el momento).
Chaoo
Título: Re: posicionamiento angular de un motor DC
Publicado por: GustavoT en 07 de Julio de 2006, 01:35:08
Antes de la entrada  al conversor pone una resistencia en serie dr 470ohm y un capacitor en derivación de2.2uf y dr ahi vas al conversor

para hacer un promedio, tenes que ir tomando los valores del conversor ad e ir sumándolos en una variable de 16bits, luego haces una división... promedio

donde estas estudiando??, quien te dio esas especificaciones por que eso de colocar conversores ad externos es ir en contra de la corriente


Título: Re: posicionamiento angular de un motor DC
Publicado por: maxluis en 09 de Julio de 2006, 12:15:45
Diego: Es +- lo mismo que esta preguntando el que quiere posicionar el rotor, lo tuyo es con angulos definidos,  se me ocurre: "encoder"= un disco dividido en los angulos que quieres estar, en cada uno de estos una linea de "perforaciones" pones un diodo emisor y un detector por cada perforacion, y vas haciendo codificacion con las perforaciones (abiertas y cerradas (1y0)) y estas las pones en la puerta de un pic, y si haces 8 "hoyitos" tienes hasta 255 angulos diferentes, vas leyendo y comparando y te posicionas en la elegida.
saludos.
Maxluis.
Título: Re: posicionamiento angular de un motor DC
Publicado por: jfh900 en 09 de Julio de 2006, 12:26:02
Para aplicar ese sistema (en definitiva es un encoder) se utiliza el código Gray:

http://azul2.bnct.ipn.mx/~clogicos/codigos_conversores_y_detectores_de_error/codigos_conversores_detectores_de_error.htm

Un saludo
Título: Re: posicionamiento angular de un motor DC
Publicado por: diego_castano01 en 27 de Julio de 2006, 00:24:02
Hola, lo que pasa es que ya me tocó obligado hacerlo por potenciometros, ahora no se si me pueden ayudar con el problema que tengo, por que razon a veces el micro adquiere el dato y logra invertir el giro del motor y a veces como que no lo toma y este continua derecho, como puedo sincronizar el ADC y el micro sin cambiar le modo Free running del ADC 0804, me han dicho que de pronto use el INTR del ADC pero de que manera lo puedo usr en codigo

Gracias
Título: Re: posicionamiento angular de un motor DC
Publicado por: aitopes en 28 de Julio de 2006, 08:31:20
Muy buena la info de como funciona el encoder del mouse....para algo van a servir los mouses viejos que "descansan" en mi caja de chatarra...  :mrgreen:

Saludos.
Título: Re: posicionamiento angular de un motor DC
Publicado por: xocas en 28 de Julio de 2006, 09:05:31
hola

pero te diré que la idea de usar un conversor AD externo como el 804 no es buena. lo mejor es buscar un micro del fabricante que mas te guste que tenga conversor AD integrado eso no falla... podrias decirme porque Gustavo I? mi escuela ademas de la lectura de todo cuanto cae en mis manos, es este foro y las practicas que voy realizando para aprender. yo de hecho tenia entendido que un conversor a/d en el propio pic genera mucho ruido...

y otra pregunta... en los motores dc no tenemos un problema añadido y es que no paran en seco aunque la alimentacion desaparezca debido a la inercia? no se, pregunto...

un saludo

Título: Re: posicionamiento angular de un motor DC
Publicado por: JCAK en 29 de Julio de 2006, 15:23:24
Hola a todos.

Estaba leyendo esto de detectar el angulo de giro del rotor, y un metodo que podrias tener en cuenta además del encoder, es la detección capacitiva.

Es cómo usaban los sintonizadores de radio análoga, según la posición de la rueda del dial, cambia la capacidad.
En estos capacitores variables solo existe aire como dieléctrico, por lo tanto, si tenes uno de los discos fijado al rotor y otro a la carcaza del motor, el motor no gasta energia teniendo que girar un potenciometro.
El beneficio que podes encontrar es: velocidad de respuesta en el motor, podes usar un motor de menor torque y además, tenés mayor presición que cualquier metodo digital.

Saludos

JCAK
Título: Re: posicionamiento angular de un motor DC
Publicado por: GustavoT en 31 de Julio de 2006, 13:18:33
yo de hecho tenia entendido que un conversor a/d en el propio pic genera mucho ruido...  <-- esto es un mito y de los mas entupidos un conversor ad es un conversor ad dentro y fuera del micro, y si microchip lo pone debe ser por que da buenos resultados (de hecho los da)
Es igual que el mito de que "los PIC sin sensibles al ruido" hay bibliotecas enteras que hablan del ruido y si diseñas el circuto teniendo en cuentas estos no deberías tener ningún problema

Tengo un profesor que me dijo "yo a los pic los miro con cuidado, conosco uno que me dijo que le había tomado 2 semanas hacer un proyecto y 6 meses sacarle el ruido"  , mi respuesta textual fue "ese es un boludo no sabe diseñar nada y le hecha la culpa al PIC"

Por lo que leo, estas teniendo problemas y creo que es por la forma que estas diseñando las cosas

Debes diseñar las cosas en forma modular, Si tenes una entrada analógica, colocas un display y medís la entradas, haces de todo hasta estar seguro que funciona correctamente y recién pasas al resto, cuando tenes todo los módulos armados , los empesas a unir
Si cuando arranca un modulo se cae otro modulo es por que algo hiciste mal, tenes que rever la electrónica y la programación

El tema del sensor, bien te propusieron encoder, capacitivos y vos preferís el potenciómetro, Bien todos son validos en sientas circunstancia,
- A mi los encoders no me gustan por que la precisión es pesima, romper un mouse para obtener un encoder = baja presicion.
- Los capacitivos, tenes que hacer un muy buen diseño para no tener problemas de ruido, pero son muy valorados si no queres tener el rozamiento del pote.
El pote con un conversor de 10 bits, y creo que es una de las mejores opciones y si tenes un buen pote cuidado en la electrónica y un conversor de 12 bits. Estas tocando el cielo

Ahora en el tema del control, por lo que leo estas tratando de parar un sistema en forma instantánea…..  y no,  muy acostumbrados a los motores paso a paso y … talvez si lo moves al motor solo puede que pare en forma instantánea, pero en el mundo real esas cosas no pasan, toda carga que tenga el motor tiene inercia y no hay mas que decir, es indiferente del motor que estes usando.

Por lo que entiendo vos haces mover el motor y tenes una rutina de comparación cuando el valor del conversor ad llega al valor programado para y ese es un control on off , son de lo peor
Por lo que veo no cursaste control 1, te recomiendo Bolton es un libro muy simple y fácil de entender, con 4 capítulos que leas vas a tener una idea de cómo se realiza un sistema de control serio

Cualquier cosa pregunta
Título: Re: posicionamiento angular de un motor DC
Publicado por: Oceano en 05 de Julio de 2010, 18:02:44
En el enlace de abajo explica cómo hacer dos tipos de encoder, uno por hardware y otro con PIC:

http://sites.google.com/site/proyectosroboticos/encoder