O código começa com o mapeamento de todos os pinos utilizados pela Placa utilizada, sendo o pino 7 para o acelerador, pino 6 para o frio, pino 9 para o volante e pino 8 para o motor de feedback.
O motor de feedback tem a função de realizar uma força contraria no voltante, para que o motorista possa ater as mudanças no terreno em que as rodas estão. Além disso o controlador recebe o torque das rodas para realizar ajustes no torque repassado, possibilitando redução em ambientes ingrimes, uma aceleração mais suave, redução de forças repentinas, além de uma frenagem também suave, evitando que as rodas travem.
O foi adicionado ao controlador uma placa responsável pela comunicação com os outros controladores, utilizando o protocolo CAM, para utilizar essa placa uma serie de configurações devem ser feitas, como a adição da biblioteca “mcp2515.h”, definição do pino na posição 10, uma struct can_frame que será utilizada como uma estrutura de dados já predefinida pela biblioteca do controlador.
O código possui dois módulos internos, definidos como classes, StabilityController e SteeringController.
StabilityController controla a estabilidade do carro, sendo responsável por receber os valores via modulo CAM das rodas dianteiras. A resposta da IMU vem em 2 pacotes com diferentes ids, 0x04 para controladoraIMUTraseira e 0x05 para controladoraIMUDianteira, a mensagem referente as rodas frontais possuem o torque de cada roda e o ângulo de cada roda, a mensagem referente as rodas traseiras possuem apenas o torque.
Além de receber os dados da IMU, StabilityController também possui os limites para os ajustes, além de realizar os calculos de estabilidade, e realizar o ajuste de feedback no motor de feedback.
SteeringController é responsável por ler os dados do acelerador, freio e volante, e utiliza as correções de StabilityController para mandar esses dados corrigidos para as rodas frontais e traseiras.
Os dados são enviados pelo modulo CAM, e caso tenha 2 bytes, quem deve ler a mensagem é a roda traseira, possui os torque corrigidos para a roda traseira, caso possua 4 bytes, quem deve ler a mensagem é a roda dianteira, possuindo além do torque dianteiro o ângulo corrigidos das rodas.
A função de setup é responsavel pelo estado inicial do sistema, atribuindo os pinos corretamente como dito anteriormente e iniciando a comunicação do protocolo CAM. Já a função loop está sempre “lendo” as informações do acelerador, volante e feio, e enviando para o modulo CAM esses calores ajustados. Antes de realizar o envio das informações, o controlador verificará se existe alguma mensagem no modulo CAM, atribuindo então os valores para suas respectivas variáveis em StabilityController, realizando o ajuste de feedback, e atribuindo em SteeringController as variáveis ajustadas.
-
Notifications
You must be signed in to change notification settings - Fork 0
jorgelukas/ProjetoZMPControleDeDirecao
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published