Como se citó en el post previo los motores del tipo SERVO se manejan mediante un pulso.
En este hilo intentaré describir este pulso y proponer un esquema para generarlo.
Como el servo que usaremos será un Futaba
s3003 trucado, tendremos que generar un pulso cuadrado de 50 Hz.
Como el periodo es la inversa de la frecuencia tendremos 1 / 50 s = 0.02 s = 20 ms.
Esto quiere decir que el pulso tendrá una periocidad de 20 ms. Este servo específico tiene un control mínimo de pulso de 0.5 ms y un máximo de 2.5 ms. Entonces si queremos que gire hacia la izquierda tendremos que mantener durante 0.5 ms un nivel lógico alto y durante 19.5ms un nivel lógico bajo. El razonamiento es el mismo para la derecha exceptuando que serían 2.5 y 17.5ms respectivamente. Para que el motor se mantenga quieto se usará el valor intermedio, que en este caso es: (2.5 - 0.5) / 2 = 1 ms. A continuación adjunto unas gráficas explicativas:
Movimiento izquierda: Descripción del pulso: Thigh = 0.5ms, Tlow = 19.5 ms
Movimiento derecha:
Descripción del pulso: Thigh = 2.5ms, Tlow = 17.5 ms
Movimiento centrado:
Descripción del pulso: Thigh = 1.5ms, Tlow = 18.5 ms

Con esto el servo funcionaría correctamente.
Ahora la cuestión se centra en generar este pulso mediante un microcontrolador.
Los microcontroladores suelen tener una serie de puertos de Entrada / Salida, a través de los cuales podemos "leer o escribir" señales lógicas. Estos puertos están compuestos por Pines o patitas agrupadas de ocho en ocho. Para generar este pulso tan sólo tendremos que subir y bajar en el momento adecuado el nivel lógico de uno de los pines de un puerto.
Cuando trabajamos con microcontroladores hay varias formas de tener constancia del tiempo transcurrido, pero por norma general se usarán los Timers o contadores intentando evitar en todo momento la cuenta activa de instrucciones / ciclos. En el próximo hilo trataré al detalle esta cuestión.