By request I made a board that holds 8 channel temp controller. In this solution the sensors had be digital for high accuracy in a noisy environment, but there are also analog inputs that enables the module to be used as a generic 8ch PID controller.
Structure
Each channel can select input source, ether digital SPI or analog input (12bit resolution). Each channel has it’s own PID and control settings.
The controller can be configured to work in many different ways.
The unit is powered by a 5 to 24v and can send status and settings trough an RS232 port.
Temp Sensor
I used a small 5-pin SOT23 temp IC, LM95071 SPI/MICROWIRE 14-Bit Temperature Sensor. This gives me resolution of 0.03125°C between −40°C to +150°C.
Board
Demo Video (sorry, there is only a Swedish version)
Settings
UART = 115200 RAW data to controller must start with $ and end with # !!!
Standard Functions
INF $INF# Show info data CLR $CLR# Clear (Resets) Settings, “Do not effect eeprom settings” SAV $BRN# Save settings data to EEprom (Burn current data into Eeprom) UPD $UPD# Update settings data from eeprom SWV $SFW# Show FW version
TempSensor port -> Temp Channel Select function
Select which TempSensor ( SPI port ) that selected TempChannel(PID regulator channel) should get it’s temperature from. TCS $TCS@1*3# Temp Channel Set, TempChannel 1 is set to use TempSensor on port 3
Enable/Disable functions
TCE $TCE*1# Temp controller Enable/Disable 0=Disable, 1=Enable (on enabled PID (I) is reset to Zero). All channels will be Enabled/Disabled. Only channels that is Enabled “CHE” will be activated on $TCE*1# CHE $CHE*1# Channel 1 Temp Control Enable (CH 1->8) on enabled PID (I) is reset to Zero. CHD $CHD*1# Channel 1 Temp Control Disable (CH 1->8) on enabled PID (I) is reset to Zero.
Main Setup functions
NOC $NOC*2# Number of active channels “in order” that should be used “0 to 8 -> CH0 to CH8” TUR $TUR*20# Temp and PID Update Rate in Hz, example = 20Hz DUD $DUD*2# Debug Update Divide, “Temp Update Rate”/DUD , in example 20Hz/2 = 10Hz. The debug data will be updated (sent) 10 times/sec SUR $SUR*1# SPI update Rate " SPI communications Freq" 0 = 140KHz 1 = 280KHz 2 = 500KHz 3 = 1MHz 4 = 2.25MHz 5 = 4.5MHz
SDS $SDS*2# Set Debug Status, example = debug is set to output channel 2 data Debug_Status = 0; No debug Debug_Status = 1; Channel 1 data Debug_Status = 2; Channel 2 data Debug_Status = 3; Channel 3 data Debug_Status = 4; Channel 4 data Debug_Status = 5; Channel 5 data Debug_Status = 6; Channel 6 data Debug_Status = 7; Channel 7 data Debug_Status = 8; Channel 8 data Debug_Status = 9; Send only every channels temp in visual form {Value in (int)(float * 10)} Debug_Status = 10; Send only every channels temp in visual form {Value in float} Debug_Status = 11; Send only temp from all channels in graph data Debug 1 to 8 data format (Temperature * 10: Temp_Ref * 10:** Temp_Error * 10**:** PID_Resualt / 10**:** P_Resualt / 10 : I_Resualt : D_Resualt : PWM**) all values are in Short HEX and separated by “:”, new data is separated with 0x0A = “/n”.** Channel Temp Settings SRT $SRT@1*51.6# Set Reference Temperature, example set CH1 ref temp to 51.6 deg
PID Settings
SPK $SPK@1*101.1# Set Pid K value for selected channel, example K = 101.1 on Channel 1 SPP $SPP@1*1.1# Set Pid P value for selected channel, example P = 1.1 on Channel 1 SPI $SPI@1*0.1# Set Pid I value for selected channel, example I = 0.1 on Channel 1 SPD $SPD@3*10.5# Set Pid D value for selected channel, example I = 10.5 on Channel 3
Channel Power Settings
SMP $SMP@1*100# Set Max Power “PWM Max Duty” 0-100% example, CH1 set to 100% as max power level SLP $SMP@1*0# Set Min Power “PWM Min Duty” 0-100% example, CH1 set to 0% as max power level
Power Invert function, For example active cooling equipment
CIE $CIE*1# Enable Power Inverted function on Channel 1 (0% power inverts to 100% power) CID $CID*1# Disable Power Inverted function on Channel 1
Example Channel1 Settings
// Set Reference Temp SRT@1*55.5 //// Set CH 1 K value SPK@1*1 //// Set CH 1 P value SPP@1*400.5 //// Set CH 1 I value SPI@1*0.5 //// Set CH 1 D value SPD@1*100.5 //// Set CH 1 Set Max Power SMP@1*50 //// Set CH 1 Set Min Power SLP@1*0 //// Set TempChannel1 to SensorPort 1 TCS@1*1
Example Main Settings
// Temp/PID Update Rate in Hz TUR*4 //// SPI update Rate , 0 = 140KHz SUR*0 //// Set Debug Status = No Debug SDS*0 //// Debug Update Divide DUD*2 //// Number of Channels that is active NOC*2

