Not a member yet?
Click here to register.

Forgotten your password?
Request a new one here.
You must login to post a message.

03/27/2023 6:44 AM
ivitamin welcome cup

03/23/2023 10:31 AM
Welcome, bob22

03/22/2023 8:52 AM
Thanks skpacman! all help with our site is much appreciated! ThumbsUp

03/20/2023 8:57 PM
Added some code to combat against bots. If anyone has issues with it, let me know. ❤

03/19/2023 4:55 AM
frankvanhaarlem, fenix and Andyleighmyers welcome to forum

In Memory Of Ginny

Latest Donations
dmccallum - 10.00
JackH - 25.00
snwcmpr - 10.00
Anonymous - 2.00
Anonymous - 5.00
Users Online
Guests Online: 14

Members Online: 0

Total Members: 7,831
Newest Member: ivitamin

View Thread

Who is here? 1 guest(s)
 Print Thread
TC4 with aArtisanQ_PID
New update on the last page of attached file. I check the phase angle of pin 10 vs ZCD directly on Arduino board. The phase angle between pin 10 and ZCD seems not changed correspond to different OT2 value.
In stead, it changed the pin 10 pulse width.
Again, your help would highly appreciated.
CJ098 attached the following file:
Yes, I would expect the phase angle of pin 10 output to change with changing outputs values. I'm confused.

Where did you get the ZCD from? Did you make it? Could you check the pins are labeled correctly as they are in a different order compared to Jim's ZCD boards.

Can you check if you are getting 5 volts on Pin 13 (the LED pin) when the ZCD is connected. Pin 13 should go high when AC is detected from the ZCD and the LED connected to pin 13 should come on.

The D2425-10 SSR must be used on OT2 for phase angle control.

You could try updating to aArtisanQ_PID 6.5? There's download link back in post #285 in this thread. Also, you should not need to change any code in the phase_ctrl library.
Red trace is the output from my ZCD.
Blue trace is the negative pin on OT2.

I'm running with 50Hz AC.

Video shows waveforms while changing output from 100% down to 0%, then back up to 100%.

I have OT2 min set at 10% so you will see a larger jump there.

Please excuse the pathetic scope :/

And another video showing the trace for the ICC output on the OT1 negative pin.

I'm adjusting power from 0% to 100%.

This is letting half AC cycles pass through and always switches at the zero crossing of the AC power, thus only requires a zero cross SSR.

Hi Brad,
Many Many thanks to your help. I have to apology for causing confusion about phase angle. Actually, it's due to my setting on oscilloscope. I explained it on page 8 of the attached file.On my TC4, the phase angle of pin 10 does change. However, my D2425-10 SSR seems only be turned on at zero crossing. I explained on page 9&10. Please have a look and welcome your inputs. As for your question, the ZCD was made by myself. The pin location is different to yours. The pin 13 is getting +5V when my ZCD connect to IO3. And the LED connect to pin 13 is lighted up. Thanks again.
CJ098 attached the following file:
This latest PDF seems to be the same as the previous one. There are no pages 8-10.

I'm beginning to suspect your D2425-10 SSR is not switching properly. Where did it come from? A reputable source?
Hi Brad,
Would you please down load the latest file again? There are page 8-10, (title is step 6~step 8).
I bought this SSR on the web site. This time I will try the local supplier.
Thanks a lot.
Yes, the signals in Steps 7 and 8 look good. However, are your output % reversed? The 100% photo looks like what I expected 0% to look like. Unless I have mine back to front in my video.

You could try a new SSR although I realise they are not cheap.
The 100% photo on step 7 is correct. However, it looks different to yours. It might be due to the setting of my scope, too. I bought this vintage scope 2 months ago and have no operational manual to understand it throughly.
Hello Brad
Thanks for your help that I just completed my TC4/popcorn popper roaster setup and did some test run.
When I use PID control roasting, the Heater value did not show on the logged profile.
However, if I adjust the slider of heater, the value changes will be logged and shown.
Is there anyone got the same problem before? or I did the wrong config? Could you please help to check it.
My setup is Win 10, Artisan v 1.3.1, aArtisanq_pid v6.5 (test)
Thanks a lot.
CJ098 attached the following images:
pid.png dvice.png heater.png
Have you set up the 'Extra Devices' tab? Heater fan and SV values are not recorded by default. You have the specify TC4 channels 3-4 to get heater and fan logged.

See my video here showing Artisan setup for TC4.
I tried to add extra device TC4_56 and adjust the Fan and Heater value manually.
1. During the roast, the right side heater LCD just show 0 , no matter how it changed on left side heater slider.
2. During the roast, at the bottom of profile it shows the fan and heater value, however, it disappeared when I stopped the roast. I attached the screen snap shot for your reference. Thanks a lot for your help.
Re-attach picture
sorry, I don't know why the attached picture does not show.
I attached a .rar file.
CJ098 attached the following file:
pictures.rar [313.66kB / 649 Downloads]
TC4 5-6 is Heater then Fan. In your screenshot you have them swapped.
Thanks a lot for your prompt response.
My original setting for TC4_56 is heart then fan. However, I found the fan value on left slider is inconsistent with the fan value on right side LCD. Besides, "6th" extra device on right side LCD seems no response. On the screen shot "test2", you can find the Fan value 98 on left side slider is the same with right side FAN LCD. but the left side heater value is 78, right side heater LCD value is 0.
Problem solved, Since I used OT1 ICC control heater and IO3 to control DCFAN
So I modified the Heater and FAN display options in user.h as below. Then it works.

// Heater and Fan Duty Dispay Options
// These should NOT need adjusting.  They control what gets streamed back to via serial
// These have no effect on operation and only affect what gets displayed/logged by Artisan
  #ifdef IO3_HTR_PAC // If using PWM on IO3 for a heater or DCFAN
    //#define HEATER_DUTY levelIO3 // Heater output is assumed levelIO3 with heater connected to IO3, command out when use DCFAN
  //#else // If using ICC control of a heater connected to OT1, Command out when use DCFAN
    #define HEATER_DUTY levelOT1 // Heater output is assumed levelOT1 with heater connected to OT1
  #define FAN_DUTY levelIO3 // Fan output is assumed levelOT2 for phase angle control mode on OT2, DCFAN on IO3
#else // PWM Mode
  #define HEATER_DUTY levelOT1 // Heater output is assumed levelOT1 with heatre connected to OT1
  #define FAN_DUTY levelIO3 // Fan output is assumed levelIO3 for PWM control of fan connected to IO3
CJ098 attached the following image:
Conversation continued here from the Gene/Artisan thread.


renatoa wrote:
Please include the flag for the two modes in User.h, and don't forget to comment with the biggest caps you find :) that P/I values from PoE(rror) are not working for PoM(eas).


MaKoMo wrote:

@greencardigan: shouldn't be there a TC4 PID command to switch the PID lib between those two modes from within Artisan? Could you add one? I plan to also add PoM mode to the Artisan Software PID and thus add such corresponding configuration to its GUI to toggle between the PoE and PoM modes. Thus if Artisan is configured to use the external TC PID, that user setting could just be send along a corresponding serial command.


renatoa wrote:

@MaKoMo & @greencardigan: if you have this opportunity to make a protocol change, please don't miss the great chance to add also a PID;LIMITS command, to pass the limits from Artisan Control dialog to the TC4 PID, and TC4 PID using them.

Was the most frustrating missing command for a long time... a permanent, 40% for example, minimum limit of power, would make my life a lot easier in my attempts to "perfect" rost profile.

I?m thinking we should modify the current PID tuning serial command? The PID library is expecting the P_ON_M or P_ON_E mode to be set at the same time as the PID parameters.

myPID.SetTunings(PRO, INT, DER, P_ON_M)

So I think it makes sense to include them in the same command and set them at the same time.

So we could change the PID;T;p;i;d command and accept either:

PID;PONM;p;i;d or PID;PONE;p;i;d

Any thoughts on this Marko, renatoa, others? Otherwise a new command would work too.

I also think a PID;LIMIT;min;max command will be a good idea.
Why not place the PonM/E flag as the last parameter, and make it optional, with default value PonE? this way others code built around TC4 will not be harmed... they can continue call the older version without recompiling.
Yes that's a good idea. However it would require a change to the cmdproc library. Currently it only accepts 5 parts in a command. The PID,T,p,i,d command already has 5 parts.
What is T? I don't see this parameter in the lib I have, PID_v1, from 2017/11/14...

void PID::SetTunings(double Kp, double Ki, double Kd)
The T is part of the TC4 serial command for tuning the PID, nothing to do with the PID library.

I'm working on a solution and will hopefully have a version to test this weekend.
What about adding simply a second tuning command that switches to P-on-M like


also to keep additional memory demand low?

Anyhow, I trust you will find a good solution. I prepared things on the Artisan side and can issue any command that you come up with easily.
This is essentially what I did. However I have kept the PID part of the command constant and use either T or T_POM.

Adding a new PIDM base command would be much less memory efficient.

Anyhow I sent you an email earlier before I saw your post here. Once we agree on the new command I will post a version 6.6 of the TC4 sketch here for testing. it seems to be working fine but I don't have time to test it more yet.
I've attached a new version for testing. I have done very limited testing at this stage.

- Added support for PID_V1.2 library with Proportional on Measurement mode
- Added flag in user.h to set default PID mode
- Modified the PID tuning serial command. Now accepts PID;T_POM;ppp;iii;ddd to set P_ON_M mode.
- The existing command PID;T;ppp;iii;ddd now switches to P_ON_E mode.
- Added new PID;LIMIT;min;max serial command to allow the PID output limits to be set.
- Cleaned code to remove compile warnings

The zip file also includes the updated PID_v1 library which needs to replace the existing library in your Arduino libraries fiolder.

Marko has already made the corresponding changes to Artisan v1.4 beta build. ThumbsUp
greencardigan attached the following file: [270.18kB / 629 Downloads]
Jump to Forum:

Similar Threads

Thread Forum Replies Last Post
Using aArtisanQ_PID with an old TC4 Dataloggers/Controllers/Rate of Rise Meters 12 02/14/2023 10:50 AM
How do I get the latest aArtisanQ_PID libraries? Dataloggers/Controllers/Rate of Rise Meters 3 02/06/2023 5:44 PM
aArtisanQ_PID thermocouple jumps when active PID channel Dataloggers/Controllers/Rate of Rise Meters 16 06/10/2021 9:57 AM
Loading aArtisanQ_PID in Arduino Dataloggers/Controllers/Rate of Rise Meters 14 05/28/2018 8:32 PM
Help with aArtisanQ_PID Specifying Temps Dataloggers/Controllers/Rate of Rise Meters 7 08/03/2017 7:05 PM
Homeroasters Association Logo, and all Content, Images, and Icons © 2005-2016 Homeroasters Association - Logos are the property of their respective owners.
Powered by PHP-Fusion Copyright © 2023 PHP-Fusion Inc
Released as free software without warranties under GNU Affero GPL v3
Designed with by NetriX
Hosted by skpacman