Cashar 47: Isticmaalka K-Type MAX6675 sida heerkul-beegga oo leh relay | Koorsada Arduino Tallaabo-tallaabo
Mashruucani wuxuu ku hagayaa sidii aad u dhisayso nidaamka xakamaynta heerkulka adoo isticmaalaya Arduino, MAX6675 K-type thermocouple, iyo relay. Nidaamkani wuxuu ilaalin karaa heerkulka la doonayo, isagoo ka dhigaya mid ku habboon codsiyo kala duwan. Waxaad tan u isticmaali kartaa inaad dhisto:
- Inkubator heerkulkiisa la xakameeyo oo loogu talagalay tijaabooyin xasaasi ah ama geedo yaryar.
- Nidaamka khamriga oo otomaatig ah si loo ilaaliyo heerkulka wort ee joogtada ah.
- Meel lagu xakameeyo cimilada ee loogu talagalay xamaarato ama xayawaan kale oo heerkulka xasaasi u ah.
- Nidaam kuleylin ama qaboojin oo fudud oo loogu talagalay meel yar.
-
robojax_course_47_MAX6675_temperature-0
Nidaamku wuxuu isticmaalaa MAX6675 si uu u akhriyo heerkulka thermocouple-ka K-type, isagoo bixinaya akhrin heerkul oo sax ah oo ballaadhan (iyadoo ku xiran nooca thermocouple-ka, ilaa 1000°C ama ka badan). Arduino wuxuu farsameeyaa akhrintan oo wuxuu xakameeyaa relay si uu u shido ama u damiyo qaybta kuleylinta ama qaboojinta, isagoo ilaalinaya heerkulka inta u dhaxaysa xadka uu isticmaaluhu qeexay. (fiidiyowga 00:32)
Qalabka/Qaybaha
Si aad u dhisto mashruucan, waxaad u baahan doontaa qaybahan soo socda:
- Arduino board (Uno, Nano, iwm.)
- MAX6675 thermocouple amplifier
- K-type thermocouple
- Relay module
- AC bulb (ama culeys kale, sida fan ama kuleyliye)
- Jumper wires
- Breadboard (ikhtiyaar, laakiin lagu taliyay)
Hagaha Xidhiidhinta
Xidhiidhinta waxaa si faahfaahsan loogu sharaxay fiidiyowga. (fiidiyowga 03:28) Fiidiyowga tixraac si aad u hesho hagaha muuqaalka ah. Xidhiidhada muhiimka ah waxaa ka mid ah ku xidhida MAX6675 ee Arduino (pins 2-6), relay module ee Arduino (pin 8 iyo koronto), iyo relay module ee culeyska AC. Qodob muhiim ah ayaa ah si sax ah u aqoonsashada fiilooyinka live iyo neutral ee culeyskaaga AC ka hor intaadan ku xidhin relay. Xidhiidhinta khaldan waxay u horseedi kartaa xaalado khatar ah.
Sharaxaadda Koodhka
Koodhka Arduino (oo lagu muujiyey qaybaha hoose) wuxuu isticmaalaa maktabadda MAX6675 si uu u akhriyo qiimaha heerkulka ee thermocouple-ka. Qaybaha koodhka ee isticmaaluhu beddeli karo waa:
relayPin: Pin-ka Arduino ee ku xidhan relay module (default: 8). (fiidiyowga 07:35)relayONiyorelayOFF: Kuwaani waxay qeexayaan heerarka macquulka ah si loo shido ama loo damiyo relay. Kuwaani badanaa waa LOW iyo HIGH, laakiin waxaa laga yaabaa inay u baahdaan in la hagaajiyo iyadoo ku xiran nooca relay module-kaaga. (fiidiyowga 07:35)TEMPERATURE_UNIT: Wuxuu dejiyaa cutubka akhrinta heerkulka (1 Celsius, 2 Fahrenheit, 3 Kelvin). (fiidiyowga 08:21)START_TEMPERATUREiyoSTOP_TEMPERATURE: Doorsoomayaashani waxay qeexayaan xadka heerkulka ee nidaamka xakamaynta. Nidaamku wuxuu shidi doonaa relay marka heerkulku hoos u dhacoSTART_TEMPERATUREwuxuuna damin doonaa marka heerkulku gaaroSTOP_TEMPERATURE(ama si ka soo horjeeda, iyadoo ku xiran haddii aad xakameyneysid kuleyliye ama qaboojiye). (fiidiyowga 08:31)CONTROL_TYPE: Doorsoome qeexaya haddii nidaamku u shaqeeyo sidii kuleyliye (1) ama qaboojiye (2). (fiidiyowga 08:36)
Koodhku wuxuu ku darayaa hawlo sida readTemperature(), printTemperature(), loadControl(), iyo relayControl() si loo maareeyo akhrinta heerkulka, bandhigga, iyo hawlgalka relay. Hawlahani waxay si cad u qeexan yihiin oo loo sharaxay fiidiyowga. (fiidiyowga 09:37, 10:00, 10:43, 11:30)
const int relayPin =8;
const int relayON = LOW;// ha beddelin
const int relayOFF = HIGH; //ha beddelin
int relayState = relayOFF;//xaaladda bilowga ah ee relay
const int TEMPERATURE_UNIT =1;//1=Celsius, 2=Fahrenheit, 3=Kelvin
const float START_TEMPERATURE = 80.0;//cutubka sare
const float STOP_TEMPERATURE = 100.0;//cutubka sare
const int CONTROL_TYPE = 1;// 1= kuleyliye, 2=qaboojiye
Mashruuca Tooska ah/Muujinta
Fiidiyowgu wuxuu muujinayaa shaqada nidaamka xakamaynta heerkulka labadaba xaaladaha kuleylinta iyo qaboojinta. (fiidiyowga 13:15 iyo 15:28) Muujintu waxay si cad u tusinaysaa sida nidaamku u ilaaliyo heerkulka gudaha xadka la dejiyay isagoo shidi iyo daminaya relay sida loo baahdo.
Cutubyada
- [00:00] Hordhac
- [00:55] Sharaxaadda Xakamaynta Kuleyliyaha/Qaboojiyaha
- [03:28] Jaantuska Xidhiidhinta
- [06:26] Sharaxaadda Koodhka
- [13:15] Muujinta Xakamaynta Kuleyliyaha
- [15:28] Muujinta Xakamaynta Qaboojiyaha
- [17:29] Gunaanad
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT);// set pin 10 as output
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// set pin 10 LOW
}else{
digitalWrite(10, HIGH);// set pin 10 HIGH
}
delay(1000);
}
++
/*
* Library from: // www.ladyada.net/learn/sensors/thermocouple
*
* This is Arduino code to measure MAX6675 Thermocouple K-Type sensor
* and control relay as heater or cooler
*
* Watch Video instruction for this code: https://youtu.be/dVh77wT-4Ao
*
* Written by Ahmad Shamshiri on May 20, 2020 in Ajax, Ontario, Canada
* www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com.
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
Related videos:
Introduction to MAX6675 K-Type: https://youtu.be/VGqONmUinqA
Using MAX6675 K-Type thermocouple with LED display: https://youtu.be/cD5oOu4N_AE
Using MAX6675 K-Type thermocouple with LCD1602-I2C: https://youtu.be/BlhpktgPdKs
Using 2 or more MAX6675 K-Type thermocouples: https://youtu.be/c90NszbNG8c
Using MAX6675 K-Type thermocouple as heater or cooler controller: [this video]
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "max6675.h"
//Robojax.com heater/cooler with MAX6675 Thermocoupler
int GNDpin = 2;
int VCCpin =3;
int thermoCLK = 4;
int thermoCS = 5;
int thermoDO = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
const int relayPin =8;
const int relayON = LOW;// do not change
const int relayOFF = HIGH; //do not change
int relayState = relayOFF;//initial state of relay
const int TEMPERATURE_UNIT =1;//1=Celsius, 2=Fahrenheit, 3=Kelvin
const float START_TEMPERATURE = 80.0;//unit above
const float STOP_TEMPERATURE = 100.0;//unit above
const int CONTROL_TYPE = 1;// 1= heater, 2=cooler
float temperature;
void setup() {
//Robojax.com heater/cooler with MAX6675 Thermocoupler
Serial.begin(9600);
Serial.println("MAX6675 test with relay");
// use Arduino pins
pinMode(relayPin, OUTPUT);//pin for relay
digitalWrite(relayPin, relayState);
pinMode(VCCpin, OUTPUT);
digitalWrite(VCCpin, HIGH);
pinMode(GNDpin, OUTPUT);
digitalWrite(GNDpin, LOW);
// wait for MAX chip to stabilize
delay(500);
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}
void loop() {
//Robojax.com heater/cooler with MAX6675 Thermocoupler
readTemperature();
printTemperature();
loadControl();
if(temperature >=89.5)
{
///
}
delay(1000);
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}//loop
/*
* loadControl()
* @brief controls the load based
* @param state can be either : relayON or relayOFF
* @return returns none
* Written by Ahmad Shamshiri for robojax.com
* on May 20, 2020 at 15:23 in Ajax, Ontario, Canada
*/
void loadControl()
{
//Robojax.com heater/cooler with MAX6675 Thermocoupler
// Serial.print("Start: ");
// Serial.print(START_TEMPERATURE);
// Serial.print(" Stop: ");
//Serial.println(STOP_TEMPERATURE);
if(CONTROL_TYPE ==1)
{
if(START_TEMPERATURE >= temperature && STOP_TEMPERATURE >=temperature)
{
relayControl(relayON);
}
if(STOP_TEMPERATURE <=temperature)
{
relayControl(relayOFF);
}
}else{
if(START_TEMPERATURE >= temperature && STOP_TEMPERATURE >=temperature)
{
relayControl(relayOFF);
}
if(STOP_TEMPERATURE <=temperature)
{
relayControl(relayON);
}
}
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}//loadControl()
/*
* relayControl(int state))
* @brief turns the relay ON or OFF
* @param state is "relayON" or "relayOFF" defined at the top of code
* @return returns none
* Written by Ahmad Shamshiri for robojax.com
* on May 20, 2020 at 15:23 in Ajax, Ontario, Canada
*/
void relayControl(int state)
{
//Robojax.com heater/cooler with MAX6675 Thermocoupler
if(state ==relayON)
{
digitalWrite(relayPin, relayON);
Serial.println("Relay ON");
}else{
digitalWrite(relayPin, relayOFF);
Serial.println("Relay OFF");
}
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}//relayControl()
/*
* readTemperature()
* @brief reads the temperature based on the TEMPERATURE_UNIT
* @param average temperature
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 20, 2020 at 15:23 in Ajax, Ontario, Canada
*/
void readTemperature()
{
//Robojax.com heater/cooler with MAX6675 Thermocoupler
if(TEMPERATURE_UNIT ==2)
{
temperature = thermocouple.readFahrenheit();//convert to Fahrenheit
}else if(TEMPERATURE_UNIT ==3)
{
temperature = thermocouple.readCelsius() + 273.15;//convert to Kelvin
}else{
temperature = thermocouple.readCelsius();// return Celsius
}
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}// readTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param charact type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature()
{
//Robojax.com heater/cooler with MAX6675 Thermocoupler
Serial.print(temperature);
printDegree();
if(TEMPERATURE_UNIT ==2)
{
Serial.print("F");
}else if(TEMPERATURE_UNIT ==3)
{
Serial.print("K");
}else{
Serial.print("C");
}
Serial.println();
//Robojax.com heater/cooler with MAX6675 Thermocoupler
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
Waad u baahan tahay
-
eBay
-
AliExpressPurchase 1 channel 5V KY-019 relay from AliExpresss.click.aliexpress.com
-
BanggoodPurchase MAX6675 K-Type from Banggoodbanggood.com
Kheyraadka & Tixraacyada
-
DibeddaMAX6675 datasheet (PDF)datasheets.maximintegrated.com
Faylasha📁
Fayl la'aan.