Forum: Mikrocontroller und Digitale Elektronik Retro Game Ping Pong modifizieren Atmega8


von Stefan W. (tito)


Angehängte Dateien:

Lesenswert?

Hallo,

bin hier neu im Forum und hätte mal eine Frage an die Spezialisten unter 
euch.
Ich habe mir das Retro Game Ping Pong zugelegt und habe dieses nun auf 
größere weiße LED´s umgebaut. Nun leuchten die LED´s aber durch das 
multiplexen nicht besonders hell. Um das zu ändern war nun mein Gedanke 
hinter die Schieberegister (siehe Schaltung) jeweils einen ULN2804 zu 
packen und zwischen Controller und Led-Zeilen jeweils einen BC337 um die 
LED´s dann mit höherer Spannung bzw. Strömen zu versorgen.
Das funktioniert aber nicht so recht. Sobald ich den Pin9 (Masse) des 
ULN anklemme leuchtet die gesamte angesteuerte Zeile, klemme ich ihn 
wieder ab wird sie normal angesteuert. Allerdings dann auch nur mit 
geringer Helligkeit.
Habe den ULN laut Datenblatt verbunden und den BC337 mit Basis an den 
Contoller, Kollektor an plus und Emitter an die LED Zeile.
Was läuft da verkehrt?

Hoffe Ihr könnt mir helfen.

Gruß
Tito

von Freeed (Gast)


Lesenswert?

Dann mach ma den Schaltplan mit ULN sichtbar :=)

von Freeed (Gast)


Lesenswert?

Stefan Westermann schrieb:
> BC337 mit Basis an den
> Contoller,

Das ist ein NPN-Typ - in deiner Beschaltung brauchst du einen PNP, also 
den 327

von Karl H. (kbuchegg)


Lesenswert?

Stefan Westermann schrieb:

> Habe den ULN laut Datenblatt verbunden und den BC337 mit Basis an den
> Contoller, Kollektor an plus und Emitter an die LED Zeile.
> Was läuft da verkehrt?
>
> Hoffe Ihr könnt mir helfen.

Zeichne mal ein Schaltbild was du da genau wie verbunden hast.

BC337 ist ein NPN Transistor. Für einen LowSide Treiber wäre aber ein 
PNP angebracht
Hast du keinen Basiswiderstand?
Welche Vorwiderstände benutzt du für die LED?
und last but not least, mit welcher Spannung gehst du an den Transistor? 
Immer noch 5V oder bist du höher gegangen? (Eng damit verknüpft ist die 
Frage nach den Vorwiderständen der LED)

von Freeed (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> LowSide Treiber

Hi-Side

von Karl H. (kbuchegg)


Lesenswert?

Freeed schrieb:
> Karl heinz Buchegger schrieb:
>> LowSide Treiber
>
> Hi-Side

Ich bring die beiden immer durcheinander. Keine Ahnung warum. Meine 
Denke ist immer: Auf welcher Seite ist die Last
Sollte aber sein: Auf welcher Seite ist der Treiber von der Last aus 
gesehen.

Sorry for that.

von Stefan W. (tito)


Lesenswert?

Danke für die schnellen Anworten.

Zeichnung kriege ich auf die schnelle jetzt nicht hin.
Ich habe aber den Transistor hinter den Controller und vor den 
Vorwiderstand(R68) der LED Zeilen gestzt, ohne Basiswidertand. Den ULN 
zwischen Schieberegister und LED Spalten. Als Zusatzspannung habe mal 9 
Volt probiert.

von Freeed (Gast)


Lesenswert?

Stefan Westermann schrieb:
> Den ULN
> zwischen Schieberegister und LED Spalten.

Dadurch verringerst du doch die Leistung nurnoch weiter...Das macht kein 
Sinn. Wenn dann die Ausgänge vom Schieberegister an die Eingänge vom ULN 
und den gegen Masse.

Stefan Westermann schrieb:
> Ich habe aber den Transistor hinter den Controller und vor den
> Vorwiderstand(R68) der LED Zeilen gestzt

Das ist auch OK, jedoch bekommst du dadurch nicht die volle Spannung an 
deine Zeilen...nimm lieber nen PNP MIT Basisvorwiderstand.

von Karl H. (kbuchegg)


Lesenswert?

Stefan Westermann schrieb:
> Danke für die schnellen Anworten.
>
> Zeichnung kriege ich auf die schnelle jetzt nicht hin.

Nicht mal in Paint?
1 Ausgang -> 1 Transistor -> 1 Widerstand -> 1 ULN Eingang
würden ja schon reichen. Muss ja nicht die komplette Matrix sein.

> Ich habe aber den Transistor hinter den Controller und vor den
> Vorwiderstand(R68)

den Vorwiderstand hast du gelassen?

> der LED Zeilen gesetzt, ohne Basiswidertand.

Schon mal schlecht

> Den ULN
> zwischen Schieberegister und LED Spalten.

OK. Bei dem kann man auch kaum was falsch machen.

> Als Zusatzspannung habe mal 9
> Volt probiert.

Das war IMHO keine so gute Idee. Jetzt muss mehr Spannung am 
Vorwiderstand abfallen, damit du den Stromfluss erhöhst. Dazu kommt, 
dass du dann nicht einfach einen PNP Transistor als Treiber nehmen 
kannst, weil du den Transistor dann nicht mehr mit dem µC Output zum 
sperren bringst. Besser wäre es wenn du die Vorwiderstände verkleinerst.

von Karl H. (kbuchegg)


Lesenswert?

Ich hätts überhaupt umgedreht:
den ULN als Zeilentreiber und mit dem Schieberegister die BC337 
(+Basiswiderstand) jeweils 1 Spalte nach Masse durchschalten lassen.

Der ULN ist darauf ausgelegt mittels 5V eine höhere Spannung zu 
schalten. Brauch ich mich nicht selber drum kümmern.

von Freeed (Gast)


Angehängte Dateien:

Lesenswert?

Jo, wie Karl schreibt, oder so wie im Bild - beachte jedoch bei der 
Berechnung, dass über dem ULN noch ca. 1V abfällt, musste mal im 
Datenblatt schauen.

von Freeed (Gast)


Lesenswert?

OK, mit den 9V klappt das so natürlich auch nicht, dass müsste dann 
schon die selbe Spannung wie vom uC sein. Oder eben alles anders herum 
ansteuern.

von Stefan W. (tito)


Angehängte Dateien:

Lesenswert?

habe jetzt mal schnell was "gemalt", hoffe das hilft weiter.

Vorwiderstand habe ich gelasssen.

Gut, die Spannung und Widerstände kann man ändern.

Hauptsächlich geht es mir darum das die Schaltung korrekt funtioniert.

von Stefan W. (tito)


Lesenswert?

Sorry,  Fehler in der Zeichnung. ULN2803 nicht ULN2804

von Klaus 2. (klaus2m5)


Lesenswert?

Stefan Westermann schrieb:
> Sobald ich den Pin9 (Masse) des
> ULN anklemme leuchtet die gesamte angesteuerte Zeile

Dir ist schon klar, dass der ULN das Signal invertiert und die Software 
entsprechend geändert werden muss???

von Marcus B. (raketenfred)


Lesenswert?

wenn du einen Multiplexer verwendest- dann kannst du doch einfach höhere 
Ströme/Spannungen fahren- wie verhalten sich die LEDs wenn du R1 etc 
verringerst?

von Simon K. (simon) Benutzerseite


Lesenswert?

In wie fern invertiert?
Wenn du einen Baisstrom fließen lässt (also eine positive Spannung 
anlegst. Bzw. ein logisches HIGH), dann leuchtet die LED, weil dann der 
Transistor durchsteuert.

von Karl H. (kbuchegg)


Lesenswert?

Simon K. schrieb:
> In wie fern invertiert?
> Wenn du einen Baisstrom fließen lässt (also eine positive Spannung
> anlegst. Bzw. ein logisches HIGH), dann leuchtet die LED, weil dann der
> Transistor durchsteuert.

Der ganze Aufbau mit den ULN am Schieberegister ist doch Unsinn. Überleg 
doch mal wie da der Strom fliessen muss und welchen Weg der nimmt! Im 
Grunde kannst du dir den ULN auch sparen und gleich den ganzen Strom im 
Schieberegister versenken. Läuft doch auf genau das gleiche hinaus. Bei 
dir würde der LED-Strom über den Eingang des ULN hereinkommen. Dafür ist 
der aber ganz sicher nicht gedacht.

Wie oben schon gesagt:
Drehs um: Der Strom kommt von +
Geht durch den ULN (der vom µC angesteuert wird) über die Vorwiderstände 
durch die LED und von dort über einen NPN Transistor, der vom 
Schieberegister angesteuert wird (aber diesmal bitte mit 
Basiswiderstand) nach Masse.

von Klaus 2. (klaus2m5)


Lesenswert?

Simon K. schrieb:
> In wie fern invertiert?
> Wenn du einen Baisstrom fließen lässt (also eine positive Spannung
> anlegst. Bzw. ein logisches HIGH), dann leuchtet die LED, weil dann der
> Transistor durchsteuert.

Ohne ULN würden die LEDs bei Low leuchten! Der Vorschlag von Karl Heinz 
ist die sinnvollste Lösung - einfach die Matrix umdrehen.

von Karl H. (kbuchegg)


Lesenswert?

Mea Culpa.

ULN2003 sind Darlington Transistor Arrays, die gegen Masse schalten.
Also ist das gut so, wie du es jetzt hast.

Muss die Hitze sein oder das Unwetter, ich bin komplett daneben 
gestanden.

Einzig die NPN solltest du gegen PNP austauschen, Basiswiderstand dazu, 
als versorgungsspannung 5V (anstelle von 9) und natürlich im Programm 
die Invertierung beachten.

Nochmals: Ich hab mich da komplett verfranst! Sorry for that
Das ist mir jetzt peinlich. Hoffentlich hast du noch nicht angefangen 
den ULN um zulöten.

von Simon K. (simon) Benutzerseite


Lesenswert?

Klaus 2m5 schrieb:
> Simon K. schrieb:
>> In wie fern invertiert?
>> Wenn du einen Baisstrom fließen lässt (also eine positive Spannung
>> anlegst. Bzw. ein logisches HIGH), dann leuchtet die LED, weil dann der
>> Transistor durchsteuert.
>
> Ohne ULN würden die LEDs bei Low leuchten! Der Vorschlag von Karl Heinz
> ist die sinnvollste Lösung - einfach die Matrix umdrehen.

Ja, also wenn man die LEDs direkt an die Schieberegister dengeln würde. 
Da haste natürlich Recht.

von Klaus 2. (klaus2m5)


Angehängte Dateien:

Lesenswert?

Karl heinz Buchegger schrieb:
> Muss die Hitze sein oder das Unwetter, ich bin komplett daneben
> gestanden.

Die Grundidee dahinter war schon ganz O.K. denke ich.

Möglicherweise muss man noch einen Vorverstärker für die BC327 einsetzen 
- oder gleich UDN2981.

von Klaus 2. (klaus2m5)


Lesenswert?

Die Versogungsspannung der Matrix kann man nur erhöhen, wenn auch die 
Schieberegister mit der höheren Spannung betrieben werden.

Die Ausgänge des ATMEGA und des 4094 sind über Dioden auf den 
Betriebsspannungsbereich "geclampt". Damit können sie sich nur zwischen 
Ground-0,6V und VCC+0,6V bewegen und keinen High-Side Treiber mit 
höherer Spannung treiben. Der BC327 würde immer durchgeschaltet sein, da 
zwischen Basis (~5,6V) und Emitter (~9V) immer ein Strom fließen würde. 
Auch mit einem BC337 als Emitterfolger klappt das nicht, da die Spannung 
am Emitter immer ca. 0,6V unter der Basisspannung liegt und die höhere 
Spannung an der Matrix gar nicht ankommt.

von Stefan W. (tito)


Lesenswert?

>
> Einzig die NPN solltest du gegen PNP austauschen, Basiswiderstand dazu,
> als versorgungsspannung 5V (anstelle von 9) und natürlich im Programm
> die Invertierung beachten.
>
> Nochmals: Ich hab mich da komplett verfranst! Sorry for that
> Das ist mir jetzt peinlich. Hoffentlich hast du noch nicht angefangen
> den ULN um zulöten.

Habe noch nicht angefangen. Werde mir morgen ein paar pnp Transistoren 
besorgen und das mal ausprobieren.
Allerdings bin ich was das programmieren angeht nicht besonders Firm, 
mal schauen ob ich das geregelt kriege.

von Stefan W. (tito)


Lesenswert?

Vielleicht wäre auch jemand so nett mal in das Programm zu schauen und 
die Invertierung zu ändern.

von Klaus 2. (klaus2m5)


Lesenswert?

Stefan Westermann schrieb:
> Vielleicht wäre auch jemand so nett mal in das Programm zu schauen und
> die Invertierung zu ändern.

Geht nur, wenn der Sourcecode verfügbar ist. Wenn nicht, nimm ein paar 
4049 Inverter und Level-Shifter, um die ULN und Transistoren zu treiben.

von Stefan W. (tito)


Lesenswert?

> Geht nur, wenn der Sourcecode verfügbar ist.

 Ist vorhanden, kein Problem.

von david (Gast)


Lesenswert?

Hallo,

wo finde ich den Source-Code?

Grüße

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Der komplette Sourcecode des Pong Spiels auf dem Pong "Bausatz" ist 
nicht verfügbar. Aber es sind die wesentlichen Routinen zur Ansteuerung 
der LEDs verfügbar (BASCOM).

Desweiteren sind über ca. 30 verschiedene Projekte mit anderen Spielen 
und Anwendungen auch in Sourceform (BASCOM, C) verfügbar.

Man braucht nur z.B. auf der ELO Webseite nach Pong zu stöbern.

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.