Example project for the Rioux Chem control box

Dependencies:   mbed MODSERIAL

Dependents:   screentest

Rioux Chem Control Box

/media/uploads/emh203/ccb.jpg

This is the example project for the Rioux Chem Control Box. I have posted some youtube videos to guide you through the hardware and software:

Rioux Chem Control Box - Hardware

http://www.youtube.com/watch?v=MoZ92GRYa4s

Rioux Chem Control Box - Software - Part I

http://www.youtube.com/watch?v=_MwaTLL4dyA==

Rioux Chem Control Box - Software - Part II

http://www.youtube.com/watch?v=j_P89izfgoQ

Committer:
wavenumber
Date:
Mon Nov 01 19:49:13 2021 +0000
Revision:
9:c830667212f4
Parent:
7:de452fceafc1
Fixed Thermocouple sign extend error

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 0:7798270c1f52 1 #include "mbed.h"
emh203 0:7798270c1f52 2 #include "CHEM_BOX_INTERFACE.h"
emh203 0:7798270c1f52 3
emh203 0:7798270c1f52 4 Timer ControlLoopTimer;
emh203 0:7798270c1f52 5 float CurrentTemperature;
emh203 0:7798270c1f52 6
wavenumber 2:73a028278c5c 7 #define VT100_RED "\033[31;40m"
wavenumber 2:73a028278c5c 8 #define VT100_GREEN "\033[32;40m"
wavenumber 2:73a028278c5c 9 #define VT100_YELLOW "\033[33;40m"
wavenumber 2:73a028278c5c 10 #define VT100_BLUE "\033[34;40m"
wavenumber 2:73a028278c5c 11 #define VT100_MAGENTA "\033[35;40m"
wavenumber 2:73a028278c5c 12 #define VT100_CYAN "\033[36;40m"
wavenumber 2:73a028278c5c 13 #define VT100_WHITE "\033[37;40m"
wavenumber 2:73a028278c5c 14 #define VT100_RESET "\033c"
wavenumber 2:73a028278c5c 15
wavenumber 3:cb48919cd5e8 16 extern void WriteRAW_DAC_Value(uint8_t Channel,uint16_t Data);
emh203 0:7798270c1f52 17
emh203 0:7798270c1f52 18 int main()
emh203 0:7798270c1f52 19 {
emh203 0:7798270c1f52 20 int i;
wavenumber 2:73a028278c5c 21 char * Color = VT100_WHITE;
emh203 0:7798270c1f52 22 //This function always needs called before you do anythign wit the CHEM BOX.
emh203 0:7798270c1f52 23 InitChemBox();
emh203 0:7798270c1f52 24
wavenumber 3:cb48919cd5e8 25 GREEN_LED = 1;
wavenumber 3:cb48919cd5e8 26 RED_LED = 0;
wavenumber 3:cb48919cd5e8 27
emh203 0:7798270c1f52 28 //Beep 6 times
emh203 0:7798270c1f52 29 for(i=0;i<6;i++)
emh203 0:7798270c1f52 30 {
emh203 0:7798270c1f52 31 Buzz(.05); //Since the Buzz function immediately returns we should wait a bit before calling it again in the loop
emh203 0:7798270c1f52 32 wait(.1); //I want a 50% duty cycle so I will wait twice as long as my previous Buzz() call
wavenumber 3:cb48919cd5e8 33
wavenumber 3:cb48919cd5e8 34 GREEN_LED = !GREEN_LED;
wavenumber 3:cb48919cd5e8 35 RED_LED = !RED_LED;
wavenumber 3:cb48919cd5e8 36
emh203 0:7798270c1f52 37 }
wavenumber 3:cb48919cd5e8 38
emh203 0:7798270c1f52 39
wavenumber 3:cb48919cd5e8 40 GREEN_LED = 1;
wavenumber 3:cb48919cd5e8 41 RED_LED = 0;
emh203 0:7798270c1f52 42
emh203 0:7798270c1f52 43 //Here is the main super loop
emh203 0:7798270c1f52 44
emh203 0:7798270c1f52 45 //reset and start our control loop Timer
emh203 0:7798270c1f52 46 ControlLoopTimer.reset();
emh203 0:7798270c1f52 47 ControlLoopTimer.start();
wavenumber 3:cb48919cd5e8 48
emh203 0:7798270c1f52 49 while(1)
emh203 0:7798270c1f52 50 {
emh203 0:7798270c1f52 51 //Call this often if you want the USB interface/Terminal
emh203 0:7798270c1f52 52 ProcessTerminal();
wavenumber 3:cb48919cd5e8 53
wavenumber 7:de452fceafc1 54 //Call this process incoming lines from the pump
wavenumber 7:de452fceafc1 55 ProcessRS232();
wavenumber 3:cb48919cd5e8 56
wavenumber 3:cb48919cd5e8 57
wavenumber 3:cb48919cd5e8 58 /*
wavenumber 2:73a028278c5c 59 if(ControlLoopTimer.read_ms() >= 1000)
wavenumber 2:73a028278c5c 60 {
wavenumber 2:73a028278c5c 61 ControlLoopTimer.reset();
wavenumber 2:73a028278c5c 62
wavenumber 2:73a028278c5c 63
wavenumber 2:73a028278c5c 64 PC.printf(VT100_RESET);
wavenumber 3:cb48919cd5e8 65
wavenumber 2:73a028278c5c 66 }*/
wavenumber 2:73a028278c5c 67
emh203 0:7798270c1f52 68
emh203 0:7798270c1f52 69 /*
emh203 0:7798270c1f52 70
emh203 0:7798270c1f52 71 //control loop example
emh203 0:7798270c1f52 72 //We will do something ever 250mS.
emh203 0:7798270c1f52 73 //Use a timer and an if statement we won't hold the microprocessor from do other things in the main super loop!
emh203 0:7798270c1f52 74 if(ControlLoopTimer.read_ms >= 250)
emh203 0:7798270c1f52 75 {
emh203 0:7798270c1f52 76 ControlLoopTimer.reset();
emh203 0:7798270c1f52 77
emh203 0:7798270c1f52 78 //if 250mSec has elapsed then do our control loop
emh203 0:7798270c1f52 79
emh203 0:7798270c1f52 80 CurrentTemperature = ReadThermocouple(0);
emh203 0:7798270c1f52 81
emh203 0:7798270c1f52 82 if(CurrentTemperature < 15.5)
emh203 0:7798270c1f52 83 {
emh203 0:7798270c1f52 84 EnableHeater(0);
emh203 0:7798270c1f52 85 }
emh203 0:7798270c1f52 86 else
emh203 0:7798270c1f52 87 {
emh203 0:7798270c1f52 88 DisableHeater(0);
emh203 0:7798270c1f52 89 }
emh203 0:7798270c1f52 90
emh203 0:7798270c1f52 91 FlushDigitalIO(); //Remeber, the digital outs are queued up until this is called!
emh203 0:7798270c1f52 92 }
emh203 0:7798270c1f52 93 */
emh203 0:7798270c1f52 94 }
emh203 0:7798270c1f52 95
emh203 0:7798270c1f52 96 }