Table des matières:
- Étape 1: Outils et matériel
- Étape 2: graver le PCB
- Étape 3: souder les composants
- Étape 4: programmer le microcontrôleur
- Étape 5: Assemblage et étalonnage
- Étape 6: Réglage PID
- Étape 7: Emballez-le
Vidéo: Contrôleur de température PID : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Mon ami construit une extrudeuse de plastique pour le recyclage du plastique (https://preciousplastic.com). Il doit contrôler la température d'extrusion. Pour cela, il utilise une bande chauffante de buse. Dans cette buse, il y a un thermocouple et un bloc chauffant qui nous permettent de mesurer la température et enfin d'atteindre la température souhaitée (faire une boucle de rétroaction).
Quand j'ai entendu qu'il avait besoin de plusieurs contrôleurs PID pour contrôler toutes ces bandes chauffantes de buse, cela m'a immédiatement donné l'envie d'essayer de fabriquer les nôtres.
Étape 1: Outils et matériel
Outils
- fer à souder, fil à souder et flux
- pince à épiler
- fraiseuse (la gravure chimique est également possible pour le prototypage PCB) (vous pouvez également commander le PCB avec mon fichier eagle)
- thermomètre (pour l'étalonnage)
- arduino (tout type) ou un programmeur AVR
- Câble USB série TTL-232 FTDI
- découpeuse laser (facultatif)
- multimètre (ohmmètre et voltmètre)
Matériel
- Plaque de cuivre simple face en bakélite (60*35 mm minimum) (j'ai ruiné ma scie en achetant celle en fibre de verre donc attention: bakélite)
- Microcontrôleur Attiny45
- Régulateur de tension LM2940IMP-5
- amplificateur opérationnel AD8605
- Transistor NDS356AP
- un tas de résistances et de condensateurs (j'ai le livre adafruit SMT 0603)
- Transformateur 230V-9V AC-DC
- 1N4004 diodes
- relais statique
- vernis à ongles (facultatif)
Étape 2: graver le PCB
J'ai utilisé ma CNC Proxxon MF70 transformée et un embout conique pour fraiser le PCB. Je pense que n'importe quel embout de gravure fonctionnerait. Le fichier Gcode a été généré directement par eagle et le plugin pcb-gcode. Seuls trois passages ont été effectués pour assurer une bonne séparation des routes mais sans passer des heures à fraiser tout le cuivre. Lorsque le PCB est sorti de la machine CNC, j'ai nettoyé les routes avec un cutter et les ai testées avec un multimètre.
Paramètres: avance 150 mm/min, profondeur 0,2 mm, vitesse de rotation 20'000 t/min
Étape 3: souder les composants
Avec la pince à épiler et le fer à souder, placez les composants aux bons endroits et soudez-le à l'aide de flux (ça aide) et en commençant par les plus petits composants. Encore une fois, vérifiez avec un multimètre que vous n'avez pas de courts-circuits ou d'éléments non connectés.
Vous pouvez choisir le gain de l'amplificateur en choisissant la résistance que vous voulez (gain=(R3+R4)/R4). J'ai pris 1M et 2,7k, donc dans mon cas, le gain est égal à environ 371. Je ne peux pas connaître la valeur exacte car j'utilise une résistance de tolérance de 5%.
Mon thermocouple est de type J. Cela signifie qu'il donne 0,05 mV pour chaque degré. Avec le gain de 371, j'obtiens 18,5mV par degré de la sortie de l'amplificateur (0,05*371). Je veux mesurer environ 200°C donc la sortie de l'amplificateur devrait être d'environ 3,7V (0,0185*200). Le résultat ne doit pas dépasser 5V car j'utilise la tension de référence 5V (externe).
L'image correspond à la première version (ne fonctionne pas) que j'ai faite mais le principe est le même. Dans cette première version, j'ai utilisé un relais et l'ai mis en plein milieu du tableau. Dès que je commutais en haute tension, j'avais des pics qui faisaient redémarrer le contrôleur.
Étape 4: programmer le microcontrôleur
En utilisant un arduino comme dans ces instructables: https://www.instructables.com/id/How-to-Program-a… vous pouvez charger le code.
J'ai utilisé un bibelot pro avec un câble FTDI-USB pour programmer l'Attiny 45 mais cette méthode est équivalente. J'ai ensuite branché les broches PB1 et GDN directement dans le RX et GND du câble FTDI-USB pour recevoir les données série et pouvoir déboguer.
Vous devez mettre tous les paramètres à zéro (P=0, I=0, D=0, K=0) dans le sketch arduino. Ils seront réglés lors de l'étape de réglage.
Si vous ne voyez pas de fumée ou d'odeur de brûlé, vous pouvez passer à l'étape suivante !
Étape 5: Assemblage et étalonnage
Attention: Ne branchez jamais l'alimentation et le 5V du programmateur en même temps ! Sinon, vous verrez la fumée dont je parlais à l'étape précédente. Si vous n'êtes pas sûr de pouvoir respecter cela, vous pouvez simplement retirer la broche 5v du programmateur. Je l'ai laissé car c'était plus pratique pour moi de programmer le contrôleur sans alimentation et de tester le contrôleur sans que le radiateur ne chauffe comme un fou devant mon visage.
Vous pouvez maintenant brancher le thermocouple sur l'amplificateur et voir si vous mesurez quelque chose (respectez la polarité). Si votre système de chauffage est à température ambiante, vous devez mesurer zéro. Le chauffer à la main devrait déjà conduire à quelques petites valeurs.
Comment lire ces valeurs ? Branchez simplement les broches PB1 et GDN directement dans les connecteurs RX et GND du câble FTDI-USB et ouvrez le moniteur série arduino.
Lorsque le contrôleur démarre, il envoie la valeur rouge par le thermomètre interne de la puce. C'est ainsi que je compense la température (sans utiliser de puce dédiée). Cela signifie que si la température change pendant l'opération, elle ne sera pas prise en compte. Cette valeur est très différente d'une puce à l'autre donc elle doit être saisie manuellement dans la définition REFTEMPERATURE au début du croquis.
Avant de connecter le relais statique, vérifiez que la tension de sortie est dans la plage prise en charge par votre relais (3V à 25V dans mon cas, le circuit génère environ 11V). (respecter la polarité)
Ces valeurs ne sont pas des températures en degrés ou en degrés Fahrenheit mais le résultat de la conversion analogique-numérique donc elles varient entre 0 et 1024. J'utilise la tension de référence 5V donc lorsque la sortie de l'amplificateur est proche de 5V, le résultat de la conversion est proche de 1024.
Étape 6: Réglage PID
Je dois mentionner que je ne suis pas un expert en contrôle, j'ai donc trouvé des paramètres qui fonctionnent pour moi mais je ne garantis pas que cela fonctionne pour tout le monde.
Tout d'abord, je dois expliquer ce que fait le programme. J'ai mis en place une sorte de logiciel PWM: un compteur est incrémenté à chaque itération jusqu'à atteindre 20'000 (auquel cas il est remis à 0). Un délai ralentit la boucle jusqu'à une milliseconde. Les plus exigeants d'entre nous remarqueront que la période de contrôle est d'environ 20 secondes. Chaque boucle commence par une comparaison entre le compteur et un seuil. Si le compteur est inférieur au seuil, je désactive le relais. S'il est plus gros, je l'allume. Je règle donc la puissance en réglant le seuil. Le calcul du seuil a lieu toutes les secondes.
Qu'est-ce qu'un contrôleur PID ?
Lorsque vous souhaitez contrôler un processus, vous disposez de la valeur que vous mesurez (analogData), de la valeur que vous souhaitez atteindre (tempCommand) et d'un moyen de modifier l'état de ce processus (seuil). Dans mon cas c'est fait avec le seuil ("seuil" en français mais beaucoup plus facile à écrire et à prononcer (prononcez "sey")) qui détermine combien de temps l'interrupteur sera allumé et éteint (le duty cycle) donc la quantité d'énergie mettre dans le système.
Tout le monde s'accorde à dire que si vous êtes loin du point que vous souhaitez atteindre, vous pouvez faire une grosse correction et si vous êtes proche, une petite correction s'impose. Cela signifie que la correction est fonction de l'erreur (error=analogData-tempComand). Oui mais combien ? Disons que nous multiplions l'erreur par un facteur (P). Il s'agit d'un contrôleur proportionnel. Mécaniquement, un ressort effectue une correction proportionnelle car la force du ressort est proportionnelle à la compression du ressort.
Vous savez probablement que les suspensions de votre voiture se composent d'un ressort et d'un amortisseur (amortisseur). Le rôle de cet amortisseur est d'éviter que votre voiture ne rebondisse comme un trampoline. C'est précisément ce que fait le terme dérivé. En tant qu'amortisseur, il génère une réaction proportionnelle à la variation de l'erreur. Si l'erreur évolue rapidement, la correction est réduite. Il réduit les oscillations et les dépassements.
Le terme intégrateur est ici pour éviter l'erreur permanente (il intègre l'erreur). Concrètement, c'est un compteur qui s'incrémente ou se décrémente si l'erreur est positive ou négative. Ensuite, la correction est augmentée ou diminuée en fonction de ce compteur. Il n'a pas d'équivalence mécanique (ou vous avez une idée ?). Peut-être y a-t-il un effet similaire lorsque vous amenez votre voiture au service et que le mécanicien constate que les amortisseurs sont systématiquement trop faibles et décide d'ajouter un peu plus de précharge.
Tout cela se résume dans la formule: correction=P*e(t)+I*(de(t)/dt)+D*intégrale(e(t)dt), P, I et D étant trois paramètres qui ont à régler.
Dans ma version, j'ai ajouté un quatrième terme qui est la commande "a priori" (feed forward) nécessaire pour maintenir une certaine température. J'ai choisi une commande proportionnelle à la température (c'est une bonne approximation des pertes thermiques. C'est vrai si l'on néglige les pertes radiatives (T^4)). Avec ce terme, l'intégrateur s'allège.
Comment trouver ces paramètres ?
J'ai essayé une méthode conventionnelle que vous pouvez trouver en cherchant sur Google "contrôleur de température de réglage pid", mais j'ai eu du mal à l'appliquer et j'ai fini avec ma propre méthode.
Ma méthode
Mettez d'abord P, I, D à zéro et mettez "K" et "tempCommand" à de petites valeurs (par exemple K=1 et tempCommand=100). Allumez le système et attendez, attendez, attendez… jusqu'à ce que la température se stabilise. A ce stade vous savez qu'avec un seuil de 1*100=100, la température tend vers X. Vous savez donc qu'avec une commande de 100/20000=5% vous pouvez atteindre X. Mais le but est d'atteindre 100 car il s'agit de "tempCommand". En utilisant une proportion, vous pouvez calculer K pour atteindre 100 (tempCommand). Par précaution j'ai utilisé une valeur plus petite que celle calculée. En effet, il est plus facile de chauffer que de refroidir. Alors finalement
Kfinal=K*tempCommand*0.9/X
Maintenant, lorsque vous démarrez le contrôleur, il devrait naturellement tendre vers la température souhaitée, mais c'est un processus vraiment lent car vous ne compensez que les pertes de chaleur. Si l'on veut passer d'une température à une autre, il faut ajouter une quantité d'énergie thermique dans le système. P détermine à quelle vitesse vous mettez l'énergie dans le système. Réglez P sur une petite valeur (par exemple P=10). Essayez un démarrage (presque) à froid. Si vous n'avez pas un gros dépassement, essayez avec le double (P=20) si maintenant vous en avez un, essayez quelque chose entre les deux. Si vous avez 5% de dépassement, c'est bien.
Augmentez maintenant D jusqu'à ce que vous n'ayez plus de dépassement. (toujours des essais, je sais que ce n'est pas de la science) (j'ai pris D=100)
Ajoutez ensuite I=P^2/(4*D) (Il est basé sur la méthode Ziegler-Nicholts, cela devrait garantir la stabilité) (pour moi I=1)
Pourquoi toutes ces épreuves, pourquoi pas la science ?
Je sais je sais! Il existe une théorie énorme et vous pouvez calculer la fonction de transfert et la transformée en Z et blablabla. Je voulais générer un saut unitaire puis enregistrer pendant 10 minutes la réaction et écrire la fonction de transfert et puis quoi ? Je ne veux pas faire de calcul avec 200 termes. Donc si quelqu'un a une idée, je serais heureux d'apprendre comment le faire correctement.
J'ai aussi pensé à mes meilleurs amis Ziegler et Nichols. Ils m'ont dit de trouver un P qui génère des oscillations et d'appliquer ensuite leur méthode. Je n'ai jamais trouvé ces oscillations. La seule chose que j'ai trouvée était un oooooooovershoot vers le ciel.
Et comment modéliser le fait que le chauffage n'est pas le même processus que le refroidissement ?
Je vais continuer mes recherches mais maintenant empaquetons votre contrôleur si vous êtes satisfait des performances que vous obtenez.
Étape 7: Emballez-le
J'ai eu accès au fablab de Moscou (fablab77.ru) et à leur découpeur laser et je leur en suis reconnaissant. Cette opportunité m'a permis de réaliser un joli package généré en un clic par un plugin qui fait des boites aux dimensions voulues (h=69 l=66 d=42 mm). Il y a deux trous (diam=5mm) sur le dessus pour la led et le switch et une fente sur le côté pour les pins de programmation. J'ai fixé le transformateur avec deux morceaux de bois et le PCB avec deux vis. J'ai soudé le bornier aux fils et au PCB, ajouté le commutateur entre le transformateur et l'entrée d'alimentation du PCB, connecté la led au PBO avec une résistance (300 Ohms) en série. J'ai aussi utilisé du vernis à ongles pour l'isolation électrique. Après le dernier test, j'ai recollé la boite. C'est ça.
Conseillé:
Comment faire un contrôleur automatique de température et d'humidité Arduino: 3 étapes
Comment faire un contrôleur automatique de température et d'humidité Arduino: 1
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables
Contrôleur PID VHDL : 10 étapes
Contrôleur PID VHDL : Ce projet était mon projet final pour terminer mon baccalauréat spécialisé du Cork Institute of Technology. Ce didacticiel est divisé en deux sections, la première couvrira le corps principal du code PID qui est l'objectif principal du projet et la sec
Copter tour avec contrôleur PID : 4 étapes
Tower Copter avec contrôleur PID : Bonjour les gars, je m'appelle wachid kurniawan putra, aujourd'hui je vais partager mon projet de microcontrôleur avec mon équipe. Juan André (15/386462 / SV / 09848)2. Wachid Kurniawan Putra (17/416821 / SV / 14559)3
YABC - Encore un autre contrôleur Blynk - Contrôleur de température et d'humidité du cloud IoT, ESP8266 : 4 étapes
YABC - Encore un autre contrôleur Blynk - Contrôleur de température et d'humidité du cloud IoT, ESP8266 : Salut les fabricants, j'ai récemment commencé à cultiver des champignons à la maison, des pleurotes, mais j'ai déjà 3x de ces contrôleurs à la maison pour le contrôle de la température du fermenteur pour ma bière maison, femme fait aussi ce truc de Kombucha maintenant, et en tant que thermostat pour la chaleur