Dec 06, 2018 Deixe um recado

Projeto de sistema de controle de motor para manuseio de robô

2 design de software do sistema

Arquitetura 2.1μC / OS-II

O μC / OS-II é um kernel de sistema operacional multitarefa em tempo real, portátil, implantável e com capacidade de multitarefa, com alta eficiência de execução, pequena área de cobertura, bom desempenho em tempo real e escalabilidade. Recursos, o menor kernel pode ser compilado para 2KB. μC / OS-II é escrito em linguagem C e assembly. A maior parte do código é escrita em C. Apenas alguns códigos intimamente relacionados ao processador são escritos em linguagem assembly. O μC / OS-II inclui apenas funções básicas como agendamento de tarefas, gerenciamento de tarefas, gerenciamento de tempo, gerenciamento de memória, comunicação entre tarefas e sincronização.

Atribuição de tarefas sob o sistema 2.2μC / OS-II

Depois de portar com sucesso o sistema μC / OS-II para o STM32F107, a programação baseada em μC / OS-II é feita dividindo-se um aplicativo grande em tarefas relativamente independentes. A prioridade de cada tarefa é definida e o kernel μC / OS-II programa e gerencia essas tarefas.

A idéia do design do software é fornecer a velocidade do motor e a posição de direção do mecanismo de direção através da porta serial de acordo com a operação real do robô. A velocidade do motor é comparada com o valor ajustado do encoder incremental e o controle de malha fechada é implementado pelo algoritmo PID de velocidade. A posição do mecanismo da direção é principalmente que o codificador de valor absoluto realimenta a posição atual, e a velocidade da engrenagem da direção é ajustada de acordo com o requisito de tempo de ação. As funções a serem realizadas pelo software do sistema de controle do motor deste robô de manuseio são as seguintes:

◆ A máquina superior fornece a velocidade do motor, o ângulo de direção e o tempo de ação;

◆ Requer ajuste contínuo da velocidade do motor e bom desempenho estático e dinâmico. A velocidade não é contada pelo algoritmo PI.

◆ Requer que a caixa de direção atinja o ângulo especificado rapidamente, e a realimentação de posição é usada como ajuste da velocidade determinada da caixa de direção;

◆ Tem uma certa função de proteção contra falhas. Quando o motor está bloqueado, a corrente é muito grande e a engrenagem da direção toca a chave limitadora, é necessário parar o módulo de acionamento.

Para que as funções acima sejam implementadas, o design do aplicativo pode ser dividido nas seguintes tarefas:

1 Inicie a tarefa. Inicialize o sistema, crie um estado inicial do motor, depois apague-se e inicie a tarefa para dormir.

2 tarefas de proteção do motor e da caixa de direção. Ele é usado para responder a uma interrupção externa quando a chave de sobrecorrente ou limite é ativada. Quando o status da interrupção é inserido, o semáforo da tarefa é enviado. O programa de tarefas detecta que o semáforo é válido e responde à tarefa e para a saída. A prioridade da tarefa é configurada para o nível 0.

3 tarefas dadas do computador host. É usado para a máquina superior controlar o motor e o mecanismo de direção, e a prioridade da tarefa é definida como nível 1. Quando o registro de entrada de dados do computador host é gerado, uma interrupção será gerada, o que enviará o byte recebido para o buffer e libera o semáforo da tarefa dada do computador host; quando o semáforo for detectado, a tarefa começará a ser executada e o byte correspondente será executado. A informação é analisada na informação da posição correspondente da velocidade do motor e da caixa de direção para atribuir valores às variáveis correspondentes.

4 tarefas de controle de velocidade do motor. Para a regulação da velocidade de circuito fechado do motor, a prioridade da tarefa é definida para o nível 2.

5 tarefas de controle de direção. Ele é usado para controlar o mecanismo da direção para alcançar a posição especificada dentro do tempo especificado e a prioridade da tarefa é definida para o nível 3.

2.3 Iniciar a tarefa

No programa principal, antes de chamar outras tarefas de μC / OS-II, primeiro chame a função de inicialização do sistema OSInit () para inicializar todas as variáveis e estruturas de dados de μC / OS-II; ao mesmo tempo, estabelecer a tarefa ociosa OS_TaskIdle (), esta tarefa é sempre está no estado pronto; chame a função OSTaskCreate () para estabelecer a tarefa de inicialização; chame OSStart (), transfira o controle para o kernel μC / OS-II, comece a executar a multitarefa.

A tarefa de inicialização é criada no programa principal, que possui três funções principais:

1 para inicialização do sistema (módulo de saída PWM, porta serial, módulo ADC, função de interrupção do nível de entrada, temporizador).

2 Estabeleça a quantidade de sinal usada pelo sistema.

3 estabelecer outras tarefas do sistema.

Finalmente, chame OSTaskDel (OS_PRIO_SELF) para excluir-se e iniciar a tarefa para dormir. O principal fluxo de tarefas do programa é mostrado na Figura 4.

2.4 tarefa de controle de velocidade do motor

Cada vez que o codificador incremental gera uma interrupção externa, o semáforo da tarefa é emitido no estado de interrupção. O programa de tarefas detecta que o semáforo é válido e responde à tarefa. A tarefa realiza o controle de malha fechada medindo a velocidade atual do motor e a comparação de velocidade dada. O fluxo da tarefa de controle de velocidade do motor é mostrado na Figura 5.

2.5 tarefa de controle de direção

O servocontrole gera um tempo de referência por um temporizador, envia um semáforo a cada tempo fixo e a tarefa será executada uma vez. A tarefa de controle servo compara a posição medida pelo encoder absoluto com a posição dada e ajusta a velocidade do servo de acordo com o tempo restante. O fluxo da tarefa de controle servo é mostrado na Figura 6.

3 interface eletromecânica do sistema

O mecanismo de direção do robô consiste de um redutor de 30: 1 conectado ao motor de corrente contínua. O encoder de posição absoluta é conectado ao mecanismo da direção e envia o sinal de ângulo do mecanismo da direção para a placa de controle do inversor. Os dois eixos da roda dianteira do robô são conectados por uma haste de transmissão. Um dos eixos é conectado ao mecanismo de direção por uma correia de transmissão, de forma que quando a engrenagem de direção gira, a correia de transmissão aciona a haste de transmissão para garantir que as duas rodas dianteiras possam girar sincronicamente. O motor de tração traseira é um motor de corrente contínua, que é conectado diretamente ao encoder incremental. Depois que a taxa de redução é reduzida por um redutor de 25: 1, a roda traseira é acionada pelo diferencial mecânico. Os sinais do encoder incremental também são enviados para a placa de controle do inversor. A estrutura do sistema eletromecânico é mostrada na Figura 7.

Conclusão

Neste artigo, o projeto do hardware do motor e do servo controlador do robô de manuseio é realizado. O sistema operacional em tempo real μC / OS-II é incorporado com sucesso no STM32F107, e o experimento de ciclo fechado de velocidade do motor e do mecanismo da direção é concluído. Utilizando as características do desempenho em tempo real multitarefas do controlador de núcleo Cortex-M3 e do sistema µC / OS-II, ele fornece uma base de software e hardware para captura de vídeo de imagem de robô e rastreamento de navegação subsequentes. Se o algoritmo PI existente for melhorado e a velocidade do motor e o controle duplo de loop fechado da corrente puderem ser realizados, as características do motor do robô serão melhores e a perspectiva de aplicação do robô de manuseio será mais ampla.



Enviar inquérito

whatsapp

teams

Email

Inquérito