KUNST
SCHÖNHEIT & WELLNESS
HANDWERK
KULTUR & GESCHICHTE
UNTERHALTUNG
UMFELD
ESSEN & GETRÄNKE
REVERSE ENGINEERING
WISSENSCHAFTEN
SPORT
TECHNOLOGIE
WEARABLES
Cruise Control - Teetor's Speedostat
Martin

Erstellt von

Martin

31. August 2026NO
2
0
0
0
0

Cruise Control - Teetor's Speedostat

Ralph Teetor was blinded in an accident at the age of five and became an engineer anyway, running Perfect Circle in Indiana. The story he told about the idea is that riding with his lawyer, who slowed down whenever he was talking and sped up whenever he was listening, was making him seasick. He patented a speed-holding device and it reached the public as the Auto-Pilot on the 1958 Chrysler Imperial. The mechanism is a governor in the direct line of the 1788 flyball: the speedometer cable spins a magnet, its drag against a spring gives a position proportional to road speed, and that position lets manifold vacuum pull on the throttle linkage. No electronics anywhere. It is also the first loop in this batch whose entire job is rejecting a disturbance. Nothing asks the car to change speed - the setpoint sits still for an hour - and everything the controller does is answering the road. A four per cent grade, which is an ordinary motorway hill, more than doubles the force a 1500 kg car needs at 100 km/h, and it arrives without warning. That is why a proportional controller alone cannot do this job. It only produces extra throttle by being wrong, so on a hill it settles several kilometres an hour slow, and the gain that would fix that is past the point where the driveline lag turns the loop into a surging oscillator. The throttle has to end up somewhere new while the speed ends up exactly where it started, and only an integrator can hold an output with no input left to sustain it - Maxwell's distinction between a moderator and a governor, arriving in a car ninety years later. The reason it is fitted is not comfort. A driver whose speed wanders a few kilometres an hour burns a couple of per cent more fuel, which across a fleet of lorries is the whole business case.
Fortgeschritten
4 hours

Anweisungen

1

A motor, a slotted disc and a thumb

Cut a 60 mm disc with twenty slots around its rim, fit it to the geared motor's shaft and straddle the rim with the optical detector. Mount a lever with a rubber pad where you can press it against the disc's edge. That lever is the hill, and being able to apply a disturbance ON PURPOSE, repeatably, is what makes the next step an experiment rather than a demonstration.

Materialien für diesen Schritt:

Baltic Birch Plywood (1/8 inch, 12x12, 10-Pack)Baltic Birch Plywood (1/8 inch, 12x12, 10-Pack)1 Blatt
Geared DC Motor (12V, Low RPM)Geared DC Motor (12V, Low RPM)1 Stück
Optical Detector / Phototransistor - QRD1114Optical Detector / Phototransistor - QRD11141 Stück
O-Ring Assortment Kit (Nitrile)O-Ring Assortment Kit (Nitrile)1 Set

Benötigte Werkzeuge:

Craft KnifeCraft Knife
Digital Caliper 6-InchDigital Caliper 6-Inch
Cordless DrillCordless Drill
Steel Ruler (30cm)Steel Ruler (30cm)
2

Proportional, then proportional plus integral

One constant switches between a 1950s vacuum servo and what replaced it. Log the speed to the serial plotter and press the lever for five seconds at a time. In proportional mode the speed sags while you press and stays sagging. Switch to PI and it sags, then climbs back to exactly where it was - and you can watch the integral term filling up in the fourth column as it does.
speed_regulator.inocpp
// A speed regulator with a load disturbance you apply with your thumb.
//
// This is the cruise-control problem in miniature and it is NOT the same problem as the
// heater loop. There the job was to reach a setpoint; here the setpoint never moves and
// the whole job is rejecting a disturbance -- a hill, a headwind, a trailer, or in this
// case a finger on the flywheel.
//
// Hardware: a geared DC motor with a slotted disc on the shaft, an optical detector
// straddling the disc, and a logic-level MOSFET driving the motor from PWM. Put a rubber
// pad on a lever where you can press it against the disc rim: that is the hill.
//
// Set MODE = 1 for proportional only and watch the speed sag whenever you press. Set
// MODE = 2 and the sag disappears -- slowly, because the integral has to accumulate.

const int PIN_MOTOR = 9;       // PWM to the MOSFET gate
const int PIN_TACHO = 2;       // optical detector, interrupt-capable
const int SLOTS     = 20;      // slots in the disc

// 1 = proportional only (a 1950s vacuum servo)   2 = proportional + integral
const int MODE = 1;

const float SETPOINT = 60.0;   // rev/min
const float KP       = 1.8;    // PWM counts per rev/min of error
const float KI       = 0.6;    // PWM counts per rev/min per second
const float DT       = 0.10;   // seconds per loop
const float OUT_MAX  = 255.0;
const float OUT_MIN  = 0.0;

volatile unsigned long pulses = 0;
float integral = 0.0;
unsigned long tPrev = 0;

void countPulse() { pulses++; }

void setup() {
  pinMode(PIN_MOTOR, OUTPUT);
  pinMode(PIN_TACHO, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PIN_TACHO), countPulse, RISING);
  Serial.begin(115200);
  Serial.println(F("t_s,rpm,output,integral"));
  tPrev = millis();
}

void loop() {
  if (millis() - tPrev < (unsigned long)(DT * 1000)) return;
  tPrev = millis();

  noInterrupts();
  unsigned long n = pulses;
  pulses = 0;
  interrupts();

  float rpm   = (n / (float)SLOTS) * (60.0 / DT);
  float error = SETPOINT - rpm;

  float raw = KP * error;
  if (MODE == 2) raw += KI * integral;

  float out = constrain(raw, OUT_MIN, OUT_MAX);
  // Anti-windup again: hold the integral still whenever the motor is flat out, or a hard
  // press followed by a release sends the disc to full speed while the term unwinds.
  if (MODE == 2 && raw == out) integral += error * DT;

  analogWrite(PIN_MOTOR, (int)out);

  Serial.print(millis()/1000.0, 1); Serial.print(',');
  Serial.print(rpm, 1);             Serial.print(',');
  Serial.print(out, 0);             Serial.print(',');
  Serial.println(integral, 1);
}

Materialien für diesen Schritt:

IRF540N N-Channel MOSFET (10-Pack)IRF540N N-Channel MOSFET (10-Pack)1 Packung
1/4W Resistor Kit (600pcs, 30 Values)1/4W Resistor Kit (600pcs, 30 Values)1 Set
Dupont Jumper Wire Set (M-F, 40-Way)Dupont Jumper Wire Set (M-F, 40-Way)1 Set

Benötigte Werkzeuge:

Arduino Uno R3 SMDArduino Uno R3 SMD
Breadboard - ClassicBreadboard - Classic
Desktop ComputerDesktop Computer
Bench Power Supply (30V/5A)Bench Power Supply (30V/5A)
3

The hill in newtons, the droop in km/h, and four schemes

Loading Jupyter Notebook...

Benötigte Werkzeuge:

Desktop ComputerDesktop Computer
4

Compendium: what must happen when you touch the brake

A cruise control is the first feedback loop most people meet that can hurt them, and most of the engineering is in getting OUT of the loop rather than staying in it. The brake pedal must disengage the system through a path that does not depend on the controller being healthy - on the vacuum systems a mechanical valve dumped the servo the instant the pedal moved, and modern installations still use a separate switch wired so that a failure disengages rather than engages. The clutch does the same, because a loop that keeps asking for speed with the driveline disconnected will take the engine to its limit in a couple of seconds. There is also a lower speed limit, typically around 40 km/h, and it exists because the car's own speed time constant grows as it slows and the loop's margin shrinks with it. The awkward disturbance is the downhill one. On a four per cent descent the road supplies more force than the drag absorbs, so the throttle shuts and the car speeds up anyway - the actuator has run out of range in the direction it needs, exactly like the aileron on its stop in blueprint 2. The controller has nothing left to do and the integral will wind itself backwards unless clamped. The answer is an actuator that can take energy OUT, which is why systems that hold speed downhill are wired to the transmission or the engine brake and not only to the throttle.

Benötigte Werkzeuge:

Notebook and PencilNotebook and Pencil

Materialien

7

Benötigte Werkzeuge

9
Geschätzte Gesamtkosten
€2.00

CC0 Gemeinfrei

Dieser Blueprint ist unter CC0 veröffentlicht. Sie dürfen dieses Werk für jeden Zweck frei kopieren, ändern, verbreiten und verwenden, ohne um Erlaubnis zu fragen.

Unterstützen Sie den Maker, indem Sie Produkte über seinen Blueprint kaufen, wo er eine Maker-Provision von Anbietern festgelegt, verdient. Oder erstellen Sie eine neue Iteration dieses Blueprints und verbinden Sie ihn in Ihrem eigenen Blueprint, um Einnahmen zu teilen.

Diskussion

(0)

Anmelden um an der Diskussion teilzunehmen

Kommentare werden geladen...