initial setup for pottery

pull/1/head
Peter Shanks 2019-01-03 18:25:49 +11:00
rodzic db303ed921
commit 2872d5d426
5 zmienionych plików z 43 dodań i 42 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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"))

Wyświetl plik

@ -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

Wyświetl plik

@ -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";