Atividade #1244
FechadaEscolha do microcontrolador a ser utilizado
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.
Atualizado por Gabriel Lima há quase 5 anos
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.
Atualizado por Luis David Peregrino de Farias há quase 5 anos
Ó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.
Atualizado por Ana Luiza Buse da Silva há quase 5 anos
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.
Atualizado por Gabriel Lima há quase 5 anos
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.
Atualizado por Gabriel Lima há quase 5 anos
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.
Atualizado por Gabriel Lima há quase 5 anos
Foi feito o push do código para o repositório do Github.
Atualizado por Erick Bezerra de Carvalho há quase 5 anos
O que vocês já chegaram a implementar no firmware?
Atualizado por Gabriel Lima há quase 5 anos
Até agora, foi implementada uma comunicação UART com um motor, tanto de ida (comando de movimento) como de volta (feedback).
Atualizado por Gabriel Lima há quase 5 anos
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.
Atualizado por Gabriel Lima há quase 5 anos
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
Atualizado por Gabriel Lima há mais de 3 anos
- Situação alterado de Em andamento para Fechada