16-05-2023, 15:59
Witam.
Mam szafę podgrzewającą zawartość w której zaszyte są czujniki PT100. Chińska elektronika sterująca grzałkami padła. Chciałbym wykorzystać do sterowania przekaźnikami arduino. Ale w pisaniu kodu to ja orłem nie jestem
.
Wyszperałem kod do używania cyfrowych czujników temp i dopisałem sterowanie przekaźnikami i działał idealnie... Ale potrzebuję wykorzystać zaszyte w szafie analogowe PT100. Znalazłem kod do odczytu wartości z pt100 i on działa ale po dopisaniu linijek odpowiedzialnych za przekaźniki na pinie D5 warjuje napięcie a co za tym idzie przekaźnik.
Czy podpowie ktoś jak dopisać żeby na D5 pokazywała się stała wartość przy zadanej temperaturze??
Dokładnie żeby wynik z "takeReading" wypisywany na serialu jako "temp" określał stan pinu D5 jako HIGH lub LOW przy odpowiednich wartościach odczytanych z analogowego pinu.. Bo widzę że te wartości są przekazywane na D5 bez stałej wartości.
Z góry dziękuję za pomoc lub wskazówkę co poprawić.
Wysłane z mojego RMX3085 przy użyciu Tapatalka
Mam szafę podgrzewającą zawartość w której zaszyte są czujniki PT100. Chińska elektronika sterująca grzałkami padła. Chciałbym wykorzystać do sterowania przekaźnikami arduino. Ale w pisaniu kodu to ja orłem nie jestem

Wyszperałem kod do używania cyfrowych czujników temp i dopisałem sterowanie przekaźnikami i działał idealnie... Ale potrzebuję wykorzystać zaszyte w szafie analogowe PT100. Znalazłem kod do odczytu wartości z pt100 i on działa ale po dopisaniu linijek odpowiedzialnych za przekaźniki na pinie D5 warjuje napięcie a co za tym idzie przekaźnik.
Czy podpowie ktoś jak dopisać żeby na D5 pokazywała się stała wartość przy zadanej temperaturze??
Dokładnie żeby wynik z "takeReading" wypisywany na serialu jako "temp" określał stan pinu D5 jako HIGH lub LOW przy odpowiednich wartościach odczytanych z analogowego pinu.. Bo widzę że te wartości są przekazywane na D5 bez stałej wartości.
Z góry dziękuję za pomoc lub wskazówkę co poprawić.
Kod:
/* This code calculates the temperature using a PT100,
* circuit diagram can be found here:https://circuits.io/circuits/2962051-reading-temperature-from-pt100#schematic
* The circuit has a temperature range of -51.85 to 129.87 degrees C
* or -61.33 to 265.73 degree fahrenheit.
*
* As the temperature equation fro the PT100 requires you to know the
* resistance of it, you'll need to convert the voltage to a resistance
* and this can be done by using y=mx+c formula(Rx=m*V+Roff) Rx is the pt100
* resistance, m is the slope(ohms/volt), v is the voltage read into the analog pin
* and Roff is the offset resistance(should be close to the real value you use when calculated.
*
* To calculate the slope, you need to have the PT100 at steady state(settle at one temp)
* and measure its resistance then measure the voltage at analog pin, do this for again at a different
* temp.
* Now we can find m: m=(R2-R1)/(V2-V1) eg from simulator (150-80)/(4.97-0.036)
* m = 14.187 ohms/volt
* to find c just fill one of the values into the Rx=m*V+c
* c = 150-14.187*4.97 = 79.489ohms
*
* Written by Roboro
* Github: https://github.com/RonanB96/Read-Temp-From-PT100-With-Arduino
* Circuit: https://circuits.io/circuits/2962051-reading-temperature-from-pt100/edit#breadboard
* Blog: https://roboroblog.wordpress.com
* Instrustable Post:http://www.instructables.com/id/Reading-Temperature-From-PT100-Using-Arduino/
*/
// You'll need to download this timer library from here
// http://www.doctormonk.com/search?q=timer
#include "Timer.h"
// Define Variables
float V;
float temp;
float Rx;
int relepin = 5; // pin przekaźnika 4
// Variables to convert voltage to resistance
float C = 79.489;
float slope = 14.187;
// Variables to convert resistance to temp
float R0 = 100.0;
float alpha = 0.00385;
int Vin = A5; // Vin is Analog Pin A0
Timer t; // Define Timer object
void setup() {
Serial.begin(9600); // Set Baudrate at 9600
pinMode(Vin,INPUT); // Make Vin Input
pinMode(relepin, OUTPUT); // przekaźnik
t.every(1000,takeReading); // Take Reading Every 100ms
}
void loop() {
t.update(); // Update Timer
if(analogRead(0) <= 28.00){ digitalWrite(relepin, HIGH);} // jeśli temperatura jest mniejsza niż ... stopni, włącz przekaźnik
if(analogRead(0) >= 40.00){ digitalWrite(relepin, LOW);}//jeśli tempo. więcej niż 30, a następnie wyłącz przekaźnik
}
void takeReading(){
// Bits to Voltage
V = (analogRead(Vin)/1023.0)*5.0; // (bits/2^n-1)*Vmax
// Voltage to resistance
Rx = V*slope+C; //y=mx+c
// Resistance to Temperature
temp= (Rx/R0-1.0)/alpha; // from Rx = R0(1+alpha*X)
// Uncommect to convet celsius to fehrenheit
// temp = temp*1.8+32;
Serial.println(temp);
}
Wysłane z mojego RMX3085 przy użyciu Tapatalka