PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Landebefeuerung mit C-Control



SirMaik
28.05.2006, 22:38
Hallo, ich habe schon viel recherchiert aber leider noch keine richtige Lösung für mein Problem gefunden:

Hier die Aufgabe:

Meine Nachbarin hat ein Bild über einen Airport (für Ihren kleinen Sohn) gemalt und mich um die Installation der Beleuchtung gebeten.
Da nun nur stumpfsinnig vor sich her leuchtende Leds für so einen kleinen Jungen nicht so spektakulär sind, würde ich das Bild gerne mit „Flash-Effekten“ versehen. D. h. sobald Strom anliegt, leuchten alle Leds der Landebahn ganz schwach und parallel dazu blitzen von unten nach oben der Reihe nach die Leds einmal richtig hell auf, um dann wieder schwach zu leuchten. Und das ganze soll sich dann natürlich wiederholen (von unten nach oben).

Angesprochen sollen bei der Landebahn 2 x 38 Leds, die (weil parallel positioniert) natürlich auch parallel geschaltet werden können. D. h. ich benötige für die Landebahn 38 Ausgänge mit dem beschriebenen Effekt.

Ich weiß nicht, ob man für die Schaltung einen Register/Latch 74HC573 oder doch lieber einen Porterweiterungsbaustein PCF8574 oder vielleicht einen Pic einsetzen sollte…

Also ich bin wirklich für jeden Tipp dankbar. Löterfahrungen sind vorhanden aber ich bin kein Profi im Schaltungsdesign…

LG

Maik

darwin.nuernberg
28.05.2006, 23:00
Also generell könnte man das mit einem AVR lösen,
nur eben 38 Ausgänge das wird mit Normalen Mitteln schwierig.

Ein Mega 32 hat maximal 4x 8 also 32 ich sage jetzt mal Kanäle.
Das dürfte wohl auch reichen, sonst wird's schwieriger.

Das Schaltungsdesign könnte so aussehen,
die LED's werden mit einem höheren Vorwiderstand zur Grundleuchtstärke gebracht.
Jeweils ein Ausgang (Kanal) schaltet einen Transistor, welcher den vorhandenen Vorwiderstand mit einem kleineren Vorwiderstand die LED kurzzeitig heller leuchten lässt.


Ist dieser Ansatz im Prinzip nachvollziehbar, oder wird das schon zu komlpziert.

Das klizekleinene Progrämmchen (wenn man das dann so nennen darf ;-)) ist auch kein Problem.

Erst mal checken ob das was wäre oder schon vom Ansatz zu viel ist.

SirMaik
28.05.2006, 23:20
Hallo darWIN,
vielen Dank für Deinen Beitrag.

32 Leds würden auch ausreichen; dann haben die ersten eben keinen Flash-Effekt, sondern leuchten einfach nur schwach.
Also genau so habe ich mir das Schaltungsdesign auch vorgestellt, die Grundleuchtstärke und den Flash-Effekt mit unterschiedlichen Vorwiderständen zu lösen.
Ich wusste nur nicht, welcher Chip soviele Ausgänge/Kanäle hat.

Also ich habe auch schon Platinen selber geätzt, also von daher ist das für mich noch nicht so kompliziert. Was kostet so ein AVR und wie ist die genaue Bezeichnung. Zum flashen wird wahrscheinlich ein Brenner benötigt, oder?

Klaus_0168
28.05.2006, 23:29
Hallo SirMaik,

mit 4x8 Bit kannst Du per externen Demultiplexer (16 aus 4) auch 16x16 LED's ansteuern. Das ist dann mehr als genug.

Grüße Klaus

rXenon
29.05.2006, 00:08
Ein ATMega32 kostet um die 6€ bei Reichelt. Es gibt vielleicht noch günstigere Alternativen aber da du eh dort bestellen wirst (für den ganzen Kram drumherum), kannste auch gleich da den AVR kaufen.

Programmieren bzw. Flashen geht am einfachsten mit einem ISP-Adapter. Solch einen und eininige Informationen zu AVRs findest du hier:
https://www.roboternetz.de/wissen/index.php/AVR-Einstieg_leicht_gemacht

Da du ja gesagt hast, du kannst selber ätzen dürfte das ganze kein großes Problem darstellen.

Ich würde jedoch eher von PICs abraten, auch wenn ich mich nicht so gut damit auskenne. Aber ich weiß, dass die Dinger teurer sind und der Brenner (wenn man das bei Flash noch sagen kann) aufwändiger ist.

Mfg rXenon

DIE HARD
29.05.2006, 13:10
Hallo, ich habe schon viel recherchiert aber leider noch keine richtige Lösung für mein Problem gefunden:

Hier die Aufgabe:

Meine Nachbarin hat ein Bild über einen Airport (für Ihren kleinen Sohn) gemalt und mich um die Installation der Beleuchtung gebeten.
Da nun nur stumpfsinnig vor sich her leuchtende Leds für so einen kleinen Jungen nicht so spektakulär sind, würde ich das Bild gerne mit „Flash-Effekten“ versehen. D. h. sobald Strom anliegt, leuchten alle Leds der Landebahn ganz schwach und parallel dazu blitzen von unten nach oben der Reihe nach die Leds einmal richtig hell auf, um dann wieder schwach zu leuchten. Und das ganze soll sich dann natürlich wiederholen (von unten nach oben).

Angesprochen sollen bei der Landebahn 2 x 38 Leds, die (weil parallel positioniert) natürlich auch parallel geschaltet werden können. D. h. ich benötige für die Landebahn 38 Ausgänge mit dem beschriebenen Effekt.

Ich weiß nicht, ob man für die Schaltung einen Register/Latch 74HC573 oder doch lieber einen Porterweiterungsbaustein PCF8574 oder vielleicht einen Pic einsetzen sollte…

Also ich bin wirklich für jeden Tipp dankbar. Löterfahrungen sind vorhanden aber ich bin kein Profi im Schaltungsdesign…

LG

Maik

Hallo....
Dazu reicht eine C-CONTROL MICRO mit 5xPCF8574 Porterweiterung.
Das dürfte die preisgünstigste Lösung sein. Wenn du LOW CURRENT LEDs
nimmst und sie nach Low schaltest, brauchst du nicht mal Transistoren.
ciao....

PicNick
29.05.2006, 13:58
Ganz konkret würde es auch einfacher gehen:
Das mit der schwachen Grundbeleuchtung wurde ja schon dargestellt.
Für das flashen würden ein paar kaskadierte Schieberegister reichen, durch die ein Einser durchgeschoben wird. Die Registerausgänge werden mit diode und Widerstand für jede LED dazuaddiert.
Takt mit 555 oder so, der läuft dauernd, und mit einem zweiten 555 oder auf Knopfdruck wird ein Einser als DATA engelegt.

SirMaik
29.05.2006, 21:59
Puuh... - ihr macht mir das nicht einfach...

Der eine sagt AVR, der nächste Demultiplexer, der nächste Porterweiterung, etc. etc. .... - damit bin ich praktisch wieder am Anfang meiner Frage...

Der AVR scheint ganz gut zu sein, da man ihn mit einem PC programmieren kann, er wenig kostet und das Schaltungsdesign nicht so kompliziert wird. Von dem Demultiplexer habe ich noch nie etwas gehört, wie funktioniert der? Da ich noch 2 C-Controls hier nutzlos herumfliegen habe, wäre es natürlich toll, wenn ich von der vorhandenen Hardware etwas verwenden könnte und durch leichtes Schaltungstuning aufbohren könnte. Wie könnte die Schaltung und das Programm für den AVR oder Demultiplexer oder den PCF8574 aussehen? Die einzige brauchbare Blitzschaltung, die ich im Netz gefunden habe, ist diese hier: http://www.mtkb.de/tips/Blitzer/Blitzer.htm

Bitte helft mir!!!

darwin.nuernberg
30.05.2006, 21:03
32 Leds würden auch ausreichen
Du könntest doch die 1. und 37. Led sowie die 2. und 38. LED parallel schalten, dann sind die fehlenden "Landelichter" auch mit in der "animation" und bei dem Lauflicht fällt es dann bestimmt nicht auf (wenn die Led's nicht unmittelbar Nebeneinander liegen)

Ein fertiges Board habe ich auch schon geposter (zogar swei alte und neue Version)

Schau doch mal hier:
Protobed ATmega16 ATmega32 in RNB Standard Version 4 (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=4890)
oder ganz neu:
Protobed ATmega16 ATmega32 in RN-Standard Version 5 (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=20179)


Einen ISP (Lausiger 74LS244 und ein Parallel-Port Stecker reichen schon)
und ein "bisschen Draht" werden zusätzlich benötigt.

Alles was Du außerdem noch brauchst sind die LED's, Transistoren (BC546) + Vorwiderstände.

FriLu
08.06.2006, 12:48
Hallo,
ich weiss zwar nicht, ob du schon angefangen hast, aber trotzdem:
Jeder will dir seinen Liebling auf's Auge drücken O:);
Nur für dieses Projekt Programmierumgebung und div. HW anzuschaffen wäre imho etwas übertrieben. Wenn schon vorhanden, nutzen (das übt!). Mit C-Control (Version egal) pulse an einem port erzeugen und 5 Schieberegister takten( z.b. 74xx164), 2.port an dateneingang SR zum "muster" erzeugen, fertig. Vorteil von µC's: "Spielereien" möglich, z.b. FotoDiode/Trans. bzw R an Analogeingang, bei abschattung (Finger) geht Licht an...
Zum Programm:

define takt Port[] ' nummer je nach HW
define daten Port[]
define i byte
define warten 1 ' zahl je nach gewünschter Geschwindigkeit
takt= off
#loop

daten= off : pulse takt : daten= on ' einzelne null durchschieben
pause warten

for i= 0 to 38 ' für 5 Schiebereg.
pulse takt
pause warten
' ... evtl weitere befehle
next i

goto loop ' das wars schon

Evtl. an Sprache anpassen- Prinzip!
LED-Anschluss: Anode an +5 V, Katode an (grossen)R zum glimmen, ausprobieren; SR-Ausgänge über kleinerem R (denke 100 Ohm) an Katode.
Ich hoffe, das kommt nicht zu spät... O:)
Grüsse Lutz

the_Ghost666
08.06.2006, 20:55
Also das mit den PICs halt ich für ein gerücht, die gibts nämlich gratis, als samples bei microchip, ausserdem, muss man denn 32 IOs nehmen? leuchten nicht je 2 LEDs paarweise?damit würde sich der Pinaufwand halbieren. argh, ok das steht schon da oben.
Das einzige, wo ich recht geben muss, ist, dass die PIC-Brenner aufwändiger sind.
Ansonsten würd ich auch mal überlegen, ob reine Digitaltechnik nicht auch ginge. Bei microchip gibts auch i2c port expander, dh man könnte einfach ne sample bestellung machen, dann die LEDs an die Portexpander hängen und das ganze mit nem Pic ansteuern, einen mit internem Oszillator gewählt, das spart einen Quarz und den blinktakt einfach aus dem prozessortakt ableiten. Das würde das Layout auch recht einfach machen, alle paar cm eine Treiberplatine, dazwischen je 4kabel.

ausserdem würd ich zu SMD teilen und dioden raten, dann sieht man nicht die LED Gehäuse, die doch echt hässlich sind, wenn ich mir diese "tollen" LED Bilder anschauen, wie es sie im möbelhaus oder an bahnhöfen gibt.

SirMaik
18.11.2006, 19:42
Hallo Lutz,

da das Bild zu Weihnachten fertig werden soll, werde ich mich jetzt intensiv mit dem Thema beschäftigen.
Ich habe mich jetzt doch für die C-Control entschieden und möchte dafür Schieberegister 4094 einsetzen. Einen Testaufbau auf einer Steckplatine habe ich bereits aufgebaut. Dateneingang D auf Port 1, Takteingang CLK auf Port 2, Strobe-Impuls Str auf Port 3, Vcc + 0E an +5V. Und mit entsprechenden Vorwiderständen Leds an den Ausgängen des Schiebregisters angeschlossen.

Aber wie muss nun die Basic-Routine aussehen, um wirklich ein kurz-aufblitzendes Lauflicht erzeugen zu können??? Kann mir da jemand weiterhelfen??

LG

Maik

FriLu
19.11.2006, 19:00
Hallo, SirMaik
In dieser Anwendung kannst du den Strobe des Schiebereg. auf Udd legen, das Reg. ist dann "durchsichtig".
Bei der Micro -nehme an die hast du- ist Port3 NUR ein Eingang, der zudem beim Start logisch "H" sein muss ( sonst Download-Modus ).

Zum Programm:
Zuerst Definitionen:

define licht port[1] ' siehe zusatzidee
define blink port[4] ' zum blitzen, s. progende
define takt port[5] ' anderer port geht auch, ausser P3
define daten port[6] ' dito

define i byte ' schleifenzähler
define warten byte ' wartezeit x mal 20ms
' define

define anzahl = 31 ' anzahl der angesteuerten ausgänge -1


'Init:
warten= 3
takt= off
daten= off
for i= 0 to anzahl ' mit max Geschwindigkeit "leertakten"
takt= on
takt= off
next
blink= on

' Programmschleife:
#loop

daten= on
takt= on
takt= off
pause warten

' "blitzer" -siehe progende:
blink= off
pause warten ' ED= 50%
' pause warten ' ED= 33%, wenn kommentar entfernt
' pause warten ' ED= 25%, wenn beide kommentare entfernt
blink= on

for i= 1 to anzahl
takt= on
takt= off
pause warten
' die nächste zeile erzeugt ein ( optionales ) licht, was dem ersten
' in 5 Schritten abstand folgt:
' if i = 5 then daten= on else daten= off ' kommentar links entfernen

' die nächste zeile erzeugt ein ( optionales ) licht, was in
' gleichen abständen erzeugt wird:
' if not ( i mod 4 ) then daten= on else daten= off

' mod ist der Rest einer Ganzzahl-Division, mod 8 bzw mod 16 geht auch;

' "blitzer" -siehe progende:
blink= off
pause warten ' ED= 50%
' pause warten ' ED= 33%, wenn kommentar entfernt
' pause warten ' ED= 25%, wenn beide kommentare entfernt
blink= on

next
' wenn du lust hast, hier> for next< wie oben, mit anderen parametern
' und nochmal :)
goto loop

' Zusatzidee:
' Spannungsteiler mit normalem R und Foto-R an ad_wandler, zb. P1
' anschliessen, und nach #loop befehl
' warten= licht / 64 + 2 ( evtl. berechnung anpassen )
' einfügen, passt die geschwindigkeit der Helligkeit an :)
'zum Blitzer:
'wenn die leds nach masse angeschlossen sind: alle kathoden zusammen
' an Kollektor eines nPn- transistors, Emitter an masse, basis über 4K7
' an Port4;
Funktion:
led an-> warten -> led aus -> warten -> weiterschalten
' es gibt bestimmt noch mehr möglichkeiten...

So, hab das "On the Fly" geschrieben -also nicht getestet-
hoffe aber auf fehlerfreiheit :)
Viel Spass bei Probieren, Lutz

SirMaik
19.11.2006, 21:02
Hallo FriLu,

ich habe die C-Control I und da ich mehrere Schieberegister (5 bis 6) einsetzen möchte, steht in meinem schlauen Buch, dass ich alle 4094
an einer gemeinsamen Datenleitung und einer gemeinsamen Taktleitung betreiben kann. Lediglich die Strobe-Leitung sollte für jedes Schieberegister getrennt geschaltet werden. Auf diese Weise empfangen zwar alle 4094 die gleichen Daten; aber werden nur jeweils an den Ausgängen eines Registers durchgeschaltet.
Was empfiehlst Du mir diesbezüglich?

FriLu
22.11.2006, 21:51
Hallo, SirMaik
Pardon, ich hab etwas Trabbel und kann nicht so oft ins Netz wie ich möchte.
Ich hatte angenommen, das alle Register hintereinander geschaltet sind, sonst macht das ja wenig sinn. Also alle Takteingänge parallel, Es vom ersten reg. an Kontrollerpin, Es vom zweiten an Q8 vom ersten, Es vom dritten an Q8 vom zweiten usw. Estr an H. Vorteil: nur Daten- und Taktleitung notwendig.
Nachteil: je länger die Kette, desto mehr Takte sind notwendig, um die Daten an die richtige stelle zu schieben ( Takte= Anzahl der Ausgänge ).
Bei Dir ( Lauflicht ) ist Register hintereinander ideal.
Bei dieser halb parallel/ halb seriell ansteuerung in deinem Beispiel brauchts zum einen mehr Ports ( Takt, Daten + Anzahl der register ) und vor allem mehr aufwand in der Software, denn das Programm muss wissen, welche led an ist ( "durchschieben" ist einfacher und stellt den Lauflichteffekt von selbst her ). Also, wenn möglich, bau deine Hardware um.
Die Unit 1.1 ist sogar praktisch, die lässt sich übertakten :) .
Der Basic- Befehl pause hat ja eine schrittweite von 20 mSek, bei 8 MHz demzufolge 10 mSek. Eine Unit lief bei mir sogar mit 16 !! MHz.
Hängt aber in erster Linie vom seriellen EEProm ab, da der IIC- Bus dann auch schneller wird. -das nur nebenbei-
Bis bald Lutz

FriLu
24.11.2006, 20:30
Hallo, SirMaik
die Register sind ja dazu da, einen zustand ( H oder L ) zu speichern, da blinkt also nichts - also externe lösung mit Transistor und "blink" ausgang notwendig. O:) - sonst nur "stino-Lauli"
bei der konstantendefinition ist das gleich (=) zeichen reingerutscht, also > define anzahl 8 < müsste gehen... 8-[
Zum register: das teil ist ein rechtsschiebereg., heisst also, mit der L/H flanke an Takt (Pin3) wird, wenn strobe (Pin1) H, der Inhalt von Q1 (Pin 4) nach Q2 (Pin5) geschoben -usw. bis Q7 nach Q8- der Inhalt von Q8 geht verloren, oder wenn Es der nächsten Stufe angeschlossen, in Q1 des nächsten registers ( Bedingung: Takteingänge parallel angeschlossen ).
-In Q1 wird der zustand von Es (Pin2)geschrieben-
In meiner Programm-Init schreibe ich erst mal nur "L" in das register- in der schleife sollte eigentlich der befehl >>> if i= 5 then daten= on else daten=off <<< den daten-ausgang "L" setzen- der ist aber auskommentiert und so bleibt daten auf "H" ( erster befehl nach Loop), es fehlt also ein >>> daten= off <<< schreib also daten= off als 4.ten Befehl nach loop ( zwischen takt= off und pause warten )- hab ich vergessen ](*,)
Übrigens: die beiden Befehle takt= on und takt= off sind Micro-Unit-kompatibel, eigentlich reicht da ein > pulse takt < ( Micro macht das nicht ).
so, noch mal zurück zum register: das die leds "von hinten" angehen, kannst du nur durch verdrahten ändern- Q1 ist pin4, Q2-4 Pin5-7;
Q5 ist Pin14, Q6-8 13-11.
Puh, was vergessen?¿ - Gruss Lutz