Contrôle précis de la température de l'eau

9

J'ai la configuration suivante:

  • Arduino Duemilanove
  • Petit chauffe-eau connecté avec relais optique (PWM est ok)
  • Capteur de température étanche DS18B20
  • Quantité d'eau inconnue (mais le capteur de température et le chauffage sont toujours sous l'eau).

Comment puis-je contrôler avec précision la température de l'eau, sur la base des lectures du capteur de température? Par précision, je veux dire jusqu'à la précision du capteur de température (dans ce cas, ± 0,5 ° C). Tout devrait fonctionner sur Arduino, donc aucune capacité de stockage ou de traitement de données supplémentaire n'est disponible. Pour le débogage, je peux évidemment utiliser un ordinateur.

J'ai essayé d'exécuter PID, mais il semble vraiment difficile de

  1. Évitez les dépassements - dépassement de la température cible soit initialement, soit lorsque de l'eau (froide) est ajoutée
  2. Stabilisez correctement après avoir ajouté de l'eau froide.
Olli
la source
Avez-vous réglé votre PID ou utilisiez-vous simplement des valeurs standard?
Peter Bloomfield
J'ai essayé de régler les paramètres PID avec divers guides «comment régler le PID», sans succès. J'ai également essayé PIDAutotune , mais je n'ai rien pu faire de mieux. Je ne dis pas que le PID ne pouvait pas convenir à cela.
Olli
Avec le chauffage de l'eau, vous allez avoir beaucoup d'incohérences. Où est le radiateur dans votre réservoir par rapport à la sonde de température?
Matt Clark
1
Vous devrez probablement ajouter quelque chose qui mélange l'eau pour homogénéiser la température tout au long. Ensuite, vous devez prendre en compte les propriétés thermiques de votre élément chauffant, le temps de refroidissement après une désactivation, etc. Cela dépend également de la quantité d'eau dans le système. Si vous pouvez contrôler la température de l'élément chauffant, cela irait loin.
Daniel
Ne fait pas partie de votre problème ATM, mais il convient de le noter: ne confondez pas l'exactitude, la précision et la répétabilité. La précision signifie à quel point la température signalée est proche de la température réelle. La précision est la plus petite différence que l'appareil puisse distinguer (0,0625 degC pour DS18b20). La répétabilité est la quantité de mesures rapportées de la même température qui varient les unes des autres. Les deux derniers sont plus préoccupants que le premier. Même avec un capteur précis de +/- 0,5 ° C, vous pouvez toujours maintenir la température à l'intérieur (ou au moins distinguer les différences, ce qui est une condition nécessaire) de quelques 1 / 16e de degrés Celsius ...
JRobert

Réponses:

2

Vous devez connaître le temps de réponse de votre système et la répétabilité de vos mesures pour caractériser vos données (établir la confiance). Je suggère de prendre des échantillons et de les calculer en moyenne avant de rallumer le radiateur.

À mon humble avis, l'eau ne restera pas volontiers à moins de 0,5 ° C. Pouvez-vous autoriser les modes grossier et fin? Utilisez un PWM plus élevé pour de grandes différences, puis un PWM plus bas lorsque vous êtes proche de la cible.

Une fois installé sur votre cible, vous pouvez essayer d'améliorer la stabilité de la température. Bien que des choses prédéfinies comme PID fonctionnent pour beaucoup, j'implémente normalement des fonctionnalités comme celle-ci manuellement.

Chris K
la source
0

BrettAM, dE (taux de changement d'erreur) changera lorsque le paramètre de contrôle, dans ce cas la largeur d'impulsion du signal de l'élément chauffant est modulé, est modifié par le PID. Ma formulation en disant que le taux de changement d'erreur de température était un mauvais choix. Le terme dérivé travaillera également pour prendre en compte les petites variations de la chaleur spécifique de l'eau avec la température (4,186 kJ / (kg K) @ 20C à 4,219 kJ / (kg K) @ 100C).

Mon point étant, oui, le terme dérivé calcule le taux de variation de dE. Étant donné que l'erreur est ici la différence entre la température souhaitée et la température réelle, le dérivé calcule alors les changements de la vitesse à laquelle l'eau est chauffée.

Le problème est qu'il est souvent difficile de créer un système stable avec un terme dérivé. Un système PID devrait être basé principalement sur le terme proportionnel. Lorsque vous modifiez la quantité d'eau, à mon avis, vous créez plus de non-linéarité que le PID ne peut compenser. Pour cette raison, le PID doit être quelque peu répétable et si le niveau d'eau varie fortement, son système n'est plus répétable.

À L'OP: Dans ma conception similaire, je vais essayer d'utiliser un petit combo radiateur / ventilateur et une pompe 12V DC pour faire couler l'eau comme méthode de refroidissement de l'eau. Je pense que cela pourrait mieux fonctionner. En cas de succès, je vous le ferai savoir.

MattEE
la source
Bienvenue sur Arduino SE! Cela ne répond pas directement à la question (il semble plus répondre à un autre commentaire). Pouvez-vous utiliser le bouton Modifier pour clarifier comment ces informations répondent à la question? Merci!
Anonymous Penguin
-2

Vous devez maintenir constante la quantité d'eau chauffée. La vitesse à laquelle la température de l'eau augmente varie lorsque vous modifiez la quantité d'eau (en ajoutant de l'eau froide comme vous l'avez mentionné). Un contrôleur proportionnel-intégral-dérivé (PID) fonctionne en observant la dérivée (taux de variation) de la variable que vous essayez de contrôler. Votre PID ne fonctionnera jamais correctement si le taux de changement de température n'est pas (raisonnablement) constant.

Examinez la chaleur spécifique de l'eau, principalement l'équation Q = c m dT. Q est la chaleur ajoutée, qui, je suppose, est constante dans votre configuration. m est la masse de la substance à chauffer (doit être maintenue constante!). c est la chaleur spécifique de l'eau, qui est de 4,186 joules / gramme * degréC. Si Q, m et c sont constants, alors dT, la vitesse à laquelle la température de l'eau augmentera sera également constante (en réalité, c varie légèrement avec la température, mais je dirais que cela peut être ignoré si vous travaillez de 0 à 100C). Essayez de régler votre PID avec une quantité d'eau constante et vous obtiendrez peut-être de meilleurs résultats.

Quel chauffe-eau utilisez-vous? Je fais actuellement quelque chose de similaire, mais j'essaie d'utiliser une plaque chauffante du laboratoire de chimie et je connais d'énormes dépassements. J'ai envisagé de passer à un chauffe-aquarium, mais vous souhaitez savoir ce que vous utilisez?

-Mat

Mat
la source
Le PID ne suppose pas que le taux de variation est constant. Si dE (taux de variation d'erreur) était constant, le terme "D" ne serait pas là. en outre, l'eau va chauffer plus lentement à des températures élevées, car plus de chaleur est perdue par la vapeur, peu importe la quantité d'eau. Le PID pourrait être idéalement réglé pour une masse thermique particulière, mais il devrait toujours fonctionner pour une large gamme de niveaux d'eau et de températures / pressions extérieures.
BrettAM