Ramp/Soak profiles
I think I should note that I think I'm kind of non standard in how I control the roasts. Its kind of based on what I did when I roasted 10 years ago.
I like to design roast profiles based on ramp rates and times. And I never figured out how to control roasts from a curve either.
So I made a spreadsheet to calculate ramp times based on ROR, and use that to create a profile as described later on this page.
5/24 update
The ESP32 that I was using failed, and when I replaced it, my bluetooth interface from the ESP to the macbook stopped working. Could not figure out why, so I went to wired USB instead.
It was easy to change the code to use the serial interface instead of bluetooth.
I started with windows, but moved to an really old macbook I had collecting dust.
I had some issues with bt didn't always work with windows, but its solid on the macbook.
Macbook Setup
I have the bluetooth icon in the top right bar setup to display.
Turn on the ESP32 and have it close by
Click the bluetooth icon, then "bluetooth settings" at the bottom of the popup
In nearby devices at the bottom, wait for RoastESP32V01 or similar to show up. Select and let it pair.
Windows Bluetooth setup
For a Windows 10 PC. I have an oldish microsoft surface that I'm using for roasting.
Turn on ESP32 with it close to the PC.
Start > Settings > Devices > Bluetooth & other devices > Add Bluetooth or other device > Bluetooth
Find ESP32_Roast or similar, and pair with that. If it asks for PW, use 123456.
Select More Bluetooth Options
Select COM Ports, and see what com ports are assigned to the ESP32. There will be two ports, I used the lower number.
This is the COM port to use in Artisan
Make connection to the ESP32 Bluetooth port as described above
Start Artisan
Select Config -> Device Select TC4 button, Check control box on top
I set ET Channel to 2, and BT Channel to 1, but I don't think it really matters. PID Firmware should NOT be checked.
Select Save
Ports Configuration will pop up.
Select the bluetooth Comm port
Select OK
Make sure it looks like this, and select OK to close.
Select the On button on the top right
After a few seconds, you should see "TC4 Initialized", and then after a few seconds more, BT and ET (if you have both) will be displayed on the right.
If it doesn't work, select Off button, recycle power to the ESP32 and try selecting On again.
Select Off, and configure the rest of the stuff
You need to make a Burner slider for the PID commands to work.
Go to Config / Events
Select Sliders on top of Events
Burner command is OT1,{}
Not used: Air command is IO3,{}
Set min to 0 and max to 100 .
To make buttons
Note Documentation field is OT1, 100 where 100 is the power setting.
Select Control button in upper right
I setup my PID with the following settings, but it will depend on your roaster.
Note that I used a low P and a high D so it responds slowly and doesn't overshoot the temperature.
kp = 1.0
ki = 0.1
kd = 20.0
In the bottom, click box for "Start PID on CHARGE".
This means the PID will send OT1 commands when you push the CHARGE button after starting a roast. You will see the HEAT slider change as the PID sends commands. I also see the new settings on the ESP32 LCD.
Source is "BT"
P on Error selected
I set MODE to RAMP/SOAK, select the Slider box, Lookahead to 1 sec, min = 70 F, max = 550 F
Set = 70 F.
For Duty, Steps = 1%, min = 0, max = 100
This is where I make the roast profiles.
Go to Ramp/Soak screen
I made a speadsheet as shown below to calculate the ramp times to use in the Ramp/Soak page
It calculates delta temp from the start and end temps, then uses Ramp rate and delta to calculate the time.
I entered the end temps and ramp times in the Ramp/Soak page
secs are calculated by using =((temp/ramp rate) - int(temp/ramp rate) * 60
Entered the SV and Ramp times based on spreadsheet above
I formatted the spreadsheet to make it easier to enter into Artisan, adding the SV column even if its redundant information. Also rearranged time.
BT filter setup
Archive for stuff I tried but didn' t use in the end:
Artisan Interface with ESP via Wi-Fi (Did not use)
There are two ways I found to implement a Wi-Fi interface, modbus or websockets. It appears that modbus is preferred, I think its more of a standardized approach for the interface.
I looked at both, and used websockets. Modbus looked like it would be difficult to implement for an ESP32, where I figured out websockets without too much trouble.
Gitlab code for websockets (capsaicinx ESP8266 based for BilloJoe Klarstein roaster)
Lefish Github for BilloJoe
Gitlab example code for modbus Standard example for simulated coil
Modbus Configuration did not use