Publicado 2026-03-19
Você deve ter pensado nisso: O microcontrolador 51 é tão clássico e barato, ele pode ser usado para controlar oservo? A resposta é sim, e em mais de um aspecto. Hoje falaremos sobre como usar o microcontrolador 51 para tocar oservoe faça sua pequena embarcação se mover.
O volante é na verdade um "preguiçoso". Contanto que você diga para onde virar, ele usará seus circuitos internos e motores para chegar a essa posição. A maneira de saber é uma onda PWM, que é um sinal de onda quadrada com largura ajustável. Um padrãoservorequer um ciclo de pulso de 20 milissegundos, onde a largura do nível alto determina o ângulo do servo.
Embora o microcontrolador 51 não possua um módulo PWM de hardware dedicado (o modelo antigo não possui, e falaremos sobre a versão aprimorada separadamente), podemos usar um temporizador para simulá-lo. É como usar um cronômetro para medir o tempo, deixando um pino emitir um nível alto primeiro, depois reduzi-lo quando o cronômetro expirar e esperar até que o período de 20 milissegundos termine antes de repetir. Contanto que o tempo seja suficientemente preciso, o microcontrolador 51 é totalmente capaz de realizar esta tarefa.
Para fazer o servo girar, apenas um microcontrolador não é suficiente. Em primeiro lugar, você precisa de um servo, como o SG90 de baixa potência, que seja fácil de usar. Depois, há a fonte de alimentação, que é particularmente importante. A corrente de trabalho do servo não é pequena, principalmente no momento da inicialização. Obter energia diretamente da placa de desenvolvimento do microcontrolador pode facilmente fazer com que o microcontrolador seja reiniciado. Portanto, você precisa preparar uma fonte de alimentação separada de 5 V para o servo, como uma bateria ou módulo estabilizador de tensão.
Outros pequenos componentes também são indispensáveis: uma placa de ensaio ou fio DuPont é usada para conexão. É melhor preparar um capacitor de cerca de 100 microfarads e filtrá-lo em ambas as extremidades da fonte de alimentação do servo. O capacitor pode atuar como um pequeno reservatório, amortecendo as flutuações de corrente, fazendo com que o mecanismo de direção funcione mais estável e evitando que o microcontrolador seja "implicado" na reinicialização.
A ideia central de escrever um programa é usar um temporizador para gerar um período de 20 milissegundos e controlar o pino para gerar pulsos de diferentes larguras durante o período. Por exemplo, configuramos o cronômetro para interromper a cada 0,1 milissegundos e depois contar. Se você deseja gerar um pulso de 1,5 milissegundos, puxe o pino para baixo quando a contagem atingir 15 na interrupção e, em seguida, puxe o pino para cima quando a contagem atingir 200 (chegam 20 milissegundos) e assim por diante.
O código também não é complicado de escrever. Na função de serviço de interrupção do temporizador, use a instrução if para determinar se o valor da contagem atual atinge o valor de largura de pulso definido e, em seguida, limpe o pino servo para zero. No programa principal, você só precisa modificar a variável correspondente ao valor da largura do pulso para alterar facilmente o ângulo da direção. Claro, não se esqueça de inicializar o cronômetro e a interrupção, que são a base para a execução do programa.
O ângulo de rotação da caixa de direção é determinado diretamente pela largura de pulso de alto nível e a relação entre os dois é basicamente linear. De modo geral, um pulso de 0,5 milissegundos corresponde a 0 graus, 1,5 milissegundos corresponde a 90 graus e 2,5 milissegundos corresponde a 180 graus. Diferentes marcas de servos podem ter pequenas diferenças, mas esta é a faixa geral.
Então, como você define o ângulo no programa? Podemos definir uma variável angular e então usar uma fórmula simples para calcular a largura de pulso necessária: largura de pulso = 0,5 + (ângulo/180)*2,0, a unidade é milissegundos. Em seguida, converta esse tempo em um valor de contagem do temporizador. Por exemplo, se houver uma interrupção em 0,1 milissegundos como mencionado anteriormente, então 1,5 milissegundos equivalem a 15 interrupções. Por fim, basta atribuir esse valor de contagem à variável de comparação na interrupção. Simples, certo?
Freqüentemente, há mais de um mecanismo de direção em um projeto. Por exemplo, fazer um robô de seis pernas exige muitos. Um método comum para usar um microcontrolador 51 para controlar vários servos é a "multiplexação de compartilhamento de tempo". Como cada servo requer um pulso de período de 20 milissegundos, podemos dividir 20 milissegundos em vários segmentos, e cada segmento gera um pulso de servo. Por exemplo, primeiro envie um pulso de 0,5 a 2,5 milissegundos para o servo nº 1 e, em seguida, envie imediatamente um pulso para o servo nº 2 e assim por diante, desde que os pulsos de todos os servos sejam enviados dentro de 20 milissegundos.
Este método requer múltiplas portas IO e o programa de interrupção deve ser organizado em ordem. Se o seu microcontrolador for um microcontrolador aprimorado com um módulo PWM de hardware, ele ficará mais livre de preocupações. Você pode configurar diretamente várias saídas PWM, a CPU nem precisa se preocupar com isso e a precisão é maior. Para iniciantes, pratique primeiro o uso da multiplexação de tempo compartilhado e, em seguida, considere a atualização dos métodos após compreender os princípios.
A coisa mais comum encontrada ao brincar com servos é o jitter. Geralmente é um problema de fonte de alimentação. Quando o servo se move, a tensão cai e o microcontrolador não funciona corretamente, causando desordem no sinal. A solução é fortalecer a fonte de alimentação, usar uma fonte de alimentação independente e tornar os fios de alimentação e terra tão grossos e curtos quanto possível, e o capacitor deve ser instalado próximo ao servo.
Às vezes, o ângulo do servo está incorreto ou a resposta é lenta. Isto pode ser devido a interferência na linha de sinal ou a temporização do programa não é suficientemente precisa. Você pode conectar um resistor pull-down de 10k à linha de sinal ao aterramento para melhorar a capacidade anti-interferência. Em termos de programa, verifique se o oscilador de cristal é preciso e se o valor inicial do temporizador está calculado incorretamente. Certifique-se de que essas bases estejam OK e que seu servo será capaz de atingir onde você deseja.
No processo de usar o microcontrolador 51 para brincar com o servo, você encontrou alguma falha particularmente interessante ou criou alguma aplicação interessante? Seja bem vindo a deixar uma mensagem e compartilhar na área de comentários, e não esqueça de curtir e salvar para que mais amigos possam ver essas dicas práticas!
Hora de atualização: 19/03/2026
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.