Control washer motor with arduino (Mosfet problems)

So yeah i got one of those big washing machine motors. I recently made a circuit to measure its speed, which works fine. So now i want to control its speed with my arduino to hold a wanted RPM under load. Because i dont want to fry my 500V Mosfets (and to not electrocute myself) i thought i should test my circuit design with 30V. First problem was that i have a IRFZ44N which needs 10V for switching. so i read i should just use a normal transistor to switch that. For that i wanted to use one of my NPN transistors (80V, 1A). And here where the trouble starts. i got everything wired up like this:


When im now powering up the PSU the motor just starts spinning. Which it shouldnt. the mosfet should be pulled to GND and not conduct anything. When i just control the mosfet as a single unit everything works fine. it turns on and off when touching vcc or gnd. but when putting it in my circuit with the NPN it just starts conducting. I dont know what i do wrong =/ is it even possible to switch a N channel mosfet with a NPN? or do i have to use a PNP? im a bit terrified of PNPs because if i connect their base to my controller the thing just turns on and pulls its power from the transistors base =/

hope someone can help me. thx

Your circuit is completely wrong on every important detail!

Your switching device is n-channel, yet you are using it as a high-side switch - WRONG!
It needs to be a p-channel in that position

You are pulling its gate to the opposite rail, ground, 30V away, exceeds the gate voltage limit!

You have an NPN transistor connected to the +ve rail - wrong again,

You directly connect an arduino pin to the transistors base (I assume you mean the base, I see no
part number, just "NPN"), again wrong, you need a current limiting resistor, but much more
importantly you are feeding 30V into your Arduino pin. (I don't understand why your
Arduino is not toast).

So here are some guidelines:

high side switching = p-channel, low-side switching = n-channel
use a base resistor always.
level shifter is an NPN on the low side - its collector carries the signal up to higher
voltages, perhaps to a resistor in parallel with a zener that provides a limited 10V swing
to a p-channel MOSFET.

If you use n-channel MOSFET you'll need a 12V supply to level shift to for the gate drive
(unless its logic level). Logic level MOSFETs are NOT recommended for high power, you'll
probably want MOSFET driver.

And perhaps the most important thing of all, are you sure your washing machine
has a DC motor supply?

Washing machine motors come in several kinds, you get universal motor with multiple taps (a/c),
direct drive multi-phase motors (possibly DC rail, but usually 3-phase drive), and 3-phase
induction motors.

These days you don't even try to use MOSFETs at high voltages, IGBTs are typically
chosen as they are more robust.

yeah my electric skills are pretty limited =/ im actually a developer, so im lacking any education on that matter.

so its absolutely not possible to use a n channel mosfet for such a purpose? i only have n channel at the moment =/

do i have to pull its gate to 20V to get the 10V difference? how would i do that? voltage divider?

yeah i used this software the first time, and i think the NPN is wired wrong there. but it works in the circuit, so i at least wired it correctly there.

In my real circuit i have a 680R between arduino and its base, i just didnt include it here because the software gave me a slight headache.

so the base of the npn is at 30V?or where do i feed 30V in it? yeah that arduino is for some reason unkillable. i dont know how its still alive. ive done so much wrong with it already. especially pnp transistors...

i dont know how that npn level shifter thing works =/ can you explain?

Nope its not a logic level one. thats the problem. why a 12V psu? to pull the voltage to the correct level so i dont fry it? (in my case that would be 18 V?)

im just using the motor from the washing machine. i wired the fieldwindings up in series with the rotor windings and i can control it fine with my Variac or my DC psu. i also got a 1000V rectifier (KBPC5010). that i want to use so i can use DC for the motor.

can i use igbts directly with my arduino and its pwm? if thats possible i will just get one of those. But a circuit with my mosfets would of course be way cooler.

IGBTs are MOSFETs with an extra layer, they are universally prefered to MOSFETs for high
voltage these days, you drive them basically just like a MOSFET.

You need to study a bit more, if you just wade in you'll blow up all your devices
and become disenchanted. With high power everything has to be right or things explode.

BTW it sounds like you have a universal motor. Typically you'll find a couple
of stator winding taps in a washing machine motor used for speed control, but
you won't necessarily know what DC voltage it needs if its designed for 50 or 60Hz

so are there logic level IGBTs?

but study what? i know the basics of transistors and how u switch them, but how different components work together isnt written up.

yes its a universal motor. i wanted to just use rectified Mains and then use my circuit to maintain RPM

There might be a logic level IGBT, but that would be a rarity. IGBTs typically come
in two voltage ratings, 600V and 1200V. You get modules with complete bridges on
them, but note that IGBTs do not have an intrisic body-diode, some devices include
one and some don't.

When you rectify for a universal motor you will see different currents flow, since the
windings have an inductance that serves to limit current with AC - with DC you don't
get that current limiting and the current may be a great deal more. So I'd first
measure the field winding currents in normal operation to see what is normal...

okay i got it to work with this here

and this is the code:

for anyone who has the same problem. (the interrupt is there to measure time between the pulses from the tachometer. i put a rectifier and a voltage regulator between the tacho and the arduino)

only problem now is that its fluctuating a bit without a load.