Determinar el ángulo y la velocidad de una plataforma giratoria.

Tengo una plataforma giratoria de 1 eje (x), que gira bastante rápido ~ 300 RPM. Quiero poder detectar con un buen grado de precisión cuántos grados ha recorrido desde su posición inicial y la velocidad a la que se está arrastrando actualmente.

Por ejemplo: Piense en un reloj que tiene una sola manecilla min. La manecilla de las horas se desplaza por la esfera del reloj y quiero medir dónde se encuentra en la esfera del reloj en un momento dado en grados.

"3" en punto sería 90 grados, "6" en punto sería 180 grados, "9" en punto sería 270 grados, "12" en punto sería 0 grados,

tengo los dos sensores

Mis preguntas son:

  • ¿Puedo usar un giroscopio o un acelerómetro para medir con precisión cuánta rotación se ha producido en una plataforma giratoria?
  • ¿Hay un mejor sensor para usar para determinar la rotación en grados, como un módulo de brújula - HMC6352?
  • ¿Puedes usar un giroscopio o un acelerómetro para medir las RPM?
Hice un proyecto en el que intentamos compensar la rotación del dirigible sobre el eje z usando ese módulo de brújula exacto, pero no pudimos obtener nada confiable. No recomendaría usar ese módulo para otra cosa que no sea determinar su rumbo actual.
Esa brújula funcionará bien si su declaración "1 eje" es 100% precisa, ya que no hay absolutamente ninguna inclinación en las otras dimensiones. Si la inclinación es un problema y aún desea optar por la solución de la brújula, el HMC6343 proporciona un dispositivo similar con compensación de inclinación.

Respuestas (4)

Para un problema como este, normalmente utiliza un codificador incremental óptico . Dependiendo del tipo da una serie de pulsos por revolución, por lo que su resolución dependerá de este número. También le da información sobre la dirección de rotación. Puede encontrar la velocidad cronometrando el período de tiempo entre pulsos.
Consulte también esta respuesta para obtener más información sobre cómo funcionan los codificadores incrementales y absolutos.

Si no puede encontrar un codificador adecuado y su motor funciona sin problemas, puede ser suficiente tener solo un pulso por revolución. La posición actual se puede derivar del tiempo transcurrido desde el último pulso dividido por el tiempo entre pulsos (= período de rotación). Al igual que el codificador óptico, desea una solución sin contacto. La óptica es una posibilidad. Utilice un sensor reflectante (como Vishay CNY70 ) para detectar una pequeña área reflectante en un disco mate (o viceversa). También es posible una solución magnética y, a menudo, se usa en entornos sucios donde el sensor óptico no funciona. Un pequeño imán en el eje del motor hará que un sensor de efecto Hall (como Infineon TLE4913 ) emita un pulso cada vez que pase.

Pensarías que el giroscopio sería ideal porque te da velocidad angular. Sin embargo, para encontrar la rotación, debe integrar la velocidad angular a lo largo del tiempo, y no siempre es fácil mantener la precisión porque también integra el error, que será cada vez más grande, a menos que haya una manera de recalibrar cada rotación.
Como le comenté a Mike, cuando se usa un acelerómetro y un motor que no está montado verticalmente, el acelerómetro responderá a la gravedad de la tierra y la superpondrá como una onda sinusoidal a la lectura de la aceleración centrífuga. Esto debe filtrarse, pero también se puede usar para contar rotaciones directamente: obtienes 1 ciclo sinusoidal por revolución.
punto de atención importante:
Tanto un giroscopio como un acelerómetro tendrían que montarse en el eje, y tendrá que lidiar con el problema de conectar la alimentación y las lecturas a una posición fija.

Tendría cuidado con la solución del efecto Hall. Implementé eso en un proyecto recientemente y me encontré con un montón de errores. En primer lugar, el sensor de efecto Hall tiene un área sensible muy pequeña, por lo que su imán deberá ser muy fuerte O deberá colocarse muy bien. Si tiene alguna inclinación, esto puede volver a ser un problema porque la ruta que traza el imán se verá como un círculo con una onda sinusoidal de baja amplitud y baja frecuencia superpuesta. Recomiendo usar 2 imanes separados 180 grados entre sí y un sensor de efecto Hall con enganche. El primer imán lo enciende y el...
segundo imán lo apaga. Obviamente, deben tener polaridades opuestas, pero esto permite obtener resultados más consistentes. A 300 RPM definitivamente pude ver que eso es un problema, solo un aviso.

Las RPM generalmente se calculan utilizando un sistema de tacómetro mediante el cual se genera un pulso una vez (a veces dos veces, consulte los ventiladores de la CPU) para cada revolución. Estos luego se cuentan durante un período predeterminado y las RPM se calculan a partir de eso.

En cuanto a la posición en la rotación, eso es más complicado. Debido a la velocidad de rotación que está utilizando, no se le ocurre mucho para informar con precisión la posición de rotación, no es que responda lo suficientemente rápido como para hacerlo bien.

Si conoce la velocidad de rotación (RPM) con bastante precisión, entonces puede calcular cuánto ha girado más allá de un punto conocido en el tiempo transcurrido, por ejemplo, cuánto tiempo desde el último pulso del tacómetro, para dar una posición bastante precisa si la velocidad es constante.

Otra opción sería tener múltiples sensores en un anillo alrededor del eje y un punto de referencia en el eje que pasa por estos sensores, ya sea magnético u óptico, pero eso solo brinda una resolución limitada. Estos se conocen como codificadores ópticos absolutos (o codificadores magnéticos absolutos, si está utilizando magnetismo).

Los codificadores incrementales ópticos, como los que se usan en las ruedas del mouse, etc., son una forma de hacerlo, pero no brindan una posición absoluta, solo una relativa, por lo que también deberá acoplarlo con algún punto de referencia absoluto. .

@Matt: también hay codificadores absolutos que le darán la posición absoluta (¡sorpresa!). Siga el enlace en mi respuesta para más detalles.
@stevenvh Eso es básicamente lo que describe el párrafo 4 de mi respuesta, pero no lo nombra como tal.
@ Matt: está bien, básicamente tienes razón, pero esa no es la forma en que generalmente funcionan los codificadores absolutos. (Tal vez por eso me lo perdí). La razón es que sería terriblemente costoso obtener alta resolución; no querrías colocar mil sensores alrededor del eje. Los codificadores absolutos comunes obtendrían la misma resolución usando solo 10 sensores.
Bueno, sí, supongo que tienen 1 sensor de inicio rotacional y una pequeña cantidad de sensores incrementales que compensan el valor desde el principio.
@Matt: sí, eso es si quiere decir "una pequeña cantidad de sensores incrementales" solo uno. :-) Eso es todo lo que necesita si no le importa hacer una rotación adicional para encontrar el punto de referencia.
@stevenvh lo siento, permítanme reformular eso... "una pequeña cantidad de sensores que forman un solo sensor incremental"

Mientras que un giroscopio en teoría te da información para obtener la respuesta, en la práctica el ángulo tendrá tanto error después de unos segundos que será inútil. Los giroscopios MEM emiten una señal que indica la velocidad de rotación. Esto debe integrarse para obtener el ángulo. Sin embargo, el desplazamiento, la deriva y otros errores se acumularán continuamente en la integral. Para la mayoría de los giroscopios MEM, el resultado es inútil después de un segundo o unos pocos segundos.

Tenga en cuenta que los giroscopios mecánicos reales no tienen este problema, ya que inherentemente dan una señal de posición angular, no una velocidad angular. Sin embargo, son grandes, toscos, consumen una potencia significativa, son caros y deben "enjaularse" durante un minuto o decenas de minutos sin movimiento para calibrarlos antes de usarlos.

Si la tasa de rotación es razonablemente constante, un tic una vez por revolución es suficiente. He trabajado en varios letreros LED giratorios donde esa era la única información sobre la posición. El sistema asumió que cada rotación tomaría el mismo tiempo que la rotación anterior. La pantalla se estiró durante el encendido cuando el motor estaba acelerando, pero funcionó bastante bien en estado estable.

Justo esta primavera aconsejé a un estudiante de secundaria que quería hacer algo similar. Le di un solo optointerruptor, que usó para calcular el tiempo por rotación y generar el reloj de píxeles para la siguiente rotación. Su motor era un gran ventilador tendido de lado en el suelo, con la placa alimentada por batería y montada en el medio. Deletreaba "PROYECTO SENIOR 2011" usando 7 LED, y todos quedaron bastante impresionados.

Si el eje es horizontal, puede usar un acelerómetro para medir la velocidad de rotación y obtener una idea del ángulo actual observando la gravedad.

Dependiendo de cómo funcione el motor, es posible que la electrónica de conducción del motor informe la posición con regularidad. Si se trata de un CC sin escobillas y tiene acceso al controlador, esta información está disponible.

La comunicación con el tablero giratorio desde el exterior se puede hacer de varias maneras. En el letrero LED giratorio, usamos un eje hueco con un LED IR en el extremo fijo y un fotodiodo en el extremo giratorio. Esto se usó como un flujo de datos unidireccional a aproximadamente 1 Mbit/s. También es interesante obtener energía para el tablero giratorio. El estudiante de secundaria usó pilas. Eso fue fácil y funcionó bien para su presentación. Una versión del letrero LED necesitaba 70 W y tenía que funcionar continuamente, por lo que eso no era posible. Usamos un transformador donde el primario y el secundario podían rotar uno con respecto al otro. Esto fue impulsado por un conmutador a alta frecuencia. Se utilizó un pequeño devanado secundario en el lado fijo para la retroalimentación, y el secundario giratorio se reguló lo suficientemente bien.

La forma en que lo hice en mi proyecto ( youtube.com/watch?v=v6fGjcZuSXI ) fue usar el eje del motor y un alambre envuelto como sistema de cepillo. Sería aún mejor tener un sistema de resorte en lugar de una envoltura de alambre, pero debería funcionar bien. El eje superior era GND y el eje inferior era +5V. También puede usar acopladores de eje aislantes para construir múltiples capas de conducción si necesita un canal de comunicación o múltiples voltajes. Es un método extremadamente simple para la creación de prototipos y muy ampliable.
Oh, también encontré electronics.stackexchange.com/questions/11946/… que es mucho mejor que el que implementé

Medir la velocidad angular es exactamente lo que hace el giroscopio. En el caso de su giroscopio, la salida será de escala completa a una velocidad de 300 grados/seg. Un acelerómetro lineal también podría medir la velocidad angular si se alinea hacia el eje de rotación ya que la aceleración = r ω 2 , es decir, velocidad angular ω = a C C mi yo mi r a t i o norte r a d i tu s pero esto sería menos conveniente.

Para medir el desplazamiento angular, necesitaría integrar la velocidad angular a lo largo del tiempo y tendrá dificultades para obtener resultados precisos durante largos períodos de tiempo debido a la compensación y la deriva.

@ MikeJ-UK: la aceleración detectada por el sensor de aceleración se debe a la fuerza centrífuga, pero es constante, por lo que no puede medir la rotación de esta manera.
@Federico Russo: La fuerza sería proporcional al cuadrado de la velocidad angular.
Sí, y si el motor funciona sin problemas, eso es constante.
@Federico Russo: Por supuesto, y la salida de un giroscopio también sería constante a una velocidad angular constante, que es lo que preguntaba el OP en su tercer punto. Para obtener el desplazamiento angular , necesitaría integrar esto, de ahí mi comentario sobre la deriva.
OK, lo entiendo, mis disculpas. Me estaba enfocando en una señal que variaría con la rotación, de modo que obtendrías RPM directamente. Buen punto sobre la deriva.
@Federico, Mike: si usa un acelerómetro y el motor no está montado verticalmente, el acelerómetro tendrá una lectura de gravitación superpuesta a la centrífuga, variando de -1g a +1g (si está montado horizontalmente) y viceversa con cada rotación. @Mike: ¿qué pasa con el cableado si su electrónica está en el eje?
@stevenvh: OK, tal vez mi respuesta fue demasiado teórica y directa. Principalmente me refería al último punto del OP "¿Puedes usar un giroscopio o un acelerómetro para medir las RPM?" a lo que la respuesta es, por supuesto, "sí". Sin embargo, como usted señala, cualquier desviación de la plataforma con respecto a la horizontal provocaría una ondulación alterna en la salida de un aceleómetro que debería filtrarse. También habría que considerar las consideraciones prácticas del cableado de una plataforma con rotación sin restricciones. He estado involucrado profesionalmente en el diseño de plataformas giroestabilizadas en el pasado...
... aunque estos estaban restringidos a unos ±200°.
@Mike: no quise dar a entender que la onda sería algo malo. Podría usarse para contar rotaciones directamente.
@stevenvh: No, tomo su punto por completo y debería haber señalado las (im) prácticas de la solución del acelerómetro en mi respuesta (¡había pasado por alto los efectos de la gravedad de todos modos!).