need design help: an I/O interface @ car moonroof to add 1-touch.

Thread Starter

Steve C

Joined Nov 29, 2008
88
This project should be cake for you guys. It's just digital IO, a 12 volt application.

This one has been a major challenge to me. The goal is to add 1-touch capability to the moon roof and have the moon roof controls work as robust as from the OEM.

DEI makes a great module called a 530T which I want to use because it takes care of some key elements such as a safety shut off and a good way to enable 1-touch without sacrificing non-1-touch capabilities. Unfortunately, the DEI 530T was designed for use with power windows. It has NO capabilities to "turn off" on it's own. The user either initiates a shut down event by pushing a button, or the window reaches the hardstops, and the safety shut down circuit is activated which will de-latch the window motion.

The problem is that my moon roof does not have any hardstops.

This means that to eliminate the OEM control box and have all functions controlled with the 530T will result in the window overshooting the open or vent position, and the "close" position (which is a middle position in between open and vent) never senses at all.

My thought is to use the OEM window control to control the 530T so the limit switches that provide feedback to the OEMcontrol can be used to give the 530T some logic.

I do not want to use the limit switches directly because the OEM control board is electrically fragile and breaks easily. Furthermore, there are multiple limit switches that are used in oddball combinations to tell the OEM controller the window location.

The OEM controller works in the following way:

-Four inputs which are the switches the user interfaces with directly. Simple switch to ground. They are "open", "close (when open)", "vent", and "close (when vented)".

-Switches feed the OEM controller. I would prefer to leave the controller a "black box".

-OEM controller has two outputs, these feed the motor directly. Both grounded, the proper one shifts to hot to make the motor move in the desired direction. This is done inside the controller as a "standard automotive window control relay".

-Switches are momentary SPST. The motor will move as long as the switch is held (input to ground)

-The outputs are disabled in certain positions. For example, a window in a "vent" position will not change the outputs when the open and close switches are pressed. Similarly, when the roof is open or in a position between open and closed, the vent and close from vent switches are disabled from affecting the motor outputs. This functionality must be maintained.

---------

The DEI also has a fairly simple interface:

-Four inputs, two separate ups and downs, interfacable to two separate windows

-Adjustable inputs, can be activated by 12V or by ground.

-Tapping activates 1-touch function. Holding an input for a time then releasing will terminate window motion. This functionality must be maintained.

-Four outputs from two "standard automotive relays". I rewired the relays to have only two outputs but can change this easily. Or only use two outputs also. The change I made was to cut the ground path for one set of relays and feed the outputs from the other set into the cut ground paths. This is what is done in many cars for window switches so the driver and passenger have separate controls for the same window. Same concept.

-------------

What I am trying to design is something that goes in between the OEM black box and the 530T. Something that will be able to sense from the black box when the roof has reached one of the limit switch locations and shut down the 530T. The best method I've found to do this is by adding an inline relay to the motor. By opening the contacts, the 530T senses whatever change it needs to in the motor load to shut down the operation. I can wire this to work by a pulse, a latch that opens, a latch that closes, any number of ways.

The best way it seems to get signal into the 530T is by using the outputs from the OEM device. This will ensure no response from certain buttons (like vent when it is open). But this relies on being able to pulse those outputs at will whic hgives me no feedback to shut down the 530T when at position.

The best way it seems to shut down the 530T would be to put a latch on the OEM control which will shut down automatically when reaching a limit switch, and linking that latch to a relay that passes the 530T output to the motor itself. But doing this prevents using those same OEM control outputs to operate the window to begin with. repeat buttom presses would be unresponsive because the latch would prevent a change in the output, prevent any input to the 530T.

What I tried was the best of both. The switches were wired directly to the 530T inputs, and also to latch the OEM control unit on. This used the OEM control as a shutdown, and used the main switches to activate window motion. What happens in reality, is that pushing any switch will activate the latch which can not be delatched till the window is in that particular position. It is NOT a good solution!

I don't like latches in general either, if there is a better way.

I am not yet comfortable working with PIC devices. I am a hardware engineer but not an EE, so my knowledge is faily limited (also the preference to avoid software solutions like microcontrollers). I am comfortable working with the basic components and basic logic such as gates and 555's, making pcb's via the laser printer method, etc. I'm hoping a solution is workable that uses non-microcontroller components.

at this point, I'm out of ideas. Does anyone here have any thoughts? other methods, or ways to make it work?
 

Thread Starter

Steve C

Joined Nov 29, 2008
88
I think a picture is worth a thousand words. Let me put together some state diagrams, and maybe a boxy mspaint jpg to pitorially represent what I am trying to do.

http://www.p71interceptor.com/windowmodule/installmanuals/dei530t.html

------

bad pic of the switch assembly. Two SPST switches per side with a mechanical rocker/center off.

http://www.cardotcom.com/cars/images01/06mazda6-wagon-sunroof.jpg

---------

OEM function:

The roof is on a single set of rails, slides back and forth. One either end (still no hardstops) are the "vent" and "open" positions. In the middle, is the "close" position.

When Closed:

Vent | Close(fromVent) | Open | Close(fromOpen) || Motor1 | Motor2
0 0 0 0 0 0
1 0 0 0 1 0
0 1 0 0 0 0
0 0 1 0 0 1
0 0 0 1 0 0

When partially Open:

Vent | Close(fromVent) | Open | Close(fromOpen) || Motor1 | Motor2
0 0 0 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 1
0 0 0 1 1 0

When Open:

Vent | Close(fromVent) | Open | Close(fromOpen) || Motor1 | Motor2
0 0 0 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 1 0

When partially Vented:

Vent | Close(fromVent) | Open | Close(fromOpen) || Motor1 | Motor2
0 0 0 0 0 0
1 0 0 0 1 0
0 1 0 0 0 1
0 0 1 0 0 0
0 0 0 1 0 0

When fully Vented:

Vent | Close(fromVent) | Open | Close(fromOpen) || Motor1 | Motor2
0 0 0 0 0 0
1 0 0 0 0 0
0 1 0 0 0 1
0 0 1 0 0 0
0 0 0 1 0 0

---------

530T function:

Inside the 530T are four spdt relays to control window motion. Typically they are separated in pairs and the ground inputs linked. These are wired externally to the purple and purple/black wires found in the 530T manual. I rewired my 530T so the contacts look like the mspaint diagram attached. I can put it back, but thought this would make it easier to wire up the 530T to a single moonroof motor. doesnt have to be that way though.

---------

The state diagrams show why I want to keep the OEM controller. certain button presses result in NO motor action based on window location. That is important!

But it's not so simple I can simply unplug the motor from the OEM controller and insert the 530T.
 

Attachments

Last edited:

Thread Starter

Steve C

Joined Nov 29, 2008
88
So what I did was disconnect the motor from the OEM controller and wire up the 530T to the motor, including NO contacts from a relay in series. The OEM controller outputs were tied together via diodes and connected to the relay coil. So when the OEM controller was active, it enabled the 530T to control the motor.

I then wired up four relays as latches, one per OEM controller input. Pressing an input button would latch on the OEM controller which holds on the enabler relay. The 530 inputs were also tied to the buttons.

The idea was that two conditions would need ot be met to make the motor move. All buttons would start the 530T, but the motor wouldnt move until the OEM controller also enabled motion in that given direction.

And it works. Except pushing ANY button will latch that relay, even if there is no OEM controller output enabling motor motion. This can lock up the OEM controller. Furthermore, the roof needs to reach a position, whether it is vent open or close or else the latches do not deactivate.

It's just sloppy. And there has to be a better way.
 
Top