Mostrando entradas con la etiqueta servomotor. Mostrar todas las entradas
Mostrando entradas con la etiqueta servomotor. Mostrar todas las entradas

miércoles, 25 de enero de 2012

Clase OutputCompare

Al probar de mover todos los servos usando threads, observamos que se producia un movimiento más lento y entrecortado (a trompicones), ya que al parecer nuestra placa era incapaz de ejecutar un programa con ocho hilos a la vez. Así que estamos provando otro método que funcione mejor, se trata de la clase OutputCompare.

Utilizando esta clase se puede configurar uno o varios pines para que retengan su salida en el estado deseado durante un tiempo concreto. El OuputCompare es muy fácil de implementar ya que no es necesario generar la señal PWM que activa los servos, simplemente tenemos que darle el valor del ancho de pulso y la espera (tiempo que dura el valor alto y bajo).

A continuación, mostramos un sencillo ejemplo para mover el servo a tres posiciones distintas:

public static void Main()
{
OutputCompare oc = new OutputCompare((Cpu.Pin)FEZ_Pin.Digital.Di0, true, 2);
while (true)
{
oc.Set(true, new uint[] { 2200, 17800 }, 0, 2, true); // Servo hacia la derecha
Thread.Sleep(1000);
oc.Set(true, new uint[] { 1200, 1800 }, 0, 2, true); // Servo en el centro
Thread.Sleep(1000);
oc.Set(true, new uint[] { 200, 19800 }, 0, 2, true); // Servo hacia la izquierda
Thread.Sleep(1000);
}
}

viernes, 23 de diciembre de 2011

Probando los servomotores

Ya hemos recibido los servos que compramos en dealextreme. Hemos tomado sus medidas para poder acabar el diseño completo en CAD.


Ahora que tenemos los servos, podemos crear un pequeño programa de prueba para ver su funcionamiento. Hasta que no recibamos la placa que hemos comprado para este proyecto, utilizaremos una FEZ Panda II prestada.

Se trata de una pequeña rutina programada en C# que nos permite hacer girar un servomotor 180º en ambos sentidos. Aquí os dejo un pequeño vídeo en el que podréis observar este movimiento.