I am looking for a simple and inexpensive way to replace 12V 12mA piezo buzzer with 1.8~3V 50~80mA vibration motor, something like VC1034H025L. The piezo is driven by 30ms pulses at intervals varying from 570ms down to nothing (i.e. continuous 12V). Note that the actual output is open collector. I have no access to switching element, so I can either assume it does not support much more than 12mA or do some destructive testing (which I'd rather avoid).

Here are some options I've considered:

Option 1: DC-DC regulator, like AP62200. Problem - input capacitor will most likely draw much more than 12mA on start-up. Also these are designed to switch on/off by enable pin, not crude input power application.

Option 2: LDO, like AP7370. The problem is that this will not reduce current, plus a lot of heat to dissipate.

Option 3: 12V capable timer (like NA555) configured for fixed PWM. Problem - while this can reduce median voltage down to 3V, the actual voltage amplitude will still be 12V, and I am not sure tiny motors will be happy with this.

Option 4: boost OC output current capacity by external switch, somehow. Then use either of the options 1-3 above to drive the motor.

Which of the options above would you recommend? Or maybe there is much better solution?

  • \$\begingroup\$ Option 3 would be nice, but this will not provide the >100 mA start current. So option 4 is the entry card. \$\endgroup\$
    – Jens
    Aug 6, 2022 at 1:59

1 Answer 1


I would use option 1 (DC-DC regulator) with the piezo output controlling the Enable input of the regulator. The 'switching element' then only has to handle low current.

The regulator could get its power from the same source that the piezo buzzer did. The VC1034H025L vibration motor has a maximum startup current draw of 120 mA at 1.2 V. A buck regulator using the AP62200 should be ~85% efficient going from 12 V to 1.2 V, so the average supply current at startup should only be ~120*(1.2/12)/0.85 = 14 mA.

To turn on the regulator you will need something that allows its Enable pin to go high when the piezo output pulls low, and a way to stretch the pulse from 30 ms to longer than 570 ms. Here's how you could do it with a 555 timer IC:-


simulate this circuit – Schematic created using CircuitLab

In this circuit the 555 is used as a comparator with thresholds at 66% (going up) and 33% (going down) of the power supply voltage. When the piezo output pulls low it discharges C1 quickly through R1, causing the 555 discharge pin to go open circuit which enables the regulator. When the piezo output goes open circuit it stops discharging C1, which then slowly charges up to 12 V through R2. When the voltage on C1 reaches ~8V the 555 discharge pin pulls low and disables the regulator.

With the values of R2 and C1 shown it should take ~0.75 seconds to turn off after the last piezo output pulse ends.

This solution assumes that you have access to the device's local ground. If you don't then I suggest using an optocoupler to transfer the signal, with an independent power supply. If that is not possible then you might just have to accept that you can't always get what you want...

  • \$\begingroup\$ I actually don't need to stretch output to next pulse, I want the vibration motor to mirror the original behavior of the buzzer. The actual device is ultrasound distance sensor, and the interval between pulses indicates the distance. We want to replace the buzzer with sort of haptic feedback for users with hearing loss. I might still need the timer, though, because 30ms may not be enough for ERM motor to spin up. \$\endgroup\$
    – Maple
    Aug 7, 2022 at 4:04
  • \$\begingroup\$ The biggest challenge, though, would be to preserve compatibility with buzzer for those who want it. At the moment I am considering splitting the solution into two parts. First is internal OD buffer to guarantee required current on the output. This can be done with only two components, N+P FET array and 4-resistor array. Second is vibration motor over-molded together with tiny PCB that converts 12V pulses into something that can drive the motor. This assembly will have a cable with same 2-pin connector as on the original buzzer \$\endgroup\$
    – Maple
    Aug 7, 2022 at 4:13
  • \$\begingroup\$ Ironically, I talked to my manager this morning and it looks like the option to "accept that you can't always get what you want" is also on a table... BTW, you skipped the absolutely mandatory bypass on the input of regulator. When I was considering powering it up from those pulses directly it was major contributor to startup current. Of course, with regulator permanently powered up, it won't be the problem. \$\endgroup\$
    – Maple
    Aug 7, 2022 at 4:20
  • \$\begingroup\$ The vibration motor won't do much with a 30ms pulse so you may still need some hold time, depending on minimum duty cycle required for vibration (you didn't tell us the purpose of the motor so I assumed you just wanted it to vibrate the same whenever pulses were present). I skipped a lot on the regulator, assuming you know what it needs. As you say, with the regulator disabled on startup there there shouldn't be much surge current. \$\endgroup\$ Aug 7, 2022 at 6:36
  • \$\begingroup\$ "The vibration motor won't do much with a 30ms pulse" I guessed that much :( I am ordering some ERM and LRA motor samples to play with, will post additional info when available. LRAs have much faster response time, but even the best of them need around 20ms for one cycle. And they also need driver chips which are real pain to source nowadays. \$\endgroup\$
    – Maple
    Aug 7, 2022 at 6:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.