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
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.
- 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?
- 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?
- 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.
I haven't removed the cap. I am guessing that is my problem. Going to try that next.