Converting car's manual ventilation system to semi auto - stepper or servo?

Hello,

Background:
I'm resto-modifying my 1981 car. It has manual HVAC (Heating, Ventilation and Air Conditioning system).

  • Fan is a DC motor and its speed is adjusted in 4 steps by resistors.
  • Mode flaps (air direction) are vacuum operated. Adjusted by electro-mechanical mode switch.
  • Temperature flap is mechanically operated by push/pull cable.
  • Air Conditioning compressor is operated by above mode switch (it gives only ON/OFF signal to engage compressor. Compressor line has HIGH PRESSURE and LOW PRESSURE switches that cycles compressor. It is really simple and bulletproof system based of orifice tube).

Task:
Convert HVAC to semi-automatic what includes:

  • Digital temperature control by knob (ADC from potentiometer)
  • PWM controlled fan
  • Analog gauges displaying inside and outside temperature

Done so far:

  • Fan controlled by stand alone 15A PWM controller (I don't need auto control by Arduino, so I decided to use stand alone unit. I'm just annoyed when fan starts to blow louder then I asked).
  • 2 working and calibrated analogue VU gauges from '80s HiFi system with new temp scale driven by Arduino PWM to show Outside and Inside temperature (just for fun).

Next step:

  • convert Mode Switch from electro mechanical to electrical (by removing mechanical part), this will allow to introduce micro air solenoids to drive vacuum operated actuators (controlled by Arduino with optoseparated relays). I consider this as robustness upgrade as mechanical switch is know for air leaks after few years - rubber sealing parts wearing out).

Issue:
I'm stuck at deciding what solution to use for Temperature flap. At the moment it is metal pull/push cable operated. It rotates about 90 degrees.
It is single flap that is mixing hot and cold air from heater and evaporator.
For correct control my plan is to put few temp sensors (waterproof, digital) :

  • HVAC intake
  • Heater temperature
  • Evaporator temperature
  • Cabin temperature
  • Exit vent temperature

Question:
I'm not sure if stepper motor or servo is more convenient???

I'm worried that if I use servo it will by all means try to reach set position and will burn or damage something (am I right?). Temperatures in car varies from even -30 to +70 degrees Celsius, so I don't think that I can rely on potentiometers in such servo and with predefined range of operation?.

I'm more convinced that is should be stepper motor (I'm actually convinced that's what is used on modern HVACs, based on wiring diagrams), that :

a) will calibrate itself at start of the system. It would reach MIN and MAX to determine range of operation and with that calibration Arduino would adjust its position based on temperature control algorithm.
BUT HOW YOU DO IT?... how you read and define such range? do you predefine some current value for motor stall and read it with ammeter ? do you use end switches on MIN and MAX positon ?...

b) will start operation with X pulses to clockwise direction, that would mean it will always reach MIN position (even from MAX position), where the main loop would start with defined position as 0. Question is, would stepper survive such force calibration?
Should I use some more powerful stepper and put some current limiting resistor in line with stepper to reduce its power (but still have enough juice to operate flap)?

I have an idea how it should be done theoretically, but not sure what hardware/software I need? Is there any shield that would make my life easier? any stepper motor driver like you can find for automotive mini gauge stepper motors (my parallel project is custom gauges, but it seems easier then this..)??

About available equipment:

  • I have Mega 2560 and Uno that I can use for this purpose
  • access to oscilloscope
  • Power supply :
    = car system is based on 12V (realistically it is 7-15V), but for Arduino related/operated circuits I will stabilize it with some 12V unit that will keep nominal voltage for few seconds during crank when I expect to go down to 7V.
    = I also have 5V 12A BUCK unit that I'm using for multiple optoseparated relay boards and gauges.
  • 3d printer for making any required fixtures to connect servo/stepper motor to flap.
  • mini turning machine to optionally make brass bushes for flap shaft to reduce friction required to operate (currently steel to plastic)

My background

  • electrical engineer with 5+ years in automotive electrical harness design (circuits, 3d)

I would appreciate help in determining solution to flap control!

regards,
Dr Emmett Brown

I think it is probably six of one and half a dozen of the other, and both solutions may have similar problems to solve.

When you start a stepper it is not going to "know" where it is. A typical solution to this is to drive it in one direction till it hits a microswitch which tells it is "home". Thereafter you can just count steps and accurately know your position providing you keep the motor within its torque limits and don't skip steps.

The servo should know its position thanks to the inbuilt potentiometer but with a 100DegC temperature range you are right that maybe the positioning would not be that reproduceable. A solution might be microswitches or a position encoder (you could also add an encoder to a stepper).

Another issue to consider is power consumption when not moving. Steppers are very good at holding position but draw relatively high power. In both cases perhaps a solenoid brake should be used so that motor power can be cut when not moving the flap.

This is quite a lot of stuff just to control a temperature flap :slight_smile:

Actually forget that last bit about a brake, the flap should stay in position on its own because of the friction in the push/pull cable. This might sway things a bit towards a servo though.

Hi,
Thanks for your reply.

My plan was to remove cable completely and fix directly to flap shaft or by using lever.
What sort of power consumption we talking when not moving?
When fan will be on full blast, there will be some force applied to a flap, so there needs to be something to hold its position. I plan to measure that force, but question is, what factor should I use when determining motor power? x2? x3? My budget would be $100.

I just sourced some proper HVAC flap actuators from modern car. I will open one today to see what's inside and maybe find some datasheets for components to determine how it's done and what are the parameters... maybe I can recycle this one in my project..

I guess I could reduce number of temperature sensors and it would still work, but as engineer, I just love data :slight_smile:

Here are some tools for sizing.

I have not played with them but they look comprehensive. They will certainly give you an idea of what needs to be considered and by plugging in some numbers (even if they are not for your system) they will probably give you a feel for what is sensible.

When moving things software people often forget about inertia, they expect everything to happen instantly but mechanical systems don't work like that. In your case the flap will have little mass and only needs to move slowly so inertia should not be an issue. As the flap rotates in the moving air flow there may be points where the force on the flap suddenly flips though.

IMHO a servo is very much easier to work with and I would use one unless it proved not to be suitable. Servos "know" where they are and have all their gearing and electronics in a convenient package.

Most servos have a lot of internal friction which can absorb a significant external load before the motor needs to be brought into play.

Try a cheap "standard" sized servo to start with. Then you won't have wasted much money if you find that a bigger servo is needed or a servo is just not suitable.

...R

Thanks for a website with motor sizing! Great website!

I would think that ideally the servo would be best, but ...

please correct my thinking if wrong:

  • If I would add some small resistors inline with power supply, I would reduce motor power by limiting current, but at the same time save its internals and life when running calibration (by that I mean, going one direction and hitting hard stop on flap, saving position as MIN when lets say 3 consecutive readings of position are the same, then doing same, but other direction and being MAX)

  • I found that there are servos with feedback wire available (I guess its normal servo with added wire to internal potenciometer) for example LINK

I guess that should be my solution ?

dremmettbrown:
please correct my thinking if wrong:

  • If I would add some small resistors inline with power supply, I would reduce motor power by limiting current, but at the same time save its internals and life when running calibration (by that I mean, going one direction and hitting hard stop on flap, saving position as MIN when lets say 3 consecutive readings of position are the same, then doing same, but other direction and being MAX)

This is a bit confusing. If it refers to stepper motors then they suffer no damage is the run against a stop. At the same time there is no means to know if they have run against a stop. But that can be overcome by making them move a large number of steps so you can be certain it must have hit the stop. Then the Arduino can treat that as the ZERO position and count steps from that. However that only works for a stop at one end. If you need to detect a stop at both ends you need at least one limit switch, and two would be better.

If you are using a servo the problem should not arise because when you install the servo you can use a test program to figure out the limits and then build them into your main program.

In either case it would be a good idea to build a bit springing into the linkage to reduce the forces at the end stops.

...R

Servo for sure.

The manual system has a lot of friction designed in so that it stays in place during high-g corners. Removing enough friction may be difficult. You may need a big 12V high-torque servo.

I would love to see the modern devices. I've never opened up a modern car's climate control system.

Robin2:
This is a bit confusing. If it refers to stepper motors then they suffer no damage is the run against a stop. At the same time there is no means to know if they have run against a stop. But that can be overcome by making them move a large number of steps so you can be certain it must have hit the stop. Then the Arduino can treat that as the ZERO position and count steps from that. However that only works for a stop at one end. If you need to detect a stop at both ends you need at least one limit switch, and two would be better.

If you are using a servo the problem should not arise because when you install the servo you can use a test program to figure out the limits and then build them into your main program.

In either case it would be a good idea to build a bit springing into the linkage to reduce the forces at the end stops.

...R

Running a stepper motor against a solid end stop will cause it to skip steps. It does not seem like a good idea to do that a lot to me because the setup is almost certain to vibrate and that is going to make noise and could cause damage.
Using the servo the OP is saying there will be an operating temperature range of 100DegC. Will servos position accurately if the temperature is varying between -30C and 70C (without adding an encoder)?

If you go to a junkyard, to find a vent flap, you will likely find it with the ubiquitous 28byj-48 stepper motor. That's why they are so plentiful and cheap - they are made in large quantities for the auto industry. Grabbing one from a wrecked car will also get you the mechanical parts to facilitate the movement.

Thanks for your posts.

I've just read quite interesting article about HVAC stepper motors. Here is link if you also finding it interesting : LINK

I'm not creating high-end, sophisticated system and would like to use existing Arduino libraries, to avoid much coding (not an expert).
I found some interesting information about hacking servos to get feedback from pot.
However stepper motor seems to be a way to go. I will implement starting calibration where I will "overstep" motor to hit FULL COLD position that will be my zero. Flap is plastic, but has rubber rim, so it will nicely absorb any vibrations. I decided to go for mentioned 28byj-48 with 1:64 gearbox as I found in their description that they are used for HVAC actuators as ChrisTenone mentioned.

I think good practice would be to add secondary calibration sequence when flap will be close to reach MAX value (or working close to range). It would "overstep" to hit FULL HOT position and calibrate its position as max step count.

I will start testing next week as waiting now for my steppers, drivers, new blower....

Thanks for your support and any comments are welcome.

dremmettbrown:
I think good practice would be to add secondary calibration sequence when flap will be close to reach MAX value (or working close to range). It would "overstep" to hit FULL HOT position and calibrate its position as max step count.

No, you only need to calibrate one side or the other. Trying to calibrate both is useless as you don't know how many steps you sent past the MAX. All you can tell at that point is that you're at MAX.

I think good practice would be to add secondary calibration sequence when flap will be close to reach MAX value (or working close to range). It would "overstep" to hit FULL HOT position and calibrate its position as max step count.

Why would that be good practice? What advantage would this secondary calibration bring? I don't see any advantage.

There is probability of missing some steps during operation. In example mechanism freezing as Air Con evaporator can even go below zero (that is rather extreme and caused by fault, but possible).
I guess some will say to get move powerful stepper in such case...

Car environment is really extreme (vibration, accelerations, temperatures, humidity, voltage drop, dust, play on crank, wear, material flexibility changes etc.) - self-correction to adopt to new conditions is really an advantage, unless you want to spend hours on writing code to compensate impact from all above. Remember that this goes under dashboard, I don't plan to remove it in next 10 years minimum. It will run even up to 8h at a time, but sometimes only a minute. There is nearly no const, but a lot of variables.

I still think re-calibration, when close to extreme (MIN or MAX) is an advantage to be sure that flap can achieve closed position (a real closed position).

dremmettbrown:
I still think re-calibration, when close to extreme (MIN or MAX) is an advantage to be sure that flap can achieve closed position (a real closed position).

You probably only need to detect fully-closed and as I suggested in Reply #7 that can be done either with a limit switch or simply by driving the stepper "too far" on purpose.

Driving the motor "too far" will result in missed steps but they don't matter - provided of course the motor is not so strong as to damage its gearbox or the device it is trying to move.

If you need to check the position when closed and check the position when open you will need to use a limit switch at each extreme. Somehow I can't imagine car manufacturers being that profligate.

If you watch the instrument panel on a modern car with stepper motors driving the instrument needles you will see at start-up that they run all the way to zero as a means to calibrate them without the added expense of limit switches or other detectors.

...R