Régulation d'une plaque Peltier en pwm

Bonjour à tous je suis nouveau sur ce forum, je viens à vous car j'ai besoin d'un peu d'aide. :wink:

J'ai comme projet de réaliser une central à froid pour refroidir l'eau de mon aquarium.
Le but est d'utiliser une plaque Peltier qui fait du froid d'un coter et du chaud de l'autre.

J'aimerais réguler cette plaque en PWM entre la température actuelle de l'eau et la température voulu.

Au niveau du programme ça ira, mais c'est pour branchement que j'ai du mal.
J'aimerais utiliser un transistor, mais comment faire ???

De plus j'ai besoin de réguler une pompe et un ventilateur en PWM. Pourrai-je utiliser le même montage que la plaque Peltier ?

J'ai trouvé cette page intéressante si elle peux vous aidez :

Lien plaque Peltier que je vais utiliser :

Lien pompe :

Lien ventilateur:

Merci de votre aide !

J'aimerais réguler cette plaque en PWM entre la température actuelle de l'eau et la température voulue.

Précise le schéma de montage.
Pour donner les bons renseignement voir : http://forum.arduino.cc/index.php?topic=324322.0
Pour de la documentation (programmation et matériel) suivre le lien vers le tuto d'Eskimon.

Avec une simple PWM tu régulera par tout ou rien.
Si tu descend trop en dessous de la température de consigne il faudra stopper le courant dans le Peltier et attendre que l'eau se réchauffe par convection naturelle.
Pour réguler avec un asservissement il faut pouvoir inverser le sens du courant dans le Peltier et donc employer un pont en H.
Attention : Je ne dis pas que pour ton application cela ne fonctionnera pas avec une simple régulation par tout ou rien.
C'est juste pour être bien sûr que l'on se comprenne.

Il faudrait aussi que tu évalue la précision dont tu as besoin : obtenir une température à 1 ou 2°C près sera plus simple qu'à 0,2°C près.

Peltier : le Peltier ne permet pas d'obtenir une température donnée.
Le Peltier permet d'obtenir une différence de température entre sa face froide et sa face chaude. Pour des Peltiers à un seul étage, comme celui de ton lien, la différence maximale entre les faces froide et chaude est d'environ 35 à 40°C.
Ce qui veut dire que la température maximale que peut atteindre la face chaude est à prendre en compte.
Je le précise car cette information n'est pas disponible dans le lien que tu as donné.

De plus j'ai besoin de réguler une pompe et un ventilateur en PWM. Pourrai-je utiliser le même montage que la plaque Peltier ?

Il faudrait donner les caractéristiques de ces produits.

Merci pour ta réponse !

Précise le schéma de montage.

Schéma en pièce jointe

Pour réguler avec un asservissement il faut pouvoir inverser le sens du courant dans le Peltier et donc employer un pont en H.

Pour le pont en H j'ai trouvé ce circuit:
Lien

Petit lien d'une démonstartion : Lien

J'ai un peux de mal à voir quel entrée fait quoi pour faire fonctionner ce circuit.
Selon moi si je prend le fonctionnement d'un pont en H les pin devrais être relier à ces transistors ?(Pont en H dans la pièce jointe)
Si je fait le code suivant ça fonctionne ?

void setup() {


  for(int i=5;i<9;i++)
 {
   pinMode(i,OUTPUT);
  }
   for(int i=5;i<9;i++)
  {
   digitalWrite(i,LOW);
  }

   delay(1000);
    

//Produit du "froid"
digitalWrite(R_EN,HIGH);
digitalWrite(L_EN,LOW);
analogWrite(RPWM,255);
analogWrite(LPWM,0);

delay(1000);

//Produit du "chaud"
digitalWrite(R_EN,LOW);
digitalWrite(L_EN,RIGHT);
analogWrite(RPWM,0);
analogWrite(LPWM,255);

}void loop(){}

Dans le lien avec la démonstration, le code montré fonctionne différemment :

int RPWM=5;
int LPWM=6;
// timer 0
int L_EN=7;
int R_EN=8;

void setup() {
  // put your setup code here, to run once:
  for(int i=5;i<9;i++){
   pinMode(i,OUTPUT);
  }
   for(int i=5;i<9;i++){
   digitalWrite(i,LOW);
  }
   delay(1000);
    Serial.begin(9600);
  }



void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("EN High");
  digitalWrite(R_EN,HIGH);
  digitalWrite(L_EN,HIGH);
delay(1000);
for(int i=0;i<256;i++){
  analogWrite(RPWM,i);
//  analogWrite(LPWM,255-i);
  delay(100);
}
delay(500);
for(int i=255;i>0;i--){
  analogWrite(RPWM,i);
// analogWrite(LPWM,255-i);
  delay(100);
}
delay(500);
Serial.println("EN LOW");
digitalWrite(R_EN,LOW);
  digitalWrite(L_EN,LOW);
delay(1000);
for(int i=0;i<256;i++){
  analogWrite(RPWM,i);
  delay(100);
}
delay(500);
for(int i=255;i>0;i--){
  analogWrite(RPWM,i);
  delay(100);
}
delay(500);
}

Il faudrait aussi que tu évalue la précision dont tu as besoin : obtenir une température à 1 ou 2°C près sera plus simple qu'à 0,2°C près.

Une précision de 0.5°C est suffisant et réalisable je pense.

Il faudrait donner les caractéristiques de ces produits.

Pompe :
Consommation: 5W
Tension nominale: 12V DC
Max courant nominal: 400mA

Ventilateur :
Diameter: 80 mm
Fan Speed: 750 RPM
Current / Voltage: 0.030A / 12 V

J'ai un peux de mal à voir quel entrée fait quoi pour faire fonctionner ce circuit.
Selon moi si je prend le fonctionnement d'un pont en H les pin devrais être relier à ces transistors ?(Pont en H dans la pièce jointe)

C'est le but du circuit intégré d'intégrer tous les composants donc les transistors de puissance font partie du CI..
Le schéma fonctionnel d'un pont en H est ultra simple même un peut trop simpliste.

On n'a jamais vu le courant dans un transistor s'établir instantanément ni se couper instantanément.
Entre l'état saturé et l'état bloqué il y a l'état "plus ou moins passant" ou "plus ou moins bloqué".

Si on ne fait rien les transistors haut et bas se trouvent pendant un court instant tous les deux conducteurs et boom cela forme un court-circuit.
C'est le but du circuit intégré d'ajouter ce qu'il faut en délais pour laisser le temps au premier transistor de se bloquer avant de rendre l'autre passant.

Si je fait le code suivant ça fonctionne ?

Je vais peut être te paraître un peu rude mais je ne connais pas ce circuit et je n'ai pas envie de me taper 28 pages de datasheet surtout que des exemples d'utilisation existent.

Par contre ce que je peux te dire c'est qu'il n'est pas obligatoire de tester de suite en vrai grandeur.
Si tu as des doutes tu peux remplacer le peltier par une résistance d'une centaine d'ohms et mettre ainsi ton programme au point en toute sécurité.
Il existe un produit miracle qui s'appelle l'analyseur logique et cerise sur le gâteau on en trouve vers les 7€ sur Ebay, c'est un clone de saleae. Le logiciel de gestion tourne sous windows et peut se télécharger gratuitement.
C'est un outil très simple d'emploi et vraiment très utile pour contrôler les signaux.

Pour tes deux autres produits un simple transistor mosfet monté en interrupteur suffira.
Le prendre logic level pour être certain qu'il se sature complètement avec 5V sur la gate.
Ne pas oublier la diode de protection (diode de roue libre).
Documentation sur le transistor en interrupteur voir : Tuto le transistor bipolaire ou MosFet simplifiés - Tutoriels et cours - Arduino Forum

Pour la précision que tu souhaite je pense qu'il faudra passer par de la PID
P =proportionel
I = intégrale
D = dérivée
Le travail consistera à bien choisir les coefficient s pour obtenir une réponse précise, rapide mais sans sur-dépassement ( tu lira souvent overshoot).

Des bibliothèques sont disponibles et des spécialistes sont présents sur ce forum.
Mais il faudra que tu définisse ta prise d'information, attention au temps de réponse du capteur de température il pourrait être pénalisant.

Merci pour ces réponses, je vais me renseigner sur l'utilisation du PID :wink: