Controladores de velocidade PWM em profundidade¶
O WPILib possui amplo suporte para o controle do motor. Existem várias classes que representam diferentes tipos de controladores de velocidade e servos. Atualmente, existem duas classes de controladores de velocidade, controladores de motor baseados em PWM e controladores de motor baseados em CAN. O WPILib também contém classes compostas (como DifferentialDrive) que permitem controlar vários motores com um único objeto. Este artigo abordará os detalhes dos controladores de motor PWM; Controladores CAN e classes compostas serão abordados em artigos separados.
Controladores PWM, breve teoria de operação¶
PWM significa Modulação por largura de pulso. Para controladores de motor, o PWM pode se referir ao sinal de entrada e ao método que o controlador usa para controlar a velocidade do motor. Para controlar a velocidade do motor, o controlador deve variar a tensão de entrada percebida do motor. Para fazer isso, o controlador liga e desliga a tensão total de entrada muito rapidamente, variando a quantidade de tempo em que se baseia com base no sinal de controle. Devido às constantes de tempo mecânicas e elétricas dos tipos de motores usados no FRC, essa comutação rápida produz um efeito equivalente ao da aplicação de uma tensão mais baixa fixa (50% de comutação produz o mesmo efeito que a aplicação de ~ 6V).
O sinal PWM que os controladores usam para uma entrada é um pouco diferente. Mesmo nos limites da faixa do sinal (avanço máximo ou reverso máximo), o sinal nunca se aproxima de um ciclo de trabalho de 0% ou 100%. Em vez disso, os controladores usam um sinal com um período de 5 ms ou 10 ms e uma largura de pulso no ponto médio de 1,5 ms. Muitos dos controladores usam o tempo típico do controlador RC de 1ms a 2ms.
Valores de saída brutos versus dimensionados¶
Em geral, todas as classes de controladores de motor no WPILib assumem um valor escalonado de -1,0 a 1,0 como saída para um atuador. O módulo PWM no FPGA no roboRIO é capaz de gerar sinais PWM com períodos de 5, 10 ou 20ms e pode variar a largura do pulso em 2000 etapas de ~ 0,001ms cada em torno do ponto médio (1000 etapas em cada direção em torno do ponto médio) ) Os valores brutos enviados para este módulo estão nesta faixa de 0-2000, sendo 0 um caso especial que mantém o sinal baixo (desativado). A classe para cada controlador de motor contém informações sobre quais são os valores típicos de limite (min, max e cada lado da faixa morta), bem como o ponto médio típico. O WPILib pode então usar esses valores para mapear o valor escalado na faixa adequada para o controlador do motor. Isso permite que o código alterne perfeitamente entre diferentes tipos de controladores e abstrai os detalhes da sinalização específica. Controladores de velocidade de calibração
Portanto, se o WPILib lida com toda essa escala, por que você precisaria calibrar seu controlador de velocidade? Os valores que o WPILib usa para dimensionar são aproximados com base na medição de várias amostras de cada tipo de controlador. Devido a uma variedade de fatores, o tempo de um controlador de velocidade individual pode variar um pouco. Para eliminar definitivamente o “zumbido” (sinal do ponto médio interpretado como um leve movimento em uma direção) e conduzir o controlador até o extremo, é recomendável calibrar os controladores. Em geral, o procedimento de calibração para cada controlador envolve colocar o controlador no modo de calibração e, em seguida, direcionar o sinal de entrada para cada extremo e, em seguida, retornar ao ponto médio. Para obter exemplos de como usar esses controladores de velocidade no seu código, consulte Using Motor Controllers in Code/Using PWM Speed Controllers