So there is a hall sensor on a scooter throttle and it's missing the speed controller. I tested the sensor and it does work. 5V in, and with full throttle it's about 4V and 0.9 when closed.

I want to make a pwm 'dimmer' (actually a motor speed controller which are similar) but I can't find a way except using arduino to measure the analog volts and calibrate it into a 0-255 value which I did last night.

But can someone tell me if this can be done with an op amp and 555, and tune it to have 0-100% duty cycle? The 0% is important as the motor shouldn't start without throttle, but also should be able to reach near 100%.


  • \$\begingroup\$ Sure, let the 555 run at 100 Hz for example. Make the discharge resistor (between pin 6 and 7) much smaller than the charging resistor. Then the voltage across the capacitor will aproximate a sawtooth shape. Use a comparator (or an opamp) to compare that sawtooth with the Hall sensor voltage. At the output of the comparator you will then see a PWM signal related to the sensor voltage ! \$\endgroup\$ – Bimpelrekkie Sep 15 '15 at 17:35
  • \$\begingroup\$ Thanks, I forgot to mention it needs to be tuned for 0% duty duty cycle when off and as close to 100% as possible on high. If it's not too much trouble a rough schematic would be awesome. Otherwise, I will probably just use the arduino since I know I can get a reliable 0-255 duty cycle. Matt \$\endgroup\$ – Matt Sep 16 '15 at 4:20

I expect a microcontroller with an ADC and a timer with output for pwm will be easiest. If you do want an analogue solution, you might look at comparator type relaxation oscillators. See http://www.linear.com/solutions/1417 for example.


Analog solution


simulate this circuit – Schematic created using CircuitLab

This solution uses an LTC6992-1 voltage-controlled pulse width modulator chip to do the PWM.

  • Rset determines the internal master oscillator frequency.
  • R1(LTC) and R2(LTC) determine the internal frequency divider.

The rest of the circuit scales the 0.9 - 4 V signal to 0 - 1 V.

  • R1 and Rg2 provide the offset.
  • Rg1 and Rf set the gain.
  • R5 and R6 form a divider for the hall effect output to bring it below 1 V.
  • The op-amp needs to work with 0 V on the inputs and drive the output down to zero volts. Presumably you will want it to run on a 5 V supply also.

All the resistor values were calculated using a rather interesting document Designing Gain and Offset in Thirty Seconds from Bruce Carter, Texas Instruments. I used Section 2 and Section 4. You should rerun my calculations. A trim-pot or two might not go astray.

Spreadsheet code:

Paste this row into cell A1 and convert text to columns separating on comma. Remove apostrophes to make formulas active.        
Vref,   5,  V
Voutfs, 1,  V
Voutzs, 0,  V
Vinfs,  0.8,    V (after 5:1 reduction)
VinZS,  0.18,   V (after 5:1 reduction)

m (gain),   '=(B3-B4)/(B5-B6)   
b (bias),   '=B4-B8*B6  

Rf, 10000,  ohms (guess)
Rg, '=B12/(B8-1),   ohms
Rg2,    '=B13/10,   ohms
Rg1,    '=B13-B14,  ohms
Vref~,  '=(ABS(B9)*B15)/(B15+B12),  V
R1, '=B14*(B2-B16)/B16, ohms

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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