Michael Spencer / Smoothie

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Parent:
0:31e91bb0ef3c
Update to latest Smoothie.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 2:1df0b61d3b5a 1 /*
scachat 0:31e91bb0ef3c 2 this file is part of smoothie (http://smoothieware.org/). the motion control part is heavily based on grbl (https://github.com/simen/grbl).
scachat 0:31e91bb0ef3c 3 smoothie is free software: you can redistribute it and/or modify it under the terms of the gnu general public license as published by the free software foundation, either version 3 of the license, or (at your option) any later version.
scachat 0:31e91bb0ef3c 4 smoothie is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. see the gnu general public license for more details.
Michael J. Spencer 2:1df0b61d3b5a 5 you should have received a copy of the gnu general public license along with smoothie. if not, see <http://www.gnu.org/licenses/>.
scachat 0:31e91bb0ef3c 6 */
scachat 0:31e91bb0ef3c 7
scachat 0:31e91bb0ef3c 8 #ifndef temperaturecontrol_h
scachat 0:31e91bb0ef3c 9 #define temperaturecontrol_h
scachat 0:31e91bb0ef3c 10
scachat 0:31e91bb0ef3c 11 #include "libs/Pin.h"
Michael J. Spencer 2:1df0b61d3b5a 12 #include "Pwm.h"
scachat 0:31e91bb0ef3c 13 #include <math.h>
scachat 0:31e91bb0ef3c 14
Michael J. Spencer 2:1df0b61d3b5a 15 #include "RingBuffer.h"
scachat 0:31e91bb0ef3c 16
Michael J. Spencer 2:1df0b61d3b5a 17 #define QUEUE_LEN 8
Michael J. Spencer 2:1df0b61d3b5a 18
Michael J. Spencer 2:1df0b61d3b5a 19 class TemperatureControlPool;
scachat 0:31e91bb0ef3c 20
scachat 0:31e91bb0ef3c 21 class TemperatureControl : public Module {
Michael J. Spencer 2:1df0b61d3b5a 22
scachat 0:31e91bb0ef3c 23 public:
scachat 0:31e91bb0ef3c 24 TemperatureControl(uint16_t name);
Michael J. Spencer 2:1df0b61d3b5a 25
Michael J. Spencer 2:1df0b61d3b5a 26 void on_module_loaded();
Michael J. Spencer 2:1df0b61d3b5a 27 void on_main_loop(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 28 void on_gcode_execute(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 29 void on_gcode_received(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 30 void on_config_reload(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 31 void on_second_tick(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 32 void on_get_public_data(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 33 void on_set_public_data(void* argument);
Michael J. Spencer 2:1df0b61d3b5a 34
Michael J. Spencer 2:1df0b61d3b5a 35 void set_desired_temperature(float desired_temperature);
Michael J. Spencer 2:1df0b61d3b5a 36 float get_temperature();
Michael J. Spencer 2:1df0b61d3b5a 37 float adc_value_to_temperature(int adc_value);
scachat 0:31e91bb0ef3c 38 uint32_t thermistor_read_tick(uint32_t dummy);
Michael J. Spencer 2:1df0b61d3b5a 39 int new_thermistor_reading();
Michael J. Spencer 2:1df0b61d3b5a 40
Michael J. Spencer 2:1df0b61d3b5a 41
Michael J. Spencer 2:1df0b61d3b5a 42 int pool_index;
Michael J. Spencer 2:1df0b61d3b5a 43 TemperatureControlPool *pool;
Michael J. Spencer 2:1df0b61d3b5a 44 friend class PID_Autotuner;
Michael J. Spencer 2:1df0b61d3b5a 45
Michael J. Spencer 2:1df0b61d3b5a 46 private:
Michael J. Spencer 2:1df0b61d3b5a 47 void pid_process(float);
Michael J. Spencer 2:1df0b61d3b5a 48
Michael J. Spencer 2:1df0b61d3b5a 49 float target_temperature;
Michael J. Spencer 2:1df0b61d3b5a 50
Michael J. Spencer 2:1df0b61d3b5a 51 float preset1;
Michael J. Spencer 2:1df0b61d3b5a 52 float preset2;
scachat 0:31e91bb0ef3c 53
scachat 0:31e91bb0ef3c 54 // Thermistor computation settings
Michael J. Spencer 2:1df0b61d3b5a 55 float r0;
Michael J. Spencer 2:1df0b61d3b5a 56 float t0;
Michael J. Spencer 2:1df0b61d3b5a 57 int r1;
Michael J. Spencer 2:1df0b61d3b5a 58 int r2;
Michael J. Spencer 2:1df0b61d3b5a 59 float beta;
Michael J. Spencer 2:1df0b61d3b5a 60 float j;
Michael J. Spencer 2:1df0b61d3b5a 61 float k;
Michael J. Spencer 2:1df0b61d3b5a 62
scachat 0:31e91bb0ef3c 63
Michael J. Spencer 2:1df0b61d3b5a 64 // PID runtime
Michael J. Spencer 2:1df0b61d3b5a 65 float i_max;
Michael J. Spencer 2:1df0b61d3b5a 66
Michael J. Spencer 2:1df0b61d3b5a 67 int o;
Michael J. Spencer 2:1df0b61d3b5a 68
Michael J. Spencer 2:1df0b61d3b5a 69 float last_reading;
Michael J. Spencer 2:1df0b61d3b5a 70
Michael J. Spencer 2:1df0b61d3b5a 71 float acceleration_factor;
Michael J. Spencer 2:1df0b61d3b5a 72 float readings_per_second;
Michael J. Spencer 2:1df0b61d3b5a 73
Michael J. Spencer 2:1df0b61d3b5a 74 RingBuffer<uint16_t,QUEUE_LEN> queue; // Queue of readings
Michael J. Spencer 2:1df0b61d3b5a 75 uint16_t median_buffer[QUEUE_LEN];
Michael J. Spencer 2:1df0b61d3b5a 76 int running_total;
scachat 0:31e91bb0ef3c 77
scachat 0:31e91bb0ef3c 78 uint16_t name_checksum;
scachat 0:31e91bb0ef3c 79
Michael J. Spencer 2:1df0b61d3b5a 80 Pin thermistor_pin;
Michael J. Spencer 2:1df0b61d3b5a 81 Pwm heater_pin;
Michael J. Spencer 2:1df0b61d3b5a 82
scachat 0:31e91bb0ef3c 83 bool waiting;
Michael J. Spencer 2:1df0b61d3b5a 84 bool min_temp_violated;
scachat 0:31e91bb0ef3c 85
Michael J. Spencer 2:1df0b61d3b5a 86 uint16_t set_m_code;
Michael J. Spencer 2:1df0b61d3b5a 87 uint16_t set_and_wait_m_code;
Michael J. Spencer 2:1df0b61d3b5a 88 uint16_t get_m_code;
Michael J. Spencer 2:1df0b61d3b5a 89
Michael J. Spencer 2:1df0b61d3b5a 90 string designator;
Michael J. Spencer 2:1df0b61d3b5a 91
Michael J. Spencer 2:1df0b61d3b5a 92
Michael J. Spencer 2:1df0b61d3b5a 93 void setPIDp(float p);
Michael J. Spencer 2:1df0b61d3b5a 94 void setPIDi(float i);
Michael J. Spencer 2:1df0b61d3b5a 95 void setPIDd(float d);
Michael J. Spencer 2:1df0b61d3b5a 96
Michael J. Spencer 2:1df0b61d3b5a 97 float iTerm;
Michael J. Spencer 2:1df0b61d3b5a 98 float lastInput;
Michael J. Spencer 2:1df0b61d3b5a 99 // PID settings
Michael J. Spencer 2:1df0b61d3b5a 100 float p_factor;
Michael J. Spencer 2:1df0b61d3b5a 101 float i_factor;
Michael J. Spencer 2:1df0b61d3b5a 102 float d_factor;
Michael J. Spencer 2:1df0b61d3b5a 103 float PIDdt;
scachat 0:31e91bb0ef3c 104 };
scachat 0:31e91bb0ef3c 105
scachat 0:31e91bb0ef3c 106 #endif