Réguler la vitesse d'un moteur a courant continu

Bonjour, je commence en arduino et j'ai un projet à faire dans lequel je doit : dès que la température mesurée dépasse de 20% la valeur seuil, Tmoy, le moteur se mettra en route avec une vitesse proportionnelle à l'écart relatif des températures.

Pour l'instant j'ai seulement essayé de faire tourner le moteur a une vitesse constante choisie mais finalement ma boucle n'est pas prise en compte et le moteur ne change pas de vitesse peut importe ce que je lui indique.

#include <Servo.h>// Importing the Servo lybrary
Servo MyServo;//Variable refering to the servo lybrary. It has all the function that the lybrary has.
int x = 0;
int valVoltage;
float temp;
int tensPan;
float eclairement;
int tensPhotor;
float Therm;
float Pan;
float Photor;
int motorPin1 = 2;
int motorPin2 = 3;
int enablePin = 9;
int motorSpeed;


void setup() {
  Serial.begin(9600);//pour se servir du moniteur serie
  pinMode(motorPin1,OUTPUT);
  pinMode(motorPin2,OUTPUT);
  pinMode(enablePin,OUTPUT);
  digitalWrite(enablePin, LOW);
  MyServo.attach(8);

  
}

void loop() {
  //x=random(0,1023);
  //Serial.println(x);
  
  valVoltage = analogRead(A0);
  Serial.print(valVoltage);
  Serial.print(" ");

  Therm=map(valVoltage,0,1023,0,10);//tensio thermistance
  
  
  temp=-22.3*log(valVoltage/1023.0/(1-valVoltage/1023.0))+25; //température reçu par la thermistance
  Serial.print(temp);
  Serial.print(" ");

  tensPan = analogRead(A3);
  Serial.print(tensPan);
  Serial.print(" ");

  Pan =map(tensPan,0,1023,0,10);

  tensPhotor = analogRead(A1);
  Serial.print(tensPhotor);
  Serial.println(" ");
  
  Photor = map(tensPhotor,0,1023,0,10);

  eclairement=pow(pow(10,4.17)/Photor,1/0.84); //éclairement reçu par la "grosse" photoresistance
  

  motorSpeed=int(((temp-21.36)/21.36)*100);
 // Serial.println(motorSpeed);


  if (temp > 22.1+4.4){
   digitalWrite(enablePin,HIGH);
   analogWrite(enablePin, 200);
  }
  else{
    digitalWrite(enablePin,HIGH);
    analogWrite(enablePin, 10);
  }


  if (eclairement>716+143.2 && tensPan > 472+95.5){
    MyServo.write(90);
  }
  else if (eclairement<716-143.2 && tensPan > 472-95.5){
    MyServo.write(25);
  }
  delay(2000);
}```

???

something's wrong?

:warning:
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

Et bien c'est l'un ou c'est l'autre mais pas les deux.

Met la sortie à HIGH

Fait générer un signal PWM sur la sortie.

Il faut choisir.

D'accord merci beaucoup, j'ai essayé avec les deux mais ça ne change rien ma boucle n'est pas prise en compte

Qu'est-ce que tu entends par là? de quelle boucle parles-tu?
Tu calcules une vitesse de moteur (motorSpeed) et tu ne t'en sers pas, c'est normal?
Tu fais afficher la valeur de temp mais tu ne fais rien afficher dans les 2 branches du if (temp > 22.1+4.4) donc tu ne sais pas ce que fais ton programme.

Et ces broches ? Si tu veux que ton moteur tourne il faudrait peut-être les piloter ?
Et tu pourrais annoncer la couleur de ton hardware : L293 ou autre.

Parce que avant de faire intervenir motorspeed j'essaie de faire fonctionner le programme en sachant exactement ce que je lui demande faire. Mais quand j'affiche le moteur tourne vite ou au ralenti la boucle marche donc c'est surement le branchement qui est faux

Il est expressément demandé de signaler les projets scolaires.
C'est une question d'honnêteté.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.