Difference between revisions of "Team:UMaryland/Design"
Line 269: | Line 269: | ||
<font color="#000000">#include</font> <font color="#434f54"><</font><b><font color="#d35400">LiquidCrystal</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> | <font color="#000000">#include</font> <font color="#434f54"><</font><b><font color="#d35400">LiquidCrystal</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> | ||
− | <font color="# | + | <font color="#434f54">//The PID functions by adjusting a certain output in order to </font> |
+ | <font color="#434f54">// minimize the error between two values, which are the setpoint </font> | ||
+ | <font color="#434f54">// and the input.</font> | ||
+ | <font color="#434f54">// The PID function itself creates a PID controller and takes </font> | ||
+ | <font color="#434f54">// five parameters:</font> | ||
+ | <font color="#434f54">// Input: The value that needs to be controlled</font> | ||
+ | <font color="#434f54">// Output: The value that the PID will adjust</font> | ||
+ | <font color="#434f54">// Setpoint: The value that the input will be maintained at</font> | ||
+ | <font color="#434f54">// Kp,Ki,KD: Parameters that will affect how the output is adjusted</font> | ||
+ | <font color="#434f54">// Direct: Defines which direction the output will proceed given an error</font> | ||
+ | |||
<font color="#434f54">// Define PID varaibles</font> | <font color="#434f54">// Define PID varaibles</font> | ||
Line 359: | Line 369: | ||
<font color="#000000">{</font> | <font color="#000000">{</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54"><</font> <font color="#000000">cyclenum</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54"><</font> <font color="#000000">cyclenum</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
− | <font color="# | + | <font color="#434f54">//The following code is only implemented once as the first cycle of the PCR</font> |
+ | <font color="#434f54">// This allows for the user to set conditions which may be different from the subsequent </font> | ||
+ | <font color="#434f54">// cycles. The code, however, works in much the same way as the other cycles</font> | ||
+ | <font color="#434f54">// at the most basic level. It divides each cycle into subcycles: activation, pcr and extension</font> | ||
+ | <font color="#434f54">// and enters each step based on stepnow(which denotes how many subcyles the program has entered) divisiblity by 3. </font> | ||
+ | <font color="#434f54">// The remainder for activation will always be 1, </font> | ||
+ | <font color="#434f54">// the remainder for pcr will be 2 and the remainder for extension will be 3</font> | ||
+ | | ||
<font color="#434f54">//Begins activation of the PCR by checking that this is the first cycle and that the current subcycle is activation </font> | <font color="#434f54">//Begins activation of the PCR by checking that this is the first cycle and that the current subcycle is activation </font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">==</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">==</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
Line 373: | Line 390: | ||
<font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | <font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="#434f54">//If the pcr has maintained the setpoint for the desired amount of time, it will enter this loop and begin cooling</font> | + | <font color="#434f54">//If the pcr has maintained the setpoint for the desired amount </font> |
+ | <font color="#434f54">//of time, it will enter this loop and begin cooling</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">t1Melt</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">t1Melt</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#000000">stepnow</font><font color="#434f54">++</font><font color="#000000">;</font> | <font color="#000000">stepnow</font><font color="#434f54">++</font><font color="#000000">;</font> | ||
Line 392: | Line 410: | ||
<font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | <font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="#434f54">//checks if the machine has maintained the temperature for the desired amount of time, and begins the next step</font> | + | <font color="#434f54">//checks if the machine has maintained the temperature for </font> |
+ | <font color="#434f54">//the desired amount of time, and begins the next step</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">t1PCR</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">==</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">t1PCR</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">==</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#000000">stepnow</font><font color="#434f54">++</font><font color="#000000">;</font> | <font color="#000000">stepnow</font><font color="#434f54">++</font><font color="#000000">;</font> | ||
Line 410: | Line 429: | ||
<font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | <font color="#000000">laststep</font><font color="#434f54">++</font><font color="#000000">;</font> | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="#434f54">//checks if the machine has maintained the temperature for the desired amount of time, and begins the next step</font> | + | <font color="#434f54">//checks if the machine has maintained the temperature </font> |
+ | <font color="#434f54">// for the desired amount of time, and begins the next step</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">textension1</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">(</font><font color="#000000">textension1</font> <font color="#434f54">+</font> <font color="#000000">cycleStart</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">laststep</font> <font color="#434f54">==</font> <font color="#000000">stepnow</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#000000">pcr</font> <font color="#434f54">=</font> <font color="#00979c">"heating to melt "</font><font color="#000000">;</font> | <font color="#000000">pcr</font> <font color="#434f54">=</font> <font color="#00979c">"heating to melt "</font><font color="#000000">;</font> | ||
Line 419: | Line 439: | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="# | + | |
+ | <font color="#434f54">//Begins the intermediate steps which work in an identical manner to the startup cycle </font> | ||
+ | <font color="#434f54">//and may differ only in the alloted temperatures and times for each subcycle</font> | ||
+ | |||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">!</font><font color="#434f54">=</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">&&</font> <font color="#000000">(</font><font color="#000000">cycle</font> <font color="#434f54">!</font><font color="#434f54">=</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#000000">Setpoint</font> <font color="#434f54">=</font> <font color="#000000">meltT</font><font color="#000000">;</font> | <font color="#000000">Setpoint</font> <font color="#434f54">=</font> <font color="#000000">meltT</font><font color="#000000">;</font> | ||
Line 464: | Line 487: | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="# | + | |
+ | <font color="#434f54">// Begins the last step, which again works in a similar fashion </font> | ||
+ | <font color="#434f54">// to the other steps, but may differ in the final extension temperature</font> | ||
+ | | ||
<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">></font><font color="#434f54">=</font> <font color="#000000">cyclenum</font> <font color="#434f54">&&</font> <font color="#000000">stepnow</font> <font color="#434f54"><</font><font color="#434f54">=</font> <font color="#000000">cyclenum</font> <font color="#434f54">+</font> <font color="#000000">2</font> <font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">></font><font color="#434f54">=</font> <font color="#000000">cyclenum</font> <font color="#434f54">&&</font> <font color="#000000">stepnow</font> <font color="#434f54"><</font><font color="#434f54">=</font> <font color="#000000">cyclenum</font> <font color="#434f54">+</font> <font color="#000000">2</font> <font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">stepnow</font> <font color="#434f54">%</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">==</font> <font color="#000000">1</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
Line 511: | Line 537: | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="# | + | |
+ | <font color="#434f54">// Once the last step has been completed, determined by </font> | ||
+ | <font color="#434f54">// stepnow being greater than cyclenum+2,the code will tell the </font> | ||
+ | <font color="#434f54">// pcr to hold at 4 C. It will continue looping at this step indefinitely</font> | ||
+ | <font color="#434f54">// because the conditions will no longer satisfy any of the other if statement</font> | ||
+ | | ||
<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font> | <font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font> | ||
<font color="#00979c">int</font> <font color="#000000">strt</font> <font color="#434f54">=</font> <font color="#000000">1</font><font color="#000000">;</font> | <font color="#00979c">int</font> <font color="#000000">strt</font> <font color="#434f54">=</font> <font color="#000000">1</font><font color="#000000">;</font> | ||
Line 526: | Line 557: | ||
<font color="#000000">}</font> | <font color="#000000">}</font> | ||
− | <font color="#434f54">//Once the pcr has reached 37 C, the pcr will print out that the pcr has shutt off</font> | + | <font color="#434f54">//Once the pcr has reached 37 C, the pcr will </font> |
+ | <font color="#434f54">//print out that the pcr has shutt off</font> | ||
<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">Input</font> <font color="#434f54">-</font> <font color="#000000">38</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54"><</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">Input</font> <font color="#434f54">-</font> <font color="#000000">38</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54"><</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> | <font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> | ||
Line 549: | Line 581: | ||
<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr2</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> | <font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr2</font><font color="#434f54">,</font> <font color="#00979c">LOW</font><font color="#000000">)</font><font color="#000000">;</font> | ||
<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#00979c">"COOLING"</font><font color="#000000">)</font><font color="#000000">;</font> | <b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#00979c">"COOLING"</font><font color="#000000">)</font><font color="#000000">;</font> | ||
− | <font color="#434f54">// if the pcr machine's temperature reaches 97, cooling will automatically be initiated and a death message will be displayed</font> | + | <font color="#434f54">// if the pcr machine's temperature reaches 97, cooling will </font> |
+ | <font color="#434f54">// automatically be initiated and a death message will be displayed</font> | ||
<font color="#000000">}</font><font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">Input</font> <font color="#434f54">-</font> <font color="#000000">deathT</font> <font color="#434f54">+</font><font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">{</font> | <font color="#000000">}</font><font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">Input</font> <font color="#434f54">-</font> <font color="#000000">deathT</font> <font color="#434f54">+</font><font color="#000000">1</font><font color="#000000">)</font> <font color="#434f54">></font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">{</font> | ||
<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> | <font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> | ||
Line 555: | Line 588: | ||
<b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#00979c">"DEATH"</font><font color="#000000">)</font><font color="#000000">;</font> | <b><font color="#d35400">Serial</font></b><font color="#434f54">.</font><font color="#d35400">println</font><font color="#000000">(</font><font color="#00979c">"DEATH"</font><font color="#000000">)</font><font color="#000000">;</font> | ||
− | <font color="# | + | <font color="#434f54">// these two statements work on the maintaining the temperature, by </font> |
+ | <font color="#434f54">// controlling heating and cooling when there is overshoot or undershoot </font> | ||
+ | <font color="#434f54">// in the temperature</font> | ||
<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">Output</font> <font color="#434f54">></font> <font color="#000000">now</font> <font color="#434f54">-</font> <font color="#000000">windowStartTime</font> <font color="#434f54">-</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#000000">{</font> | <font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">Output</font> <font color="#434f54">></font> <font color="#000000">now</font> <font color="#434f54">-</font> <font color="#000000">windowStartTime</font> <font color="#434f54">-</font> <font color="#000000">1</font><font color="#000000">)</font> <font color="#000000">{</font> | ||
<font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> | <font color="#d35400">digitalWrite</font><font color="#000000">(</font><font color="#000000">signalr1</font><font color="#434f54">,</font> <font color="#00979c">HIGH</font><font color="#000000">)</font><font color="#000000">;</font> |
Revision as of 03:16, 19 September 2015