ajout d'une fonction qui envoie un ordre de vitesse venant du pwm

This commit is contained in:
Maxime Chauveau
2025-03-30 11:46:01 +02:00
parent 683c7995f5
commit fb4727b606
4 changed files with 37 additions and 1 deletions

View File

@@ -12,6 +12,9 @@ private:
bool isReversing;
public:
void setTargetSpeed(int pwm);
Motor(TIM_TypeDef *timer);
void accelerer(int speed);
void reculer(int speed);

View File

@@ -49,7 +49,7 @@ public:
float getKd();
//Methodes
float getPWMCommand(float vitesse);
int getPWMCommand(float vitesse); //convertir des m/s en notre signal pwm
};

View File

@@ -4,6 +4,9 @@
#include "functions.h"
#include "motors.h"
#include "encoder.h"
#include "pidVitesse.h"
#include "pid.h"
#include "pidPosition.h"
#include <cstdio>
#include <cstring>
@@ -32,5 +35,20 @@ void handleEncoderProgression(uint16_t totalDistance, uint16_t newDistance, bool
HAL_UART_Transmit(&huart2, (uint8_t *)msg, strlen(msg), HAL_MAX_DELAY);
}
void determinationCoefVitesse(float objectifVitesse){
Motor motorG(TIM3);
Motor motorD(TIM3);
if(vitesse<=0.235){
PidVitesse pid(0, 0, 0, objectifVitesse);
float nouvelOrdre = pid.updateNouvelleVitesse(motorD.currentSpeed);
}else{
float nouvelOrdre = 0.235;
}
int ordrePWM = pid.getPWMCommand(nouvelOrdre);
motorD.setTargetSpeed(ordrePWM);
motorG.setTargetSpeed(ordrePWM); //nouvel ordre aux moteurs gauches et droits de vitesse
}
#endif /* SRC_FUNCTIONS_C_ */

View File

@@ -1,10 +1,25 @@
#include <motors.h>
Motor::Motor(TIM_TypeDef *timer) :
tim(timer), currentSpeed(0), targetSpeed(0), isAccelerating(false), isReversing(
false) {
}
void Motor::setTargetSpeed(int pwm){
if(pwm < 626){
this->targetSpeed = pwm;
}else{
this->targetSpeed = 626;
}
}
void Motor::accelerer(int speed) {
targetSpeed = (speed <= 626) ? speed : 626;
isAccelerating = true;