mirror of
https://github.com/modelec/MarcelMoteurSTM32.git
synced 2026-01-18 16:47:23 +01:00
ajout d'une fonction qui envoie un ordre de vitesse venant du pwm
This commit is contained in:
@@ -12,6 +12,9 @@ private:
|
||||
bool isReversing;
|
||||
|
||||
public:
|
||||
void setTargetSpeed(int pwm);
|
||||
|
||||
|
||||
Motor(TIM_TypeDef *timer);
|
||||
void accelerer(int speed);
|
||||
void reculer(int speed);
|
||||
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
float getKd();
|
||||
|
||||
//Methodes
|
||||
float getPWMCommand(float vitesse);
|
||||
int getPWMCommand(float vitesse); //convertir des m/s en notre signal pwm
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user