Forum: Mikrocontroller und Digitale Elektronik Ampelsteuerung


von Manuel Schmitt (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!!!
Ich habe ein Problem mit einer Ampelsteuerung. Ich muss die
Zeitschaltung mit einem Timer überarbeiten. Lasst euch bitte nicht von
der Zeitschleife am Ende irritieren.
Gegeben war eine Ampelsteuerung, die von einem Fußgängerübergang per
Taster unterbrochen werden konnte. Die Zeit zwischen der Umschaltung
der Ampel wird per Zeitschleife(s.Ende) genommen. Meine Aufgabe war,
die Zeitschleife mit einem Timer zu ersetzen.

Hier verfoglt mich das Problem. Ich weiß nicht genau wie ich den Timer
einbauen soll. Sollte ich nach jeder Rot-Gelb-Grün Phase(jedes mal,
wenn die Ampel umspringt) den Timer neu starten?

Kann mir da bitte jmd helfen? Ich komm da gerade echt nicht weiter.
Dankeschön!!!!

mfg
Manuel

von Ulrich (Gast)


Lesenswert?

ohne das ich mir bisher den gegebenen quellcode durchgelesen habe (ich
kann nur die basics von avr-assembler) würde ich eine ampel so lösen:
1. Immer autos Grün
2. Wenn taste gedrückt wird Timer starten
3. Dann immer vergleichen wie groß der Zählwert vom Timer ist und im
richtigen zeitlichen abstand immer die Ampeln umschalten bis die Autos
wieder grün haben und dann den Timer stopen.

von ich (Gast)


Lesenswert?

Also ich würde bei einem Timer0 Überlauf Interrupt ein zuvor definiert
Bitvariable (z.B. Flag) setzen.
Den Timer würde ich auch eine Basiszeit auf 1s einstellen (sofern das
möglich ist).

Als Unterprogramme würde ich meine Ampelzustände definieren.

Im Hauptprogramm kann ich dann mein flag auswerten:
In Worten:
  Wenn flag = 1 dann,
    incr X
    flag = 0
  ende
Mit incr kann ich beliebig Zeiten im Sekundentakt erzeugen.
Wenn X einen bestimmten wert annimmt rufe ich dann einfach den
entsprechenden Ampelzustand als Unterprogramm auf und springe wieder
ins Hauptprogramm.

von Unbekannter (Gast)


Lesenswert?

Esetze doch die komplette Ampel mit einem Zebrastreifen. Die Kreuzung am
besten durch einen Kreisverkehr ersetzen. Funktioniert wartungsfrei.

von Stephan (Gast)


Lesenswert?

LOL, Unbekannter, LOL!!
Der war gut!! :-))

Stephan.

von Ithamar Garbe (Gast)


Lesenswert?

@Unbekannter: Und was machst du mit den Starenkästen, die blitzen, wenn
jemand 1 Sekunde nach Rot-Umschaltung über die Kreuzung fährt? Durch
was ersetzt du die?
Man muss schon alle Unbekannte einer Gleichung berücksichtigen ;)

von Sebastian (Gast)


Lesenswert?

Wie wärs mit echten Starenkästen, also Vogelhäuschen halt?

Aber um wieder ernst zu werden: Kann zwar selbst nicht helfen, da ich
keine Ahnung hab von AVRs und Assambler, aber ich denke es wäre sehr
hilfreich zu wissen was für eine Ampelschaltung das ist. Nur nen
Fussgängerüberweg, ne große Kreuzung, ne dumme einmündung?

von Manuel Schmitt (Gast)


Lesenswert?

Erstmal ein riesen Dankeschön, dass ihr mir antwortet und auchdankean
die tollen Kommentaren, leider sit das aber ein Schulprojekt, um
genauer zu werden eine GFS(wem das was sagt).

Ich habe versucht, im Internet ein Bild von der Steuerung aufzutreiben,
habe aber leider nichts gefunden. Ihr könnt euch die als einfache
Kreuzung zweier Strassen vorsellen, an der an einer Seite einen
Fußgängerüberweg läuft.

Deswegen wird es schwierig werden, den Autos imer grün zu geben. Ich
muss also die Ampeln nach Zeit steuern. Der Fußgängerüberweg wird mit
einem Taster auf grün geschaltet, also per Interrupt.

Die unterschiedlichen Phasen müsste ich dann immer mit dem Timer0
abstoppen, dann die nächste Phase laufen lassen, dann wieder den Timer0
starten und stoppen. Geht das dann so?

von Rahul (Gast)


Lesenswert?

So würde ich es machen:
Mit dem Timer bastelt man sich eine Zeitbasis, die die Grundlage für
alle Ampelphasen bildet (z.B. 1s).
Jetzt hat man eine Variable, die man auf die Dauer einer Ampelphase
setzt (z.B. 30 für 30 Sekunden).
Diese Variable wird beim Timer-Interrupt herunter gezählt.
Im Hauptprogramm wird der Fußgänger-Taster und die Variable auf 0
abgefragt.
Die Ampelphasen werden gezählt, und die Zeiten in einem Array
"vorgehalten". Sobald eine Phase (Variable = 0) beendet ist, wird der
Phasenzähler um 1 erhöht, und sofern noch nicht das Ende der Tabelle
ereicht wurde die neue Phasendauer übertragen.
Da die Fußgängerampel nur dann grün werden darf, wenn der Querverkehr
rot hat, muß man die Kombination überprüfen und gegebenenfalls
(Fußgängerbedarfsmeldung) die Phasen entsprechend ändern (Dauer, grün
für Fußgänger).
Bei einer simplen Kreuzung kann man sich aber die Fußgänger-Taste
sparen, sofern beide Strasse gleichberechtigt sind, da dann die
Fußgänger-Ampel parallel zur entsprechenden Autoampel arbeiten kann.
Sind die Strassen nicht gleichberechtigt, bietet sich noch eine
Induktionsschleife für die Strasse mit der geringeren Priorität an.

@Starenkästen:
Wenn keine Ampel vorhanden ist, werden die wohl auch kaum gebraucht.
Ausserdem sind sie in der Aufgabe nicht gefordert, und wenn dann könne
sie auch auf die Geschwindigkeit der Fahrzeuge reagieren...

von Kai (Gast)


Lesenswert?

schau mal unter Ampelmodell:
http://www.goblack.de/desy/mc8051chip/uebung/index.html
sehr gut gemacht und ausführlich beschrieben.

Ampelsteuerungen scheinen immer noch beliebt zu sein.
Damals auf dem TG haben wir das auch machen müssen

von Kai (Gast)


Lesenswert?


von Kai (Gast)


Lesenswert?


von peter (Gast)


Lesenswert?

cooler link :)

von manuel (Gast)


Lesenswert?

@rahul: der der fußgängerüberweg bekommt erst dann grün, wenn der taster
gedrückt wurde! Die Logik habe ich mir allerdings auch schon überlegt,
da ich die gleiche Steuerung mit Zeitschleife bereits habe. Diese
müsste ich dann nur noch mit dem Timer ersetzen. Bin mir da aber ein
wenig unsicher

@kai: das freut mich, dass ich nicht der einzige bin ^^
Ampelsteuerungen werden wohl auch immer wieder bearbeitet werden

von manuel (Gast)


Lesenswert?

@kai: da hab ich doch glatt was vergessen. Den Link hatte ich auch schon
gesehen, allerdings hat meine Ampel keine Abbiegespur, also ein wenig
simpler ^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.