Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

El rumbo de la brújula se retrasa en las curvas, ¿el filtro está mal?

El rumbo de la brújula se retrasa en las curvas, ¿el filtro está mal?

Resuelto 6 5

Traducido del Türkçe por IA ·

Estamos trabajando en un pequeño barco autónomo para medir la calidad del agua, que recorre una ruta hasta puntos de muestreo en estanques. Yo me encargo de los datos, pero el equipo de electrónica está de vacaciones, así que el problema me ha tocado a mí.Para el rumbo tenemos un magnetómetro QMC5883L, y el ESP32 lo lee a 10 Hz. Cuando el barco va recto el rumbo está bien, pero en las curvas se retrasa 2-3 segundos: el barco ya ha girado, el valor sigue mostrando el anterior y luego se pone al día poco a poco. El retraso parece distinto en giros a la derecha y a la izquierda. Por eso el seguimiento de la ruta oscila.Los valores también se envían a Hermetry, donde dibujamos la ruta en un mapa. Hay además algo raro: en el gráfico semanal el rumbo a veces aparece alrededor de 180, aunque ese día el barco fue al norte y volvió.

♥ 0

Traducido del Türkçe por IA ·

¿Aplican un filtro al valor leído?

Sahadan selamlar.
♥ 0

Traducido del Türkçe por IA ·

Sí, es el promedio de las últimas 20 lecturas. A 10 Hz tarda 2 segundos.

♥ 1

Traducido del Türkçe por IA ·

Ajuste la ventana a 50, será más estable.

Ağ geçidi yine bağlanıyor…
♥ 0

Traducido del Türkçe por IA ·

¿Se ha realizado la calibración? Si no se ha hecho la calibración de hard iron y soft iron, aparecen errores distintos según el sentido de giro, y la diferencia izquierda-derecha puede deberse a eso.

♥ 0

Traducido del Türkçe por IA ·

Ampliar la ventana aumenta el retraso, hay que hacer lo contrario. Tuve el mismo problema una vez mientras trabajaba con drones.La fuente del retraso es el promedio en sí: un promedio móvil de 20 lecturas llega con unos 1 segundo de retraso, y el error crece a medida que aumenta la velocidad de giro. La falta de calibración que mencionó Büşra Hanım también explica la diferencia entre el giro a la derecha y a la izquierda.La solución es combinarlo con el giroscopio. El giroscopio detecta la rotación al instante pero se desvía lentamente, el magnetómetro es lento pero no se desvía. Un filtro complementario combina ambos:

// dt = 0.1 s, gz = derece/s (z ekseni jiroskop)
float a = 0.98;
heading = a * (heading + gz * dt) + (1 - a) * magHeading;
// 0/360 geçişini düzelt
float fark = magHeading - heading;
if (fark > 180) heading += 360 * (1 - a);
if (fark < -180) heading -= 360 * (1 - a);
heading = fmod(heading + 360, 360);

Si la placa no tiene giroscopio, añadir un MPU6050 es la forma más barata. Primero, haga girar el barco dos vueltas completas en el agua y realice la calibración hard/soft iron.El problema del 180 es aparte: un ángulo no se puede promediar. El promedio de 359 y 1 da 180. El gráfico semanal lee valores agregados por hora y la función predeterminada es average. En el gráfico del rumbo, cambie la función a last, y para el análisis envíe heading_sin y heading_cos junto al rumbo; su promedio sale correctamente.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 7

Traducido del Türkçe por IA ·

Con el filtro complementario el retraso casi desapareció, y el equipo ya había encontrado un MPU6050 de todos modos. También hicimos la calibración y la diferencia izquierda-derecha se fue. Al usar last en la gráfica también se acabó la tontería del 180. Menos mal que leí este artículo antes de probar la sugerencia de Hakan Bey 🙂

♥ 2
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir