Servomotor MiniZ.

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. 


Programa: AVR32, AVR1280.

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.