Thermocouple Issues in Artisan

Discuss roast levels and profiles for espresso, equipment for roasting coffee.
hbboyd
Posts: 5
Joined: 8 years ago

#1: Post by hbboyd »

Hello All,

I am having an issue with random temperature drops in Artisan and I believe it is an issue with the thermocouple's but I was to run it by you all and see if others have had the same problem. I have attached a screen shot but to describe the issue, it is not time dependant and there are no physical changes to the probes (they don't get moved and the connection is solid) they just randomly drop down to about half temperature then shoot back up.

I am under the impression this is a grounding issue, is that correct? If so do I just need to isolate it better?

Thanks for the help!


User avatar
MaKoMo
Posts: 846
Joined: 16 years ago

#2: Post by MaKoMo »

Might be a communication issue. If communication fails, Artisan takes -1 as value. With the smoothing/oversampling turned on that may result in about 50% of the real value. You could try to increase the sampling interval and activate the "Drop Spikes" filter under menu Tools >> Extras, HUD tab.

Which meter are you using? There might be some EMF effects on the USB wire or the meter itself.

Of course also the probes could be the issue.

Marko

hbboyd (original poster)
Posts: 5
Joined: 8 years ago

#3: Post by hbboyd (original poster) »

Thanks for the quick response!

I am using a TMD 56, my current sampling interval is 5 seconds and I have drops spikes on. What would I do to limit EMF effects?

SJM
Posts: 1819
Joined: 17 years ago

#4: Post by SJM »

I'm just curious, does it only happen with ET?
You mentioned that it happens again more further on, but is it always just with ET?

If it only happens with ET, wouldn't that eliminate it being a grounding issue?

hbboyd (original poster)
Posts: 5
Joined: 8 years ago

#5: Post by hbboyd (original poster) »

Sadly no, it is both BT and ET.

SJM
Posts: 1819
Joined: 17 years ago

#6: Post by SJM »

Okay....just checking ....
Back to where you were before I butted in.... :(

User avatar
keno
Posts: 1409
Joined: 18 years ago

#7: Post by keno »

As Marko notes it can be an electrical interference issue. Are you seeing the spike in the TMD-56 reading or just in Artisan? If the latter it is probably electrical interference.

You might try a few things: try running your laptop off of the battery instead of an AC power cord. Try grounding the roaster. I had problems with the readings on my Huky until I ground the roaster. You could try adding ferrite cores to the USB cable. You could add a USB isolator. Finally, if your probes are grounded you could try replacing with ungrounded probes.

Dregs
Posts: 69
Joined: 10 years ago

#8: Post by Dregs »

keno wrote: You might try a few things: try running your laptop off of the battery instead of an AC power cord. Try grounding the roaster. I had problems with the readings on my Huky until I ground the roaster. You could try adding ferrite cores to the USB cable. You could add a USB isolator. Finally, if your probes are grounded you could try replacing with ungrounded probes.
+1 to all of Keno's suggestions. They may solve the problem. I tried most of them on my North TJ-067, but the problem persisted. I used the Phidget 3060 USB isolator, ferrite core USB cables, grounding wire attached to roaster face plate on one end and water pipe on the other, laptop on and off a/c. I made my own probe setup, and I think it would be classified as ungrounded, but I can't claim to have implemented all of Keno's excellent advice.

If you can't beat the spikes, do an end-run by changing settings in Artisan. Change Config>Sampling Interval to 6 seconds. In Tools>Extras>Graph, set Delta Span to 12s, Smooth Curves to 4, and Smooth Deltas to 4. A 6 second interval is more than fast enough to monitor the roast. If the spikes disappear, you can try reducing the other settings until they come back.

hbboyd (original poster)
Posts: 5
Joined: 8 years ago

#9: Post by hbboyd (original poster) »

Thanks for the excellent responses guys. I will give them a try and report back for others who find this thread in the future!

robmatic
Posts: 58
Joined: 11 years ago

#10: Post by robmatic »

I too have seen this issue with the Amprobe, but I worked around it in software. I examined the data stream sent by the device, and found that sometimes there is just an extra byte or two at the start, which causes Artisan to interpret the data stream incorrectly. I also found that when the data was good, the first two bytes were always fixed values, and that looked like an acknowledgement code to me. So I put in a check for this ack code, and when it is not there, the temperature reading is immediately declared bogus, thrown away, and a new reading is acquired. I am attaching the code here. It's a python script that can be called from Artisan using the "program" device, though you'll need some customization to specify the correct device for your system.

Marko, perhaps you could incorporate this logic into Artisan's built in TMD56 code?

Rob
#!/usr/bin/env python
#
# by Rob Gardner (robmatic@gmail.com)
#

import serial
import time
import binascii

# for mac
device="/dev/tty.usbserial-A901OW86"

# for linux
# device="/dev/ttyUSB0"
# or something appropriate according to a udev rule

# for windows
# device="untested:"

logfile="/tmp/tmd56log.txt"
retries=10

# TMD56 constants
TMD56_ACK_BYTE0 = 0x3e
TMD56_ACK_BYTE1 = 0x0f
TMD56_TEMP1_HI = 5
TMD56_TEMP1_LO = 6
TMD56_TEMP2_HI = 10
TMD56_TEMP2_LO = 11
TMD56_RESPONSE_LEN = 16
TMD56_CMD = "#0A0000NA2\r\n" 

def main():
    t1,t2 = TMD56temperature()
    print "{},{}".format(t1, t2)

def device_read():
    ser = serial.Serial(device, baudrate=19200, bytesize=8, parity='E', stopbits=1, timeout=1)	
    ser.write(TMD56_CMD)
    data = ser.read(TMD56_RESPONSE_LEN)
    ser.close()
    return data

def TMD56temperature():
    log = open(logfile, 'a+')
    try:
        for i in range(retries):

            r = device_read()

            if (ord(r[0]) == TMD56_ACK_BYTE0) and (ord(r[1]) == TMD56_ACK_BYTE1):
                t1 = ((ord(r[TMD56_TEMP1_HI]) << 8) | ord(r[TMD56_TEMP1_LO]))/10.0
                t2 = ((ord(r[TMD56_TEMP2_HI]) << 8) | ord(r[TMD56_TEMP2_LO]))/10.0
                if (i > 1):
                    print >>log, "good data ({},{}) found after {} retries".format(t1, t2, i)
                return t1, t2
            else:
                print >>log, "bad data found: ",
                for k in range(16):
                    print >>log, format(ord(r[k]), '02x'),
                print >>log

            return 0,0

    except serial.SerialException, e:
        print e
        print >>log, e
        return 0,0

main()

Post Reply