I am in need of a current controlled audio range (output around 1000 Hz) oscillator/multivibrator circuit. To make the result sound nice, I want to oscillator to have a 50% or near 50% duty cycle. Previously I've used a current-controlled 555-based circuit whose output I passed into a T-Flipflop to get a 50% duty cycle. But as I have now redesigned the circuit to eliminate a part, there no longer is a free T-Flipflop left to halve the frequency.

How can I build a current-controlled oscillator with the following parameters?

  • operating frequency range around 500 Hz to 2000 Hz
  • works with inputs of 80 µA to 250 µA (does not need to map to the range above)
  • the current comes from a current mirror which I can attach either to VCC or GND
  • works with 3V supply voltage, ideally down to 2.5V-ish
  • low power consumption (operated by a CR2032 cell)
  • 50% or near 50% duty cycle
  • built from as few extra parts as possible

I have four inverters of a 74HC04 hex inverter chip left over which I could use for this. I fiddled with a two-inverter multivibrator, but I wasn't able to find a way to find a way to make its frequency configurable without sacrificing the 50% duty cycle.

Two of these four inverters are needed to drive a piezo speaker from the oscillator as a kind of bridged amplifier, but it might be possible to integrate these into a multivibrator design somehow instead of just driving the two inverters from the oscillator.

I also tried using a TLC556 (CMOS dual 555) where one is in astable mode, triggering the second one in monostable mode where both have their frequency controlled by outputs of the same three-way current mirror and the monostable 555 circuit has half the frequency, but matching the parts such that it really works out to 50% seems tricky to get right. It might also work to use one of the two 555 circuits as a T-flipflop, but I wasn't able to find a way to do so.

Any ideas?

  • \$\begingroup\$ @TonyStewartEE75, not at all easy getting the OPs stated 50% duty cycle. You'll have pretty big tolerances across V/°C/parts for frequency and duty with RCs and non-Schmitt inverters at OPs frequency. \$\endgroup\$
    – TonyM
    Apr 25, 2022 at 22:53
  • \$\begingroup\$ @TonyM It doesn't have to be exactly 50% but I'd like to be close. I can switch to Schmitt triggers if needed I think. \$\endgroup\$
    – FUZxxl
    Apr 25, 2022 at 22:56
  • \$\begingroup\$ @TonyStewartEE75 I want to have the frequency controlled by the current consumed by some other circuitry. To do this, I've so far used a current mirror to charge the 555's capacitor. I am open to different ideas. \$\endgroup\$
    – FUZxxl
    Apr 25, 2022 at 23:10
  • \$\begingroup\$ @FUZxxl Your constraints aren't very clear to me. Some things are (you appear unwilling to consider a TFF to get the 50% requirement.) But there are a lot of holes I see (in contrast, you seem perfectly willing to consider a 555) and too many suggestions come to mind to consider listing them given my own confusion. My own choice would probably to be an RC relaxation oscillator (BJT with a 2.2 V trigger or PUJT based) and a TFF of some kind or else a 4000 series CMOS part for low currents. But it's probably not something you'd consider. So I'm off to other things. \$\endgroup\$
    – jonk
    Apr 26, 2022 at 0:56
  • \$\begingroup\$ @jonk I could use both but then I would probably have to use two extra parts instead of just one. The goal is to make the circuit simpler. I already have a somewhat workable solution with two parts. \$\endgroup\$
    – FUZxxl
    Apr 26, 2022 at 6:35

1 Answer 1


After fiddling with this for a few days, I came up with the following circuit:


simulate this circuit – Schematic created using CircuitLab

Here V1 is the logic voltage source and D2, D4 are the internal clamping diodes of the inverters. The principle of operation is as follows: initially both capacitors are discharged and the two inverters assume a random configuration with one output high and the other low. Let's say NOT1's output is high and NOT2's output is low.

The current source then charges C1 until the input voltage of NOT1 rises above the threshold, causing it two switch. As C2 is discharged, NOT2 will switch too. Now C1 is pulled high by NOT2 and is thus rapidly discharged back to VCC through D2, returning the circuit back to the original state but with outputs flipped.

The max frequency is bounded by how fast the capacitors can be discharged with no lower bounds. If the current source is disabled, oscillation ceases. If C1 and C2 have matched capacity, I expect the duty cycle to be 50%. Other duty cycles can be achieved by varying the ratio of capacities.

The frequency is described by 5 parameters: the current \$I\$, capacities \$C_1\$ and \$C_2\$, the voltage drop \$U_D\$ of diodes D2 and D4, and the high level threshold voltage \$U_H\$ of the inverters.

The multivibrator changes state once one of the capacitors is charged from \$U_D\$ to \$U_H\$. Using the law \$CU=It\$, this time is described for \$C_1\$ by

$$t_1={C_1(U_H-U_D)\over I}$$

and hence the oscillation frequency is:


It seems to work well in practice. The noise and spikes are due to me measuring at the speaker pin, there's no such noise when I measure the logic outputs (but I forgot to take a picture of that).

The duty cycle is not at 50% due to parts variance in the capacitors. One has 92 nF, the other 102 nF. In the final build I'll probably select matching capacitors.

the multivibrator in action, driving a piezo speaker

  • \$\begingroup\$ Unfortunately this is a very bad circuit. It's tuned around the output current and input thresholds of the particular gates you have. So it will vary considerably from part to part. Getting it doing something in simulation or in a one-off build does not make it a good engineering solution, I'm afraid. You've only got yourself to convince so you've accepted your own answer but it's not a solution for the reasons given. \$\endgroup\$
    – TonyM
    Apr 28, 2022 at 21:51
  • \$\begingroup\$ @TonyM How is the output current relevant if he current source delivers a lot less current that the gates can sink? The input thresholds should be the same for two gates on the same chip, so I expect there only to be a factor of proportionality. And other inverter based oscillators are widely used, so I don't really buy it. Maybe you can provide a more specific example of a problem? \$\endgroup\$
    – FUZxxl
    Apr 28, 2022 at 22:10
  • \$\begingroup\$ I highly suggest you actually build it :) \$\endgroup\$ Apr 29, 2022 at 3:56
  • \$\begingroup\$ @Kubahasn'tforgottenMonica I've built the circuit and it works very well. The duty cycle is very close to 50% without looking too close at the parts and the waves are very rectangular. \$\endgroup\$
    – FUZxxl
    Apr 29, 2022 at 21:52
  • \$\begingroup\$ @TonyM I've tried the circuit and it works very well for my application. I have so far only noticed one problem (circuit enters a meta-stable state when the input current is too high) but that's not really an issue in my use case. \$\endgroup\$
    – FUZxxl
    Apr 29, 2022 at 22:04

Your Answer

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

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