Shop OBEX P1 Docs P2 Docs Learn Events
Controlling AC Universal Motor (Blower) with a Propeller - Page 2 — Parallax Forums

Controlling AC Universal Motor (Blower) with a Propeller

2

Comments

  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2016-07-09 05:30
    That 20ma figure is not meant to be intended current, just a test figure for the measurements they include in the data sheet. The absolute max should be avoided but remember that the current through the led is only half cycle of s sine wave. So average current will be around one third of your calculated DC values. The reason for the 25ma peak that I used is for speed in terms of zero cross accuracy.

    To cut down heat just use a 1n4004 in series in place of the reverse diode. Use four 1.5k resistors in series (1W)
    Screenshot%20from%202016-07-09%2015%3A43%3A43.png
  • MJBMJB Posts: 1,235
    edited 2016-07-09 10:45
    EDIT: don't use cheap strip board if you prototype, stick with FRB and universal double-side plated-through matrix board as the FRB is more stable and the PT holes provide mechanical stability so the soldered pads can't pop off the laminate and drift around. Strip board is ugly and you are always cutting tracks which can leave copper strands behind whereas matrix board like this is real easy to work with and much better.
    I prefer verotl.com/en/product/03-0111-6u-circuit-development-square-pad-board-230x160
    with square pads - expensive and hard to get - but so easy to just pull the hot iron with a little solder do created lines for low density prototypes.
    or this digikey.com/product-detail/en/vector-electronics/45P80-2/V2022-ND/1886444
  • MJB wrote: »
    EDIT: don't use cheap strip board if you prototype, stick with FRB and universal double-side plated-through matrix board as the FRB is more stable and the PT holes provide mechanical stability so the soldered pads can't pop off the laminate and drift around. Strip board is ugly and you are always cutting tracks which can leave copper strands behind whereas matrix board like this is real easy to work with and much better.
    I prefer verotl.com/en/product/03-0111-6u-circuit-development-square-pad-board-230x160
    with square pads - expensive and hard to get - but so easy to just pull the hot iron with a little solder do created lines for low density prototypes.
    or this digikey.com/product-detail/en/vector-electronics/45P80-2/V2022-ND/1886444

    The Vector Electronics ones are the ones I bought for my P2 motherboard prototypes as they are high quality pth AND independent pads, none of that "convenient" track stuff. I used adhesive copper tape on the outside of the board for ground and power. But obviously there are much cheaper ones on ebay and that one supplier I linked has decent boards at very good prices as I have used the smaller versions before. At times I draw solder across pads with a cooler iron but otherwise I just strip wire-wrap wire and tack that down to create tracks, I was able to mount 8-pin SOIC Flash, EEPROM, and RS485 chips directly to these 0.1" square pads by simply lifting certain pins and soldering the others and for the RS485 chips I needed to run a fine wire from one of the lifted legs but that's about it. I don't know why some places still sell that horrible brown vero style board or even single-sided pads as they lift away easily etc but double-sided allows me to mount and solder either side with very strong mechanical retention.

  • kwinnkwinn Posts: 8,697
    Duane Degn wrote: »
    If I'm reading the optoisolator's datasheet correctly, the LED is intended to be used at 20mA. The "Absolute Maximum Rating" on the input LED is 50mA.

    The LED's forward voltage 1.2V (at 20mA).

    Apparently I don't need to use resistors to limit the current based on the max voltage (170V) but I can use a lower voltage level to calculate the resistors to use reach a target current of 20mA. My earlier resistor value was based on 10mA LED current which I've found works fine for data transmission through the isolator. Based on what has been suggested here, I think I'd be better off shooting for a current through the LED of 20mA.

    120V - 1.2V / 0.02A = 5940 ohm

    Since I'm using 20mA instead of 10mA in my calculations, I need to use a different power rating for the resistors.

    120V * 0.02A = 2.4 Watts (I figure I'm okay to ignore the voltage drop across the diodes in this part of the calculation.)

    If I use 1/4W resistors: 2.4W / 0.25W = 9.6

    I figure I need at least 10 resistors in series.

    Since I want a total of 5940 ohms, wouldn't I want to use ten 594ohm (or there abouts) resistors?


    Is this correct so far?

    Edit: I'm not sure about these resistor power power calculations. I'll check these calculations tomorrow.

    Thanks again for everyone's help.



    Things to keep in mind for your calculations:

    The incoming AC voltage can vary quite a bit. I have measured it to be as low as 98V, and as high as 137V at various locations and times of the day.

    The peak current through the LED should not exceed the absolute maximum current rating of the LED at the peak of the AC voltage.

    The total power rating of the series resistors should be at least 150% greater than the actual power to be dissipated.
  • To cut down heat just use a 1n4004 in series in place of the reverse diode. Use four 1.5k resistors in series (1W)

    I just went through my bag of resistors and I lots of 1K 1/4W resistors and lots of 1/2W 2.4K resistors.

    I figure I'll use six 1K 1/4W resistors with a 1n4004 diode.

    I'll post some pictures of the contraption before I plug it in.

    Thanks once again for everyone's input.

  • Duane DegnDuane Degn Posts: 10,588
    edited 2016-07-16 05:24
    Here's the board I soldered up.

    ZeroCrossDetect160715a.jpg

    I didn't want to make a large PCB. I'm hoping my zigzagged resistors are arranged in a way which will keep things safe.

    Here's the back of the board.

    ZeroCrossDetect160715c.jpg

    As you can see, I cut away part of the PCB between the high voltage side and the low voltage side.

    Here's the top photo again but this time I drew (in blue) the solder connections in so you can see how things are connected from a single side.

    ZeroCrossDetect160715b.jpg

    The output goes high when about 2V is applied to the high voltage side. I haven't connected this to 120VAC yet. So far I've just used my bench supply running at 19VDC to test it.

    It seems to be working fine. Any concerns about my using it with ~120VAC? I'll make sure and not touch it when it's live.

    I figured the order of the resistors and diode didn't matter. Here's the schematic showing how the resistors and diode are arranged.

    Optoisolator190715a.PNG

    The schematic shows pins 5 and 6 of the optoisolator being used. I actually used pins 3 and 4.
    911 x 753 - 38K
    921 x 715 - 240K
    945 x 657 - 285K
    921 x 715 - 242K
  • Please bear in mind, when you use the "zero-crossing" info in your program, that the timing will be a little bit skewed. This is due to the non-zero forward voltage of the opto's LED. The correction, however, will be easy to compute by comparing the "on" time with the "off" time and splitting the difference.

    -Phil
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2016-07-16 08:35
    Ideally the resistors should also be physically in series but for the voltage you are working with this is more than good enough.
    I did play with the simulation a little bit more at the time and added "noise" to see what I could do to improve zero-cross accuracy. This is one of the final circuits and values I came up with and of course the zero ohm resistor on the AC side is only for the sim and the one on the DC side is simply ground but allowed current measurement by varying the value.

    Screenshot%20from%202016-07-16%2018%3A45%3A00.png
  • Please bear in mind, when you use the "zero-crossing" info in your program, that the timing will be a little bit skewed. This is due to the non-zero forward voltage of the opto's LED. The correction, however, will be easy to compute by comparing the "on" time with the "off" time and splitting the difference.

    My present code writes the on and off times to RAM. Can I compute this value from these times and add it as a constant? Or do I need to make these computations on the fly in the PASM code. I'm guessing this value shouldn't change much and a constant could be used.

    I also wondered about using old Parallax two channel oscilloscope to monitor a 5VAC wall wart an the output from the optoisolator. Would the phase from the wall wart match the phase of the AC outlet close enough to use it measure the difference in optoisolator's measured zero cross to the actual zero cross?

    One of the YouTube videos I watched used a transformer to safely connect the line voltage to an oscilloscope. I'm hoping my 5VAV wall wart could be used as this sort of transformer.

    Am I missing something in my assumptions?

  • Ideally the resistors should also be physically in series but for the voltage you are working with this is more than good enough.

    I'm not sure I understand what you mean by "physically in series". Are you referring to my using one of the resistors on the cathode side of the LED? Or are you referring to the way I zigzagged the resistors?
    I did play with the simulation a little bit more at the time and added "noise" to see what I could do to improve zero-cross accuracy. This is one of the final circuits and values I came up with and of course the zero ohm resistor on the AC side is only for the sim and the one on the DC side is simply ground but allowed current measurement by varying the value.

    I've been using my old PC this last week and I don't trust this machine enough to install any new programs. I'll install LTspice on my newer machine when I'm using it again.

    Thanks for taking time to show me these experiments.

    I take it you like this latest schematic better than the earlier one? Am I safe to assume the earlier schematic should work okay? As I posted earlier, I've soldered up a board with parts from the earlier schematic and I'd rather not redo the board.

    Thanks again for all your help guys.

  • I wouldn't mess with the wall wart. It should be easy enough to program a digital PLL that syncs to the opto input with a zero average phase shift. Then use the output of that as your zero-crossing indicator. The DPLL with a long-enough time constant will also make your zero-crossing detector immune to noise on the power line.

    -Phil
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2016-07-16 22:07
    The old circuit worked fine so stick with that but what I meant about being physically in series is simply instead of zigzagging you keep them all in line end to end just like <--R--><--R--><--R--><--R--> although that is a not absolutely necessary for the relatively low voltage you are working with but something to keep in mind. The breakdown voltage is only as good as the separation distance and you should always allow for "spark-over".

    Your AC wall wart would have to be a transformer so I don't see a problem with that but since your opto circuit needs a couple of volts to activate this would be extremely inaccurate as you can imagine that that won't happen for less then 1ms into the cycle whereas with 110VAC this is achieved at around 50us. You want to get as close to the zero point as possible and there are other circuits I have published which are super accurate if need be. But for a blower motor I think what you have is more than good enough.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2016-07-18 07:35
    I finally wired up my gizmo to the AC line. I haven't used it to power anything yet. I want to make sure I understand how to compensate for any timing issues.

    I have a PASM program monitoring the output from the optoisolator. The program writes the time interval for each high and low interval. FYI, I'm calling the high interval "waiting for low" and the low interval "waiting for high".

    If either interval is either 10% too short or 10% too long an error counter is incremented. So far no timing errors have been detected.

    Here's the output from the program.
    waitForHighIntervalHub = 8264
    minWaitHigh = 8213
    maxWaitHigh = 8302
    waitForLowIntervalHub = 8389
    minWaitLow = 8333
    maxWaitLow = 8452
    frequency = 60.0838
    minimum observed frequency = 59.8730
    maximum observed frequency = 60.2355
    

    The intervals are displayed in microseconds.

    The above max and min intervals have almost a 100us span when monitoring individual interval. If I average 256 intervals the max and min values don't have nearly as much of a range. The values below use 256 element buffers to generate the averages. As you can see, the range in the max and min high and low times is 10us or less.
    current average frequency = 60.0416
    minimum average frequency = 60.0253
    maximum average frequency = 60.0425
    waitForHighAverage = 8266 us
    waitForHighAveMin = 8262 us
    waitForHighAveMax = 8269 us
    waitForLowAverage = 8388 us
    waitForLowAveMin = 8386 us
    waitForLowAveMax = 8396 us
    EXPECTED_HALF_PERIOD_INTERVAL = 8333 us
    

    These averages are computed from the Spin portion of the code which also displays the debugging information. The Spin code doesn't check every interval but I think these numbers are representative of the normal time intervals.

    If I use the "waitForHighAverage" and "waitForLowAverage" values, I get a 121us difference. I would have thought the high interval (which I'm calling "waitForLow") would have been shorter than the low interval.

    In case anyone is interested, here's the PASM code I'm using to measure these intervals. I cheated and poke some of the hub addresses from Spin.
    DAT                     org
                            ' if dest < source set c
    zeroCrossCode           rdlong  zeroCrossPin, par
                            mov     firstPhaseTimeAddress, par
                            mov     fullPhaseTimeAddress, par
                            mov     ssrOffTimeAddress, par
                            mov     zeroMessageAddress, par
                            
                            add     fullPhaseTimeAddress, #4
                            add     ssrOffTimeAddress, #8
                            add     zeroMessageAddress, #12
              
                            wrlong  cogMsgZeroCrossStarted, zeroMessageAddress 
           
                            mov     zeroCrossMask, #1
                            shl     zeroCrossMask, zeroCrossPin
                            or      dira, ssrMask                       
    
    testForGoodCycle        andn    outa, ssrMask
                            mov     currentCycleErrors, #0  
                            wrlong  cogMsgWaitForFirstHigh, zeroMessageAddress 
    
                            mov     intervalStartTime, cnt
                            
    waitForFirstHigh        mov     input, ina
                            and     input, zeroCrossMask
                            mov     now, cnt
                            mov     waitForHighIntervalCog, now
                            sub     waitForHighIntervalCog, intervalStartTime
                           
                            cmp     halfPeriodTimeout, waitForHighIntervalCog wc
                  if_c      call    #waitForHighTimeout                  
                            tjz    input, #waitForFirstHigh
                            wrlong  waitForHighIntervalCog, waitForHighIntervalA       
                            
                            mov     intervalStartTime, now
                            wrlong  cogMsgWaitForFirstLow, zeroMessageAddress
    
    
    
    waitForFirstLow         mov     input, ina
                            and     input, zeroCrossMask
                            mov     now, cnt
                            mov     waitForLowIntervalCog, now
                            sub     waitForLowIntervalCog, intervalStartTime
                            cmp     halfPeriodTimeout, waitForLowIntervalCog wc
                  if_c      call    #waitForLowTimeout                  
                            tjnz    input, #waitForFirstLow
                            tjnz    currentCycleErrors, #testForGoodCycle
    
    mainLoop                andn    outa, ssrMask
                            rdlong  ssrOffTimeCog, ssrOffTimeAddress
                            mov     currentCycleErrors, #0
                            mov     intervalStartTime, now
                            wrlong  cogMsgWaitForHigh, zeroMessageAddress
                                               
    waitForHigh             mov     input, ina
                            and     input, zeroCrossMask
                            mov     now, cnt
                            mov     waitForHighIntervalCog, now
                            sub     waitForHighIntervalCog, intervalStartTime
                            cmp     ssrOffTimeCog, waitForHighIntervalCog wc
                  if_c      or      outa, ssrMask 
                            cmp     halfPeriodTimeout, waitForHighIntervalCog wc
                  if_c      call    #waitForHighTimeout                  
                            tjz     input, #waitForHigh                        
                            cmp     waitForHighIntervalCog, halfPeriodTooShort wc
                  if_c      call    #waitForHighShort
                            tjnz    currentCycleErrors, #testForGoodCycle
    
                            wrlong  waitForHighIntervalCog, waitForHighIntervalA
                            mov     intervalStartTime, now
                            wrlong  cogMsgWaitForLow, zeroMessageAddress
                            
    waitForLow              mov     input, ina
                            and     input, zeroCrossMask
                            mov     now, cnt
                            mov     waitForLowIntervalCog, now
                            sub     waitForLowIntervalCog, intervalStartTime
                            cmp     ssrOffTimeCog, waitForLowIntervalCog wc
                  if_c      or      outa, ssrMask 
                            cmp     halfPeriodTimeout, waitForLowIntervalCog wc
                  if_c      call    #waitForLowTimeout                  
                            tjnz    input, #waitForLow                        
                            cmp     waitForLowIntervalCog, halfPeriodTooShort wc
                  if_c      call    #waitForLowShort
                            tjnz    currentCycleErrors, #testForGoodCycle
    
                            wrlong  waitForLowIntervalCog, waitForLowIntervalA
                            jmp     #mainLoop
                            
    waitForHighTimeout      andn    outa, ssrMask   ' turn off on error
                            add     waitForHighTimeoutCog, #1
                            add     currentCycleErrors, #1
                            wrlong  waitForHighTimeoutCog, waitForHighTimeoutA
                            mov     intervalStartTime, now
    waitForHighTimeout_ret  ret
    
    waitForHighShort        andn    outa, ssrMask   ' turn off on error
                            add     waitForHighShortCog, #1
                            add     currentCycleErrors, #1
                            wrlong  waitForHighShortCog, waitForHighShortA
                            mov     intervalStartTime, now
    waitForHighShort_ret    ret
    
    waitForLowTimeout       andn    outa, ssrMask   ' turn off on error
                            add     waitForLowTimeoutCog, #1
                            add     currentCycleErrors, #1
                            wrlong  waitForLowTimeoutCog, waitForLowTimeoutA
                            mov     intervalStartTime, now
    waitForLowTimeout_ret   ret
    
    waitForLowShort         andn    outa, ssrMask   ' turn off on error
                            add     waitForLowShortCog, #1
                            add     currentCycleErrors, #1
                            wrlong  waitForLowShortCog, waitForLowShortA
                            mov     intervalStartTime, now
    waitForLowShort_ret     ret
                          
    cogMsgZeroCrossStarted  long 0 
    cogMsgWaitForFirstLow   long 0
    cogMsgWaitForFirstHigh  long 0
    cogMsgWaitForLow        long 0
    cogMsgWaitForHigh       long 0
    halfPeriodTimeout       long HALF_PERIOD_TIMEOUT
    halfPeriodTooShort      long HALF_PERIOD_TOO_SHORT
    ssrMask                 long 1 << SSR_PIN
    waitForHighTimeoutA     long 0
    waitForHighShortA       long 0
    waitForLowTimeoutA      long 0
    waitForLowShortA        long 0
    waitForHighIntervalA    long 0
    waitForLowIntervalA     long 0
    waitForHighTimeoutCog   long 0
    waitForHighShortCog     long 0
    waitForLowTimeoutCog    long 0
    waitForLowShortCog      long 0
    waitForHighIntervalCog  long 0
    waitForLowIntervalCog   long 0
        
    zeroCrossPin            res 1
    zeroCrossMask           res 1
    firstPhaseTimeCog       res 1
    firstPhaseTimeAddress   res 1
    fullPhaseTimeCog        res 1
    fullPhaseTimeAddress    res 1
    ssrOffTimeCog           res 1
    ssrOffTimeAddress       res 1
    zeroMessageCog          res 1
    zeroMessageAddress      res 1
    intervalStartTime       res 1
    now                     res 1 
    input                   res 1
    currentCycleErrors      res 1
    
                            
                            fit
    
    Your AC wall wart would have to be a transformer so I don't see a problem with that but since your opto circuit needs a couple of volts to activate this would be extremely inaccurate as you can imagine that that won't happen for less then 1ms into the cycle whereas with 110VAC this is achieved at around 50us.

    The 5VAC wall wart would only be used to compare the output from the optoisolator with the AC cycle. The 5VAC wall wart would be used with an oscilloscope not to drive the optoisolator. The optoisolator would be driven by the 110VAC (measured at 117VAC). The 5VAC wall wart is my attempt to safely monitor the 110VAC line with an oscilloscope.

    BTW, your 50us estimate is pretty close to what I'm measuring using the Prop. There's a 122us difference between the high and low intervals. I figure one interval needs to be increased by 61us and one interval needs to be decreased by 61us.

    A 61us difference in the actual vs. measured interval is about 0.7% of the expected 8333us half period interval. Should I be worried about this sort of error?

    If I do need/should worry about it, where to add delays?

    I'm pleased with how well things are working so far. Of course I haven't tried to drive the blower yet so I might be celebrating a bit too early.

    I need to wait until tomorrow to try driving the SSR. I'm afraid the blower would make too much noise this time of night (1:40AM here in Idaho).

    Thanks again guys for all the help.

  • Sounds like you are having fun but you can drive an incandescent lamp or some other suitable load if you don't want to make a noise. Don't worry about any variations at present, just give it a go.

    btw, yes, the AC transformer is a good way for you to monitor the AC with your scope.
  • Sounds like you are having fun but you can drive an incandescent lamp or some other suitable load if you don't want to make a noise. Don't worry about any variations at present, just give it a go.

    This blower doesn't like having its power chopped up. I can use my gadget to power an incandescent bulb and an electric drill but the blower will only work if the power is set to 100% when the blower is turned on. As soon as I adjust the power level to 99%, the blower turns off. The blower remains off even when I turn the power back to 100%.

    The blower only works if the supplied power is at a full 100% when the blower is turned on.

    Any ideas why the blower is so picky about the power supply?

    Here's a link to the SSR I'm using.

    I purchased this SSR a few years ago from MPJA. The SSR I have is white instead of black but the model number is the same as the SSR I linked.

    Any suggestions?

    Do you think there's some gizmo inside the blower preventing it being used with anything but full power? Maybe I could take apart the blower and remove the "feature" preventing from working with my contraption.
  • garyggaryg Posts: 420
    edited 2016-07-22 06:19
    Hi Duane
    This might sound a bit goofy, but
    How long have you been running this particular blower?
    In a previous life, I attempted to use a similar leaf blower to clean scrap on one of the machines
    in a manufacturing plant I worked at.
    The blower was running at full 120vac power.
    After about 24 hours, the blower started misbehaving.
    I purchased another blower and after about 24 hours, that one also started acting peculiar.
    When I disassembled the 2nd blower, I found the brushes of the blower and the armature to be in
    a very burned condition.
    I did not try a third blower as I figured the life of the blowers is actually about 48 continuous running hours.
    ..
    I just thought I would chime in here with my past life comments.
    It might be important to your current project.
    ..
    I've been silently following this thread because the subject is very interesting to me.
    Thanks for starting this project!

  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2016-07-22 06:54
    Duane Degn wrote: »
    Sounds like you are having fun but you can drive an incandescent lamp or some other suitable load if you don't want to make a noise. Don't worry about any variations at present, just give it a go.

    This blower doesn't like having its power chopped up. I can use my gadget to power an incandescent bulb and an electric drill but the blower will only work if the power is set to 100% when the blower is turned on. As soon as I adjust the power level to 99%, the blower turns off. The blower remains off even when I turn the power back to 100%.

    The blower only works if the supplied power is at a full 100% when the blower is turned on.

    Any ideas why the blower is so picky about the power supply?

    Here's a link to the SSR I'm using.

    I purchased this SSR a few years ago from MPJA. The SSR I have is white instead of black but the model number is the same as the SSR I linked.

    Any suggestions?

    Do you think there's some gizmo inside the blower preventing it being used with anything but full power? Maybe I could take apart the blower and remove the "feature" preventing from working with my contraption.

    The fact that the blower turns off when you reduce power sounds like it is using an SSR as well that is only triggered at the start of the cycle so if it hasn't got power by then, it will not start or continue to run. In which case you will have to bypass the SSR "on/off switch" if you want to vary the power but you certainly didn't hold back on a more than suitable SSR. But I'm just guessing and you will have to open it up to find out for yourself.

  • Thanks for the input garyg. I've only powered on the blower for a few seconds. I purchased the blower expressly for this project. The blower is a relatively cheap version and it's very likely it could have a short life span.

    Thanks for the information Peter. Yes, I figure I'll need to open the blower up to see what's going on inside.
  • I opened up the blower and didn't find a SSR inside. The wiring is very simple. The three position switch connects the power line directly to motor when in position "2" (high). Position "1" (low) passes the power through a large diode. I believe this blocks half of the AC cycle resulting in the blower receiving half the power. The "0" position is of course just off.

    The diode and switch were the only electronic devices I found inside the blower besides the blower motor itself.

    I think part of my issue was powering my contraption from a battery backup power supply (UPS). I wasn't intentionally using the UPS device, it's just the power stip I was using had been plugged into the USP. Things worked better when I bypassed the UPS.

    Still the blower did not work well with chopped power. When the blower was set to high (position 2) the power control worked reasonably well from 100% power to about 94% power. Below 94% power the blower kind of pulsed on and off. The blower performed even worse when set to low (position 1). With low power (half cycle power), the pulsing began when the power was set below 98% (IIRC).

    While I had the blower taken apart, I was able to power the motor with my bench top power supply with a voltage anywhere from 7V to 19V (the max my supply offers). The current didn't exceed 2A while powered with DC.

    I had a lot of low speed control when using DC power. The AC power control was very limited.

    I wonder if rather than cutting an AC half cycle short, I should instead use kwinn's suggestion of cutting out full cycles.
    kwinn wrote: »
    You could always try controlling the speed by cycle count controlling the power to the motor. Use a zero crossing SSR or zero crossing optotriac driving the triac and cycle power on for x full cycles, off for y full cycles.

    I imagine rather than cutting out full cycles, I could instead cut half cycles. Is there an advantage to cutting out full cycles rather than half cycles?

    Another thought is to drive the blower with DC power and use PWM to control the power to the blower. This seems like a good option for relatively low speeds but I doubt a 24VDC power supply (the largest DC supply I have) would be able to provide nearly as much power as the power provided by an 120VAC outlet.

    I'll try to make a video of my contraption in action sometime this weekend. Maybe if you guys see my contraption in action you'll have some additional suggestions on how I can improve it.

    Thanks again for all the help.
  • kwinnkwinn Posts: 8,697
    Duane, you really should try controlling the speed of the motor by cycling the ac power on/off for full or half AC cycles, particularly if it has a built in zero crossing SSR. It avoids the electrical noise problems of phase control by switching power at the zero crossing, is simple to implement, and works for both universal AC and induction motors.
  • kwinn wrote: »
    Duane, you really should try controlling the speed of the motor by cycling the ac power on/off for full or half AC cycles, particularly if it has a built in zero crossing SSR. It avoids the electrical noise problems of phase control by switching power at the zero crossing, is simple to implement, and works for both universal AC and induction motors.

    Thanks kwinn. I'll give this a try.

    BTW, the blower I'm using does not have an internal SSR. It uses a switch and a diode to cut the power in half for low power mode.

  • evanhevanh Posts: 15,916
    I've only read the last few posts but, having looked at the link for the SSR (http://www.mpja.com/40A-480VAC-Solid-State-Relay-UL/productinfo/17157+RL/), I'd guess you are trying to do phase control with it.

    SSR's like that always use internal optocouplers with zero-crossing activation. So any attempt at phase controlling the SSR will fail. The SSR just won't turn on.

    Phase controllable SSRs do exist but you have to select them explicitly.
  • evanhevanh Posts: 15,916
    I'm seeing some results when searching for "instantaneous turn-on SSR"
  • kwinnkwinn Posts: 8,697
    edited 2016-07-22 22:14
    Duane Degn wrote: »
    kwinn wrote: »
    Duane, you really should try controlling the speed of the motor by cycling the ac power on/off for full or half AC cycles, particularly if it has a built in zero crossing SSR. It avoids the electrical noise problems of phase control by switching power at the zero crossing, is simple to implement, and works for both universal AC and induction motors.

    Thanks kwinn. I'll give this a try.

    BTW, the blower I'm using does not have an internal SSR. It uses a switch and a diode to cut the power in half for low power mode.

    Then it's definitely a universal motor with brushes, so you can use half cycle control if you want.
  • evanh wrote: »
    I've only read the last few posts but, having looked at the link for the SSR (http://www.mpja.com/40A-480VAC-Solid-State-Relay-UL/productinfo/17157+RL/), I'd guess you are trying to do phase control with it.

    SSR's like that always use internal optocouplers with zero-crossing activation. So any attempt at phase controlling the SSR will fail. The SSR just won't turn on.

    Phase controllable SSRs do exist but you have to select them explicitly.

    This seems very likely.

    I'm guessing kwinn's suggestion of using using half cycles for control would be a better option.

    If any of you have suggestions on what sort of TRIAC would be suitable for this application, I'd love to hear them.

    When I looked at TRIACs at DigiKey, I was overwhelmed by all the options.

  • kwinnkwinn Posts: 8,697
    edited 2016-07-23 01:49
    Duane Degn wrote: »
    evanh wrote: »
    I've only read the last few posts but, having looked at the link for the SSR (http://www.mpja.com/40A-480VAC-Solid-State-Relay-UL/productinfo/17157+RL/), I'd guess you are trying to do phase control with it.

    SSR's like that always use internal optocouplers with zero-crossing activation. So any attempt at phase controlling the SSR will fail. The SSR just won't turn on.

    Phase controllable SSRs do exist but you have to select them explicitly.

    This seems very likely.

    I'm guessing kwinn's suggestion of using using half cycles for control would be a better option.

    If any of you have suggestions on what sort of TRIAC would be suitable for this application, I'd love to hear them.

    When I looked at TRIACs at DigiKey, I was overwhelmed by all the options.

    Pretty much any triac with a suitable voltage and current rating will work as long as you use a zero crossing optotriac (MOC3031,2,3 or similar) to drive it. I would suggest one with a 200-250V and 6-10A RMS current rating. Very little difference in price between a 4amp and a 10amp triac.

    PS. might be worth comparing the cost of the optotriac and power triac to the cost of a zero crossing SSR. The zero crossing detector is not an absolute requirement in either case.
  • evanhevanh Posts: 15,916
    edited 2016-07-23 02:17
    Best advise I have is triacs tend to be under-spec'd on their component specs. Buy a higher voltage rating than needed. You can't overdo the current rating, triple or quadruple it. Combine them with snubbbers to limit over-voltage stresses. Same story for its driving optocoupler. Basically, strongly overrate the SSR design.

    Bulky heatsinks also can be important, the same as any power device, but I've not seen direct evidence that they're compulsory. Most systems that have regular failures are solved by up-spec'ing the SSR itself.
  • evanhevanh Posts: 15,916
    edited 2016-07-23 02:40
    PS: The optocoupler is the component that dictates the operating mode. For phase control, where the opto input is controlling the timing, all you want is the simplest version of a triac driver, ie: without the zero-crossing turn-on.

    I recommend MOC3053 as a good all-rounder for this job. MOC3023 would also be fine on 120Vac supplies.
  • evanhevanh Posts: 15,916
    Another approach is use a diode and IGBT as DC power to the motor.
  • evanhevanh Posts: 15,916
    edited 2016-07-23 02:55
    Hang-on. Throw all those suggestions away for the moment.

    Just stick with what you've got and try that pulsing half cycles idea. It'll likely do a good enough job.

    As long as you are roughly in phase with your timing, a pulse that lasts for a half cycle period should be guaranteed to give you exactly one half cycle pulse of real power. It'll be the subsequent half cycle rather than the one you triggered on as that's when the zero-crossing circuit picks up your on-signal at the optocoupler.
Sign In or Register to comment.