kopia lustrzana https://github.com/botheredbybees/kilnController
initial setup for pottery
rodzic
db303ed921
commit
2872d5d426
42
README.md
42
README.md
|
@ -1,11 +1,10 @@
|
||||||
picoReflow
|
kilnController
|
||||||
==========
|
==============
|
||||||
|
|
||||||
Turns a Raspberry Pi into a cheap, universal & web-enabled Reflow Oven Controller.
|
Turns a Raspberry Pi into a cheap, universal & web-enabled kiln Controller.
|
||||||
Of course, since it is basically just a robot sensing temperature and controlling
|
Forked from the reflow oven project: [picoReflow](https://apollo.open-resource.org/mission:resources:picoreflow) which I found through a blog post on [succulent ceramics](http://succulentceramics.com/2016/10/07/wifiraspberry-kiln-controller/)
|
||||||
environmental agitators (heating/cooling) you can use it as inspiration / basis
|
|
||||||
when you're in need of a PID based temperature controller for your project.
|
I used this to add a firing schedule control to a little pottery kiln I picked up second hand. The kiln is 10A/240V rated to 1000 degrees C. It had a door switch and a basic thermostat which allowed for 25%, 50%, 75% or 100% power but no timer. With the kilnController I can now set it up for a bisque or low temerature glaze firing and leave it to its own devices, checking progress every now and then on my mobile phone or PC.
|
||||||
Don't forget to share and drop a link, when you do :)
|
|
||||||
|
|
||||||
**Standard Interface**
|
**Standard Interface**
|
||||||
|
|
||||||
|
@ -17,9 +16,10 @@ Don't forget to share and drop a link, when you do :)
|
||||||
|
|
||||||
## Hardware
|
## Hardware
|
||||||
|
|
||||||
* Raspberry Pi (Rev 2B)
|
* [Raspberry Pi Zero W](https://raspberry.piaustralia.com.au/raspberry-pi-zero-w) - any pi will do but these are about $15 here in Australia
|
||||||
* MAX 31855/6675 Cold-Junction K-Type Thermocouple
|
* [MAX 31855](https://www.adafruit.com/product/269) Cold-Junction K-Type Thermocouple (about $6 on eBay)
|
||||||
* GPIO driven Solid-State-Relays/MOSFETs
|
* [K-Type Thermocouple Sensor](https://www.google.com/search?q=K-Type+Thermocouple+Sensor+1250+1M+SY+site%3Aebay.com.au) -100°C to 1250°C ($3 on eBay)
|
||||||
|
* Solid State Relay Module [SSR-25DA](https://www.google.com/search?q=Solid+State+Relay+Module+SSR-25DA+25A+%2F250V+3-32V+DC+Input+24-380VAC+Output+pOK) 25A /250V 3-32V DC Input 24-380VAC Output (again, about $6 on eBay)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
@ -63,8 +63,8 @@ If you also want to use the in-kernel SPI drivers with a MAX31855 sensor:
|
||||||
|
|
||||||
### Clone repo
|
### Clone repo
|
||||||
|
|
||||||
$ git clone https://github.com/apollo-ng/picoReflow.git
|
$ git clone https://github.com/botheredbybees/kilnController.git
|
||||||
$ cd picoReflow
|
$ cd kilnController
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
@ -76,14 +76,16 @@ All parameters are defined in config.py, just copy the example and review/change
|
||||||
|
|
||||||
### Server Startup
|
### Server Startup
|
||||||
|
|
||||||
$ ./picoReflowd.py
|
$ ./kilncontrollerd.py
|
||||||
|
|
||||||
### Autostart Server onBoot
|
### Autostart Server onBoot
|
||||||
If you want the server to autostart on boot, run the following commands
|
If you want the server to autostart on boot, run:
|
||||||
|
|
||||||
sudo cp /home/pi/picoReflow/lib/init/reflow /etc/init.d/
|
sudo nano /etc/rc.local
|
||||||
sudo chmod +x /etc/init.d/reflow
|
|
||||||
sudo update-rc.d reflow defaults
|
add the line:
|
||||||
|
|
||||||
|
`sudo python /home/pi/kilnController/kilncontrollerd.py &`
|
||||||
|
|
||||||
### Client Access
|
### Client Access
|
||||||
|
|
||||||
|
@ -105,8 +107,6 @@ GNU General Public License for more details.
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
## Support & Contact
|
## picoReflow
|
||||||
|
|
||||||
Please use the issue tracker for project related issues.
|
For more info on the parent project, see picoReflow: https://apollo.open-resource.org/mission:resources:picoreflow
|
||||||
|
|
||||||
More info: https://apollo.open-resource.org/mission:resources:picoreflow
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ listening_ip = "0.0.0.0"
|
||||||
listening_port = 8081
|
listening_port = 8081
|
||||||
|
|
||||||
### Cost Estimate
|
### Cost Estimate
|
||||||
kwh_rate = 0.26 # Rate in currency_type to calculate cost to run job
|
kwh_rate = 0.28 # Rate in currency_type to calculate cost to run job
|
||||||
currency_type = "EUR" # Currency Symbol to show when calculating cost to run job
|
currency_type = "AUD" # Currency Symbol to show when calculating cost to run job
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
#
|
#
|
||||||
|
@ -26,11 +26,11 @@ currency_type = "EUR" # Currency Symbol to show when calculating cost to run
|
||||||
# can use whichever GPIO you prefer/have available.
|
# can use whichever GPIO you prefer/have available.
|
||||||
|
|
||||||
### Outputs
|
### Outputs
|
||||||
gpio_heat = 11 # Switches zero-cross solid-state-relay
|
gpio_heat = 23 # Switches zero-cross solid-state-relay (was 11 initially)
|
||||||
gpio_cool = 10 # Regulates PWM for 12V DC Blower
|
gpio_cool = 10 # Regulates PWM for 12V DC Blower
|
||||||
gpio_air = 9 # Switches 0-phase det. solid-state-relay
|
gpio_air = 9 # Switches 0-phase det. solid-state-relay
|
||||||
|
|
||||||
heater_invert = 0 # switches the polarity of the heater control
|
heater_invert = 0 # switches the polarity of the heater control (was 0 initially)
|
||||||
|
|
||||||
### Inputs
|
### Inputs
|
||||||
gpio_door = 18
|
gpio_door = 18
|
||||||
|
@ -52,7 +52,8 @@ gpio_sensor_data = 17
|
||||||
spi_sensor_chip_id = 0
|
spi_sensor_chip_id = 0
|
||||||
|
|
||||||
### amount of time, in seconds, to wait between reads of the thermocouple
|
### amount of time, in seconds, to wait between reads of the thermocouple
|
||||||
sensor_time_wait = .5
|
sensor_time_wait = 10
|
||||||
|
# was .5
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
@ -71,7 +72,7 @@ pid_kp = 0.5 # Proportional
|
||||||
sim_t_env = 25.0 # deg C
|
sim_t_env = 25.0 # deg C
|
||||||
sim_c_heat = 100.0 # J/K heat capacity of heat element
|
sim_c_heat = 100.0 # J/K heat capacity of heat element
|
||||||
sim_c_oven = 2000.0 # J/K heat capacity of oven
|
sim_c_oven = 2000.0 # J/K heat capacity of oven
|
||||||
sim_p_heat = 3500.0 # W heating power of oven
|
sim_p_heat = 2000.0 # W heating power of oven
|
||||||
sim_R_o_nocool = 1.0 # K/W thermal resistance oven -> environment
|
sim_R_o_nocool = 1.0 # K/W thermal resistance oven -> environment
|
||||||
sim_R_o_cool = 0.05 # K/W " with cooling
|
sim_R_o_cool = 0.05 # K/W " with cooling
|
||||||
sim_R_ho_noair = 0.1 # K/W thermal resistance heat element -> oven
|
sim_R_ho_noair = 0.1 # K/W thermal resistance heat element -> oven
|
||||||
|
@ -83,6 +84,6 @@ sim_R_ho_air = 0.05 # K/W " with internal air circulation
|
||||||
# Time and Temperature parameters
|
# Time and Temperature parameters
|
||||||
|
|
||||||
temp_scale = "c" # c = Celsius | f = Fahrenheit - Unit to display
|
temp_scale = "c" # c = Celsius | f = Fahrenheit - Unit to display
|
||||||
time_scale_slope = "s" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope
|
time_scale_slope = "m" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope
|
||||||
time_scale_profile = "s" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile
|
time_scale_profile = "m" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ except:
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
logging.basicConfig(level=config.log_level, format=config.log_format)
|
logging.basicConfig(level=config.log_level, format=config.log_format)
|
||||||
log = logging.getLogger("picoreflowd")
|
log = logging.getLogger("kilncontrollerd")
|
||||||
log.info("Starting picoreflowd")
|
log.info("Starting kilncontrollerd")
|
||||||
|
|
||||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
sys.path.insert(0, script_dir + '/lib/')
|
sys.path.insert(0, script_dir + '/lib/')
|
||||||
|
@ -38,10 +38,10 @@ ovenWatcher = OvenWatcher(oven)
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
return bottle.redirect('/picoreflow/index.html')
|
return bottle.redirect('/kilncontroller/index.html')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/picoreflow/:filename#.*#')
|
@app.route('/kilncontroller/:filename#.*#')
|
||||||
def send_static(filename):
|
def send_static(filename):
|
||||||
log.debug("serving %s" % filename)
|
log.debug("serving %s" % filename)
|
||||||
return bottle.static_file(filename, root=os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "public"))
|
return bottle.static_file(filename, root=os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "public"))
|
|
@ -1,31 +1,31 @@
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: Start reflow server
|
# Provides: Start kilncontroller server
|
||||||
# Required-Start: $remote_fs $syslog
|
# Required-Start: $remote_fs $syslog
|
||||||
# Required-Stop: $remote_fs $syslog
|
# Required-Stop: $remote_fs $syslog
|
||||||
# Default-Start: 2 3 4 5
|
# Default-Start: 2 3 4 5
|
||||||
# Default-Stop: 0 1 6
|
# Default-Stop: 0 1 6
|
||||||
# Short-Description: Start Reflow Server
|
# Short-Description: Start Kiln Controller Server
|
||||||
# Description: picoFlow On Raspberry Pi
|
# Description: kilncontroller On Raspberry Pi
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
|
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# /etc/init.d/reflow
|
# /etc/init.d/kilncontroller
|
||||||
|
|
||||||
|
|
||||||
export HOME
|
export HOME
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
echo "Starting Reflow Server"
|
echo "Starting Reflow Server"
|
||||||
/home/pi/picoReflow/picoreflowd.py 2>&1 &
|
/home/pi/kilnController/kilncontrollerd.py 2>&1 &
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
echo "Stopping Reflow Server"
|
echo "Stopping Reflow Server"
|
||||||
reflow_PID=`ps auxwww | grep picoreflowd.py | head -1 | awk '{print $2}'`
|
reflow_PID=`ps auxwww | grep kilncontrollerd.py | head -1 | awk '{print $2}'`
|
||||||
kill -9 $reflow_PID
|
kill -9 $reflow_PID
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: /etc/init.d/reflow {start|stop}"
|
echo "Usage: /etc/init.d/kilncontroller {start|stop}"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
|
@ -4,8 +4,8 @@ var graph = [ 'profile', 'live'];
|
||||||
var points = [];
|
var points = [];
|
||||||
var profiles = [];
|
var profiles = [];
|
||||||
var time_mode = 0;
|
var time_mode = 0;
|
||||||
var selected_profile = 0;
|
var selected_profile = 2;
|
||||||
var selected_profile_name = 'leadfree';
|
var selected_profile_name = 'bisque';
|
||||||
var temp_scale = "c";
|
var temp_scale = "c";
|
||||||
var time_scale_slope = "s";
|
var time_scale_slope = "s";
|
||||||
var time_scale_profile = "s";
|
var time_scale_profile = "s";
|
||||||
|
|
Ładowanie…
Reference in New Issue