User Tools

Site Tools


Sidebar

astra_conv:conversion:cooling_system:cooling_system

This is an old revision of the document!


cooling system

As mentioned before, the motor is foreseen for liquid cooling. Although it can even be operated without, cooling is a safety measure to prevent that the controller throttles down the motor at persistently high load, especially in hot weather.

In contrast to the motor, the controller is air cooled. It also tends to overheat under harsh conditions, so the cooling system includes forced air cooling of the controller. The cooler fan of the air conditioning system is reused for this purpose.

The fans and the coolant pump are independently controlled, depending on the temperature of motor respectively motor controller.


cooler controller

circuitry

The motor cooler's circuitry is shown in below picture. The link below allows to download and view the diagram in full resolution.

link to wiring drawing (jpg), right-click and save as file (or directly open with a picture viewer)

On the left, we see two Microchip PIC16F690 microcontrollers. The upper one controls the A/C cooler fan, the lower controls both the motor cooler fan and the coolant pump. Each microcontroller has its dedicated temperature sensor on the motor respectively the motor controller. A third temperature sensor drives the coolant temperature gauge in the dashboard, when the heater is off (when the heater is on, the temperature of the coolant heater will be relayed to the gauge).

Both fans are driven by a 4kHz pulse-width modulated signal, amplified by MOSFET driver circuits at the right side of the diagram. The thermo switch at the top right of the diagram will interrupt power in emergency.

In the overall wiring diagram, the cooler circuitry is shown near the right edge:

                                                ...   


Below a view of the cooler controller. As usual, I have underestimated the space demand, so the board got quite “crowded” …

The “intermediate” DIP socket is connected to the PIC programmer, to re-flash the microcontroller on-board while writing the software.


cabling

The cooler controller is powered from the original air conditioning cable harness. Supply is tapped from the “Klemme 15A” wire - this is similar to “ignition”, but interrupted when the ignition key is in “start” position.

The A/C fan is also accessed over this cable harness. The motor cooler fan, coolant pump and sensors have dedicated wires. Since PWM signals have considerable high frequency portions, the wire pairs that supply the fans are twisted to minimize electromagnetic radiation.


function

At 50°C, each fan will start at low speed (around 30% pulse width ratio). Up to 60°C, the pulse width ramps up linearly, and stays at 100% above 60°C. The coolant circulation pump will also be switched on at 50°C.

When ignition is switched on, the pump and the fans will be switched on for a few seconds, for test purposes and to avoid that they seize due to long inactivity.

The controller also has two “test modes”. The first test mode switches on the coolant pump, the second test mode additionally runs the fans. The test modes can be selected by pressing a push button switch (under the cooler controller's cover). Pressing the push button a third time will reset the controller to normal mode. Otherwise, the test modes will automatically time out after a few minutes.

The numerous terminals and indicator lamps are quite disorderly arranged, below an explanation.


code

The PIC code was written in Assembler, with the MPLab developer environment.

cooler controller - assembler code. Press "Back" to return to this page.

I had initially tried to elegantly implement the switching between the maintenance modes via interrupts. Unfortunately I failed getting the memory allocation correct (so the linker would always complain about a conflict). So the status of the switch is now simply polled regularly.

Another unpleasant surprise was provided by the port register PORTC. I learned (this is of course already described elsewhere), that for setting a single output bit of the register, the whole register will be read, modified and written back. Consecutively setting different single bits of such a register may result (and it did) in unpredictable behavior due to timing issues. I have therefore implemented a “shadow register” PORTC_S, to which these bit operations are applied, and which as a whole is copied to the port register only once per main loop run.


test run

Test arrangement - neat and tidy …

Driver output voltage (inverted, since the motors are switched against ground) at low, medium and high pulse-width ratio.

It turned out that both fans can be controlled well via PWM signal. However, both do emit quite some audible noise at pulsed operation.


liquid coolant circuit

The liquid cooling circuit consists of the motor itself, a small cooler from a Honda 250 scooter and a circulation pump. Together with the heater circuit (which runs independently and has its own circulation pump), the cooling circuit is connected to the original coolant liquid reservoir. The air buffer in the reservoir will take up thermal expansion of the coolant liquid, and it can be pressurized to ease refilling and emptying of the two circuits.

The cooler got a place near the front grille, at the passenger side. From it's scooter past, it already has a small fan attached.

DIY bleeder screw at the top of the cooler:

*** back to top of this page ***

astra_conv/conversion/cooling_system/cooling_system.1398201170.txt · Last modified: 2014/04/22 21:12 by richard