Tengo novedades en lo que respecta a la evolución del firmware del visualizador, no va mal la cosa aunque aún queda algún pequeño problema por resolver.
El sábado hice la parte de las entradas analógicas que se usan en los ejes X e Y del controlador, las estuve probando con dos potenciómetros y funcionan correctamente, así que se pueden utilizar para colocar un embrague en el volante, o incluso para tener el freno y el acelerador en el mismo en caso de necesitarlo.
El domingo me puse bien temprano con el tema de las salidas PWM, y bueno... para qué contaros, sólo con deciros que a las 11 de la noche tuve que deshacerme del trabajo de todo el día y volver a lo que tenía del día anterior, porque no iba el PWM y encima habían dejado de funcionar cosas que antes iban bien... os podeis imaginar la situación.
Total, que tuve que comenzar la parte del PWM desde cero, y para mi sorpresa... ¡Iba bien! Me puse a comparar, y resulta que era una sentencia "#define" que había eliminado por error. Todo el día programando y comiendome la cabeza pa ná, jejeje...
Finalmente terminé la parte de PWM y la probé con un servo. El funcionamiento es correcto, pero hay un detalle que tengo que intentar corregir, y es que cuando el servo está en una posición fija, sin moverse, vibra. No se aprecia el movimiento de forma visual, pero se nota como vibra el servo, debido a las microcorrecciones que tiene que hacer debido a que seguramente la señal PWM no es perfecta del todo. Achaco este problema a la toda la cantidad de procesos diferentes que está realizando el PIC: proceso USB, mostrar datos en los displays, entradas digitales, entradas analógicas, etc, etc... Esto puede hacer que el pulso PWM pueda irse algún microsegundo arriba o abajo, provocando la vibración.
Una posible solución, es que el visualizador sólo envie el PWM cuando haya que cambiar la posición del servo, y así evitar que vibre cuando tenga que quedarse en una posición fija, pero antes de recurrir a eso voy a intentar solucionar el problema de la señal PWM.
Finalmente quedarían así las especificaciones de las entradas analógicas y las salidas PWM:
- Nº Entradas Analógicas: 2 (ejes X/Y)
- Rango entradas analógicas: 0V - 5V
- Resolución entradas analógicas: 8 bit (256 posiciones intermedias)
- Nº Salidas PWM: 3
- Rango PWM: 0 ms - 2,55 ms
- Rango servo: 0,5 ms (izqda) - 1,5 ms (centro) - 2,5 ms (dcha)
- Resolución PWM: 10 us (200 posiciones intermedias entre 0,5ms y 2,5ms)