Algunas
notas y mediciones sobre el servomotor del MiniZ, que es necesario
conocer para poder aplicar odometría y ajustar el regulador.
Mirando el circuito del coche encontramos el siguiente esquema de realimentación del motor de dirección:
El micro del coche utiliza este circuito para conocer el giro de las
ruedas delanteras, para ello utiliza el pin 3 del microcontrolador, que
configurandolo como entrada o como salida le permite cargar y descargar
el condensador C1, que utiliza para medir el tiempo que tarda
éste en alcanzar un nivel de tensión que es
función de R8, potenciometro de dirección. Para poder
medir la posición de las ruedas conectamos un ADC a R8 y
sincronizamos la captura de la señal del ADC con la captura del
micro del coche, para evitar la carga y descarga que provoca
éste en el condensador y quedarnos sólo con el nivel de
continua. La posición de las ruedas está reprensentada en
este valor de continua.
Si conectamos un osciloscopio a la referencia de tensión podemos
observar la siguiente señal, para 3 ángulos distintos de
giro de las ruedas.
La señal amarilla es la "Referencia de tensión" y se
puede ver como va aumentando su nivel de continua según aumenta
el giro de las ruedas. La rampa que se ve es producida por la carga del
condensador C1, según su duración el micro del coche
conoce la posición de las ruedas.
Si miramos en el osciloscopio la señal de control del miniz
(amarilla) y la referencia de tensióm anterior (azul), podemos
ver como la rampa empieza al comienzo del segundo pulso de control, y
dura aproximadamente un máximo de 7 ms. Por lo que podemos
sincroniza la captura del ADC del micro externo con esta señal,
y leer el valor una vez que ha pasado la rampa para conocer el
ángulo de giro del coche.
Implementado la captura de la señal en nuestro interfaz podemos
conocer el ángulo de giro para cada valor del ADC, realizando un
experimento como el de la imagen.
Se pasa a anotar el ángulo de giro máximo y
mínimo, los valores del ADC para ambos y se pasa a anotar el
valor del ADC para todos los ángulos comprendidos entre el
ángulo máximo y mínimo. Conociendo los
ángulos totales, la variación total del ADC y teniendo en
cuenta el análisis mecánico de posición del brazo
del servomotor hasta la mangueta de dirección, podemos calcular
el valor esperado del ADC para cada ángulo de giro. Es mejor
utilizar el valor teórico tomando mucho cuidado en medir los
valores críticos para su cálculo, ya que si utilizamos el
valor medido directamente podemos tener cierto error. Sobre todo porque
la dirección tiene una holgura de varios grados en
función del sentido de desplazamiento de las ruedas. Cálculo teórico.
Estas medidas se han de realizar para cada miniz, ya que el
cálculo teórico depende de ajustes internos como el valor
del trimmer de dirección.
Valor teórico ADC para un ángulo de giro dado (particular de cada coche).
Grados
Medida ADC
-22
761
-21
765
-20
769
-19
772
-18
776
-17
780
-16
783
-15
786
-14
790
-13
793
-12
796
-11
799
-10
802
-9
805
-8
808
-7
810
-6
813
-5
816
-4
818
-3
821
-2
823
-1
825
0
828
1
830
2
832
3
834
4
836
5
838
6
840
7
842
8
844
9
846
10
848
11
850
12
852
13
853
14
855
15
857
16
858
17
860
18
861
19
863
20
865
21
866
22
867
La dirección del coche gira en total 22 grados hacía
cada lado. Una vez que conocemos el valor del ADC para cada
ángulo podemos pasar a programar una función que nos
devuelva el tiempo que tarda la dirección en alcanzar el giro
deseado, es decir como de rápido es el servo de
dirección.
Por simplicidad se ha capturado la señal del ADC cada 16 ms, un
valor muy alto de tiempo pero que sirve para tener una idea aproximada
de la velocidad del servomotor de dirección, lo ideal
sería coger un tiempo mucho más pequeño, pero
supone complicar la programación. Si no valen los tiempos
medidos para el ajuste del regulador habrá que reprogramar esta
parte y capturar la señal con un tiempo de muestreo mucho
más pequeño.
Para capturar los datos del servomotor se guardan en la memoria del
interfaz y se envian a un pc por su conexión usb para
procesarlos.
Pasamos a la captura de los valores y representación de los resultados en una hoja de cálculo. Capturas: motor_on, motor_off.
Observando los siguientes resultados para algunas de las capturas de las hojas anteriores:
Giro máximo de -22 grados a + 22 grados, en el eje x el tiempo en ms.
Giro máximo de +22 a -22 grados.
Cuando se pasa de ángulos positivos a ángulos negativos
se da una respuesta subamortiguada, que aquí no se aprecia ya
que el tiempo de 16 ms es demasiado alto, pero viendo varias capturas
se puede ver.
Cogiendo ángulos que no sean los extermos:
De -15 a 15 grados.
+15 a -15.
Tiempos anteriores sólo para hacerse una idea de la velocidad del servomotor de dirección.