The Brain
Published © GPL3+

Dappy Habber (Vaporizer)

Ever have a craving for the perfect temperature vaporization of your favorite products? Well Pinky and I did so we created the Dappy Habber!

IntermediateFull instructions provided2 hours1,331
Dappy Habber (Vaporizer)

Things used in this project

Hardware components

RobotGeek Geekduino
RobotGeek Geekduino
×1
RobotGeek Sensor Shield
RobotGeek Sensor Shield
×1
RobotGeek Rotation Knob
RobotGeek Rotation Knob
×1
RobotGeek Relay
RobotGeek Relay
×1
MAX6675
Thermocouple Amplifier. Alternatives: https://www.adafruit.com/products/269
×1
RobotGeek 4 Line I2C LCD w/ Mount
×1

Story

Read more

Schematics

Dappy Habber v0.1 Fritzing

Code

Dappy Habber v0.1

Arduino
Use this with the MAX6675 and LiquidCrystal_I2C libraries to make a vaporizer
#include "max6675.h"

const int thermoDO = 11;
const int thermoCS = 10;
const int thermoCLK = 13;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);

const int outputRelayPin = 3;
const int rotationKnobPin = 1;

const int minTemp = 60;
const int maxTemp = 700;

void setup() {
  Serial.begin(9600);

  pinMode( rotationKnobPin, INPUT );
  pinMode( outputRelayPin, OUTPUT );

  lcd.begin();
  lcd.backlight();
  lcd.print("Dappy Habber v0.1");
  
  Serial.println("Dappy Habber Ready");
  // wait for MAX chip to stabilize
  delay(500);
}

void loop() 
{
  double currentTemp = thermocouple.readFahrenheit();
  int rotationKnobValue = analogRead( rotationKnobPin );
  double setPoint = (double)map( rotationKnobValue, 0, 1023, minTemp, maxTemp );

  if ( currentTemp < setPoint )
  {
    digitalWrite( outputRelayPin, HIGH ); //Turn on heater
  }
  else
  {
    digitalWrite( outputRelayPin, LOW ); //Turn off heater
  }

  lcd.setCursor( 0, 1 );
  lcd.print( "SetPoint: " );
  lcd.print( setPoint );
  lcd.print( " " ); //Clear space after in case digit count changes

  lcd.setCursor( 0, 2 );
  lcd.print( "Temp: " );
  lcd.print( currentTemp );
  lcd.print( "  " );

  lcd.setCursor( 0, 3 );
  lcd.print( "ADC: " );
  lcd.print( rotationKnobValue );
  lcd.print( "    " );
  
  Serial.print("SetPoint = ");
  Serial.print( setPoint );
  Serial.print("F = ");
  Serial.println(currentTemp);
  
  delay(500);
}

Credits

The Brain
1 project • 5 followers
My name is Brain and I'm assisted by my sidekick Pinky. One day we will rule the world!
Contact

Comments

Please log in or sign up to comment.