Motor & Neopixels from one FET

I’m looking to experiment with a motorised blade plug, utilising a step down regulator inside the plug to power a 3.0V motor off of the 3.7V neopixel blade connector.

The motor will spin fine while the blade is on, but my issue is that when my neopixel blade is completely turned off, the power from the fets still flows with no neopixels active, so the motor that’s running off the neopixel power will still spin. You could argue, set the IDLE_OFF_TIME to a very short number and cut power to ALL Fets (which on its own, does cut power to the motor like I’m looking for), but I have chassis neopixels I want to keep going.

Is it possible to create an"IDLE_OFF_TIME" function that is specific to certain FET pins? Or if not, I’m willing to try other options.

(Before anyone asks, I cant use blade ID to define the motor plug any differently, the plug still has neopixels in it anyway. and I can’t use any secondary data lines because I’m using a 10 pole chassis connector and every slot is filled. This must be done within the confines of 3.7v and a positive, negative and neopixel data.)

1 Like

So, I don’t see how an IDLE_OFF_TIME for a specific FET helps you if you don’t have a pin to carry the signal from that FET to the motor?

What are all of your 10 pins for anyways? Can you maybe combine some of them using subblades so you can free up a pin for motor control?

If not, if you really truly don’t have a pin, then the only solution I can think of is to use a WS2811 chip to control the motor. Then you can use subblade() to separate out that particular pixel from the others so you can control it with a style.

So the reason IDLE_OFF_TIME helps in the first place, is if i set it to 0ms, it cuts power to the neopixel pins and the motor immediately, right? But if i have it set at 5 minutes then power to the neopixels will stay on regardless even after the blade is “retracted”, and because the motor is hijacking the power to the neopixels, the motor will only stay on as long as the IDLE_OFF_TIME is set. So ive attempted setting my IDLE_OFF_TIME to 0ms already and it does cut the power to the motor like im looking for, but i have chassis LEDs on different FETs that it cuts power for too quickly if IDLE_OFF_TIME is set at 0ms.

My 10 chassis pins are
Data1,data2,data3,button1,button2,button gnd, 2 positive and 2 negative. Its a crossguard connector and i want separate control over all 3 blades, so no space there.

The WS2811 chip would be a good idea, i know nothing about that type of circuitry but im willing to try if the coding route isnt possible.

On second thought, looking into ws2811 chips, this might be a much easier option than trying to hijack the neopixel power and step the voltage down, the neo chip seems to have much more precise motor control, im looking at this video for reference: WS2811 + L298N = Single I/O Motor Controller - YouTube

So, IDLE_TIME_OFF isn’t actually required for ProffieOS to cut the power to a blade.
If ProffieOS can figure when blade power isn’t required anymore, immediately.
Putting layers after the inout layer can make it more difficult for ProffieOS to figure out when to cut the power.

Also, since you have two power pins and three blades, i assume you have SHARED_POWER_PINS in your config, right?

That’s correct yes, i have two fets for the main blade and one for my two side blades.

Ive tried to find ways of cutting power even with the simplest of blades, just a blue layer with an InOutTrL and nothing else and it still only cuts power after the IDLE_OFF_TIME expires.

I would cheat.
Set IDLE_OFF_TIME to immediately, then for the blades you don’t want to turn off yet, set the Color When Off argument to have a TrDelay of how long you want until you would NORMALLY time out.
Something like 5 minutes:

InOutTrL<TrFade<300>,TrFade<700>,TransitionEffectL<TrConcat<TrInstant,Pulsing<Blue,Rgb<0,0,50>,2500>,TrDelay<300000>>,EFFECT_RETRACTION>>

That’s not normal.
Show me your config file so I can test it.

Here’s my config:

#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 1
#define NUM_BUTTONS 2
#define VOLUME 500
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 2.5
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define SAVE_VOLUME
#define DISABLE_COLOR_CHANGE
#define DISABLE_DIAGNOSTIC_COMMANDS
#define IDLE_OFF_TIME 60 * 5 * 1000
#define MOTION_TIMEOUT 60 * 5 * 1000
#define FETT263_DUAL_MODE_SOUND


#endif

#ifdef CONFIG_PROP
#include "../props/saber_fett263_buttons_OS6_SIMPLIFIED_PWR_LOWER.h"
#endif

#ifdef CONFIG_PRESETS
Preset presets[] = {


   { "kyloren", "tracks/kylo.wav",
StylePtr<Layers<Blue,InOutTrL<TrWipe<280>,TrWipeInX<WavLen<EFFECT_RETRACTION>>,Black>>>()},
};




BladeConfig blades[] = {
{ 0,
// Main Blade
//SubBlade(16, 138, WS281XBladePtr<139, bladePin, Color8::GRB, PowerPINS<bladePowerPin1, bladePowerPin2, bladePowerPin3> >()),

//Short Blade
WS281XBladePtr<139, bladePin, Color8::GRB, PowerPINS<bladePowerPin1, bladePowerPin2, bladePowerPin3> >(),

CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, auxPin, "pow");
Button AuxButton(BUTTON_AUX, powerButtonPin, "aux");
#endif

Either way, i think going the route of using a ws2811 chip is preferable if I can use it to control the speed of the motor like a pixel as well. I’m told I should use something called an H Bridge to achieve this? i know very little about non-proprietary saber electronics so if I could get some help here that’d be great

Thanks brian, as much as this would be a cool solution I imagine that idle off time would still not kick in given the saber would still think its on if there’s any blade animations kicking in. Lets not worry about that for now, I think I’m leaning more towards the ws2811 chip route for more precise motor control.

ok. But just to clarify, FETs should turn off on a per blade basis. Only busy ones stay on, because they’re not IDLE.
Unless I am totally wrong about that.

Not from my experience, im seeing a 3.7v charge between my blade fets and batt+ during my idle off time period, it doesnt get turned off when the blade is inactive

With or without something connected to it?
The voltage might still measure as 3.7 volts even when the FETs are off because of very small leaking current. If something that actually draws power is connected to the FET, then it should measure as ~0 volts.

NoSloppy is right though; FETs should turn off when the blade is not in use.

I tried your config file, and added ENABLE_DEVELOPER_COMMANDS. With that, I can run blade state to find out if the blade is powered or not. According to that, the FETs are turned off as soon as the blade turns off.

1 Like

Interesting, i dont think im going to be going that route for now anyway as I’d love to have speed control over my motor using that ws2811 chip and a drv8833 motor driver H bridge module. I’m having no luck with getting speed control to work so far as its just pumping the full power of the battery into the motor whether I like it or not, any advice here?

How is it currently wired? I lost track if you’ve add that ws2811 chip and a drv8833 motor driver H bridge module or not.
Speed control thought the Proffieboard using LED pad is just the brightness level overall to the blade.
Using White is 100%, while Rgb<128,128,128> would be 50% etc…

Hey Brian, here’s what i have wired up at the moment