Schönen Guten Abend,
ich hatte mir zur Aufgabe gemacht eine Fußgängerampelschaltung zu bauen,
bei der die Ampel für die Autos durchgängig Grün anzeigen soll und dann
bei Tastendruck der Fußgängerampel, die Fußgängerampel von Rot auf Grün
wechselt und die Ampel für die Autos dann nach einem Delay auf Rot
wechseln. Da ich nicht wirklich der beste Elektrotechniker bin, wollte
ich fragen, ob die Schaltung im Anhang so funktioniert, wie gedacht und
ob ich dann den MC direkt programmieren könnte ? Ich habe für die
Schaltung den PCA9555 verwendet.
Danke schonmal im vorraus.
MfG Lorenz
Hi,
wie hast Du die Vorwiderstände an den LEDs berechnet? Sind es low
current LEDs?
LEDs in Rot/Grün/Gelb haben in der Regel unterschiedliche
Durchflusspannungen, deswegen müssten die Widerstände je nach Farbe
unterschiedlich sein.
Im Datenblatt zu dem I/O-Baustein ist max. 160mA Strom in Summe von Vcc
angegeben. D.h. wenn Du alle LEDs gleichzeitig an hast (was beim
Expirmentieren durchaus vorkommen kann) darf das nicht überschritten
werden.
Ich würde die Widerstände so berechnen, das pro LED ca. 15mA fließen.
Das reicht für die meisten LEDs aus.
Du solltest am besten mal in die Datenblätter der LEDs schauen, wieviel
Strom sie benötigen um zu leuchten.
Die Taster solltest Du an zwei separate Eingänge des ICs anschließen.
Hast ja noch welche frei. Die Ports haben ja bereits einen 100K
Pullup-Widerstand nach Vcc eingebaut (siehe Datenblatt). D.h. Du
schließt Deinen Taster an den I/O-Pin über einen 1k Widerstand nach
Masse.
Warum 1K Widerstand? Damit, falls Du den Port versehentlich als Ausgang
programmiert hast und den Taster drückst, nicht der maximale Strom
fließt und etwas in Rauch aufgeht.
Grüße
Markus
Tendenziell kann das klappen, es ist allerdings nicht ersichtlich welche
LED für welchen Zweck ist. Anstelle die LEDs direkt aus dem uC zu
betreiben, solltest Du mit Transistoren oder Mosfets die Spannung auf
die LEDs schalten (siehe hierzu die passenden Tutorials auf uc.net).
Damit kannst du eine Beschädigung des uC verhindern, wenn die LEDs zu
viel Strom benötigen, den der uC an seinen Ports eventuell nicht liefern
kann. Mit 1k5 und 5V sollte das zwar noch klappen (3mA), aber schöner
wäre es trotzdem.
Über eine Tastenentprellung solltest Du noch nachdenken. Ist in diesem
besonderen Fall wohl egal, weil Grünphasenanforderung nun mal nur einmal
passiert. Wie das geht, darüber scheiden sich die Geister. Im Prinzip
kannst Du das per Hardware oder Software lösen.
Ach ja, eins noch. Braucht der PCA955 keine externe Beschaltung? (C oder
X oder so?)
Viele Grüße,
Wastl
PS: Was meinst Du mit den "MC direkt programmieren"? Also Du kannst
diesen Interface-Baustein mit dem Controller über eine I²C Schnittstelle
ansprechend ansprechen.
Anstelle den Umweg über diesen I²C Bus zu gehen ist es vlt. einfacher
die LEDs direkt vom Controller über Transistoren, FETs oder andere
Treiberbausteine zu schalten.
Die Sache mit dem I2C Protokoll verkompliziert es unnötig - es sei denn
Du willst unbedingt diese Schnittstelle verwenden...
So habe ein Bild angehängt.
Technik:
Verwende einen PCF8574 mit Adresswahl, jeweils 2 LED gleicher Farbe für
die Strasse, 2 Taster für die Fussgänger und jeweils 2 LED für die
Fussgänger. Der PCF schaltet einen Transistor und der jeweils 2 LED. Die
LED haben ca. 20 mA, Vorwiderstand 220 Ohm egal welche Farbe. Aufbau ist
der Funktion angeglichen. Steuerung erfolgt von einem separaten Modul
mit AT1284p oder Attiny 2313. Verbindung erfolgt über I2C Bus mit 2
Anschluss. Int steckbar gemacht. Belegung der Stecker erfolgt nach RN
Standart. Platine hat ein Einheitsgrösse.
Auf Grund des Aufbaus kann die Programmierung klasssisch über delay
erfolgen, oder besser als Multitasking oder noch besser als
Statemaschine. Grosse Teile des Programms sind schon fertig. Hatte es
ruhen lassen und erst anderes gemacht. Programmierung erfolgt in C.
Tastenentprellung nach PD ist auch dabei. Schaltung habe ich noch nicht
fertig.
achim
@achims Danke dir erstmal. Hätte nur eine Frage, sind die Transistoren
bei meiner Schaltung notwendig oder würde Sie mit Programmierung auch so
funktionieren ?
@Markus M. ich wollte low current LEDs verwenden. Danke für den Tipp mit
dem Taster. Mit MC direkt programmieren meinte ich eher den MC auf einer
anderen Platine mit RS323 Schnittstelle zu programmieren und dann den MC
in der Schaltung einzubauen.
@Wastl F. was meinst du genau mit: ,,es ist allerdings nicht ersichtlich
welche LED für welchen Zweck ist". Ich wollte die Schaltung, jedoch mit
MC machen, da ich gerne das Programm dafür schreiben wollte :)
Lorenz M. schrieb:> @Markus M. ich wollte low current LEDs verwenden.
Wenn du Low-Current LED nimmst, dann kannst du auch 2 davon direkt
(Natürlich mit je einem Vorwiderstand für jede LED) an einen Portpin vom
Prozessor hängen. Das spart dir den ganzen Umweg über den I2C
Portexpander.
Wenn du also am Prozessor genug Pins für 5 Ausgänge und 2 Eingänge frei
hast, dann geh den einfacheren Weg.
Lorenz M. schrieb:> @Wastl F. was meinst du genau mit: ,,es ist allerdings nicht ersichtlich> welche LED für welchen Zweck ist". Ich wollte die Schaltung, jedoch mit> MC machen, da ich gerne das Programm dafür schreiben wollte :)
Siehe dazu Kommentar von Markus M., zweiter Absatz: Ich habe übersehen,
daß das gar kein uC ist, sondern ein I2C Baustein. Es ist wohl einfacher
direkt einen uC zu nehmen, und mit diesem dann über zwischengekoppelte
Transistoren oder Mosfets die LEDs zu steuern.
Mit ".. nicht ersichtlich .." meine ich, daß nicht klar ist, welche LED
wofür zuständig ist. Was bei der obigen Skizze Wurscht ist, aber zum
logischen Verständnis beiträgt, wenn später Fragen kommen wie "warum
leuchtet die rote Fussgänger-LED nicht"