Do you like wind blowing in your face while driving or have a technical fetish for BLDC motors? Then this souped up Camry Blower motor might be for you. By spinning @ 3900 RPM vs. 2600 RPM for the stock motor, the pressure in the vents will be bigger and let the AC or heater reach the back seats better.
Warning: using hobby quality parts for automotive applications is insane and laughable, but it's unlikely a failed fan will cause a disaster.
Step 1: Original Motor & Impeller
Note the ingenious air duct that keeps the motor cool.
Step 2: Get a 3rd Party Clone (optional)
I left the original motor untouched for backup and ordered a clone
Step 3: Get a Motor and 3D Print an Adapter
I wanted the motor to spin 1.5 times faster than 2600 RPM. Looking at a torque vs RPM curve for a BLDC motor, it seems the RPM @ peak power is 1.3x less than the no load speed. So that calls for a 423KV motor.
I ended up choosing the 450KV Turnigy SK3 5045. When I tested it with the impeller, the RPM at full blast was almost exactly 3900. So either my estimate was good or lucky. To measure RPM, I used an oscilloscope to measure the voltage between 2 of the 3 phases.
Since the new motor is much smaller and lighter than the original, an adapter is needed. I made one in Blender and 3D printed it. Note the cooling slots.
The impeller is connected to the motor using the included propeller adapter. Taking the impeller off the original shaft takes some effort. I used a hammer and rod to pound it out.
Step 4: Build the Controller
For the motor driver, I just used a model plane speed controller, the HobbyKing Blue Series 30A. Probably not a good choice because it doesn't have adequate cooling to run for extended periods. I might've already seen it throttle down from overheating a few times.
For the controller, I used a STM32F334 on my own break out board. The front panel controls the fan speed using a 500 Hz PWM. It took me a while to realize it was open collector (pull down only).
Timer 1 is set to input capture mode and records the average duration that the signal is low (active). When the timer wraps around (about every 10 pulses), the average duration is used to update the speed controller signal. Basically, it translates 1 PWM to another. If no pulses were detected since the last time the timer wrapped around, the ESC output is set to idle.
Rather than go into detail, I will assume you're familiar with how to wire and program microcontrollers at a basic level.
Step 5: Idle Power Draw and Other Considerations
Most hobby ESCs have a significant idle current. I measured 58mA for the ESC and 78 mA total at the battery terminals, which would drain my Yellow Top deep cycle battery (140 minute reserve capacity) in 31 days. Not a big deal, but could use some peace of mind for extended vacations.
Watch dog timer: one thing I was scared of was if the fan was running at full blast and the microcontroller failed (maybe some inductive spike causes a glitch), the fan could stay on. Therefore, I enabled the watch dog timer in the STM32F334. During normal operation, the timer that measures the duty cycle of the input should wrap around about 20 times a second. Each wrap around interrupt will call the function that updates the ESC duty cycle. So I put the watch dog reset there. If that interrupt stops being called, the watch dog will expire and reboot the MCU and stop the ESC.
Inductive spikes on ESC: Ron from the rcgroups forum said this could be a problem considering how long the wires are from the battery to under the glovebox.
Noise: at low speeds - there is an annoying whine from the ESC's PWM (see oscilloscope in video). I tried programming the ESC to use 16KHz, but that sounded worse than 8 KHz. Can try putting some low ESR capacitors across each of the 3 phases to low pass filter the PWM.
Step 6: Testing
Note: for the original motor, the towel should've be blown harder - I found it took ~10s for the motor to reach full power during the pressure test.
To measure pressure, I used an improvised manometer. The tube isn't perfectly vertical, but I did my best to measure only the vertical rise.
Vents were aimed to point at the tube. Cone was held down firmly to minimize any leaks. And the battery was presumably at full charge.
original motor: 31mm of head = 304 pascals (took ~10s for motor to reach peak)
Neodymium BLDC motor: 43mm head = 422 pascals