Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste tutorial, vamos escrever código Verilog para controlar servo motor. O servo SG-90 é fabricado pela Waveshare. Ao comprar o servo motor, você pode receber uma folha de dados que lista a tensão de operação, o torque máximo e a modulação por largura de pulso (PWM) proposta … etc. No entanto, o FPGA DuePrologic fornece tensão de entrada de 3,3 V onde a tensão de operação do servo SG-90 é 5 V - 7 V. Na falta de energia elétrica, listarei meu PWM calibrado para girar o servo motor com sucesso.
Nossa tarefa: O servo motor é girado para frente e para trás com o período de 5 segundos
Menu completo:
Etapa 1: construir o circuito eletrônico
Etapa 2: configurar o planejador de pinos
Clique em "Iniciar Análise de Atribuição de E / S" para verificar se o planejador de pinos está configurado corretamente. Caso contrário, você terá que importar todos os nomes de portas por conta própria.
Etapa 3: Código Verilog
Criamos um temporizador "servo_count". Quando "servo_A" é HIGH, o PWM é 1,5 ms e, portanto, o servo está localizado a 120 graus. Em contraste, quando "servo_A" é BAIXO, o PWM é 0,15 ms e, portanto, o servo é mantido em 0 grau.
atribuir XIO_2 [3] = servo_pulse; // para V '
reg [31: 0] servo_count;
começo inicial
servo_count <= 32'b0;
servo_A <= 1'b0;
fim
sempre @ (posedge CLK_66)
começar
servo_count <= servo_count + 1'b1;
if (servo_count> 400000000) // Ciclo do relógio 66MHz, 1 / 66M * 400000000 ~ 5 segundos
começar
servo_A <=! servo_A;
servo_count <= 32'b0;
fim
fim
reg [31: 0] ex_auto;
começo inicial
ex_auto <= 32'b0;
servo_auto <= 1'b0;
fim
sempre @ (posedge CLK_66)
começar
if (servo_A == 1'b1)
começar
ex_auto <= ex_auto + 1'b1;
if (ex_auto> 100000) // Ciclo de clock de 66 MHz, este PWM é ~ 1,5 ms, o servo gira para 120 graus
começar
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
fim
fim
if (servo_A == 1'b0)
começar
ex_auto <= ex_auto + 1'b1;
if (ex_auto> 10000) // Ciclo de clock de 66 MHz, este PWM é ~ 0,15 ms, o servo gira para 0 graus
começar
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
fim
fim
fim
Etapa 4: fazer upload do código Verilog
Clique em "Iniciar Compilação". Se nenhuma mensagem de erro for exibida, vá para "Programador" para concluir a configuração do hardware. Lembre-se de atualizar o arquivo pof em "Alterar arquivo" se necessário. Clique em "Iniciar" para fazer o upload do código.
Afinal, você deve ver que o servo motor é girado periodicamente.