Metodo numerico derivacion con micro

Mi problema consiste en que tengo que derivar con un micro de 16 bits a 24 mhz. Tengo una entrada de datos asíncrona y tengo que derivarla para realizar un lazo de control de un motor. Utilizo un esquema en diferencias clásico de dos valores, pero me genera demasiado ruido. Puedo implementar un filtro digital, o puedo utilizar un esquema de más puntos (tipo Taylor), también se puede generar un polinomio de interpolación por mínimos cuadrados y derivarlo (pero creo que esto seria demasiado costoso). El problema es que no tengo demasiada experiencia practica
En este campo y no he encontrado nada de bibliografía sobre implementación de controladores sobre uc. Mucha teoría de transformada z y así pero nada practico. Si alguien tiene experiencia en este campo.

1 respuesta

Respuesta
1
Si dejamos de lado por ahora los problemas por la cuantizacion y pensamos en EL DISEÑO DIGITAL del DERIVADOR podrías pensar en una implementación IIR:
1) Acotas el ancho de banda del DERIVADOR, de forma que sea derivador hsta digamos fc y luego hasces que caiga hasta fr TENIENDO en cuenta que en fr la ganancia debería ser comparable a la SNR deseada para tu sistema...
2) Después usas el método de Inv a el Impulso y ya tienes tu FILTRO IIR DISCRETO que lo implemetas de manera recursiva.
El método fir:
Posiblemente este sea más simple pero más lerdo...
1) Acotas el ancho de banda del DERIVADOR, de forma que sea derivador hsta digamos fc y luego hasces que caiga hasta fr TENIENDO en cuenta que en fr la ganancia debería ser comparable a la SNR deseada para tu sistema...
2) Utilizas una ventana y toda la convolucion la realizas con FFT... y si es en tiempo real usas Convolucion en bloques (overlap and sabe o add) siempre usando FFT que es lo más barato...
LOS ALGORITMOS BUSCALOS EN C(FFT) y compilalos para tu uc.
¿Entendés esto que te digo?
Ni papa, no te entiendo ni papa, vamos se que existe todo lo que me dices, tengo el proakis manolakis en casa pero no lo he estudiado nunca, yo lo que quería era una solución más de andar por casa. De todos modos, gracias.
Otra cosa, los iluminados que se encargan de diseñar el algoritmo en cuestión me han concretado que quieren que utilice el método de mínimos cuadrados para generar un polinomio de interpolación de 2orden que 1)suavice la entrada (filtro) y 2)calcule las derivadas de forma analítica. Pero es que este método es una putada para hacerlo con un micro. Sabes si existe un método optimizado, ¿cómo el FFT con la DFT?
Hay caramba! Dejando de lado la teoría de Procesamiento Digital de Señales...
Si quieres simplificar tu vida para hacer cálculos de Aritmética de punto flotante te RECONTRA RECOMIENDO que utilices un lenguaje de alto nivel como C! Seguramente puedas encontrar un compilador y librerías para el microcontrolador que estés utilizando...
Después analizas con un Profiler si realmente existe algo que optimizar en el código generado...
No conozco ninguna optimización para el algoritmo de mínimos cuadrados, salvo no utilizarlo para cálculos en linea!
Sinceramente me resulta muy gracioso que un electrónico calcule una derivada analíticamente para implementar un controlador :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas