By: Mark Bright and Mike Donaldson Advisor: Dr. Gary Dempsey
Project Goal System Applications Thermal Plant Overview Engine Side Thermal Side
The goal of our Engine Control Workstation is to simulate thermal environments that are found in liquid-based cooling systems. With this system we created several different control methods via MATLAB and Simulink working together to control both the engine and thermal transient and steady state responses.
Car Application PC Application The overall goal of this project is to protect the motor with varying loads with minimum energy usage
Engine Side Circuitry Thermal Side Circuitry
Engine DSP Board Thermal DSP Board
Generator Thermistor Flowmeter Pump Pittman Motor Cooling Blocks
Thermal Comparison Pittman Motor Tmax = 311 deg F Thermal impedance 75.9 deg F/watt (2.9 A)^2 * (3.91 ohm) = 36 watts 36W * (75.9 deg F/watt) = 2732 deg F
Engine Side Goals Engine Control: Minimize C-code and execution time Learn Auto-Code generation platform of Simulink/DSP interface Design software for PWM generation and velocity calculation from rotary encoder. Design closed-loop controllers for velocity and acceleration control.
32 bit Processor 150 MHz Clock 16 A/D Channels 12 PWM Digital I/O Channels 128K on-chip Flash Memory 9 Ports Total 3.3v Supply Interfaced to PC by serial port Inputs and output go through level- shifter IC (5v to 3.3v / 3.3v to 5v)
User Interaction: Set RPM and Gain System DesignSimulink Model MATLAB GUI Code Composer Auto Code Generated C Code TI 2812 DSP Board PWM Output to Drive Motor
Both encoder channels from the Pittman motor are offset from each other Pulses are wired into the DSP board Port 8 – pins 6 and 7 2 counts can be obtained per period for each channel – 4 times as many counts Allows for Steady State Error of ± 5 RPM Simulink codes this as inner shaft RPM, which must be converted to outer shaft RPM – 5.9:1 gear ratio Drag QEP Block into Simulink diagram to implement
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented
Data sent to GUI is set here Model is used to generate Code Composer C code P, PI, and FF Control Implemented Desired RPM Actual RPM Controller Output PWM Duty Cycle
Simulation model started where the 2008 mini project left off Bilinear Transform converted analog controllers to digital controllers P, PI, and FF Control Implemented
Gp = ______________ (s/146+1)(s/776+1) ______________ (s/146+1) (s/1460+1)17.1 FF=Gp = 17.1
Simulation: 596 RPM input FF Output is 17 RPM Impulse duration was 2mS Actual: 596 RPM input FF Output is 17 RPM As expected from simulation
100 RPM Step Input FF Control decreases response time by 20 mS Less overshoot Smaller time to first peak FF Compensation PI Control Only RPM vs Time (ms) plot
Start, Type “guide” in MATLAB GUI can be designed here with many components Once designed, MATLAB creates an.m file and.fig file MATLAB GUI Design
GUI created in MATLAB and interfaced to Simulink Model Plots Motor RPM, PWM Duty Cycle, Transient Response, and both PI and Feed Forward Controller Output User can input desired RPM: 0 to 834 RPM Optimal controller gains loaded at startup, but user can control both the gain and type of control GUI updates in real time
numMsgsOchan1 = r.msgcount('ochan1'); if (numMsgsOchan1) speed = r.readmsg('ochan1', 'int32'); end numMsgsOchan2 = r.msgcount('ochan2'); if (numMsgsOchan2) pid = r.readmsg('ochan2', 'int32'); end numMsgsOchan3 = r.msgcount('ochan3'); if (numMsgsOchan3) RPM = r.readmsg('ochan3', 'int32'); end numMsgsOchan4 = r.msgcount('ochan4'); if (numMsgsOchan4) PI_Out = r.readmsg('ochan4', 'int32'); end numMsgsOchan5 = r.msgcount('ochan5'); if (numMsgsOchan5) FFOut = r.readmsg('ochan5', 'int32'); end
if ((numMsgsOchan1 ~=0) && (numMsgsOchan2 ~= 0) && (numMsgsOchan3 ~= 0) && (numMsgsOchan4 ~= 0) && (numMsgsOchan5 ~= 0)) axes(handles.axes3); plot(handles.axes3,x_axis1, RPM); title(handles.axes3,'Measured speed of the Motor'); xlabel(handles.axes3,'t (s)'); ylabel(handles.axes3,'Speed (RPM)'); grid(handles.axes3,'on'); axis(handles.axes3,[ ]); axes(handles.axes4); cycle = double(pid); plot(handles.axes4,x_axis1, cycle); title(handles.axes4,'Duty Cycle of the PWM Waveform'); xlabel(handles.axes4,'t (s)'); ylabel(handles.axes4,'Duty Cycle (%) '); grid(handles.axes4,'on'); axis(handles.axes4,[ ]);
Acceleration Control ◦ Adjustable Feed Forward control with different types of input commands: combos of ramps, steps, and parabolic. Load changes can simulate hills and different road conditions. CAN Bus Interface ◦ Use the DSP board’s CAN bus to send data between the boards. This would allow for a main GUI to control both sides of the system. Data Logging Feature ◦ Allow for a user to tune controllers and compare results. Could implement a new EE431 / 432 homework or design project around the system. Set Control Points for Thermal and Engine Response ◦ Set desired temperature for a change in the coolant as well as a engine RPM governor based on load conditions
Hardware Interfacing
Variable Resistance Anti-aliasing filter
Use PWM to drive Pump/Fan Interface from digital to analog Average Voltage seen by the device
Opto-Isolator TIP120 choice Design for 3A Opto-Isolator
LPF to ‘DC’ the PWM Ideal Op Amp theory Input = Pump Opto-Isolator
DSP/Simulink Data-Logging
Conversion of A/D Value to Temperature Excel Trendline Simulink Data-Logging
Conversion of A/D Value to Temperature Excel Trendline Simulink Data-Logging
Conversion of A/D Value to Temperature Excel Trendline Simulink Data-Logging
Conversion of A/D Value to Temperature Excel Trendline Simulink Data-Logging
Simulink Data-Logging cont. Datatype conversions Function auto-code generated
Simulink Data-Logging cont. Datatype conversions Function auto-code generated
Logging The Data
Model vs. Actual
Final Simulink Model
Thermal Model
Noise Addition
Anti-Aliasing Hardware
Software Conversion
Energy Management
Power Consumption
Heat Addition
Final Simulink Auto-Code Block
Controller Types Bang – Bang Improved Bang Bang P Control PI Control
Bang – Bang Control 300 Watts/ Min
Improved Bang-Bang Control 211 Watts / Min
P Control 62 Watts / Min
PI Control 143 Watts / Min
Thermal Efficiency (Degrees F/Watts) Pump PWM% Fan PWM%
Further Thermal Development Supervisory Control Further improvement by utilizing Pump and Fan cooling efficiencies Faster PID Control Use of more temperature sensors Use of CAN bus
Nick Schmidt ◦ Case Assembly ◦ Hardware Assembly Dr. Dempsey ◦ Case Assembly ◦ Hardware Assembly
P Control – Crossover Freq Plant Wc is at 899 rad/sec P Control System Wc was at 164 rad/sec Gain =.08 Phase Margin with P control: ◦ 115 Gp = __________________ (s/146+1)(s/776+1) 17.1
Gp(s) =K * 1/(Tc(s)+1) * e^-(s)Td Pump/Plant ◦ K = (-.8 degrees F / 6.4 V) ◦ Tc = 20 ◦ Td = 6 Fan/Plant ◦ K = (-9.6 degrees F / 13V) ◦ Tc = 12 ◦ Td = 15
P-Pump ◦ Wc =.148 radians PM = 105 GM =22.1dB P-Fan ◦ Wc = ? PM = undefined GM =29.4dB PI-Pump ◦ Wc =.39 radians PM = -139 GM =16.1dB P-Pump ◦ Wc =.0966 radians PM = -48 GM =-15.92dB
Reading the data OCHAN’s allow for data to be outputted to: ◦ GUI ◦ Workspace
H-Bridge Servo Amplifier PWM Brush Type Servo Amplifer – Model 10A8DD Protected for over- voltage and over- current DC Supply Voltage: v Peak Current: ±10A Maximum Continuous Current: ±6A
Active Load
Conversions (A/D to Temp, PWM% to Watts
Energy Management
Heat Addition
Power
Thermal
Noise
Software Conversion
Opto-Isolator 4N25
LMC6482 Op-Amp
TIP 120 Power Amp
MC Volt regulator
SN74.. Level-shifter
Flowmeter Graph