Description
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.