ESP32 with Triac

Yordan
Posts: 10
Joined: Tue Aug 28, 2018 10:58 am

ESP32 with Triac

Postby Yordan » Fri May 03, 2019 8:04 am

Hello.
I've spend most of this week trying to find a working code for ESP32 ( not IDF ) which would works for trigering a triac ( PWM or so ) in a meaning of regulating the output ( dimming a lamp or so ) but NO LUCK AT ALL.

Most of the code I have found is about Arduino or ESP8266 with incompatible libraries or not working pieces of code for ESP32.
I've tried to implement the hardware timer of ESP32 for the trigering but seems like I am missing something.
Yet still banging against the wall and not sure where to begin.
I am using as a Triac - BTA41 with optocoupler MOC3063 and Zero Cross detector optocoupler 4N25 - seems like I am detecting the zero cross fine, but yet something is wrong with the timers.

Please, if someone have a working fine piece of code with ESP32 for dimming AC loads with triacs - share.

Thank You in advance.

P.S. I am attaching the circuit I have designed for my needs.
optocoupler.png
optocoupler.png (56.59 KiB) Viewed 22604 times

pipi61
Posts: 60
Joined: Fri Dec 23, 2016 10:58 pm

Re: ESP32 with Triac

Postby pipi61 » Fri May 03, 2019 4:02 pm

Hi!
Make interrupt to zerocross detect. in this interrupt setup timer interrupt.
In timer interrupt make enough time pulse to triac,
or set the triak on, and next zerocross interrupt switch the triak off
https://techtutorialsx.com/2017/10/07/e ... nterrupts/

YordanY
Posts: 6
Joined: Wed Oct 31, 2018 10:48 pm

Re: ESP32 with Triac

Postby YordanY » Sat May 04, 2019 12:47 am

Hello.
As I've mentioned above - it's all done, but not working good.
I've pass this tutorial many times, but actually it's just a chunk of code which is in very raw format, and somewhat the reality with triac seems like a whole different story.

That's why I am asking for a tested library or code for ESP32.

TomWS1
Posts: 21
Joined: Wed May 01, 2019 2:50 pm

Re: ESP32 with Triac

Postby TomWS1 » Sun May 05, 2019 12:03 pm

Looking at the schematic, it seems as if you may be close to under driving the MOC3063. It has a 1.2V drop across the LED and requires a minimum of 5mA to trigger. The ESP32 has a Voh of 2.64V with load. (2.64-1.2)/200ohm = 7.2mA. Above spec, but barely. I would drop the resistor to 150ohm to ensure something close to 10mA.

Also, you say "Most of the code I have found is about Arduino..." Why doesn't this work? What framework are you using to build your code?

Including your code, at least a relevant snippet, would be useful if you want help.

Tom

Rudy12
Posts: 4
Joined: Wed May 08, 2019 2:00 am

Re: ESP32 with Triac

Postby Rudy12 » Wed May 08, 2019 2:42 am

I found this library https://github.com/fabiuz7/Dimmable-Light-Arduino

But it didn't work for me. Then I tried to write my own code. And that didn't work as well. It should have. Then I came across a post about the Rev. 0 ESP32 chip. I then tried my own code again on a module with a Rev 1 processor. It worked. I then tried the above library again and it also worked.

So the reason it may not have worked for you might be because of the chip revision, if you have a rev 0 chip.

Rudy12
Posts: 4
Joined: Wed May 08, 2019 2:00 am

Re: ESP32 with Triac

Postby Rudy12 » Wed May 08, 2019 2:59 am

I can't access my regular account here on this computer so I had to re-register under a new name. So my last, and this post, will likely be delayed since it has to be approved.

I have been designing a new product with the ESP32 for a work. Initially I tried to get phase control to work, and I did. And I got it to work very well. But in the end I will not be using phase control for the product. Instead I will be using the triac to turn on full half wave pulses. The application is for heating so there is no real need for phase control. Although that is how the previous products we made have worked. Most of our products have phase control for motor speed control, or phase control for lighting applications.

One thing I found with the ESP32 was that I got multiple interrupts on a zero crossing. The risetime of the zero crossing detection circuit is not very fast. And the ESP32 does not seem to have a Schmitt trigger input (hysteresis) and I had to do a couple of things to eliminate the unwanted additional triggering.

Yordan
Posts: 10
Joined: Tue Aug 28, 2018 10:58 am

Re: ESP32 with Triac

Postby Yordan » Thu May 09, 2019 6:48 am

Hey Rudy12 !
Thank You very much for your help ! <3
I am definitely going to try this !
About the Schmitt trigger input.. - I didnt knew this.

With this board I am aim to manage the speed of a small ( 30W ) motor, and 1 kW heater.
So. will this reflect badly on my design ?
I mean - what do I need to rework on my schematic in order to make it works well ?
Any suggestions is more than apprecated.

-Rudy-
Posts: 31
Joined: Sun Feb 05, 2017 1:08 am

Re: ESP32 with Triac

Postby -Rudy- » Fri May 17, 2019 3:33 am

Sorry for not answering sooner. I don't come here often. I am just beginning to get into working with the ESP32. I have mainly used the ESP8266 until now.

https://github.com/fabiuz7/Dimmable-Light-Arduino is the library I first tried (but couldn't get to work on the rev. 0 part). I didn't use it in the end, but it is worth looking at.

The application I have is for heating and I first thought I was going to use phase control. But I decided to go with a form of duty cycle control based on full half wave increments. I decided to use 100 as my base. For 25% power I use 25 half wave pulses and 75 pulses off before repeating the pattern. I think I would have been OK if I had used the first 25 cycles on and then 75 cycles off, but I wanted to distribute the on/off cycles more.

What I did was have ten segments in the 100 half cycles. If I wanted 10% power I would have 10000000000 repeated 10 times. If I needed 12% power the routine does 1100000000.1100000000.100000000.100000000.100000000...

The reason I am not using phase control is that the application doesn't need it (heating). The current product we sell does use phase control and you can hear the heat panels buzzing. The chopped up waveform creates a lot of harmonics and the higher harmonics are easier to hear compared to the original sine wave. Another reason I decided against phase control is that I don't have to put in an inductor for radio frequency noise suppression. All our products have a triac circuit like in your schematic but it also has a inductor in series with the load and a capacitor across the load. So by not using phase control I make a more "friendly" circuit and reduce the cost of the implementation. If I had a motor to control I would have to add the additional RF suppression parts for a commercial product. You may find that for your particular application it may not be necessary.

The one concern that I have with your schematic is the zero crossing detection. It really is half wave detection and you will have a slight skewing. I'm concerned that you might end up with each second period being different than the first. This produces a DC offset and AC motors don't really like that.

With phase control there can be some instability with short trigger pulses when operating near or at full power. Motors can start to growl. To prevent that you should either just put a steady dc on the optocoupler, or increase the pulse time so that there is a longer trigger period. This problem may or may not happen for you. It depends on the motor used.

As far as motors. Most AC induction motors are not designed for reduced speed operation. Also, when you use phase control to reduce the speed of a motor, the current drawn by the motor goes up. Reduced speed operation creates higher current through a significant portion of the speed range. The average current could be 30% more than the full speed running current. Just think about a motor at startup. It draws a higher current until it gets to the full speed. Running a motor at reduced speed makes it draw more current as it is trying to get in sync with the line frequency.

TomWS1
Posts: 21
Joined: Wed May 01, 2019 2:50 pm

Re: ESP32 with Triac

Postby TomWS1 » Fri May 17, 2019 11:43 am

@Rudy,
The one concern that I have with your schematic is the zero crossing detection. It really is half wave detection and you will have a slight skewing.
The zero crossing opto is driven by a bridge rectifier, so it should be full wave and will turn on and off at approximately the same voltage before and after the crossing, so, barring any phase shift in the transformer, it should be relatively easy to predict exact center by measuring the width. However, it doesn't filter out noise near zero so a reliable detection would require a bit more sophistication in the SW (ie, reject erroneous crossings and use the SW predicted one instead).

Good choice in using the method you used for the heater. Much simpler and much more reliable.

Tom

Ristridin
Posts: 8
Joined: Sat May 18, 2019 7:38 pm

Re: ESP32 with Triac

Postby Ristridin » Sat May 18, 2019 7:47 pm

For dimming purposes, you'll need a non-zero cross triac driver like MOC3023. MOC3063 won't work.

Who is online

Users browsing this forum: lbernstone and 89 guests