Dual magnetic stir controller
Go to file
Michael Wesemann 215b49e77f updated readme
2019-03-09 15:31:54 +01:00
cad bug fixes, updated cad file 2019-03-04 09:05:37 +01:00
images various changes and additions 2019-02-26 07:25:00 +01:00
README.md updated readme 2019-03-09 15:31:54 +01:00
stir.ino code cleanup, bug fixes, API 2019-03-09 15:09:06 +01:00

Dual magnetic stir controller

Overview

This is the Arduino sketch to build a double magnetic stirrer based on 2 fans, a 1602 LCD display, a KY-040 encoder and an Arduino (e.g. Uno, Leonardo, Pro Micro).

In order to put the stirrer into operation you have to change the settings in stir.ino according to your setup.

Overview of Functions

All functions are controlled by the KY-040 encoder:

  • Press briefly: change between menu, stirrer 1 and stirrer 2
  • Turn when menu is selected: change between menu items (SPEED, BOOST, BTIME, CATCH, CTIME)
  • Long press when menu is selected: lock all functions (unlock also by long press)
  • When a stirrer is selected:
    • SPEED: turn sets speed, long press switches stirrer on or off.
    • BOOST: turn sets boost speed, long press activates/deactivates the boost function (running time is shown in the display).
    • BTIME: turn sets the boost time in minutes.
    • CATCH: turn activates/deactivates the fishing function
    • CTIME: turn sets the interval in minutes for the fish catching function
    • RTIME: speed rise time in seconds (applys to power on, stirrer on, boost on and fish catching)

Display Indicators:

  • Bottom Left: Menu
  • Bottom centre/right: displays the set values for the stirrers depending on the selected menu item.
  • Top Center/Right: displays the current stirrer speed (or 'OFF' or 'CAT' (Fishing)).
  • Top left: shows the remaining time of the boost function.

Settings (in stir.ino)

Value Description
SPEEDINC increment of speed values when turning the encoder
FANMIN fan minimum speed (should be a value at which the fan runs safely) (rpm)
FANMAX maximum speed of the fan (it is important that this is the real maximum value of the fan) (rpm)
CATCHSTOP stop interval for stir fish catch function (ms)
PWM0, PWN1 PWM output pins
I0, I1 interrupts for rpm measurement (2 and 3 for Leonardo and ProMicro / 0 and 1 for Uno)
CLK, DT, SW pins for KY-040 encoder
RINTERVAL regulation interval (ms)
RDELAY extra regulation delay when value changes (ms)
RTOL regulation tolerance (rpm)
SINTERVAL speed measurement interval (ms)
SAVERAGE speed measurement average
SAVETAG parameter save identifier
SAVEDELAY delay in seconds before parameter will be saved to EEPROM

API commands

Command are colon separated an can be send via USB/Serial

Command Description
info returns a colon separated string with all parameters (see below)
version returns the software version
on:<0/1> switch stirren on
off:<0/1> switch stirren off
bon:<0/1> switch boost mode on
boff:<0/1> switch boost mode off
speed:<0/1>: set stirrer speed
bspeed:<0/1>: set stirrer boost speed
btime:<0/1>: set boost time
con:<0/1> switch catch mode on
coff:<0/1> switch catch mode off
ctime:<0/1>: set catch mode interval
rtime:<0/1>: set speed rise time

All commands return a colon separated string with all current parameters:

Element Descriptoion
0 stirrer 0 state
1 stirrer 0 speed
2 stirrer 0 boost speed
3 stirrer 0 rpm
4 stirrer 0 averaged rpm
5 stirrer 0 regulation value
6 stirrer 0 boost time
7 stirrer 0 fish catch mode state
8 stirrer 0 fish catch mode time
9 stirrer 0 speed rise time
10 stirrer 1 state
11 stirrer 1 speed
12 stirrer 1 boost speed
13 stirrer 1 rpm
14 stirrer 1 averaged rpm
15 stirrer 1 regulation value
16 stirrer 1 boost time
17 stirrer 1 fish catch mode state
18 stirrer 1 fish catch mode time
19 stirrer 1 speed rise time
20 0=ok, 1=error
21 software version

Schematics