How to use Arduino to read 12v and control a 12v motor

Hey guys, first time poster here and I'm not sure this is in the right section, but I'm looking for some guidance on how to design my project.

I've found the perfect use for my arduino, but I'm not entirely sure how I can implement it. The idea is to replace the blower motor in my car with an Arduino controlling the motor using PWM instead of how it is currently using coils of wire to limit the current. There are kits that exist already that do this job perfectly fine without using a micro controller, however these all use a dial whereas I will be needing to use the 3-way switch already in the dash of my car.

The switch currently has 4 positions, the first is OFF and then the other three sends 12v through 3 different wires that go in to 3 different coils of wire, each of varying resistance to control the motor like is shown below:

So my plan is to run all 3 of these wires, each to different pins of the arduino and whenever it sees 12v on one of the wires, it will send a PWM signal to the motor of different duty cycles depending on which pin is active.

This is the circuit I plan to use for each signal wire going to the arduino to convert 12v in to something like 5v, but this will require duplicating this circuit 3 times for each pin, maybe that's not the best way?

Then, I was going to use a PWM signal from the arduino, going in to a MOSFET to control the motor. One of the things I'm not quite sure about with this is how to get a constant 12v at the MOSFET, ready to send it through to the motor when commanded. Is there a way I can join all 3 signal wires together so there's always 12v at the MOSFET?

Please let me know if you have any ideas on how I could implement this. I'm still learning this stuff, so please bare with me, and any advice/criticism will be well received :slight_smile:

Thank you all in advance!

Your motor picture is missing.

For input you can use a voltage divider or the safer circuit you presented.

For output use the entry with the highest speed. If the positive power entry has to be switched you need a high-side driver. A low-side driver (n-channel logic MOSFET) only allows to switch the negative power entry of a device.

DrDiettrich:
Your motor picture is missing.

For input you can use a voltage divider or the safer circuit you presented.

For output use the entry with the highest speed. If the positive power entry has to be switched you need a high-side driver. A low-side driver (n-channel logic MOSFET) only allows to switch the negative power entry of a device.

Thanks DrDiettrich, I didn't know that I would only be able to switch the negative with a MOSFET. Might have to rethink this as I had planned to only interface with pins 2, 3 and 4 as I have a connector already to cleanly connect to that harness.

The opto isolators are a good idea - car electrics can be very noisy.

You could , via a potential divider , take the supply voltage to the motor across to an analog input and compensate for any voltage variations with the PWM output to the motor .

I would use a 7809 to give a 9v supply to Vin .
Have a google at noise suppressing in cars .
Nice little project !

hammy:
The opto isolators are a good idea - car electrics can be very noisy.

You could , via a potential divider , take the supply voltage to the motor across to an analog input and compensate for any voltage variations with the PWM output to the motor .

I would use a 7809 to give a 9v supply to Vin .
Have a google at noise suppressing in cars .
Nice little project !

Thanks. That's a good idea using the 7809 chip, I assume you're talking about using it to power the Arduino? SO I won't need to worry about heat dissipation?

Yes that’s the idea , also helps with noise rejection too.