Hi
I'm working on a 1000 degree furnace controller using ATMEGA32A and ADS1118. I downloaded the ads1118 library from github.com/hydrosense. everything works fine when I read ambient temperature OR thermocouple separately but when I want to read these two's simultaneously the numbers become equal. I mean ambient temp & thermocouple show the same number (internal sensor value). if anyone could help, it will be appreciated.
regards
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include "Ads1118.h"
#include <SPI.h>
const int LS100_LED = 8;
const int LS200_LED = 9;
const int METALCAST_LED = 10;
const int HP_LED = 11;
const int MP_LED = 12;
const int LP_LED = 13;
const int LS100_SW = 24;
const int LS200_SW = 25;
const int METALCAST_SW = 26;
const int HP_SW = 27;
const int MP_SW = 28;
const int LP_SW = 30;
const int START_SW = 29;
const int STOP_SW = 31;
const int SSR = 3;
const int RELAY = 4;
const int BUZZER = 2;
//const int TEMP = 1; //ADS1232
//const int MUX = 0; //ADS1232
//const int GAIN0 = 23; //ADS1232
//const int GAIN1 = 22; //ADS1232
//const int SPEED = 21; //ADS1232
//const int PWDN = 20; //ADS12332
//const int SCLK = 15; //ADS1232
//const int DRDY = 19; //ADS1232
float offset = EEPROM.read(10);
int Buffer = 0;
int Htemp = 900;
unsigned long lastmillis1 = 0;
unsigned long lastmillis2 = 0;
unsigned long lastmillis3 = 0;
unsigned long lastmillis4 = 0;
float Ctemp = 0;
// int Eraser = 0b10000000;
// int Prescaler = 0b01101010;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // I2C address could be 0x3F OR 0x27
Ads1118 ads1118(1);
void setup()
{
pinMode(LS100_LED, OUTPUT);
pinMode(LS200_LED, OUTPUT);
pinMode(METALCAST_LED, OUTPUT);
pinMode(HP_LED, OUTPUT);
pinMode(MP_LED, OUTPUT);
pinMode(LP_LED, OUTPUT);
pinMode(LS100_SW, INPUT_PULLUP);
pinMode(LS200_SW, INPUT_PULLUP);
pinMode(METALCAST_SW, INPUT_PULLUP);
pinMode(HP_SW, INPUT_PULLUP);
pinMode(MP_SW, INPUT_PULLUP);
pinMode(LP_SW, INPUT_PULLUP);
pinMode(START_SW, INPUT_PULLUP);
pinMode(STOP_SW, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT);;
pinMode(RELAY, OUTPUT);
pinMode(SSR, OUTPUT);
// pinMode(TEMP, OUTPUT); //ADS1232
// pinMode(MUX, OUTPUT); //ADS1232
// pinMode(GAIN0, OUTPUT); //ADS1232
// pinMode(GAIN1, OUTPUT); //ADS1232
// pinMode(SPEED, OUTPUT); //ADS1232
// pinMode(PWDN, OUTPUT); //ADS1232
// pinMode(SCLK, OUTPUT); //ADS1232
// pinMode(DRDY, INPUT); //ADS1232
// digitalWrite(TEMP, LOW);
// digitalWrite(MUX, LOW);
// digitalWrite(GAIN0, HIGH);
// digitalWrite(GAIN1, HIGH);
// digitalWrite(SPEED, HIGH);
// digitalWrite(PWDN, HIGH);
Wire.begin();
delay(500);
digitalWrite( SSR, LOW );
digitalWrite( RELAY, LOW );
lcd.begin(16, 2);
lcd.clear();
ads1118.begin();
ads1118.setGain(0b101);
// //================ PWM Frequency PreScaler ================
// TCCR2 &= Eraser;
// TCCR2 |= Prescaler;
// OCR2 = 0x00;
// //=========================================================
lcd.setCursor(0, 0);
lcd.print(" LIDOMA Ltd ");
lcd.setCursor(0, 1);
lcd.print(" Pressmatik ");
delay(3000);
lcd.setCursor(0, 0);
lcd.print(" CHOOSE PROGRAM ");
lcd.setCursor(0, 1);
lcd.print(" ");
}
void loop() {
if ( digitalRead( LS100_SW ) == LOW ) {
digitalWrite( LS100_LED, HIGH );
digitalWrite( LS200_LED, LOW );
digitalWrite( METALCAST_LED, LOW );
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, LOW );
Buffer = 10;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" 100 g ");
//Display();
}
else if ( digitalRead( LS200_SW ) == LOW ) {
digitalWrite( LS100_LED, LOW );
digitalWrite( LS200_LED, HIGH );
digitalWrite( METALCAST_LED, LOW );
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, LOW );
Buffer = 20;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" 200 g ");
//Display();
}
else if ( digitalRead( METALCAST_SW ) == LOW ) {
digitalWrite( LS100_LED, LOW );
digitalWrite( LS200_LED, LOW );
digitalWrite( METALCAST_LED, HIGH );
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, LOW );
Buffer = 30;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" PFM PREHEAT ");
//Display();
}
else if ( ( digitalRead( LP_SW ) == LOW ) && ( Buffer == 10 || Buffer == 12 ) ) {
digitalWrite( LP_LED, HIGH );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, LOW );
Buffer = 11;
Htemp = 910;
//lcd.clear();
lcd.setCursor(0, 1);
lcd.print("HT-MT-HO-Impulse");
//Display();
}
else if ( ( digitalRead( MP_SW ) == LOW ) && ( Buffer == 10 || Buffer == 11 ) ) {
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, HIGH );
digitalWrite( HP_LED, LOW );
Buffer = 12;
Htemp = 915;
//lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" LT-MO ");
//Display();
}
else if ( ( digitalRead( LP_SW ) == LOW ) && ( Buffer == 20 || Buffer == 22 || Buffer == 23 ) ) {
digitalWrite( LP_LED, HIGH );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, LOW );
Buffer = 21;
Htemp = 915;
//lcd.clear();
lcd.setCursor(0, 1);
lcd.print("HT-MT-HO-Impulse");
//Display();
}
else if ( ( digitalRead( MP_SW ) == LOW ) && ( Buffer == 20 || Buffer == 21 || Buffer == 23 ) ) {
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, HIGH );
digitalWrite( HP_LED, LOW );
Buffer = 22;
Htemp = 917;
//lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" LT ");
//Display();
}
else if ( ( digitalRead( HP_SW ) == LOW ) && ( Buffer == 20 || Buffer == 21 || Buffer == 22 ) ) {
digitalWrite( LP_LED, LOW );
digitalWrite( MP_LED, LOW );
digitalWrite( HP_LED, HIGH );
Buffer = 23;
Htemp = 920;
//lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" MO ");
//Display();
}
else if ( digitalRead( START_SW ) == LOW ) {
STARTPRESS();
}
//delay(50);
float A = ( ads1118.adsReadRaw(ads1118.DIF01) * 0.256 / 32768 ) * 1000 ;
//float B = ads1118.readTemp();
lcd.setCursor(0, 0);
lcd.print( " " );
//lcd.print( B, 1 );
lcd.print( " " );
lcd.setCursor(0, 1);
lcd.print( " " );
lcd.print( convert(A), 5 );
lcd.print( " " );
//ads1118.update_config(0x008B);
delay(50);
}
void STARTPRESS() {
}
float convert ( float MV ) {
float T = 137.9263 + (((MV - 0.93395) * (0.09615 * MV * MV * MV + 19.62905 * MV * MV + 73.97377 * MV + 41.33051)) / (0.20813 * MV * MV + 0.57668 * MV + 0.27986));
//float T = 137.92 + (127.61*(MV - 0.933) + 110.89*(MV - 0.933)*(MV - 0.933) + 19.89*(MV - 0.933)*(MV - 0.933)*(MV - 0.933) + 0.096*(MV - 0.933)*(MV - 0.933)*(MV - 0.933)*(MV - 0.933)) / ( 1+0.965*(MV - 0.933)+0.208*(MV - 0.933)*(MV - 0.933) );
return T;
}