[TriEmbed] Coffee roaster sanity check
Brian
triembed at undecidedgames.net
Tue Dec 31 18:45:45 CST 2019
Hi Craig,
> The MOSFET in the diagram is being used for PWM fan control. It
> interrupts the neutral fan wire.
>
Oh wow, that totally slipped past me when I looked at it last. That
won't work because the Arduino's power supply is isolated (and that's a
very good thing). "GND" in your circuit is an isolated GND; there's no
path through the MOSFET back to the neutral AC line. The motor just
won't run at all.
It also won't work if you connect Q1 pin 3 to the AC neutral instead of
GND, again because the Arduino supply is isolated. The MOSFET will
behave as if its gate is floating. The motor will get half the AC cycle
when the MOSFET's body diode is forward-biased, and [undefined behavior]
the other half cycle. And you'd potentially have 120VAC coupled back
into your Arduino circuit thanks to the gate capacitance in the MOSFET.
Another thing that won't work is to simply move the MOSFET between the
bridge rectifier and the motor, again because of the lack of reference.
It would also be equally bad to tie your DC GND to either DC side of the
motor. If the DC circuit isn't completely isolated, it's going to be
120V away from earth ground 60 times every second (i.e. the whole thing
will be "live").
So your best bet, if you want to have the fan powered as it presently is
by the popper and not a separate 19-VDC supply, is to use a TRIAC with
an isolated driver (photocoupler). The TRIAC itself is connected to the
AC lines, and only the LED inside the photocoupler is connected to your
DC circuit.
A triac such as this one:
https://www.digikey.com/short/zczrp0
and a photocoupler such as this one:
https://www.digikey.com/short/zczr4t
The photocoupler's datasheet has a typical application diagram on page 7
(PDF page 8), showing how the coupler and the external triac are wired
to an AC load and a DC control circuit. The diagram shows a BJT used to
drive the coupler's LED, but your Uno can drive it directly with the
appropriately-sized resistor (it's just like driving a discrete LED).
The resistors and capacitor on the load side are forming a low-pass
filter for the TRIAC's gate, and could be omitted (resistors become
wires, capacitors become open circuit).
> Controlling the heater with PWM would be useful.
>
> Could this technique work? "Bresenham algorithm" with SSR?
> https://electronics.stackexchange.com/questions/304148/is-there-a-way-to-use-pwm-to-control-ac-mains-powered-heater
The accepted answer on that question isn't a bad suggestion, but note
that its PWM period is 255 AC cycles, or a little over four seconds. I
honestly think this is overkill, because...(read on)...
> A simple on/off with the SSR is also fine to get me started. The
> instructables code example cuts power when the temperature probe says it
> is too high. That should be fine. When it is low enough, it turns on again.
AFAIK, industrial process controls that monitor temperature commonly
take readings no more often than 1 Hz, because in most cases a system
simply doesn't heat up or cool off that fast. I'd bet if you monitor
and turn heat on/off only as fast as once per second, that'll be more
than enough for good repeatability, no fancy-named algorithms required!
Of course, since you're using an Arduino, you could also do some
datalogging, and empirically determine the difference in temperature
profiles from a 1-Hz on/off thermostat versus a PWM approach. I for
one, in addition to welcoming our new Arduino-controlled
coffee-bean-roaster overlords, would be interested to see if the
difference is appreciable.
Cheers,
-Brian
More information about the TriEmbed
mailing list