61 #define WITH_W25QFLASH 65 #define SAMPLETIME 1000 66 #define SSRWINDOWSIZE 5000 71 #define DEFAULTTIME 5400 78 #define PROBE_CUSTOM 2 81 #define DEFAULTPROBETYPE PROBE_RTD 82 #define DEFAULTPROBE0 -247.1087 83 #define DEFAULTPROBE1 2.23511 84 #define DEFAULTPROBE2 0.001659 85 #define DEFAULTPROBE3 0.0 86 #define DEFAULTRES1 124.5 89 #define RTDAMPGAIN 5.0 92 #define TEMPSUPPLY 5.0 94 #define ADCFILTERTAU 30.0 99 #define MAXTEMPVAR 1.0 100 #define SCREENSWITCHTIME 10000 105 #define NOTIMELIMIT 4E9 108 #define DEFAULTFLOWLOWBOUND 3.0 109 #define DEFAULTFLOWUPBOUND 5.0 113 #define ADDRSESSIONTABLE 0x000000 // 1st sector 114 #define ADDRDATACOUNT 0x001000 // 2nd sector 116 #define ADDRBREWDATA 0x002000 // 3rd sector 118 #define BYTESPERDATA 20 120 #define MEMSIZEBYTES 1048576 151 Rims(
UIRims* uiRims, byte analogPinPV, byte ssrPin,
152 double* currentTemp,
double* ssrControl,
double* settedTemp);
154 void setTempProbe(byte probeType,
float probeCoefs[],
float res1);
162 void setTuningPID(
float Kp,
float Ki,
float Kd,
float tauFilter,
163 int mashWaterQty = -1);
164 #ifdef WITH_W25QFLASH 189 #ifdef WITH_W25QFLASH 208 #ifdef WITH_W25QFLASH 213 bool _rimsInitialized;
221 int _mashWaterValues[4];
225 float _probeCoefs[4];
231 double* _setPointPtr;
232 double* _processValPtr;
233 double* _controlValPtr;
242 unsigned long _currentTime;
243 unsigned long _settedTime;
244 unsigned long _rimsStartTime;
245 unsigned long _windowStartTime;
246 unsigned long _runningTime;
247 unsigned long _timerRemaining;
248 unsigned long _totalStoppedTime;
249 unsigned long _timerStopTime;
250 unsigned long _timerStartTime;
251 unsigned long _lastScreenSwitchTime;
252 unsigned long _lastSampleTime;
253 bool _sumStoppedTime;
254 bool _sessionFinished;
261 #ifdef WITH_W25QFLASH 263 unsigned long _memNextAddr;
264 unsigned long _memDataQty;
W25QFlash class declaration and related macro.
bool getHeaterVoltage()
Check if heater is powered or not.
Definition: Rims.cpp:577
void setHeaterPowerDetect(char pinHeaterVolt)
Set pin to detect if there is voltage applied on heater.
Definition: Rims.cpp:220
void _refreshSSR()
Refresh solid state relay. SSR will be refreshed in function of _controlValPtr (duty-cycle in percent...
Definition: Rims.cpp:433
Toolkit to automatically tune PID without a process model.
Definition: RimsTuner.h:69
virtual void _iterate()
Main method called for temperature regulation and other actions at each iteration.
Definition: Rims.cpp:328
void setTempProbe(byte probeType, float probeCoefs[], float res1)
Set temperature probe (RTD, thermistor or custom) parameters.
Definition: Rims.cpp:104
void _initSession()
Init all attributes and I/O for starting a brew session.
Definition: Rims.cpp:291
#define DEFAULTFLOWUPBOUND
Default Upper bound for accepted flow rate [L/min].
Definition: Rims.h:110
void checkMemAccessMode()
Check if enterring in USB memory access mode.
Definition: RimsMem.cpp:56
void setTuningPID(float Kp, float Ki, float Kd, float tauFilter, int mashWaterQty=-1)
Set tuning for PID object.
Definition: Rims.cpp:143
volatile unsigned long g_flowCurTime
Current time interrupt is called [µSec].
Definition: Rims.cpp:13
void _refreshDisplay()
Refresh display used by UIRims instance.
Definition: Rims.cpp:412
#define DEFAULTFLOWLOWBOUND
Default lower bound for accepted flow rate [L/min].
Definition: Rims.h:108
Rims(UIRims *uiRims, byte analogPinPV, byte ssrPin, double *currentTemp, double *ssrControl, double *settedTemp)
Constructor.
Definition: Rims.cpp:45
void _memAddBrewData()
Add data point to the flash memory.
Definition: RimsMem.cpp:341
void stopHeating(bool state)
Stop heater no matter what PID output.
Definition: Rims.cpp:589
Library to handle Windbond W25Q SPI flash memory.
Definition: w25qflash.h:44
void _refreshTimer()
Refresh time related values.
Definition: Rims.cpp:377
unsigned long _memCountSessionData()
Count how many data point were taken.
Definition: RimsMem.cpp:269
void _serialPrintBrewData()
Print current data points values to the Serial logger. Serial port (UART) need to be initialized in t...
Definition: Rims.cpp:457
virtual void _initialize()
Initialize a Rims instance before starting temperature regulation.
Definition: Rims.cpp:249
void isrFlow()
ISR for flow sensor.
Definition: Rims.cpp:19
void _endSession()
Attributes treatments for ending a brew session.
Definition: Rims.cpp:313
void setMemCSPin(byte csPin)
Set pin for flash memory chip select.
Definition: RimsMem.cpp:28
Toolkit for process identification to manually calculate PID tuning.
Definition: RimsIdent.h:48
void _memInitSP()
Initialize flash memory.
Definition: RimsMem.cpp:298
float getFlow()
Get flow from hall-effect flow sensor.
Definition: Rims.cpp:557
PIDmod class declaration and related macro.
void _memDumpBrewData()
Dump brew session data on USB serial port.
Definition: RimsMem.cpp:103
Library to manage LCD and keypad for Rims library.
Definition: UIRims.h:68
void setFlowSensor(byte pinFlow, float flowFactor, float lowBound=DEFAULTFLOWLOWBOUND, float upBound=DEFAULTFLOWUPBOUND, float criticalFlow=DEFAULTFLOWLOWBOUND)
Set pin for flow sensor and parameters.
Definition: Rims.cpp:178
void _memFreeSpace()
Show free memory on flash mem via USB serial port.
Definition: RimsMem.cpp:161
volatile unsigned long g_flowLastTime
Last time interrupt was called [µSec].
Definition: Rims.cpp:12
void setPinLED(byte pinLED)
Set pin for heater LED indicator.
Definition: Rims.cpp:194
void _memClearAll()
Clear all memory via USB serial port.
Definition: RimsMem.cpp:185
UIRims class declaration and related macro.
Recirculation infusion mash system (RIMS) library for Arduino.
Definition: Rims.h:145
float getTempPV()
Get temperature from temperature probe (RTD, thermistor or custom).
Definition: Rims.cpp:493
void run()
Start and run Rims instance.
Definition: Rims.cpp:233
unsigned int _memCountSessions()
Count how many brew sessions were saved in flash mem.
Definition: RimsMem.cpp:222