|
|
|
|
|
|
#1
|
||||
|
||||
|
Cruise Control Project
Hello Everyone! First of all, I want to say thank you to everyone who’s posted on the forum so far. I haven’t had to make many posts because of the quality and quantity of information on this site! I also want to thank James Dean for the info he provided about the CC in these vehicles.
The cruise control amp on my 80 300D was non-functional when I bought the vehicle. After touching up solder joints, replacing electrolytic caps, and trying to reverse engineer the design, the frustration built enough to motivate me to make my own more modern CC amp/controller board. Also, I haven’t fabbed a circuit board before, so it’s a great learning opportunity. I want to share it here and see if anyone has feedback or ideas. System Overview: The original Mercedes system was comprised of an accelerator linkage actuator, a speed sensor attached to the speedometer, a control stalk on the steering wheel, and a cruise control amplifier/controller. The amplifier took in the speed sensor signal and the control stalk commands, and controlled the speed using the accelerator actuator. I’m lazy and want to keep as much of the system original as possible, so I’m using the stock speed sensor and actuator for now. I even sized the circuit board and connectors to fit inside the original aluminum CC amp box (the one above the brake pedal behind the kick panel). I simply desoldered the connector from the old board and soldered it to the new one, as shown in the photos. A microcontroller (µC) is the brains of the system. The original system included a latching-relay-based safety circuit, which I mimicked in my design; I don’t trust my homebrew µC code enough to give it free reign of my car, regardless of how slow it is! Below are some pictures, followed by some tech details. Block Diagram: ![]() Out with the old and in with the new! ![]() Close up of CC board, see if you can find the "oops-I-made-a-mistake-on-a-footprint" jumper wire ![]() ![]() Bottom of board: ![]() The details about the altered system: Speed Sensor: I didn’t modify the original speed sensor at all. It’s a pretty simple device, basically an inductive sensor that produces a sinusoid with a frequency approximately 2.5x the vehicle speed. E.g. if the vehicle is traveling at 50MPH, the speed sensor oscillates at ~125Hz. The Brains: I used an MSP430G2553 16-bit microcontroller because I have a Launchpad development kit that I’m using to program and debug the µC’s. Also, it runs well on a 3.3V rail and has excellent free development tools, such as an impressive debugger and decent sample code. Currently, I have a finite state machine running on the board, see state diagram below. I might change this in the future to clean up the states. ![]() Currently, the controller calculates a value proportional to the reciprocal of vehicle speed, by measuring the time between speed sensor pulses. It then runs this through a proportional algorithm to keep a constant speed. This configuration has two major disadvantages. First, using the reciprocal of vehicle speed means that the controller scales down its output at higher frequencies, because it interprets the difference of 10MPH and 20MPH as 2x, but the difference between 50MPH and 60MPH as 1.2x. This manifests itself by poor speed regulation at high speeds, and overly aggressive response at low speeds. Second, proportional control alone does not eliminate steady state error, meaning that when the controller is set to keep 60MPH, it will settle out to 55MPH, for example. I’m working on both of these problems currently. The accelerator-linkage actuator: In my vehicle, I have the old-school vacuum actuator. It’s response to voltage and current is fairly non-linear, i.e. it is either full or no "throttle", with a very small region where it provides adjustable "throttle". This is going to be difficult to use in this application and may cause instability, so I might upgrade to one of the more modern servo actuators if I can’t get a stable response by tuning the control loop. I’m driving it via pulse width modulation at 6.7kHz. I believe the original design drove the actuator using a DC voltage, but PWM is more efficient and simple to implement in a digital circuit. Power Stage: The power stage on the first spin of the board includes a switching regulator and an input protection circuit. The function of this circuitry is to provide 3.3VDC to the µC and related circuitry using the 12V battery supply. Apparently, there are some nasty transients in automotive power systems, such as load dump and reverse polarity conditions (see http://www.littelfuse.com/~/media/electronics_technical/application_notes/varistors/littelfuse_suppression_of_transients_in_an_automotive_environment_application_note.pdf). These would trash a normal power circuit, so I included a robust power protection circuit. This circuit prevents voltage above 18V or below 10V from reaching the 12V->3.3V converter. Also, I had never laid out a switching DC-DC converter, so I decided to use one on the first spin of the board. If I do another spin of the board, I’ll probably use a simpler, but less efficient linear regulator and less aggressive protection circuitry. I designed the PCB using KiCAD and had it fabbed using OSH Park. Both worked very well. Hit me up if you want design files. google email benfroelich.
__________________
http://badges.fuelly.com/images/smallsig-us/353045.png- '80 300D naturally aspirated, 147k
|
| Bookmarks |
|
|