Atividade #1244
Fechada
Escolha do microcontrolador a ser utilizado
Adicionado por Gabriel Lima mais de 4 anos atrás.
Atualizado mais de 3 anos atrás.
Descrição
Uma das diferenças entre a arquitetura de 2019 e a de 2020 é a utilização de um microcontrolador para a comunicação com os motores em vez de ligá-los diretamente ao SBC. Essa arquitetura visa diminuir o tempo de cada iteração de controle dos motores, aumentando a precisão do movimento, além de possibilitar o controle simultâneo de dois motores.
Uma das possibilidades é o uso de uma STM32F4DISCOVERY, que possui seis saidas UART que podem trabalhar em half-duplex, o que elimina a necessidade de um integrado comutador além de possibilitar o controle de seis motores por vez. Além disso, a DISCOVERY é a placa utilizada pela roboime nos projetos SSL e VSS, logo, seu uso reforça a padronização e o compartilhamento de componentes entre os projetos.
Ótimo, alguma novidade quanto a mexer o motor usando a discovery? Pega ajuda do Mateus e da Ana para entender melhor os comandos que precisam ser enviado ao motor.
Gabriel Lima escreveu:
Uma das diferenças entre a arquitetura de 2019 e a de 2020 é a utilização de um microcontrolador para a comunicação com os motores em vez de ligá-los diretamente ao SBC. Essa arquitetura visa diminuir o tempo de cada iteração de controle dos motores, aumentando a precisão do movimento, além de possibilitar o controle simultâneo de dois motores.
Outra possibilidade de microcontrolador sugerida pelo Major Renault foi o uso da NI MyRIO ou da NI SbRIO.
Elas podem ser programadas em LabVIEW ou C. Queríamos saber quais os modelos podem delas podem ser disponibilizados pelo major.
Foi possível enviar para o motor AX-12A um comando que fizesse ele girar até uma posição definida. Isso mostra a capacidade da STM32F4DISCOVERY de enviar comandos para o motor. Foi utilizada a baud rate de 1000000bps, padrão do motor AX-12A. Ainda existe um problema: Foi utilizada a função HAL_UART_Transmit_DMA, que só está chegando a enviar o comando na primeira vez que é chamada, logo, só foi possível enviar o motor para uma única posição.
Conseguimos resolver o problema do DMA transmitindo apenas na primeira chamada da HAL_UART_Transmit_DMA. Era necessário habilitar o Global Interrupt para a porta UART utilizada. Além disso, conseguimos habilitar o modo Half-Duplex da Discovery, utilizando um resistor de 10k como pull-up de 5v. Ainda, foi possível ver pelo analisador lógico uma resposta de feedback do motor, quando foi requisitado. O próximo passo será implementar a leitura do DMA pelo código, a fim de se poder trabalhar com o feedback recebido. Falta ainda reduzir o tempo de resposta do motor, que ainda está na faixa de 2ms, tempo que pode ser considerado como muito grande.
Foi feito o push do código para o repositório do Github.
O que vocês já chegaram a implementar no firmware?
Até agora, foi implementada uma comunicação UART com um motor, tanto de ida (comando de movimento) como de volta (feedback).
Agora, a próxima tarefa será chegar até esse mesmo ponto utilizando como base a placa MyRIO, da National Instruments. Até agora consegui instalar o LabVIEW MyRIO Toolkit, rodar um programa de exemplo, piscar um led, piscar um led usando FPGA, implementar uma saída UART de apenas um valor específico e implementar uma saída uart com os conteúdos de um vetor.
Até o final do dia de hoje, vou colocar o código no github e abrir a wiki do projeto com mais detalhes sobre a arquitetura dos dois controladores
- Situação alterado de Em andamento para Fechada
Exportar para Atom
PDF