www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ampelsteuerung


Autor: Manuel Schmitt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Unbekannter (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LOL, Unbekannter, LOL!!
Der war gut!! :-))

Stephan.

Autor: Ithamar Garbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Manuel Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist falsche URL
die ist richtig:
http://www.goblack.de/desy/mc8051chip/uebung/model...

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cooler link :)

Autor: manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.