Skywalker, the AL... | [316] |
Dereks 1-2Kg drum... | [118] |
War on Farmers by... | [73] |
The HRO Google Map | [46] |
Second attempt, T... | [26] |
SR800 control monitoring?
|
|
jogo |
Posted on 01/09/2025 5:30 PM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Hi everyone; new member here, seeking advice/input. I am wondering about the feasibility of using an Arduino to eavesdrop on the control settings on an SR800. I run a python program to monitor and record roasts, and I manually enter the settings and changes real-time, while bean temperature is sent through an Arduino. My hope is to read inputs from the roaster into the Arduino, and send them along to python. Bottom line is that I want to know when "run mode" starts, when "cool mode" starts, and read/determine the Fan and Power settings 1-9 (I'm not interested in reading the timer.) My first thought is to get outputs from the run/cool switch, the rotary encoder and its switch. But if there is another or easier way, that would be great. Maybe decoding signals from the logic board connector? Thank you for any insight. Cheers, - John Edited by jogo on 01/10/2025 3:19 PM |
|
|
oldgrumpus |
Posted on 01/09/2025 10:51 PM
|
![]() 1/2 Pounder ![]() Posts: 263 Joined: July 25, 2012 |
Welcome to the forum! You can do most of this by using Artisan Roaster Scope. It's a free program for windows. It creates a graph of your roast with all the relevant input data from temperature probes. You can also record the events like when the roaster is charged with beans, when the temperatures reach milestones like when your in different phases, and reaching first crack, etc, etc. I'm not really sure if I'm answering your question like you're intending, but Artisan is used by a good percentage of us. It's not too hard to set up and use. Just plug your probes into a Phidget, and it gives the data to your PC thru a usb cable. I think you can do this via bluetooth also, with some different hardware. I will also control your roaster if you wish. Clever Coffee Dripper
Grinder: Macap M4 Roaster: Completed drum roaster project photos shown here: Photos https://goo.gl/ph...Da6K4wfqw5 Videos https://www.youtu...Bd1NrdpSUH Build thread https://homeroast...post_38189 |
|
|
renatoa |
Posted on 01/10/2025 6:06 AM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
He still needs a way to "talk" to Artisan, this is actually what he is asking... I think we have somewhere a SR800 Arduino thread, could be wrong, but worth a search in the subforum. There are multiple technical ways to do this, I can't elaborate more without knowing the internal structure of a SR800 machine, somewhere dissected ? |
|
|
oldgrumpus |
Posted on 01/10/2025 10:56 PM
|
![]() 1/2 Pounder ![]() Posts: 263 Joined: July 25, 2012 |
Quote Ah. Thanks for clarifying. |
|
|
jogo |
Posted on 01/11/2025 9:23 AM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Quote renatoa wrote: I think we have somewhere a SR800 Arduino thread, could be wrong, but worth a search in the subforum I searched the forums, and read through a couple of interesting and detailed threads which include info about the SR800 and Arduino: - SR800/SR540 Fan Current TC4+ - TC4+ Arduino coffee roaster shield (TC4-compatible) I couldn't find reference to a simple way to read the fan and power settings, which is what I'm looking for - but realize may not exist. I think I have to abandon my idea to determine the setting changes by reading the rotary encoder outputs. The SR800 can skip steps when the knob is turned quickly, and occasionally doesn't register the steps accurately when turned slowly or irregularly. I don't think I could model these deviations closely enough. It would be great if there was something like voltages to read that reflect the fan and power levels. |
|
|
renatoa |
Posted on 01/11/2025 1:27 PM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
The "simple" way could be measuring the live control signals of heater and fan... Supposing the phase angle control method is used: https://en.wikipe...controller ... you can reverse it and obtain the power/fan % from the signals inside roaster. For this job you have to identify the ZCD circuit inside SR800, the heater and fan control SCR/triacs... and measure the timing between ZCD and SCR gate pulses, using an Arduino and ISR (https://en.wikipe...pt_handler) code written for this purpose. If you identify the signals I wrote above,I can help you with Arduino code. |
|
|
jogo |
Posted on 01/11/2025 3:04 PM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Quote renatoa wrote: The "simple" way could be measuring the live control signals of heater and fan... Supposing the phase angle control method is used: https://en.wikipe...controller ... you can reverse it and obtain the power/fan % from the signals inside roaster. For this job you have to identify the ZCD circuit inside SR800, the heater and fan control SCR/triacs... and measure the timing between ZCD and SCR gate pulses, using an Arduino and ISR (https://en.wikipe...pt_handler) code written for this purpose. If you identify the signals I wrote above,I can help you with Arduino code. Thank you very much; this sounds promising. Now I get to do some research and learning, as this goes beyond my understanding of the SR800 (and somewhat beyond my general knowledge of electronics.) I'll see what I can figure out. |
|
|
jogo |
Posted on 01/11/2025 10:20 PM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Quote renatoa wrote: For this job you have to identify the ZCD circuit inside SR800, the heater and fan control SCR/triacs... and measure the timing between ZCD and SCR gate pulses, using an Arduino and ISR (https://en.wikipe...pt_handler) code written for this purpose. If you identify the signals I wrote above,I can help you with Arduino code. OK, I believe I have identified where to get the signals you mentioned. With big thanks to Tom for creating this page: (http://cholla.mmt...k/signals/), he describes where he found the zero crossing timing signal, and a heater control signal for comparison which triggers the heater triac. And a similar fan control signal. If I understand it correctly, these should be what is needed. The heater control signal has a 14µs pulse which occurs 0.8 to 2.9ms after the zero crossing signal, depending on the heater setting (see the last 2 scope screenshots on the webpage.) The fan pulse can occur 2.0 to 4.7ms after the zero crossing signal. Is this the right information? I confess that much of this concept is new to this mechanical engineer, so keep in mind that I'm only partly confident in my understanding. As far as measuring the timing with the Arduino, I'll sure listen to whatever suggestions you have to process these signals. Thank you so much! Cheers, - John |
|
|
renatoa |
Posted on 01/12/2025 1:46 AM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
Yes, Tom did a good job, everything we need is there. But... we still don't have the exact points on the board where we find these signals. Maybe you can contact Tom to send you picture(s). Then... we can start sketching the Arduino stuff. |
|
|
jogo |
Posted on 01/12/2025 9:58 AM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Here's a photo of the logic board. I've noted where Tom probed for the signals, and where I'm hoping to tap into. GND = floating ground reference Z1 = Tom sampled from the collector of QB6. He says this provides the logic level signal derived from the orange wire, and this signal goes directly to the PIC controller and clues the controller as to zero crossing timings. H1 = Tom sampled from the collector of Q7B. He says this provides the signal that drives the yellow wire for the heater control. F1 = Tom sampled from the collector of Q8B. This provides the signal that drives the brown wire for the fan control. Z2, H2, and F2, are where I would like to pick up the signals if that can be made to work.
jogo attached the following image:
|
|
|
renatoa |
Posted on 01/12/2025 10:06 AM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
Ok, and what is the expected output ? We have the numbers... what to do with them ? Put on a display ? Stream on USB/COM port? store in eeprom? |
|
|
jogo |
Posted on 01/12/2025 10:59 AM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
The output that I need help to get, is the elapsed time between zero crossing and the short pulse that triggers each triac. When I can get these two time values in the Arduino, then I'm in familiar code territory and will convert them to power and fan settings (1 - 9) and feed that information out to my python roast monitoring code. |
|
|
renatoa |
Posted on 01/13/2025 6:48 AM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
Here is the sketch, discussion via PM
renatoa attached the following file:
|
|
|
jogo |
Posted on 01/13/2025 10:49 AM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Quote Terrific, thank you so much! I will chew on this for a while and get back to you. Cheers, - John |
|
|
deroher |
Posted on 01/26/2025 9:13 PM
|
![]() Newbie ![]() Posts: 2 Joined: January 26, 2025 |
Interesting to see someone writing their own Python alternative to Artisan with a custom Arduino integration. I've built this same solution. I thought about modding the SR800 but I wondered if I could infer the fan and heat settings via powerline monitoring without mods to the SR800. I used a PZEM-016 to measure volts, amps, power, and power factor on the input AC powerline. With some calibration I am able to determine the fan and heat settings for most of the settings. There are a couple of settings where the powerline measurements are ambiguous. |
|
|
renatoa |
Posted on 01/27/2025 3:27 AM
|
![]() Administrator ![]() Posts: 3300 Joined: September 30, 2016 |
Why Python, again ? As Artisan is done using Python too... Imo, the roasting specific data processing should be done as close to the process as possible. An average contemporary MCU, doing a dedicated job on a single thread, is better than a fat PC, busy with gazillion tasks. |
|
|
deroher |
Posted on 01/27/2025 8:11 AM
|
![]() Newbie ![]() Posts: 2 Joined: January 26, 2025 |
The Python is great for the GUI. An Arduino is used for the instrumentation. Sampling intervals of once per second are easily handled by the Arduino. Asynchronous IO between the Arduino and the PC decouples any concerns about a bloated/busy PC. However, it was all about personal development and learning. I had a Freshroast 8 ten years ago. When I got it, it was broken. I wasn't even very particular about the coffee I was drinking. I instrumented it to control the fan and heat, learned to use the Arduino and learned Python. Also, I'm cheap and I did that for pennies. I recently reengaged with the software because I want to learn what is happening with AI. Don't gag... - I'm using a big fat Windows laptop running VSCODE with Copilot which allows me to choose various AI programming models. I'm 68 years old, I started programming in 1972, this AI programming partner is wonderful, I tell it what to do and it does it without complaining. My productivity is better than when I was 25. Edited by deroher on 01/27/2025 9:53 AM |
|
|
jogo |
Posted on 02/25/2025 2:36 PM
|
![]() Newbie ![]() Posts: 11 Joined: January 09, 2025 |
Hi folks; This was an interesting exercise and I learned a lot, but in the end I chose not to pursue it. Summarizing some of what I found, in case it helps others: ** Yes, it is possible to determine the triac pulse timings that control the fan and heater outputs, using an Arduino (I used a Nano). I ran into 2 significant issues: 1) Inconsistent relationship between the fan setting and pulse timing, which prevented me from making a reliable lookup table for it (note: The heater setting was very consistent); and 2) The fan speed jumped around a little, which implied my wiring was influencing the circuits; not just passively monitoring them. Bad Things could result... ** It is possible to READ setting changes made with the knob, by tapping into the rotary encoder connections on the logic board. However, this proved unreliable as a way to track changes on its own, because the roaster does not always implement the changes that are input. ** It is also possible to SEND changes from the Arduino to the encoder connections (although this has the same reliability issue as above.) This requires either: 1) severing the connection between the encoder common channel and the circuit board - which then prevents the knob from working; or 2) constraining the encoder to remain at one of the detent positions where both A and B circuits are Open. ** It is possible to READ and/or SEND signals from the ON/OFF and RUN/COOL buttons. These were the easiest to implement, although it may have been the cause of the roaster occasionally shutting down when my bean cooler was unplugged from the same circuit. Again, the wiring/connections seemed to be unintentionally affecting operations. ** All of these involve exposing the Arduino to the floating ground of the of roaster. I used a USB Isolator module between my laptop and Arduino so I could charge/power my laptop while connected to the roaster. Finally, a big thank-you to:
Cheers, - John Edited by jogo on 02/26/2025 8:31 AM |
|
Jump to Forum: |