Add PID controller and oven driver module
This commit is contained in:
		
							
								
								
									
										24
									
								
								stm-firmware/include/reflow-controller/oven-driver.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								stm-firmware/include/reflow-controller/oven-driver.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
/* Reflow Oven Controller
 | 
			
		||||
*
 | 
			
		||||
* Copyright (C) 2020  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the Reflow Oven Controller Project.
 | 
			
		||||
*
 | 
			
		||||
* The reflow oven controller is free software: you can redistribute it and/or modify
 | 
			
		||||
* it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
* published by the Free Software Foundation.
 | 
			
		||||
*
 | 
			
		||||
* The Reflow Oven Control Firmware 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.
 | 
			
		||||
*
 | 
			
		||||
* You should have received a copy of the GNU General Public License
 | 
			
		||||
* along with the reflow oven controller project.
 | 
			
		||||
* If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __OVEN_DRIVER_H__
 | 
			
		||||
#define __OVEN_DRIVER_H__
 | 
			
		||||
 | 
			
		||||
#endif /* __OVEN_DRIVER_H__ */
 | 
			
		||||
							
								
								
									
										44
									
								
								stm-firmware/include/reflow-controller/pid-controller.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								stm-firmware/include/reflow-controller/pid-controller.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
/* Reflow Oven Controller
 | 
			
		||||
*
 | 
			
		||||
* Copyright (C) 2020  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the Reflow Oven Controller Project.
 | 
			
		||||
*
 | 
			
		||||
* The reflow oven controller is free software: you can redistribute it and/or modify
 | 
			
		||||
* it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
* published by the Free Software Foundation.
 | 
			
		||||
*
 | 
			
		||||
* The Reflow Oven Control Firmware 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.
 | 
			
		||||
*
 | 
			
		||||
* You should have received a copy of the GNU General Public License
 | 
			
		||||
* along with the reflow oven controller project.
 | 
			
		||||
* If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __PID_CONTROLLER_H__
 | 
			
		||||
#define __PID_CONTROLLER_H__
 | 
			
		||||
 | 
			
		||||
struct pid_controller {
 | 
			
		||||
	float k_deriv;
 | 
			
		||||
	float k_int;
 | 
			
		||||
	float k_p;
 | 
			
		||||
	float output_sat_max;
 | 
			
		||||
	float output_sat_min;
 | 
			
		||||
	float integral_max;
 | 
			
		||||
	volatile float control_output;
 | 
			
		||||
	volatile float last_in;
 | 
			
		||||
	volatile float integral;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void pid_init(struct pid_controller *pid, float k_deriv, float k_int, float k_p, float output_sat_min, float output_sat_max, float integral_max);
 | 
			
		||||
 | 
			
		||||
void pid_zero(struct pid_controller *pid);
 | 
			
		||||
 | 
			
		||||
float pid_sample(struct pid_controller *pid, float deviation);
 | 
			
		||||
 | 
			
		||||
float pid_get_control_output(const struct pid_controller *pid);
 | 
			
		||||
 | 
			
		||||
#endif /* __PID_CONTROLLER_H__ */
 | 
			
		||||
		Reference in New Issue
	
	Block a user