Dealing with fan failure

Abiqua

Well-Known Member
For multiple COB monitoring ,thermocouples are quite expensive option.

A cheaper solution, is to use NTCs ( negative coefficient thermistors ).
But then another-totally different and more complicated- code is needed...
And more advanced skills at electronics,for sure ..
Check here:
https://www.rollitup.org/t/diy-cree-cxa-arduino-thermal-monitoring-protection.824070/

Cheers.
:peace:
Great read by the way....Im about halfway thru the 2nd go around....

I just like the Jee Labs blank PCB they offered, didn't realize the complete board was over 39 euros, dang.....it allows for 3 thermistors at once, just thought that was the best part :peace:

Also have to pick your brain about this display...I have it loaded up and into blank video mode..and after redefining the pins and PWMing the led output [7].....but I haven't gone any farther so far, just about to start.....

Would love to here how you manage only 3 pins....I can only guess down to 4 pins, are you cutting the clock?

I just wanted a really cheap and reliable display...so far I am working on a hygrometer, luxmeter and eventually the DIY PAR and just wanted something with easy and concise readouts....no fancy shit needed here :)
 
Last edited:

stardustsailor

Well-Known Member
Great read by the way....Im about halfway thru the 2nd go around....

I just like the Jee Labs blank PCB they offered, didn't realize the complete board with over 39 euros, dang.....it allows for 3 thermistors at once, just though that was the best part :peace:

Also have to pick your brain about this display...I gotten it loaded up and into blank video mode and redefining the pins and PWMing the led output [7].....but I haven't gone any farther so far, just about to start.....

Would love to here how you manage only 3 pins....I can only guess down to 4 pins, are you cutting the clock?

I just wanted a really cheap and reliable display...so far I am working on a hygrometer, luxmeter and eventually the DIY PAR and just wanted something with easy and concise readouts....no fancy shit needed here :)

No,the three pins used from the LCD are : SCLK (clock ) ,DN (MOSI) & D/C
(connect** them at any of the digital pins ,I use personally the 5,6,& 7 pins of Arduino ,leaving pin 9 for PWM )

( ** Through a "MOSFET level converter "
-custom made small pcb with 1206 smd resistors,which can be soldered with ordinary soldering iron - circuit ,to lower the 5 V signals from arduino to 3.3 V )
-SCE pin is connected to GND (ground ) of 5110 .
-RST (reset ) is connected to Reset pin of Arduino.
-LED & VCC pins are both connected to +3.3 V pin of Arduino.
-GND+SCE of 5110 to GND of Arduino.

Further Notes:

*Download Diptrace freeware edition ,to be able to see the level converter schematic & pcb layout ,included at zip file.
Included at Zip file is also the 3-pin library and the used Mosfet spec -sheet in pdf form (BS170 )*

* At the 3pin library the " ~ " character (near ESCape ) of the keyboard is customised as " ° " (degrees ) at the 5110 screen *

*Fonts are listed and should be declared -when chosen- at code as " Small -Normal- MNum-LNum " instead of " TinyFont- SmallFont-MediumNumbers-BigNumbers " as noted at the LCD5110 _Graph manual (pdf )
*Check DefaultFonts.C file - & LCD5110 _Graph manual.


Cheers.
:peace:
 

Attachments

Last edited:

Abiqua

Well-Known Member
Have you found a -relatively - cheap PAR sensor ? Where ?


Cheers.
:peace:
I am considering the first and messing around with some filtering....the 2015 version seems more concerned with a different diode type to achieve more of a flatter response relative to the Apogee [only thing I have seen used as a comparison tool].....
http://www.plantedtank.net/forums/showthread.php?t=120109
Photodiode: VTB8441BH
price: $4.660
http://www.alliedelec.com/search/pro...x?SKU=70219652

Cosine diffuser: 2447 white plexiglass
price: varies, get the sample or buy a big sheet of it.
http://www.eplastics.com/Plastic/Ple...lack_and_White
http://www.usplastic.com/catalog/item.aspx?itemid=23681
http://www.usplastic.com/catalog/item.aspx?itemid=23681

2015
http://www.plantedtank.net/forums/showthread.php?t=823705


I have a few other ideas for diodes as well, maybe mixing them onto a single pcb.....
 

stardustsailor

Well-Known Member
This is a new version of code -for the Reflow Oven Controller Shield - specially made for normally open SSR (NO).
It also features some differences from previous version.

-If the thermocouple is shorted or disconnected ,the SSR will open and the LED drivers will switch off .

-The LCD display shows the temperature limit ,at the first line ,while at the second shows the current temperature that the thermocouple is reading.

-There's a section on the code (" User settings" ,change the red colored variables) ,where the user can adjust the sampling frequency in milliseconds and the SSR switching open temperature limit .

-The red led of the shield stays on while the SSR is closed and switches off when the SSR is open.

Code for N.O. SSR :

//
//Thermocouple Type K Temperature Check & SSR Control
//2015 by SDS,Ver: 1.1
// For Normally Open (NO) Solid State Relays
//**LIBR**
#include <LiquidCrystal.h>
#include <MAX31855.h>
// ***** DEGREE SYMBOL FOR LCD *****
unsigned char degree[8] = {
140,146,146,140,128,128,128,128};
// ** PIN ASSIGNMENT **
int ssrPin = 5;
int thermocoupleSOPin = A3;
int thermocoupleCSPin = A2;
int thermocoupleCLKPin = A1;
int lcdRsPin = 7;
int lcdEPin = 8;
int lcdD4Pin = 9;
int lcdD5Pin = 10;
int lcdD6Pin = 11;
int lcdD7Pin = 12;
int ledRedPin = 4;
int buzzerPin = 6;
int switchPin = A0;
//**Variables-Constants**
unsigned long nextCheck;
unsigned long nextRead;
double input;
//
//**********************************************
// *************** User Settings ***************
int limit = 65 ; //**************************** SSR Temperature Limit ( °C )

int sample = 500; //**************************** Thermocouple sampling rate ( milliseconds )
//**********************************************
//
//**INTERFACE**
LiquidCrystal lcd(lcdRsPin, lcdEPin, lcdD4Pin, lcdD5Pin, lcdD6Pin, lcdD7Pin);
MAX31855 thermocouple(thermocoupleSOPin, thermocoupleCSPin,thermocoupleCLKPin);
//
//**SET-UP**
void setup()
{
// SSR pin initialization
digitalWrite(ssrPin, HIGH);
pinMode(ssrPin, OUTPUT);
// Buzzer pin initialization - buzzer off
digitalWrite(buzzerPin, LOW);
pinMode(buzzerPin, OUTPUT);
// LED pins initialization -turn on upon start-up (active low)
digitalWrite(ledRedPin, LOW);
pinMode(ledRedPin, OUTPUT);
// Start-up splash screen
digitalWrite(buzzerPin, HIGH);
lcd.begin(8, 2);
lcd.createChar(0, degree);
lcd.clear();
lcd.print("Type_K");
lcd.setCursor(0, 1);
lcd.print("& SSR");
digitalWrite(buzzerPin, LOW);
delay(2500);
lcd.clear();
// **Initialize time keeping**
nextCheck = millis();
// **Initialize thermocouple reading **
nextRead = millis();
}
//
//**Loop**
//
void loop()
{
//** Current time**
unsigned long now;
// ** read thermocouple**
if (millis() > nextRead)
{
// ** next sample**
nextRead += sample;
// **Read current temperature**
input = thermocouple.readThermocouple(CELSIUS);

}
if (millis() > nextCheck)
{
// **Check input **
nextCheck += sample;
// **LCD**
lcd.clear();
lcd.print("SSR:");
lcd.setCursor(4, 0);
lcd.print(limit);
lcd.setCursor(7, 0);
lcd.print("C");
lcd.setCursor(0, 1);
// **Show current temperature**
lcd.print(input);
#if ARDUINO >= 100
lcd.write((uint8_t)0);
#else
lcd.print(0, BYTE);
#endif
lcd.print("C ");
// **If thermocouple problem isdetected**
if((input == FAULT_OPEN) || (input == FAULT_SHORT_GND) || (input == FAULT_SHORT_VCC))
{
digitalWrite(ssrPin, LOW);
lcd.clear();
lcd.print("Caution:");
lcd.setCursor(0, 1);
lcd.print("Error!");
digitalWrite(buzzerPin, HIGH);
delay (500);
digitalWrite(buzzerPin, LOW);
delay(2000);
}
}
//**SSR directive**
if (input >=limit )
{
digitalWrite(ssrPin, LOW);
digitalWrite(buzzerPin, HIGH);
digitalWrite(ledRedPin, HIGH);
delay (250);
digitalWrite(buzzerPin, LOW);
delay(500);
}
else
if (input < limit )
{
digitalWrite(ssrPin,HIGH);
digitalWrite(buzzerPin,LOW);
digitalWrite(ledRedPin,LOW);
}
//**Loop end**
}
//End




Cheers.
:peace:
 
Check out TMP36 - they are analog and dirt cheap - around 2$ a piece. You can hang them off analog inputs on atmel, ardunio etc and pull it down with a resistor (0.01 if you are using a spark core). What I have done and happy to share my code if you want for spark is to read the fan RPM via the green tach cable. If the fan RPM goes under 500 then I cut the power to the lights.
I know that this is an older thread but I find this approach might be simple to implement and have a few questions. Does each fan in a multi fan light need it's own tach wire back to the Aurduino? Or can they be combined, I was considering using 3 into 1 pig tails for the fans and that wire combines all 12 wires of the 3 fans into a single 4 wire connector. Would that still provide a reliable RPM in the sense that if the signal went below 500 power would be cut to the relay?
 

Stephenj37826

Well-Known Member
Some companies are paying attention.

http://shop.stevesleds.com/Thermal-Switch-Overheating-Protection-8794102497.htm

I put them on all of my cpu/led coolers. Simply add it inline, after the cob. The circuit will open and the led will shutoff at the rated temperature. Thermal adhesive it somewhere it will fit and screw it down so it dosen't get knocked off. I have some pictures somewhere in my thread..

Also a good idea to use insulated quick connects and a little liquid electric tape on the exposed connections to isolate everything
Those are what I use on air cooled models.
 
Top