Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ventilation contrôlée moto

Gerer ventilateur CTN et Arduino

Sujet résolu
7 janvier 2018 à 9:30:30

Bonjour à tous,

Mon petit projet du jour concerne, une fois de plus une moto... Voici l'objet et l'objectif:

J'ai une petite moto que j'utilise pour faire du cross. Ell est refroidie par un radiateur, et c'est le vent de la vitesse qui passe dans ce radiateur. Donc lorsque la moto est à faible vitesse, peu de vent passe et elle refroidit peu. Hors je l'utilise dans des conditions assez difficiles et souvent à basse vitesse (franchissement d'obstacles). Du coup elle chauffe...

La moto est déjà équipée d'une sonde CNT qui sert à contrôler un petit témoins de température qui s'allume à partir de 80°.

Mon Objectif: Utiliser cette sonde CNT ainsi qu'un Arduino, un petit module de relais et 2 ventilos de PC 12V pour déclencher une ventilation forcée sur le radiateur à partir de 75° . et controller directement la LED de chauffe depuis l'arduino pour l'allumer permanent à partir de 80° et clignotante à partir de 90°.

Avant de parler de programme, voici le schémas de branchement que j'envisage:

Qu'en pensez-vous?

Un gros merci d'avance!!!

Benjamin

  • Partager sur Facebook
  • Partager sur Twitter
7 janvier 2018 à 11:17:13

Bonjour,

Je trouve qu'utiliser un Arduino pour faire un thermostat est un peu surdimensionné, on pourrait faire quelque chose
comme : http://schema-montage-electronique.blogspot.fr/2011/07/un-thermostat-analogique-20-35-c.html

Si l'on revient sur le schéma avec  l'Arduino, il risque gros en commandant directement le relais. Ce dernier va détruire la sortie par effet inductif, il est indispensable d'intercaler un étage à transistor avec une diode de roue libre aux bornes de la bobine du relais (comme le schéma donné ci-dessus).

  • Partager sur Facebook
  • Partager sur Twitter
7 janvier 2018 à 12:03:57

L'effet inductif du relais et le courant nécessaire impose effectivement d'utiliser un transistor et une diode de roue libre.

Mais si c'est pour commander un petit ventilateur, on est en droit de se demander quelle est l’intérêt du relais.

En effet, plutôt que de connecter le relais au transistor, autant connecter directement le ventilateur sur le transistor ;)

Pour ce qui est de l'arduino, je te conseille aussi de regarder du coté des Arduino nano, plus petit et moins chère (on en trouve à 3€ sur ebay China).

Et si tu veux faire quelque chose un peu design, tu pourrais remplacer la LED du voyant par une LED RGB qui passerait du vert au rouge en passant par l'orange en fonction de la température :)

  • Partager sur Facebook
  • Partager sur Twitter
7 janvier 2018 à 22:34:32

Salut Lorrio, Salut Clgbzh! Une fois de plus merci pour vos conseils!!!

Alors:

Pourquoi utiliser une Arduino? En fait, j'ai ai déjà, des Nano chinoises d'ailleurs. J'ai mis une Uno dans le schémas car la Nano n'est pas dispo dans mon ptit logiciel de câblage mais ça sera bien une nano. Aussi, l'arduino permet de piloter la LED en même temps que les ventilos ce qui est cool car si j'utilise la CTN (c'est directement celle d'origine de la moto) pour le pont de tension, je ne pourrais plus l'utiliser pour la LED de surchauffe d'origine du tableau de bord. Et je n'ai pas tellement envi de rajouter un capteur car il vient prendre la t° dans le liquide de refroidissement au niveau de la culasse, et c'est assez chiant techniquement d'en ajouter un deuxième...

Souci d'alim du relais:  Pareil, j'ai schématisé avec un relais simple type automobile car il est dispo dans le logiciel, mais c'est bien un module relais pour Arduino que j'utiliserais; Avec Transistor et diode de roue libre intégrée. Le souci que j’imaginais, c'était plus la chute de tension sur le 5v qu'il risque d'appliquer en passant ON qui aurait pu fausser la lecture de la t° via le pont de tension. Mais ça n'a pas l'air de vous inquiéter donc cool!

Pour info, les ventilos sont 2 ventilos de PC largeur 120mm branchés en // alimentés en 12V 0.85A soit environ 21W. Trop pour une alim arduino direct

Pour le thermostat tout fait, je vais checker effectivement ça pourrait simplifier les choses.

Pour la LED RGB, en fait j'ai déjà fait ce montage en 2016 et tu (Lorrio) m'avais bien aidé d'ailleurs! Montage qui fonctionnait très bien, avec un trinket en l’occurrence, mais que j'ai bêtement grillé cette année un jour ou j'ai démarré la moto sans batterie, ce qui a créé une sur tension fatale à la ptite bête... C'était sur le même modèle de moto, et donc la même sonde CTN, ce qui est sympa car je déjà effectué des séries de relevés de tension en mode thermomètre / casserole / multimètre avec le même pont de tension.

Ca allait du bleu au rouge clignotant par pallier de 10°. C'était pas mal, mais au final la seul info vraiment utile était "suis-je à + de 80° ?". Cependant, si je me chauffe, je referais peut-être le montage avec RGB; j'ai déjà le bout de programme en plus. https://openclassrooms.com/forum/sujet/lecture-tension-sur-trinket-5v?page=1#message-91030541

EDIT:

Lorrio tu as raison, c'est quand même mieux avec la LED RGB, et pas beaucoup plus compliqué. Ca donnerait un truc comme ça (câblage et prog). Vous en pensez quoi?

int pinR = 4; // PWM 4
int pinG = 1; // PWM 1
int pinB = 0; // PWM 0
int pinRelay = 2; // Pin D2 Nano
const int Vpin = 3; // Pin A7
int Vin;
float tension;

// 

 
void setup() {
    pinMode(pinR, OUTPUT);
    pinMode(pinG, OUTPUT);
    pinMode(pinB, OUTPUT);
    pinMode(pinRelay, OUTPUT);
    pinMode(Vpin, INPUT);

}

void loop() {

Vin = analogRead(Vpin);

  
// si t° est en dessous de 40°

if (Vin>741)
// LED clignotante Bleu // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay,1 );
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay,1 );
    
    delay(200);   
}

// sinon, si t° est comprise entre 40 et 50°
else if (Vin>655)

// LED bleu constant pendant 1 seconde puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay, 1);
    
    delay(100);
}

// sinon, si t° est comprise entre 50 et 60°
else if (Vin>567)

// LED vert clignotant puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 150);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(200);   
}

// sinon, si t° est comprise entre 60 et 70°
else if (Vin>475)

// LED Verte constant pendant 1 seconde puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 150);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(100);
}

// sinon, si t° est comprise entre 70 et 80°
else if (Vin>401)

// LED Violet constant pendant 1 seconde puis relancer boucle // Ventilo ON
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay, 0);
    
    delay(100);
}

// sinon, si t° est comprise entre 80 et 90°
else if (Vin>326)

// LED Rouge constant pendant 1 seconde puis relancer boucle // Ventilo ON
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(100);
}
// sinon, si t° est supperieure à 90°
else if (Vin>0)
// LED clignotante Rouge
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(200);   
}



}



Merci encore!

Benjamin

-
Edité par BenjaminChrd 8 janvier 2018 à 18:27:40

  • Partager sur Facebook
  • Partager sur Twitter
9 janvier 2018 à 10:11:31


Bonjour à tous,

Alors après réflexion, c'est quand même mieux avec la LED RGB. Et ce n'est pas grand chose de rajouter... le câblage donnerait quelque chose comme ça:

ça vous semble correct?

Merci d'avance!!

Bnejamin
  • Partager sur Facebook
  • Partager sur Twitter
9 janvier 2018 à 13:10:46

Je te conseille de rajouter un condensateur de 100nF entre le GND et la broche A7.

Cela permettra de filtrer un peu le signal de la CTN ;)

Un diode de roue libre en parallèle des ventilateurs ne ferait pas de mal non plus (cathode sur NO, anode sur Ground), ça évitera d'user trop vite les contacts des relais à cause de l'effet inductif des ventilateurs.

Pour ce qui est de la chute de tension 5V, ce n'est pas dérangeant car ce 5V sert aussi de référence à l'ADC.

Par exemple, si la tension chute à 4.8V, alors la tension de sortie de CTN sera plus faible... mais comme l'ADC de l'arduino se sera de cette tension de 4.8V comme référence, ça va automatiquement compenser le problème ;)

-
Edité par lorrio 9 janvier 2018 à 13:13:19

  • Partager sur Facebook
  • Partager sur Twitter
9 janvier 2018 à 15:41:59

Bonjour Lorrio!

Merci beaucoup! On arriverait à ça si j'ai bien compris:

  • Partager sur Facebook
  • Partager sur Twitter
9 janvier 2018 à 15:59:31

Oui, sauf que le GROUND de la diode de roue libre doit être le GROUND des ventilateurs, tout à droite de ton schéma.

En clair, tu placeras cette diode directement sur les 2 fils du ventillo ;)

  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2018 à 8:18:30

OK je vois! Merci!

Pour le code j'en suis ici, et ça fonctionne pas trop mal :) 

int pinR = 9; // PWM D9
int pinG = 10; // PWM D10
int pinB = 11; // PWM D11
int pinRelay = 2; // Pin D2 Nano
const int Vpin = A4; // Pin A4
int Vin;
float tension;

// 

 
void setup() {
    pinMode(pinR, OUTPUT);
    pinMode(pinG, OUTPUT);
    pinMode(pinB, OUTPUT);
    pinMode(pinRelay, OUTPUT);
    pinMode(Vpin, INPUT);

}

void loop() {

Vin = analogRead(Vpin);

  
// config A => si t° est en dessous de 30°

if (Vin>686)
// LED clignotante Bleu // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay,1 );
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay,1 );
    
    delay(200);   
}

// config B => sinon, si t° est comprise entre 30 et 55°
else if (Vin>457)

// LED bleu constant pendant 1 seconde puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay, 1);
    
    delay(1000);
}

// config C => sinon, si t° est comprise entre 55 et 65°
else if (Vin>375)

// LED vert clignotant puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 150);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(200);   
}

// config D => sinon, si t° est comprise entre 65 et 75°
else if (Vin>299)

// LED Verte constant pendant 1 seconde puis relancer boucle // Ventilo OFF
{
    analogWrite(pinR, 0);
    analogWrite(pinG, 150);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 1);
    
    delay(1000);
}

// config E => sinon, si t° est comprise entre 75 et 85°
else if (Vin>238)

// LED Violet constant pendant 10 seconde puis relancer boucle // Ventilo ON
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 255);
    digitalWrite(pinRelay, 0);
    
    delay(10000);
}

// config F => sinon, si t° est comprise entre 85 et 90°
else if (Vin>212)

// LED Rouge clignotant  puis relancer boucle // Ventilo ON
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(200);
    
    analogWrite(pinR, 0);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(200);
}
// config G => sinon, si t° est supperieure à 90°
else if (Vin>1)
// LED  Rouge constant // Ventilo ON
{
    analogWrite(pinR, 255);
    analogWrite(pinG, 0);
    analogWrite(pinB, 0);
    digitalWrite(pinRelay, 0);
    
    delay(1000);
    
     
}



}

Une petite question aussi.

J'aimerais que les ventilos tournent pendant 10 secondes pendant que la LED passe successivement par les 4 couleurs (bleu / vert / violet / rouge)  à la mise en contact de la moto (=mise sous tension de l'arduino), puis passer en fonctionnement normal ensuite. Histoire d'éviter l'encrassement l’hiver quand les ventilos ne se déclenchent quasi jamais, et pouvoir vérifier facilement le fonctionnement de tout.

Est-ce que cela est possible dans le programme? Et si oui, à quoi ressemblerait le morceau de code à ajouter?



-
Edité par BenjaminChrd 10 janvier 2018 à 15:15:36

  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2018 à 18:39:52

La fonction setup est exécutée une fois au début du programme, puis la fonction loop est exécutée en boucle.

Tu pourrais très bien faire tourner ton ventilateur à la fin du setup ;)

void setup() {
	
	// Initialisation
	//================
	
	pinMode(pinR, OUTPUT);
	analogWrite(pinR, 0);
	pinMode(pinG, OUTPUT);
	analogWrite(pinG, 0);
	pinMode(pinB, OUTPUT);
	analogWrite(pinB, 0);
	pinMode(pinRelay, OUTPUT);
	digitalWrite(pinRelay, 0);
	pinMode(Vpin, INPUT);
	
	// Décrassage
	//============
	
	digitalWrite(pinRelay, 1);
	// bleu
	analogWrite(pinR, 0);
	analogWrite(pinG, 0);
	analogWrite(pinB, 255);
	delay(2500);
	// vert
	analogWrite(pinR, 0);
	analogWrite(pinG, 255);
	analogWrite(pinB, 0);
	delay(2500);
	// violet
	analogWrite(pinR, 255);
	analogWrite(pinG, 0);
	analogWrite(pinB, 255);
	delay(2500);
	// rouge
	analogWrite(pinR, 255);
	analogWrite(pinG, 0);
	analogWrite(pinG, 0);
	delay(2500);
	// off
	analogWrite(pinR, 0);
	analogWrite(pinG, 0);
	analogWrite(pinB, 0);
	digitalWrite(pinRelay, 0);

}



-
Edité par lorrio 10 janvier 2018 à 18:43:34

  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2018 à 20:06:28

Et bah voila, j'ai ma réponse!! Merci encore 1000X !

Juste par contre, le relais claque quand la Valeur est à 0 et non 1. Mais sinon ça fonctionne :)

-
Edité par BenjaminChrd 10 janvier 2018 à 20:12:29

  • Partager sur Facebook
  • Partager sur Twitter
11 janvier 2018 à 13:58:33

ça m'a l'air pas mal comme ça, je teste 2/3 jours en réel pour valiser que tout fonctionne bien et je pzsse en résolu si ça fonctionne toujours :)
  • Partager sur Facebook
  • Partager sur Twitter