Bonjour,
j'ai besoin d'aide pour faire un programme avec moteur CC qui, lorsque que j'appuie sur un bouton, le moteur décélère jusqu'à l'arrêt.
Merci de me répondre sur tinker cad si possible merci beaucoup
Bonjour,
j'ai besoin d'aide pour faire un programme avec moteur CC qui, lorsque que j'appuie sur un bouton, le moteur décélère jusqu'à l'arrêt.
Merci de me répondre sur tinker cad si possible merci beaucoup
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.
Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone
Bonjour hugo_si
Voilà un exemple, la valeur PWM qui varie est pwmValue, le bouton est scruté toutes les 500 millisecondes. A toi d'utiliser pwmValue pour commander ton moteur CC.
Il y a des informations qui s'affichent dans la console à 115200.
Tinkercad:
et tu verra, dans l'oscillo, la variation du signal PWM
Cordialement
jpbbricole
une autre approche où le bouton est scruté en permanence et une machine à état gère le freinage une fois le bouton appuyé
c'est pas tinkercad mais vous pouvez voir le code et simuler. la console affiche la vitesse en PWM une fois que vous appuyez le bouton.
const byte pinBouton = 2;
const byte pinMoteur = 3; // prendre une pin capable de faire un PWM
enum : byte {A_FOND, FREINAGE, STOP} etat;
const uint32_t deltaT = 250; // on baisse la vitesse toutes les 250ms lors du freinage
const int deltaV = -5; // on décréments le PWM de 5 en 5 lors du freinage
int vitesse; // pwm entre 0 et 255
void reglerVitesse(int v) {
vitesse = constrain(v, 0, 255);
analogWrite(pinMoteur, vitesse);
Serial.print(F("Vitesse = ")); Serial.println(vitesse);
}
void gestionArretMoteur() {
static uint32_t chrono;
switch (etat) {
case A_FOND:
if (digitalRead(pinBouton) == LOW) { // appui
etat = FREINAGE;
chrono = millis() - deltaT;
Serial.println(F("Freinage demandé."));
}
break;
case FREINAGE:
if (millis() - chrono >= deltaT) {
chrono += deltaT;
vitesse += deltaV;
if (vitesse <= 0) {
etat = STOP;
vitesse = 0;
Serial.print(F("Arrêt moteur -> "));
}
reglerVitesse(vitesse);
}
break;
case STOP:
break;
}
}
void setup() {
pinMode(pinBouton, INPUT_PULLUP);
pinMode(pinMoteur, OUTPUT);
Serial.begin(115200); Serial.println();
etat = A_FOND;
reglerVitesse(255); // on met le moteur à fond
}
void loop() {
gestionArretMoteur();
}
Bonjour, jpbbricole
Tout d'abord merci beaucoup mais je n'ai pas de programme pour faire fonctionner ce système, je sais pas si c'est possible que vous me le fournissiez.
bien à vous
Merci pour votre aide, c'est super !
Mais je fait comment pour intégrer un moteur cc ?
Le PWM gère l’alimentation du moteur
Bonjour hugo_si
Pour "piquer" un code d'un Tinkercad publique, il faut cliquer
et sur
int pwmValue = 255;
const int pwmUsaerPin = 9;
const int decrementPwmStep = 5; // Pas pas de 5
unsigned long decrementTempo = 500; // Toutes les 1/4 de secondes
unsigned long decrementMillis = millis();
const int decrementBouton = 7; // Bouton pour décrémenter
void setup()
{
Serial.begin(115200);
delay(500);
pinMode(decrementBouton, INPUT_PULLUP);
pinMode(pwmUsaerPin, OUTPUT);
analogWrite(pwmUsaerPin, pwmValue);
}
void loop()
{
if (millis()-decrementMillis >= decrementTempo)
{
if (digitalRead(decrementBouton) == LOW)
{
pwmValue -= decrementPwmStep;
pwmValue = constrain(pwmValue, 0, 255);
}
Serial.println("PWM = " + String(pwmValue));
analogWrite(pwmUsaerPin, pwmValue);
decrementMillis = millis();
}
}
Cordialement
jpbbricole
bon j'ai trouvé comment rajouter un moteur.
eh merci
eh merci
bien à vous
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.