This is where you will put a description of your assignment. Write a couple paragraphs describing your approach. What does it do? Why did you choose this approach over others? What problems did you run into?
Example:
To build this coffee roaster, I started with a popcorn air popper. This is a common entry level method for roasting coffee. As can be seen in the photo, I removed the plastic body as these tend to melt at the higher temperatures. The popcorn popper is heated with a simple coil and the air is blown by a simple DC motor. I separated the power going to the motor and the coil so that I would be able to control each separately. Right now, I am controlling the heat from the coil with a dimmer switch, but the next version will control it with the Arduino and a relay.
On the Arduino side, I used an Arduino Mini 3.3V. I chose a 3.3V Arduino instead of the regular 5V because I intend to connect an LCD screen as a readout and it takes 3.3V, so it is just easier to use a 3.3V Arduino than use a bunch of resistors to limit the voltage.
The Arduino probes the temperature in the roaster with a thermistor. Although it is a 10kΩ thermistor at 25 degree C, I found that at the range of 400 degree F, the resolution was not sufficient when using a 10kΩ pad resistor. Doing some calculations, I found that in order to maximize the resolution in the range of 400-480 degrees, I needed a pad resistor somewhere in the 50-100Ω range. Luckily I had a 67Ω resistor sitting around.
Components Used
List what you used in your assignment.
Example:
1- Arduino Pro Mini 3.3V
1- Thermistor
1- 67 Ω Resistor
1- Breadboard
1- Popcorn Air Popper
1- 15000W Light dimmer
1- 19.5V DC power supply
Code
Insert your code here.
#include <math.h>
#include <Timer.h>
#include <LiquidCrystal.h>
#define temperaturePin A0 //input pin for the orange temperature
//(RS,E,D4,D5,D6,D7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int degreeC = 0;
int maxTemp = 0;
String roastLevel = "Green";
Timer t;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(roastLevel);
}
void loop()
{
degreeC = readTemperature();
if(degreeC > maxTemp){
maxTemp = degreeC;
roastLevel = rLevel(maxTemp);
lcd.setCursor(0, 0);
lcd.print(roastLevel);
}
lcd.setCursor(0, 1);
lcd.print(degreeC);
lcd.setCursor(0, 8);
lcd.print(millis()/1000);
Serial.print(degreeC);
Serial.print(" degree n");
Serial.println(roastLevel);
Serial.println();
Serial.println();
delay(1000);
}
String rLevel(int temp){
if(temp < 270) {
return "Green";
}
else if(temp < 327) {
return "Pale";
}
else if(temp < 345) {
return "Yellow";
}
else if(temp < 370) {
return "Light Brown";
}
else if(temp < 393) {
return "Brown";
}
else if(temp < 401) {
return "1st Crack?";
}
else if(temp < 415) {
return "1st Crack";
}
else if(temp < 426) {
return "CITY";
}
else if(temp < 435) {
return "CITY +";
}
else if(temp < 444) {
return "FULL CITY";
}
else if(temp < 454) {
return "FULL CITY +";
}
else if(temp < 465) {
return "VIENNA";
}
else if(temp < 474) {
return "French";
}
else if(temp < 486) {
return "Starbuck";
}
}
double readTemperature()
{
/*
Honewell 135-103LAG-J01
http://sensing.honeywell.com/index.php?ci_id=3108&la_id=1&pr_id=53805
Resistance 10,000 Ohm
Tolerance ±10.0%
Accuracy 25 °C [77 °F]
Beta 25/85 3974
Operating Temperature -60 °C to 300 °C [-76 °F to 572 °F]
Diameter 2,0 mm [0.080 in]
Termination Material Tinned copper-clad steel
Lead Length 28,6 mm [1.125 in]
Time Constant in Air 4.0 s
Dissipation Constant 2,5 m/W°C
Series Name 135
*/
// Calibration
// 120 C 264.46 R
// 140 C 176.97 R *
// 160 C 111.00 R
// 180 C 75.78 R
// 200 C 64.30 R *
// 220 C 45.57 R
// 240 C 33.25 R *
const double A = 0.0013514225374904882;
const double B = 0.00013995347172609127;
const double C = 0.000002485131588719009;
double senReading = 0;
double R;
double lnr;
double tempK;
double tempC;
double tempF;
senReading = analogRead(temperaturePin);
// Serial.println(senReading);
R = 66.6*((1024/senReading) - 1);
Serial.println(R);
lnr = log(R);
tempK = 1 / (A + B * lnr + (C * lnr * lnr * lnr ));
tempC = tempK - 273.15; // Convert Kelvin to Celcius
// Serial.print(tempC);
// Serial.println(" C");
tempF = tempC * 9.0/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
return tempF;
}
Images
Insert your image links if not attached.
Video
Insert a video link when necessary.