Go Down

Topic: controle pompe electrique palier par palier en PWM (Read 8341 times) previous topic - next topic

Artouste


oui je viens de vérifier il est écris TX-RX

rapide
a suivre plus tard ce soir
mais d'instinct= pas bon :) !
tu cannibalise/monopolise/interfère inévitablement sur/avec  le serial hard

neodelavega

#76
Aug 23, 2012, 03:59 pm Last Edit: Aug 23, 2012, 04:02 pm by neodelavega Reason: 1
hmmm

ok je comprend mieux donc quand je tester que mon code avec les soleno sa marcher malgré que sa sois sur 0 et 1 et avec le code fusionner sa marcher aussi pour les soleno sauf que comme j'ai déclarer 0 et 1 en sortie sa doit bloquer l'entrer A0

arduino aurrer du mettre 12 entrer I/O est non 14 !!!

j'envisage déjà de prendre un seeeduino mega dans le futur mais je crois que je vais devoir le prendre maintenant car en plus j'ai une autre idée pour pas gâcher l'AOP qu'il me reste je créer un poste quand déjà cette partie fonctionnera correctement

fdufnews

#77
Aug 23, 2012, 04:05 pm Last Edit: Aug 23, 2012, 04:10 pm by fdufnews Reason: 1

bonjour bon j'ai reussi a reffaire marcher ma partie avec les solenoide apparemment quand on mais les BP sur 12 et 13 en pullup sa ne marche pas bref j'ai mis en 6 et 7 et j'ai donc mis mon afficheur 16seg sur 12 et 13 et la sa marche donc j'ai ressayer avec le code fusionner mais modifier mais mon potar ne repond pas est j'ai 1 ventilo qui reste bloquer a 20% et puis plus rien par contre la partie solenoide marche maintenant alors qu'avent non vous avez des idée ??

merci


Quelques remarques:

1) les contraintes sur val1 et val2 devraient être appliquées APRES avoir modifié les valeurs et non pas pas avant car cela ne sert à rien
Code: [Select]
void loop()
{

  if(digitalRead(12) == LOW)
{
  delay(5);
  val2++;
  val1--;                         //antie rebond
  while(digitalRead(12) == LOW);
  delay(5);
}
  else if(digitalRead(13) == LOW)
{
  delay(5);
  val1++;
  val2--;                         //antie rebond
  while(digitalRead(13) == LOW);
  delay(5);
}

 val1 = constrain(val1, 19, 25); // limite faible
 val2 = constrain(val2, 35, 41); // limite haute

if (val1 == 19 && val2 == 41){
 digitalWrite (1, HIGH);
 myDisplay.scroll("R ", 10);}


2) concernant la commande des discrets, j'ai pas très bien compris la logique mais il y a 5 discrets pour cette commande et après certains tests tu allumes un ou un autre et tu en éteints un ou un autre. Comme tu ne modifies pas à chaque fois les 5 discrets, tu risques de te retrouver assez vite avec des discrets dans un état non désiré. il faudrait faire un tableau des état attendus avec les conditions de commutation et bien vérifier (les empilements de "if" sont à la source de beaucoup d'erreurs)

3) le pilotage de la pompe
  analogRead() retourne une valeur entre 0 et 1023 donc déjà le premier test est inutile la valeur ne pouvant pas être supérieure à 1023.
  Pour les valeurs > à 216 tu veux un PWM à 50 un IF et suffisant
  ensuite pour clarifier la chose je pense que tu devrais plutôt utiliser la fonction map pour créer une loi de pilotage de la pompe.
Exemple (le code n'est pas vérifié)
Code: [Select]

 if (val > 216) {
   valPompe=50;
} else {
  map(val,0,215,255,57);
}

Si tu veux une loi plus compliquée rien ne t'empêche de faire 2 (ou trois) map sur des segments différents.

4) pour le pilotage du ventilo même remarque que pour la pompe.

5) concernant les D0 et D1 si la liaison série n'est pas initialisée (pas de Serial.begin() dans le code) les broches sont libres avec quand même une restriction. Il ne faut pas être en conflit et l'outil de téléchargement (sonde, ou FT232 suivant la carte utilisée)

neodelavega

#78
Aug 23, 2012, 04:26 pm Last Edit: Aug 23, 2012, 04:27 pm by neodelavega Reason: 1
bonjour fdufnews merci pour ton aide !! et merci d'avoir consacrer un peu de temps a mon code

donc 1:

ok je comprend se que tu veux dire est c'est vraie que maintenant le code semble plus logique mais je ne penser pas qu'il faller cette logique a l'arduino je prend note de cela (enfaite comme je viens juste de débuter j'essaye pas mal de morceau de code que j'écris et je les teste au fur est a mesure sur ma carte et comme en mettant les contraintes  tout en haut (sans vraiment me poser a question sur l'importance d'où j'aller le placer) cela marcher j'ai donc pas plus réfléchie est passer a la suite du code)

2:

Quote

concernant la commande des discrets, j'ai pas très bien compris la logique mais il y a 5 discrets pour cette commande et après certains tests tu allumes un ou un autre et tu en éteints un ou un autre. Comme tu ne modifies pas à chaque fois les 5 discrets, tu risques de te retrouver assez vite avec des discrets dans un état non désiré. il faudrait faire un tableau des état attendus avec les conditions de commutation et bien vérifier (les empilements de "if" sont à la source de beaucoup d'erreurs)


enfaite les étape se passe comme suite (je vais copier coller d'un mon sujet principal qui traiter sur sa)

Quote

sa se présenterez comme se si
mise sous tension (je tourne la clef je demmare)

rien ne se comute mise a part l'ecran 16 seg qui affiche N comme Neutral a partir de se point la 2 option possible j'appuie sur le boutton - j'active 1 actuateur selui de marche arriere d'une autre part mon afficheur me marque maintenant R comme Reverse a partir de la 1 option et possible quand j'appuie sur + je repasse a N (l'actuateur de marche arrière et d'esalimentez) ensuite je me retrouve avec mais 2 option possible  cette fois si j'appuie sur + l'actuateur de 1er vitesse se mais sous tension a se point la j'ai 2 option sois j'appuie sur - je repasse a N (point mort) soi je r'appuie sur + l'actuateur 1er reste sous tension et l'actuateur 2eme viens se mettre sous tension (mon afficheur affiche 2) j'appuie a nouveau sur + l'actuateur 1,2 puis 3 sont alimenter (mon afficheur me marque maintenant 3) ainsi dessuite et a tout moment je peut rapuyer sur - par exemple avec l'actuateur 1,2,3 alimenter en apuyant sur - je vais me retrouver avec 1,2 ensuite une fois arriver a 5 je me retrouve comme en marche arrière avec 1 option possible je ne peut que appuyer sur - pour repasser en 4eme se qui me donne 1,2,3,4 d'alimenter

il y a 5 vitesse + marche arrière se qui fait 6 actuateur a commander


donc tu veux dire qu'il faut que j'entre touts les "discret" qui ne doive pas etre alimenter au moment ou je ne le veux pas ??

3:

Quote

le pilotage de la pompe
  analogRead() retourne une valeur entre 0 et 1023 donc déjà le premier test est inutile la valeur ne pouvant pas être supérieure à 1023.


alors sa j'avais bien compris le système de fonctionnement et j'avais mis if (val < 1023) aulieu de if (val > 1023)
mais sa ne marcher plus je vais donc chercher plus la dedans

pour la fonction map je vois vraiment pas comment sa fonctionne mais je vais plus mis pencher

4: ok donc idem que 3 alors

5:
Quote

concernant les D0 et D1 si la liaison série n'est pas initialisée (pas de Serial.begin() dans le code) les broches sont libres avec quand même une restriction. Il ne faut pas être en conflit et l'outil de téléchargement (sonde, ou FT232 suivant la carte utilisée)


donc d'aprer toit cela pourrer fonctionner comme cela ? mais sans serial monitor (je les enlever car il ne marcher pas je sais pourquoi maintenant mais il va me le falloir)

en tous cas merci !! je suis bon pour revoir tous le code ^^



neodelavega

je viens de finir la 1er partie avec les solenoide vous me direz se que vous en pensez (j'ai enlevez la partie ventilo de toute façon sa marche pas)

Code: [Select]

#include <AlphaNumeric_Driver.h>
#define NUMBER_OF_DISPLAYS 4
int val1 = 20;
int val2 = 40;
int SDIpin = 9;
int CLKpin = 8;
int LEpin = 12;
int OEpin = 13;
alphaNumeric myDisplay(SDIpin, CLKpin, LEpin, OEpin, NUMBER_OF_DISPLAYS);

void setup()
{
  pinMode(6, INPUT);
  digitalWrite(6, HIGH);
  pinMode(7, INPUT);
  digitalWrite(7, HIGH);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop()
{
  if(digitalRead(6) == LOW)
{
   delay(5);
   val2++;
   val1--;
   while(digitalRead(6) == LOW);
   delay(5);
}
   else if(digitalRead(7) == LOW)
{
   delay(5);
   val1++;
   val2--;
   while(digitalRead(7) == LOW);
   delay(5);
}
   val1 = constrain(val1, 19, 25);
   val2 = constrain(val2, 35, 41);

  if (val1 == 19 && val2 == 41)
  {
  digitalWrite (1, HIGH);
  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("R ", 10);
 
  }
  if (val1 == 20  && val2 == 40)
  {
  digitalWrite (1, LOW);
  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("N ", 10);
  }
  if (val1 == 21 && val2 == 39)
  {
  digitalWrite (4, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("1 ", 10);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("2 ", 10);
  }
  if (val1 == 23 && val2 == 37)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("E ", 10);
  }
  if (val1 == 24 && val2 == 36)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (2, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("4 ", 10);
  }
  if (val1 == 25 && val2 == 35)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (2, HIGH);
  digitalWrite (0, HIGH);
  digitalWrite (1, LOW);
  myDisplay.scroll("5 ", 10);
  }
  }


en attendent vos avis je m'attaque au code de la pompe est du ventilo est aussi apprendre la fonction map

merci !!


neodelavega

j'ai essayer le code pour la partie pompe et ventilo

j'ai tester la nouvel fonction

Code: [Select]

if (val > 216) {
    valPompe=50;
} else {
   map(val,0,215,255,57);
}


mais rien ne marche je les essayer seul sa marche pas non plus

corriger moi si je me trompe mais enfaite cette fonction sert a "étaler"  la valeur analog 0 a 1023 ???

exemple si je prend map(val,0,4,0,8); se qui veut dire que de 0 a 4 aulieu de faire 4 point PWM je pourer faire donc 8 point PWM mais toujours dans un chiffre de 0 a 4 ?? c'est bien sa ?

Artouste

#81
Aug 24, 2012, 01:56 pm Last Edit: Aug 24, 2012, 02:31 pm by Artouste Reason: 1

j'ai essayer le code pour la partie pompe et ventilo

j'ai tester la nouvel fonction

Code: [Select]

if (val > 216) {
   valPompe=50;
} else {
  map(val,0,215,255,57);
}


mais rien ne marche je les essayer seul sa marche pas non plus

corriger moi si je me trompe mais enfaite cette fonction sert a "étaler"  la valeur analog 0 a 1023 ???



bonjour
ta fonction map là ne sert à rien , elle n'affecte en sortie aucune "variable"
regarde la référence
http://arduino.cc/en/Reference/map
en français si tu prefere
http://arduino.cc/fr/Main/Map
une map doit être pour être utilisable construite comme ça
valeur de sortie=(valeur entrée, fromLow, fromHigh, toLow, toHigh)

NB "les" variables valeur d'entrée et valeur de sortie peuvent être la même variable

Code: [Select]
{
 int val = analogRead(0);
 val = map(val, 0, 1023, 0, 255); // Ré-étalonne la valeur entre 0 et 1023 sur une fourchette entre 0 et 255
 }




neodelavega

#82
Aug 24, 2012, 02:47 pm Last Edit: Aug 24, 2012, 03:11 pm by neodelavega Reason: 1
ok merci artouste de toute façon j'avais continuer sans bon sayer se foutu code fonctionne maime fusionner enfin
bref petite question esque l'ordre du code a une importence ????

je veux dire par la:

esque le sans du code a une importance dans void setup etant donner que c'est executer 1 seul fois même avent void setup la ou on déclare les variable (c'est plus françouss la)

ensuite pour void loop si par exemple je veux que la carte traite prioritairement un code plutot qu'un autre esque si je le mais en premier sa sera lui qui sera activer en premier ?? ou sa sert a rien ?? par exemple dans mon cas je veux quand prioriter se sois les solenoide de la boite qui sois calculer en premier puis la pompe est les ventilo dans un second temps car beaucoup moins besoin de rapidité

Artouste

#83
Aug 24, 2012, 03:08 pm Last Edit: Aug 24, 2012, 03:13 pm by Artouste Reason: 1

ok merci artouste de toute façon j'avais continuer sans bon sayer se foutu code fonctionne maime fusionner enfin
bref petite question esque l'ordre du code a une importence ????

je veux dire par la:

void setup est avent cela n'a aucune importance du sans ??

ensuite pour void loop si par exemple je veux que la carte traite prioritairement un code plutot qu'un autre esque si je le mais en premier sa sera lui qui sera activer en premier ?? ou sa sert a rien ?? par exemple dans mon cas je veux quand prioriter se sois les solenoide de la boite qui sois calculer en premier puis la pompe est les ventilo dans un second temps car beaucoup moins besoin de rapidité


Bonjour neodelavega
Je sais que l'orthographe et les "djeun's" ne font pas bon ménage aujourd'hui  (skywodd  ? :smiley-mr-green:  )
Et même si c'est difficile pour moi je m'y adapte avec sympathie pour les projets, mais s'il te te plait fait au moins l'effort déjà dans la ponctuation  8)

J'en suis désolé, mais ta question est quasi incompréhensible à comprendre , j'ai fais l'effort de lire par ce que je connais le sujet, mais j'aurais pris ici ton topic , je n'aurais même pas eu l'envie de finir la lecture et surtout d'y répondre, ce qui aurait été dommage  8)



neodelavega

j'ai edit (ah moi est le français (je suis américain ^^))


je reposte le code qui sera définitif cette fois si car tout marche si vous voyer des amélioration !

Code: [Select]

int Pompe = 10;      // LED connectée sur la broche 9
int ventilo = 11;
int sonde = 0;   // le potentiomètre connecté sur la broche analogique 3
int val = 0;
#include <AlphaNumeric_Driver.h>
#define NUMBER_OF_DISPLAYS 4
int val1 = 20;
int val2 = 40;
int SDIpin = 9;
int CLKpin = 8;
int LEpin = 12;
int OEpin = 13;
alphaNumeric myDisplay(SDIpin, CLKpin, LEpin, OEpin, NUMBER_OF_DISPLAYS);


void setup()
{
  pinMode(Pompe, OUTPUT);   // configure la broche en sortie
  pinMode(ventilo, OUTPUT);
  pinMode(6, INPUT);
  digitalWrite(6, HIGH);
  pinMode(7, INPUT);
  digitalWrite(7, HIGH);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}




void loop()
{

  if(digitalRead(6) == LOW)
{
   delay(5);
   val2++;
   val1--;
   while(digitalRead(6) == LOW);
   delay(5);
}
   else if(digitalRead(7) == LOW)
{
   delay(5);
   val1++;
   val2--;
   while(digitalRead(7) == LOW);
   delay(5);
}
   val1 = constrain(val1, 19, 25);
   val2 = constrain(val2, 35, 41);
   val = analogRead(sonde);

  if (val1 == 19 && val2 == 41)
  {
  digitalWrite (1, HIGH);
  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("R ", 10);
 
  }
  if (val1 == 20  && val2 == 40)
  {
  digitalWrite (1, LOW);
  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("N ", 10);
  }
  if (val1 == 21 && val2 == 39)
  {
  digitalWrite (4, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (5, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("1 ", 10);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (3, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("2 ", 10);
  }
  if (val1 == 23 && val2 == 37)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (2, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("E ", 10);
  }
  if (val1 == 24 && val2 == 36)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (2, HIGH);
  digitalWrite (1, LOW);
  digitalWrite (0, LOW);
  myDisplay.scroll("4 ", 10);
  }
  if (val1 == 25 && val2 == 35)
  {
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (3, HIGH);
  digitalWrite (2, HIGH);
  digitalWrite (0, HIGH);
  digitalWrite (1, LOW);
  myDisplay.scroll("5 ", 10);
  }
 
  if (val > 1023){           
  analogWrite (Pompe, 50);
} else if (val > 138) { 
  analogWrite (Pompe, 67);
} else if (val > 137) { 
  analogWrite (Pompe, 84); 
} else if (val > 136) { 
  analogWrite (Pompe, 101);
} else if (val > 135) { 
  analogWrite (Pompe, 128); 
} else if (val > 134) { 
  analogWrite (Pompe, 135);   
} else if (val > 133) { 
  analogWrite (Pompe, 152);
} else if (val > 132) { 
  analogWrite (Pompe, 169);
} else if (val > 131) { 
  analogWrite (Pompe, 186);
} else if (val > 130) { 
  analogWrite (Pompe, 193);
} else if (val > 129) { 
  analogWrite (Pompe, 210);
} else if (val > 128) { 
  analogWrite (Pompe, 227);
} else if (val > 127) { 
  analogWrite (Pompe, 244); 
} else if (val > 126) { 
  analogWrite (Pompe, 255); 
} else  {  // moteur trop chaud
  analogWrite (Pompe, 255);    // pompe à 255/255 (100%)
}
if (val > 125){   
  analogWrite (ventilo, 0);   
} else if (val > 124) { 
  analogWrite (ventilo, 50);
} else if (val > 123) { 
  analogWrite (ventilo, 84); 
} else if (val > 122) { 
  analogWrite (ventilo, 101);
} else if (val > 121) { 
  analogWrite (ventilo, 128); 
} else if (val > 120) { 
  analogWrite (ventilo, 135);   
} else if (val > 119) { 
  analogWrite (ventilo, 152);
} else if (val > 118) { 
  analogWrite (ventilo, 169);
} else if (val > 117) { 
  analogWrite (ventilo, 186);
} else if (val > 116) { 
  analogWrite (ventilo, 193);
} else if (val > 115) { 
  analogWrite (ventilo, 210);
} else if (val > 114) { 
  analogWrite (ventilo, 227);
} else if (val > 113) { 
  analogWrite (ventilo, 244); 
} else if (val > 112) { 
  analogWrite (ventilo, 255); 
} else  {  // moteur trop chaud
  analogWrite (ventilo, 255);    // pompe à 255/255 (100%)
}
}













neodelavega

bonjour

alors que pensez vous de mon code ??? et pour les question que j'ai poser plus haut aussi ?

neodelavega

bonjour

autre petite question qui me turlupine aussi les mosfet que j'ai mis pour la pompe et les 2 ventilo 160watt en moyenne (11 Ampère en moyenne)

a votre avis est'il nécessaire de mettre un ventilo sur le radia ?? c'est des radia de chipset  sachant qu'il y a 2 mosfet (se qui consomme le plus) pompe et ventilo sur 1 seul radia quand penser vous ??

edit: http://docs-europe.electrocomponents.com/webdocs/0d27/0900766b80d27b03.pdf

Artouste

Bonjour


bonjour

alors que pensez vous de mon code ??? et pour les question que j'ai poser plus haut aussi ?


Tu a toujours dans ton code cette condition impossible
Code: [Select]
if (val > 1023){
ce n'est donc pas un code sain

Quote
a votre avis est'il nécessaire de mettre un ventilo sur le radia ?? c'est des radia de chipset


Tu arrive à quelle T° sur les radiateurs sans convection forçée ?

neodelavega

#88
Aug 27, 2012, 04:19 pm Last Edit: Aug 27, 2012, 04:23 pm by neodelavega Reason: 1
bonjour artouste

j'ai trouver la solution car sa ne marcher pas j'ai donc eu l'idée de changer de valeur est la sa marche voila le nouveau code:

Code: [Select]

int Pompe = 10;    
int ventilo = 11;
int sonde = 0;
int val = 0;
#include <AlphaNumeric_Driver.h>
#define NUMBER_OF_DISPLAYS 4
int val1 = 20;
int val2 = 40;
int SDIpin = 9;
int CLKpin = 8;
int LEpin = 12;
int OEpin = 13;
alphaNumeric myDisplay(SDIpin, CLKpin, LEpin, OEpin, NUMBER_OF_DISPLAYS);


void setup()
{
 pinMode(Pompe, OUTPUT);  
 pinMode(ventilo, OUTPUT);
 pinMode(6, INPUT);
 digitalWrite(6, HIGH);
 pinMode(7, INPUT);
 digitalWrite(7, HIGH);
 pinMode(0, OUTPUT);
 pinMode(1, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
}




void loop()
{

 if(digitalRead(6) == LOW)
{
  delay(5);
  val2++;
  val1--;
  while(digitalRead(6) == LOW);
  delay(5);
}
  else if(digitalRead(7) == LOW)
{
  delay(5);
  val1++;
  val2--;
  while(digitalRead(7) == LOW);
  delay(5);
}
  val1 = constrain(val1, 19, 25);
  val2 = constrain(val2, 35, 41);
  val = analogRead(sonde);

 if (val1 == 19 && val2 == 41)
 {
 digitalWrite (1, HIGH);
 digitalWrite (4, LOW);
 digitalWrite (5, LOW);
 digitalWrite (3, LOW);
 digitalWrite (2, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("R ", 10);
 
 }
 if (val1 == 20  && val2 == 40)
 {
 digitalWrite (1, LOW);
 digitalWrite (4, LOW);
 digitalWrite (5, LOW);
 digitalWrite (3, LOW);
 digitalWrite (2, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("N ", 10);
 }
 if (val1 == 21 && val2 == 39)
 {
 digitalWrite (4, HIGH);
 digitalWrite (1, LOW);
 digitalWrite (5, LOW);
 digitalWrite (3, LOW);
 digitalWrite (2, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("1 ", 10);
 }
 if (val1 == 22 && val2 == 38)
 {
 digitalWrite (4, HIGH);
 digitalWrite (5, HIGH);
 digitalWrite (1, LOW);
 digitalWrite (3, LOW);
 digitalWrite (2, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("2 ", 10);
 }
 if (val1 == 23 && val2 == 37)
 {
 digitalWrite (4, HIGH);
 digitalWrite (5, HIGH);
 digitalWrite (3, HIGH);
 digitalWrite (1, LOW);
 digitalWrite (2, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("E ", 10);
 }
 if (val1 == 24 && val2 == 36)
 {
 digitalWrite (4, HIGH);
 digitalWrite (5, HIGH);
 digitalWrite (3, HIGH);
 digitalWrite (2, HIGH);
 digitalWrite (1, LOW);
 digitalWrite (0, LOW);
 myDisplay.scroll("4 ", 10);
 }
 if (val1 == 25 && val2 == 35)
 {
 digitalWrite (4, HIGH);
 digitalWrite (5, HIGH);
 digitalWrite (3, HIGH);
 digitalWrite (2, HIGH);
 digitalWrite (0, HIGH);
 digitalWrite (1, LOW);
 myDisplay.scroll("5 ", 10);
 }
 
 if (val > 139){          
 analogWrite (Pompe, 50);
} else if (val > 138) {  
 analogWrite (Pompe, 67);
} else if (val > 137) {  
 analogWrite (Pompe, 84);  
} else if (val > 136) {  
 analogWrite (Pompe, 101);
} else if (val > 135) {  
 analogWrite (Pompe, 128);  
} else if (val > 134) {  
 analogWrite (Pompe, 135);  
} else if (val > 133) {  
 analogWrite (Pompe, 152);
} else if (val > 132) {  
 analogWrite (Pompe, 169);
} else if (val > 131) {  
 analogWrite (Pompe, 186);
} else if (val > 130) {  
 analogWrite (Pompe, 193);
} else if (val > 129) {  
 analogWrite (Pompe, 210);
} else if (val > 128) {  
 analogWrite (Pompe, 227);
} else if (val > 127) {  
 analogWrite (Pompe, 244);  
} else if (val > 126) {  
 analogWrite (Pompe, 255);  
} else  {  // moteur trop chaud
 analogWrite (Pompe, 255);    // pompe à 255/255 (100%)
}
if (val > 125){  
 analogWrite (ventilo, 0);  
} else if (val > 124) {  
 analogWrite (ventilo, 50);
} else if (val > 123) {  
 analogWrite (ventilo, 84);  
} else if (val > 122) {  
 analogWrite (ventilo, 101);
} else if (val > 121) {  
 analogWrite (ventilo, 128);  
} else if (val > 120) {  
 analogWrite (ventilo, 135);  
} else if (val > 119) {  
 analogWrite (ventilo, 152);
} else if (val > 118) {  
 analogWrite (ventilo, 169);
} else if (val > 117) {  
 analogWrite (ventilo, 186);
} else if (val > 116) {  
 analogWrite (ventilo, 193);
} else if (val > 115) {  
 analogWrite (ventilo, 210);
} else if (val > 114) {  
 analogWrite (ventilo, 227);
} else if (val > 113) {  
 analogWrite (ventilo, 244);  
} else if (val > 112) {  
 analogWrite (ventilo, 255);  
} else  {  // moteur trop chaud
 analogWrite (ventilo, 255);  
}
}


Quote

Tu arrive à quelle T° sur les radiateurs sans convection forçée ?


je n'est pas de thermomètre mais avec 2 ventilo de voiture (80 watt chacun) il son a penne tiède (avec les doigt 40°C guerre plus chaud que 37°C)

c'est a dire 80watt par mosfet avec du 11volt (alim pc)

Artouste



j'ai trouver la solution car sa ne marcher pas j'ai donc eu l'idée de changer de valeur est la sa marche voila le nouveau code:

Ok
le principal c'est que ça "fasse" ce que tu voulais  :smiley-mr-green:



Quote

Tu arrive à quelle T° sur les radiateurs sans convection forçée ?


je n'est pas de thermomètre mais avec 2 ventilo de voiture (80 watt chacun) il son a penne tiède (avec les doigt 40°C guerre plus chaud que 37°C)

c'est a dire 80watt par mosfet avec du 11volt (alim pc)


Si vraiment il n'y a pas de sensation de très chaud, ce n'est pas la peine de rajouter des composants (ventilo)
mais il faut penser à la mise en situation reelle , bien evacuer les calories par convection naturelle/dirigée

Go Up