0
\$\begingroup\$

First of all I wanted to indicate that I am a novice and the solution to this question is probably obvious so I appreciate the readers taking time to leave a constructive comment. I also wanted to indicate that I am aware of other vib motor drivers available but I already have the WS2811C available at each sensor location so I would really like to stay with an answer that leverages this chip.

Background: I have system that includes a series of WS2811 chips at multiple sensor stations. I need to add a small DC vib motor for haptic indications at each sensor station. since I already have a WS2811 at each station and the library on my uC I had planned to use the Blue output of the WS2811 to drive the 3VDC motor via P-Channel MOSFET as seen below making it simple to control both the lighting effect of the Red and Green channels as well as the Vib effect on the Blue channel.

VIN = Ranges from 3.4VDC to 5VDC

The 3VDC vibration motor (U2 and U4) Digikey PN: 1597-1244-ND. This is a 3VDC motor but when used with short 50% duty cycle PWM signals seems to handle up to 5VDC just fine.

P-Channel MOSFET used in prototype: https://datasheet.lcsc.com/lcsc/2112011530_JSMSEMI-JSM2301S_C916399.pdf

WS2811 Vibration Motor Driver

Problem: I prototyped this circuit and the Vib motors won't turn off. I have been experimenting with the right pull-up resistor between the MOSFET Source and Gate but I am also unsure of the correct drive (R1) resistor value as well.

Possible Solution: Then I found a similar post on this forum Pull up resistor on P-MOSFET gate. Not working where the answer suggested an NPN to drive the P channel MOSFET as well as pull up and pull down resistors.

Questions/Requests:

  1. Since I am using PWM would it be better to use a combination of N and P channel MOSFETS for switching rather than the NPN?
  2. Is this combination of N and P channel MOSFET overcomplicating the solution? Can anyone see a simpler (fewer parts count) approach while still using the WS2811?
  3. I would appreciate feedback on suggested resistor values for the drive, pull-up/downs.

UPDATE: Ok, as suggested I removed the R1 (10K) and I inserted a pullup. I had a 2K laying around rather than a 1K and used that. Hopefully that substitution isn't the issue. However, I still see the same issue.

I am sending a each motor a 500ms ON and a 500ms OFF. The issue is ALL of my motors start to gradually turn on, increase in speed, and never turn off.

enter image description here

I haven't removed the cap. I am guessing that is my problem. Going to try that next.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ R1 is superfluous and 10k is too high, so remove it. Try a 220Ohm resistor from out to vcc to provide sufficient load for the ws8211. \$\endgroup\$
    – Kartman
    May 15, 2022 at 23:21
  • \$\begingroup\$ The WS2811 appears to apply PWM. (The Adafruit datasheet I examined uses terrible English and is not easy for me to follow without repeated re-readings to pick through bits and pieces in the rubble of language I see there.) If I'm interpreting the "Gray level 256 can be adjusted and scan frequency not less than 400Hz/s" (which has units problems, but who is looking anyway) correctly, I gather there is some kind of internal RC clock, which probably drifts around a lot with temperature, that is about 256 times faster or around 1 MHz or better. Before I think about this, am I close? \$\endgroup\$
    – jonk
    May 16, 2022 at 2:14
  • \$\begingroup\$ In the datasheet of this FET I read VGS(th) min 0.4V, max -1V. This missing "-" is probably a type error (or can it conduct at 0V Ugs?). Motor EMI may feed back to this nervous gate, can you try 1nF parallel to R1 to filter such things out? Does the motor spin up if you fully disconnect OUTB of the driver? \$\endgroup\$
    – Jens
    May 21, 2022 at 1:41

1 Answer 1

2
\$\begingroup\$

The current the WS2811 sinks is around 16.5mA (15.5mA minimum). PWM frequency is said to be > 2kHz. Probably there is only a sink, no pull-up. Try this:

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
3
  • \$\begingroup\$ Thanks for the detailed response. I had tried 10K as a pull-up and it didn't work well so I will try a 1K and mark the solution as answered if it works. I tried to find an internal block diagram of the WS2811 to determine if it had any kind of internal pull-up but failed in my search. Ideally I could figure out how to stimulate this in circuitlab to include a PWM generator and a motor but that is probably a thread on it's own. \$\endgroup\$
    – BobLawBlog
    May 16, 2022 at 14:41
  • \$\begingroup\$ I ran a rough simulation with a similar MOSFET to get an idea. This is what I did (50% duty cycle as shown). I don't think Circuitlab has as much flexibility as LTspice in sources. The diode is to get the current source to saturate at minus a few hundred mV and the load (motor + diode) is represented by the resistor. \$\endgroup\$ May 16, 2022 at 17:53
  • \$\begingroup\$ See my update. This didn't resolve the issue. Do I need to remove the C2 caps? R2 resistor? \$\endgroup\$
    – BobLawBlog
    May 20, 2022 at 22:44

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.