Version Fonctionnelle : Girouette + Voiles + Main OK PARFAIT (TAF -> check bornes du servo en réel)
This commit is contained in:
parent
b0f9aa410b
commit
034c5c44bf
2 changed files with 21 additions and 16 deletions
|
@ -59,9 +59,14 @@ void ConfAllure(void) {
|
||||||
|
|
||||||
int RecupAllure(void) {
|
int RecupAllure(void) {
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
return 10000;
|
return 180; //Si jamais la girouette n'est pas initialisée, on relache les voiles (comme en cas d'alerte dee chavirement)
|
||||||
} else {
|
} else {
|
||||||
return ((int)LL_TIM_GetCounter(TIM3)) * 50;
|
int retourCapteur = (int)LL_TIM_GetCounter(TIM3);
|
||||||
|
if (retourCapteur < 180) {
|
||||||
|
return retourCapteur;
|
||||||
|
} else {
|
||||||
|
return retourCapteur - 360;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
26
Src/Voile.c
26
Src/Voile.c
|
@ -12,10 +12,12 @@
|
||||||
#define PSC (71)
|
#define PSC (71)
|
||||||
#define Timer (TIM1)
|
#define Timer (TIM1)
|
||||||
#define channel (1)
|
#define channel (1)
|
||||||
#define coefa (1)
|
#define A_ALPHA_TO_BETA (2.0/3.0) //Coefficient directeur de la partie linéaire de la fonction transformant l'allure en angle de voile
|
||||||
#define coefb (0)
|
#define B_ALPHA_TO_BETA (-30.0) //Ordonnée a l'origine de cette même fonction
|
||||||
#define coefc (1)
|
#define GAMMA_90 (19900) //Valeur du registre commandant la largeur de la PWM pour les voiles lachées
|
||||||
#define coefd (0)
|
#define GAMMA_0 (100) //Valeur du registre commandant la largeur de la PWM pour les voiles bordées au maximum
|
||||||
|
#define A_BETA_TO_GAMMA ((GAMMA_90 - GAMMA_0)/90.0) //Coefficient directeur de la relation entre l'angle de voile et la PWM
|
||||||
|
#define B_BETA_TO_GAMMA (GAMMA_0) //Ordonnée a l'origine
|
||||||
|
|
||||||
int angleVoileActuel = 0; //angle de la voile. Mis à jour quans on la tend. de 0 à 45.
|
int angleVoileActuel = 0; //angle de la voile. Mis à jour quans on la tend. de 0 à 45.
|
||||||
|
|
||||||
|
@ -29,28 +31,26 @@ void ConfVoile(void){
|
||||||
Timer->BDTR |= 0x1 << 15;
|
Timer->BDTR |= 0x1 << 15;
|
||||||
Timer->CCR1 = 1500; // par defaut tendu à 1ms
|
Timer->CCR1 = 1500; // par defaut tendu à 1ms
|
||||||
MyTimer_Start(Timer);
|
MyTimer_Start(Timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int RecupTension(void){
|
int RecupTension(void){
|
||||||
return angleVoileActuel;
|
return angleVoileActuel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CalculerTension(int alpha){
|
int CalculerTension(int alpha){
|
||||||
return alpha;
|
if (abs(alpha) < 45){
|
||||||
/*if (abs(alpha) > 45){
|
|
||||||
return 0;
|
return 0;
|
||||||
|
} else {
|
||||||
|
float res = A_ALPHA_TO_BETA * (float)abs(alpha) + B_ALPHA_TO_BETA;
|
||||||
|
return (int)res;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
int res = alpha * coefa + coefb;
|
|
||||||
return res;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TendreVoile(int theta)
|
void TendreVoile(int theta)
|
||||||
{
|
{
|
||||||
Timer->CCR1 = coefc * theta + coefd ;
|
Timer->CCR1 = (int)(A_BETA_TO_GAMMA * (float)theta + B_BETA_TO_GAMMA) ;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue