Forum: Mikrocontroller und Digitale Elektronik Hilfe Ampelsteuerung


von AndyT (Gast)


Lesenswert?

Hallo

Ich möchte gerne eine Ampelschaltung realisieren mit folgenden Vorgaben:

30 Sekunden vor Startzeit 1 rotes Licht
10 Sekunden vor Startzeit 2 rotes Licht
5 Sekunden vor Startzeit bis Start gelbes Blinklicht (jede Sekunde)
Start: grünes Licht
Nach dem „GO“ Signal: 20 Sekunden freier Start(grünes Licht)
Danach 30 Sekunden bis Neustart

Spannung zwischen 1,5V-24V DC
Lichter SMD-LED's

Hat jemand eine Iddee?

Danke schon mal im Voraus!

von Karl H. (kbuchegg)


Lesenswert?

Die wichtigste Frage:
Wie sind deine Vorkenntnisse.

Denn vor dem 'Wollen' kommt das 'Können'

von AndyT (Gast)


Lesenswert?

Wenn ich den Schaltplan hätte oder zumindest nen groben Plan dan würde 
ich das schon hinbekommen Problem ist nur das ich im Moment 0 Plan habe 
wie das hinhauen soll;)
Handwerklich besteht kein problem.

von Karl H. (kbuchegg)


Lesenswert?

AndyT schrieb:
> Wenn ich den Schaltplan hätte oder zumindest nen groben Plan

Oh. Das wird schlecht.
Denn sowas diskret aufzubauen - ok, machbar ist das schon - aber 
eigentlich verdammt aufwändig.
Mit einem µC wärs um einiges einfacher im Aufbau. Allerdings muss man 
das ganze dann auch programmieren. Das ist auf der einen Seite zwar gut 
für den einfachen Aufbau. Auf der anderen Seite aber schlecht, weil noch 
eine Komponente mehr dazu kommt.

> dan würde
> ich das schon hinbekommen Problem ist nur das ich im Moment 0 Plan habe
> wie das hinhauen soll;)

Eine Uhr - und deine Ampel ist ja im weitesten Sinne eine Uhr - hat 
IMMER irgendeine Form eines Schwinggliedes, der einen Takt erzeugt. D.h. 
ohne wirds schon mal nicht gehen.
Und der Rest - nun das sind Takte zählen und je nach Zählerstand 
leuchten andere Leds.

von Karl H. (kbuchegg)


Lesenswert?

Sieh dir zb das hier mal an
Beitrag "Lauflichtsteuerung"
und stell dir einfach mal vor, dass da einige LED nicht bestückt wären.

Der ganze linke Teil erzeugt den Takt. die beiden 4017 sind Zähler, die 
Taktpulse zählen und je nach Zählerstand geht ein Ausgangspin nach dem 
anderen auf 1. An den Ausgangspins hängen LED. Zb eine rote LED an den 
Pins ....

(Die Sache mit den 2 4017 brauchst du ja so nicht, wohl aber das Prinzip 
um Sekundenpulse zu erzeugen bzw. die Pulse zu zählen ....

von AndyT (Gast)


Lesenswert?

Also am einfachsten das ganze mit einen µC steuern und dann die LED's an 
die Portanschlüsse

von amateur (Gast)


Lesenswert?

Unter Start(zeit) verstehe ich immer irgendeine Aktion. Z.B. Knopfdruck.
Wie aber lässt sich: "30 Sekunden vor Start" erfassen?
Oder soll das System automatisch, zyklisch (30/10/5)s + 20s + 30s 
laufen.
Was soll eigentlich in den 20 Sekunden passieren? Nur Grünlicht?

von Karl H. (kbuchegg)


Lesenswert?

amateur schrieb:
> Unter Start(zeit) verstehe ich immer irgendeine Aktion. Z.B. Knopfdruck.
> Wie aber lässt sich: "30 Sekunden vor Start" erfassen?

Ich denke die ganze Beschreibung sollte auf
"der Ablauf beginnt mit einem Knopfdruck"
umgemodelt werden.

Knopfdruck -> Zeit beginnt zu laufen  1 LED leuchtet
20 Sekunden später: eine 2.te LED leuchtet
wieder 5 Sekunden später: rote LED aus, dafür gelbe LED ein
1 Sekunde später: gelbe LED aus
1 Sekunde später: gelbe LED ein
....

Es sei denn, die Startzeit muss eine ganz bestimmte Realzeit sein. Dann 
wirds allerdings wirklich aufwändig und ohne µC würde ich da nichts mehr 
tun.

von AndyT (Gast)


Lesenswert?

Man sollte einen Knopf drücken um das ganze zu starten und danach sollte 
der Vorgang wie in einer Endlosschleife immer wieder durchlaufen werden 
bis man einen anderen Knopf für Reset drückt
und ja in den 20 Sekunden sollte das grüne Licht weiter leuchten

von Karl H. (kbuchegg)


Lesenswert?

AndyT schrieb:
> Man sollte einen Knopf drücken um das ganze zu starten und danach sollte
> der Vorgang wie in einer Endlosschleife immer wieder durchlaufen werden
> bis man einen anderen Knopf für Reset drückt

Ah. Ok

Na ja. Das ist ja dann im Prinzip nur ein etwas seltsameres 'Lauflicht'.

von AndyT (Gast)


Lesenswert?

Ne Iddee wie ma das Konkret aufbauen könnte?

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz Buchegger schrieb:
> AndyT schrieb:
>> Man sollte einen Knopf drücken um das ganze zu starten und danach sollte
>> der Vorgang wie in einer Endlosschleife immer wieder durchlaufen werden
>> bis man einen anderen Knopf für Reset drückt
>
> Ah. Ok
>
> Na ja. Das ist ja dann im Prinzip nur ein etwas seltsameres 'Lauflicht'.

Allerdings eines mit 95 'Stufen', wobei natürlich viele Stufen dieselbe 
LED leuchten lassen. Aber Wired-Or mit Dioden ist ja schon erfunden. Mit 
den beiden 4017 aus dem Link wärst du zb dabei (wenn die 30 Sekunden 
Pause auch 35 Sekunden sein dürfen um in Summe auf 100 Sekunden zu 
kommen)

Ob der 555 jetzt allerdings einen 1-Sekunden Takt erzeugt .... müsste 
man nahrechnen.

Beitrag "Lauflichtsteuerung"

von AndyT (Gast)


Lesenswert?

Wäre auch kein Problem
Nur wa müste man da jetzt genau umbauen?

von Daniel J. (theend)


Lesenswert?

Ich würde dir die Schaltung gerne zusammenbauen, melde dich hier mal 
bitte an und schicke mir eine PM mit deiner email adresse.

Würde das mit einem ATtiny realisieren, ist ja keine Große sache.

von MaWin (Gast)


Lesenswert?

Du benötigt eine Sekundenauflösung und 95 Gesamtsekunden und 5 Ausgänge 
(4 LEDs und 1 Reset für den Zähler). Da die Decodierung, welcher Ausgang 
wann aktiv sein soll aufwändig ist, schlage ich keinen Mikrocontroller 
vor den man programmieren müsste, sondern einen NE555 als Taktgeber 
einen 74HC393 als rücksetzbaren 8 bit Zähler, und ein EPROM  als 
Zuordnung welcher Ausgang bei welcher Zählsekunde aktiv sein soll. Das 
EPROM muss man zwar auch programmieren,aber braucht dazu keine 
Programmiersprache zu erlernen. Wahlweise lässt sich Zähler und 
Decodierung auch in einem GAL22V10 realisieren (allerdings werden die 
wieder in einer Formelsprache programmirrt, sind also nicht so viel 
einfacher als ein uC der dann auch noch den Taktgeber ersetzen würde.
1
void main(void)
2
{
3
   uint8_t i,j;
4
   DDRB=0x0f;
5
   while(1) for(i=0;i<190;i++)
6
   {
7
     PORTB=(i<60;2;0)
8
       |(i<80;1;0)
9
       |(80<i&&i<90&&(i&1)==0;4;0)
10
       |(90<i&&i<130;8;0);
11
    for(j=0;j<50;j++) _delay_ms(10);
12
    }
13
}
Das wäre übrigens das Programm für einen Atmega8 in C.

von amateur (Gast)


Lesenswert?

Dann böte sich ein modifiziertes Lauflicht im Sekundentakt an.
Led1  0 bis  29 und 50 bis 79 Sekunden.
Led2 20 bis  29 Sekunden.
Led3 25, 27, 29 Sekunde.
Led4 31 bis  49 Sekunden.
Oder so.

von Karl H. (kbuchegg)


Lesenswert?

MaWin schrieb:


Nitpicking:
>      PORTB=(i<60;2;0)

       PORTB=(i<60?2:0)


die restlichen Detto.


EPROM ist übrigens eine gute Idee. Daran hatte ich noch gar nicht 
gedacht.

von Martin K. (maart)


Lesenswert?

Karl Heinz Buchegger schrieb:

> EPROM ist übrigens eine gute Idee. Daran hatte ich noch gar nicht
> gedacht.

Was allerdings auch programmiert werden will.

von Andreas T. (andyt9)


Lesenswert?

amateur schrieb:
> Dann böte sich ein modifiziertes Lauflicht im Sekundentakt an.
> Led1  0 bis  29 und 50 bis 79 Sekunden.
> Led2 20 bis  29 Sekunden.
> Led3 25, 27, 29 Sekunde.
> Led4 31 bis  49 Sekunden.
> Oder so.

Die erste roe soll von beginn an leuchten dan die zweite rote dazu und 
sobald die gelbe zu blinken begind solten die beiden aufhören zu 
leuchten
wenn die grüne an geht sollte die gelbe nicht mer leuchtn und danach die 
grüne auch(nach gewisser zeit) und das genze beginnt von vorne
also nicht ganz richtig

von Karl H. (kbuchegg)


Lesenswert?

Andreas Tippelt schrieb:
> amateur schrieb:
>> Dann böte sich ein modifiziertes Lauflicht im Sekundentakt an.
>> Led1  0 bis  29 und 50 bis 79 Sekunden.
>> Led2 20 bis  29 Sekunden.
>> Led3 25, 27, 29 Sekunde.
>> Led4 31 bis  49 Sekunden.
>> Oder so.
>
> Die erste roe soll von beginn an leuchten dan die zweite rote dazu und
> sobald die gelbe zu blinken begind solten die beiden aufhören zu
> leuchten
> wenn die grüne an geht sollte die gelbe nicht mer leuchtn und danach die
> grüne auch(nach gewisser zeit) und das genze beginnt von vorne
> also nicht ganz richtig

Na ja.
Ein bischen Arbeit soll ja für dich auch noch bleiben, so du denn 
wirklilch diskret aufbaust.

von amateur (Gast)


Lesenswert?

Sorry, das habe ich anders verstanden!

30 Sek vor Start Led1
10 Sek vor Start Led2
 5 Sek vor Start Led3

alles aus (Start)

20 Sek Led4

aus

30 Sek. Led1
... und weil's so schön war nochmal.

von Jobst M. (jobstens-de)


Lesenswert?

amateur schrieb:
> Wie aber lässt sich: "30 Sekunden vor Start" erfassen?

Fluxkompensator - macht man doch seit den 80ern so ...


Gruß

Jobst

von MaWin (Gast)


Lesenswert?

>        PORTB=(i<60?2:0)

Oh ja, die gelbe blinkt wohl auch zu schnell und die roten sind 
falschrun, na ja, das Prinzip stimmt zumindest.

von Martin K. (maart)


Lesenswert?

Jetzt weiß ich auch, warum sich hier wer "c-hater" nennt und an anderen 
Stellen über kryptischen Code gestöhnt wird.

von Karl H. (kbuchegg)


Lesenswert?

Martin Kreiner schrieb:
> Jetzt weiß ich auch, warum sich hier wer "c-hater" nennt und an anderen
> Stellen über kryptischen Code gestöhnt wird.

Man kanns so schreiben, wie MaWin das gemacht hat. Man muss aber nicht! 
Man kanns auch deutlich lesbarer schreiben :-)

von Martin K. (maart)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Man kanns auch deutlich lesbarer schreiben :-)

Ich lach' mich auch über den Versuch schlapp, hier dem unerfahrenen 
Threadstarter so "tollen, kompakten" Code zum Fraß vorzuwerfen und dann 
nicht mal selbst die kryptische Syntax richtig anwenden können.
Ok, wir driften ab....

von Dr.E.Brown (Gast)


Lesenswert?

Jobst M. schrieb:
> Fluxkompensator - macht man doch seit den 80ern so ...

Aber nur, wenn du 1.21 GW Leistung zur Verfügung hast.

von Dr.E.Brown (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Man kanns so schreiben, wie MaWin das gemacht hat. Man muss aber nicht!

Ja, aber nur, wenn man andere bis aufs Blut ärgern will.

von PittyJ (Gast)


Lesenswert?

Warum nicht ein <rotesTuch> Arduino </rotesTuch> ?
Der hat genug IOs für LEDs, einfach mit Vorwiderstand ran. Tastereingang 
ebenso.
Das Programm ist in einer Stunde geschrieben.
Aufwand: 30 Euro Material, 1 Stunde Löten, 1 Stunde Programmieren.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Angehängte Dateien:

Lesenswert?

Die Dosen-Schaltung?

Programmieren tut man die Dose mit Isolierband

Quelle:
http://files.rakuten.de/b4372ce2f46ec8855e3f416d187e06db/thumbs/250/c9/549513825_175403.jpg

von Martin K. (maart)


Lesenswert?

Nette Idee!
Hast du aber vielleicht noch eine Ahnung, wie man dann einen Hamster so 
dressieren kann, dass er langsam an der Kurbel dreht?

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.