Olá pessoal,
Para continuar a brincadeira com o Netduino, resolvi testar o PWM controlando um motor DC.
Umas das forma para controlar a velocidade e direção da rotação de um motor DC é utilizando uma Ponte H. Podemos construir uma com transistores, ou utilizar algum circuito integrado com a ponte já montada. No meu teste, utilizei o LMD18200 da National Semiconductor, que é uma ponte H com controle de direção e controle de velocidade com PWM. O CI também possui saídas para controle de temperatura e corrente. Além de muito fácil de utilizar, o LMD18200 é muito robusto. Pode controlar motores de ate 3A com tensão de ate 55V. No site da National é possível obter mais informações e até baixar o datasheet do componente.
O funcionamento é bem simples. Configuramos os pino D5 do Netduino como PWM. A frequência padrão do PWM é 10KHz. O duty-cicle inicialmente é configurado para 100%.
Configuramos também o pino D8 para definir a direção da rotação do motor e o botão da placa como entrada.
A cada vez que o botão é pressionado, um contador vai incrementando o duty-cicle, e quando chega a 100% ele inverte o sentido do motor, e começa a decrementar o duty-cicle, ate chegar em 0%, invertendo novamente o sentido e começando novamente a incrementar o duty-cicle, e assim sucessivamente.
Abaixo temos o código do netduino e um vídeo som o motor em funcionamento. Dá pra acompanhar a variação do duty-cicle e o sentido de rotação através dos Leds:
const uint maxDutyCyle = 100;
static bool statusBotao;
static int dutyCycle;
static int incremento;