A Beaglebone Black além do ARM Cortex-A8 de 1GHz, contém 2 processadores de tempo real (PRU).
As duas PRUs rodam a 200 MHz, executam uma instrução por ciclo de clock. Portanto executam uma instrução a cada 5 nanosegundos de maneira determinística.
Também dá para implementar PWM com precisão de 5 ns, o que é ótimo para controlar motores e servos com extrema precisão.
Seguindo o código de:
http://www.embedded-things.com/bbb/wireless-servo-control-part-3-pwm-servo-control-with-the-bbb-pru/
Com mais alguns ajustes é possível gerar o PWM de 490Hz para controlar os motores do UAV.
Também foi preciso mexer na placa mãe do UAV para direcionar os PWMs para o pinos de saída da PRU0. Com a nova configuração 4 motores pode ser acionados pelo PWM do PRU ou do ARM, e mais 4 motores são somente ativados pelo PWM do ARM.
Usando o Buspirate (http://dangerousprototypes.com/docs/Bus_Pirate) com o Piratescope é fácil verificar que a geração do PWM pelo PRU0 está funcionando como deveria.
Os próximos testes serão verificar se todos os motores estão sincronizados e testar os efeitos do ajuste fino do PWM na escala de 5ns na velocidade do motor. Como o motor aceita comandos entre 1000 e 2000 milisegundos, o intervalo de 1ms por ser dividido em 200 mil pedaços, é como se fosse um carro de 200 mil marchas ou praticamente marchas infinitas.
Piratescope: PWM gerado pelo PRU0 |
Buspirate conectado na placa mãe do UAV |
Com o novo PWM também foi preciso recalibrar os ESCs para reconhecer os novos níveis de PWM para armar os motores, rotação mínima e máxima. Após a calibragem os motores ficaram sincronizados com um precisão de 1 microsegundo.
Tentando subir com hélices 6x4
Tentando subir com hélices 10x6, mas estavam trocadas CW com CCW.
Subindo com hélices 10x6, mas a bateria já estava descarregando.
Mesmo assim dá para perceber que o desempenho é agressivo.
No comments:
Post a Comment