4 LEDs so lange wie möglich leuchten lassen, aber wie?

Hier werden Fragen zu LED-Grundlagen beantwortet...

Moderator: T.Hoffmann

Antworten
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Mi, 26.10.11, 21:18

Die feste Vorgabe finde ich gut, dann lohnt sich auch konkreter zu rechnen.
Ist fast ok so.

Nur die Anoden (über die Transitoren getrieben) dürfen nicht an den Ports PC1-3
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Mi, 26.10.11, 22:25

Dürfen schon, aber die Messgenauigkeit leidet. Also besser PD2-PD4 :)
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Mi, 26.10.11, 22:34

Borax hat geschrieben:Dürfen schon, aber die Messgenauigkeit leidet. Also besser PD2-PD4 :)
Falsch das Programm wird nur unnötig aufwendiger. ;)
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Do, 27.10.11, 08:04

Wieso? Erklär mal...
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Do, 27.10.11, 18:53

OK, hab Schaltplan geändert...
Und hier noch mal die festen Vorgaben:

Projekt: Spannungsversorgungsmodul mit integriertem DVM via ATmega8.
----------------------------------------------------------------------------------------------
1. Messung: Outputs des Spannungsregler 7805 (Spannungsversorgungsmodul).

2. Anzeigebereich von 0,00 bis 9,99 Volt
3. Drei SA56 werden gemultiplext.
4. Die 8 Kathoden kommen an PortB.0 bis PortB.7
5. Die 3 Anoden kommen an PortD.2, PortD.3 und PortD.4

6. Gemessen wird an PortC.0 (ADC0)

7. Präzisionstrimmer, z.B.: 447112 oder 425109 (Conrad)

8. Programmiert wird der ATmega8 über die ISP-Schnittstelle via BASCOM.

Irgendwelche Einwände?
Dateianhänge
ATmega8-DVM-v1.04.jpg
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Do, 27.10.11, 21:04

Bitte noch den Spannungsteiler (2x91k+10kPoti) ändern.
Siehe auch die Diskussion auf den vorherigen Seiten...
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Do, 27.10.11, 22:34

Ich hoffe, das ich alles richtig verstanden hab:

Von Pin 21 ein C an Masse. 100nF sind glaube ich nicht verkehrt.
Dann Widerstand R6 zwischen Masse und Trimmer.

Muss mich noch mal mit der vorherigen Seite beschäftigen, wegen der Größen von Widerstand und Trimmer...
Dateianhänge
ATmega8-DVM-v1.05.jpg
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Do, 27.10.11, 23:22

Da du jetzt hinter dem 7805 misst, brauchst du die Diodenschutzschaltung nicht.
also R4= 0 Ohm (Drahtbrücke), Diode entfällt
R5 = 33k
P1= 5K
R6= 10k
Borax hat geschrieben:Wieso? Erklär mal...
Was möchtest du erklärt haben?
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 28.10.11, 07:53

Dürfen schon, aber die Messgenauigkeit leidet.
Was ist daran 'Falsch'?
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Fr, 28.10.11, 15:13

Borax hat geschrieben:
Dürfen schon, aber die Messgenauigkeit leidet.
Was ist daran 'Falsch'?
Weil es, wenn man sie dort anschließt, weder eine notwendige noch hinreichende Begründung dafür ist, das die Messungeauigkeit leidet. Durch entsprechende Software bekommt man die gleiche Anzeigegenauigkeit hin. Da es aber einfacher ist, und weniger fehleranfällig für Anfänger, wenn man sie dort nicht anschließt, sollte man es nicht tun, solange man die A/D Wandlung nutzen will. Und da Mohi ohnehin schon eine Menge Stoff zu erarbeiten hat, habe ich es für besser gehalten es nicht bis ins kleinste zu diskutieren, wir wollen ja mal zum Ziel kommen.
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 28.10.11, 16:02

Durch entsprechende Software bekommt man die gleiche Anzeigegenauigkeit hin.
Damit ist die Aussage aber nicht 'falsch'. Wenn man sich nicht drum kümmert, leidet ggf. die Messgenauigkeit. Das finde ich gerade für einen Anfänger relativ leicht zu verstehen. Und ich habe ja nicht gesagt, dass man diesen Effekt nicht kompensieren könnte.
Aber lassen wir die Spitzfindigkeiten...
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Fr, 28.10.11, 16:28

Borax hat geschrieben:
Aber lassen wir die Spitzfindigkeiten...
gute Idee :)
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Fr, 28.10.11, 19:20

Suntrader hat geschrieben:Da du jetzt hinter dem 7805 misst, brauchst du die Diodenschutzschaltung nicht.
also R4= 0 Ohm (Drahtbrücke), Diode entfällt
R5 = 33k
P1= 5K
R6= 10k
Wenn ich irgendwann mal mehr als nur maximal 9,99Volt messen, müsste ich ja theoretisch die Diodenschuztschaltung wieder hinzufügen. Kann ich dann einfach R5 durch zwei teilen und dazwischen die Diode an Masse hängen?



.
Dateianhänge
ATmega8-DVM-v1.06.jpg
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 28.10.11, 22:39

Wenn ich irgendwann mal mehr als nur maximal 9,99Volt messen, müsste ich ja theoretisch die Diodenschuztschaltung wieder hinzufügen.
Dann würdest Du aber nicht mehr hinter dem 7805 messen.
In diesem Fall würde ich das über einen weiteren Kanal (z.B. ADC1) mit einem eigenen Spannungsteiler (und Diodenschuztschaltung) machen. Ob dann über Software oder über einen Schalter der Kanal gewechselt wird kannst Du dann entscheiden.
BTW: In Deinem Schaltplan hast Du noch den ADC3 als Messeingang beschaltet (nicht ADC0).
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Sa, 29.10.11, 07:34

Borax hat geschrieben:
Wenn ich irgendwann mal mehr als nur maximal 9,99Volt messen, müsste ich ja theoretisch die Diodenschuztschaltung wieder hinzufügen.
Dann würdest Du aber nicht mehr hinter dem 7805 messen.
Ich weiß :wink:
In diesem Fall würde ich das über einen weiteren Kanal (z.B. ADC1) mit einem eigenen Spannungsteiler (und Diodenschuztschaltung) machen. Ob dann über Software oder über einen Schalter der Kanal gewechselt wird kannst Du dann entscheiden.
Nee, wenn dann würd ich ein neues basteln!
Falls ich den DVM hingekriege, bastele ich mir eh mehrere zusammen... Mit verschiedenen Anzeigen und so..., solange bis ich die Nase voll habe von DVMs, dann kommt was neues dran :-)

Guck mal, eben hast du mir ein neuen Denkanstoß gegeben...
Später bastel ich mir dann mehrere DVMs in einem. Ich kann ja dann über ADC0 einen Bereich messen, über ADC1 einen anderen und so weiter...
Ey cool , danke dir :-)
BTW: In Deinem Schaltplan hast Du noch den ADC3 als Messeingang beschaltet (nicht ADC0).
Ooohhh :oops:
Dateianhänge
ATmega8-DVM-v1.07.jpg
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Sa, 29.10.11, 09:59

Ok. Na dann mal los! ;)
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Sa, 29.10.11, 17:20

Borax hat geschrieben:Ok. Na dann mal los! ;)
Cool, dann fang ich mal an :-)
Gib mir ein paar Tage...


Eben war ich auf conrad.de um nach BC557 zu schauen, da gibt es drei Ausführungen, nämlich A, B und C:
http://www.conrad.de/ce/de/product/1547 ... Detail=005
http://www.conrad.de/ce/de/product/1550 ... Detail=005
http://www.conrad.de/ce/de/product/1549 ... Detail=005

Kann ich für diesen Schaltplan irgend einen nehmen?
Würd mich mal interessieren, warum es da drei Versionen gibt... Steht warscheinlich im Datenblatt, ahaaa :o
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 29.10.11, 18:02

Mohi hat geschrieben: Steht warscheinlich im Datenblatt, ahaaa :o
Damit hast du Recht :)
Der Buchstabe bezieht sich auf den Verstärkungsfaktor. Es gibt drei Klassen, wobei C den höchsten hat. Ich kaufe immer C, wenns geht. Kosten ja eh alle nichts. Für diese Anwendung würden A und B aber genauso gut gehen.
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Mo, 31.10.11, 22:28

Hab die C-Variante des BC557 geholt...

Schaltung hab ich jetzt soweit fertig und die Segmentanzeigen leuchten auch schon :-)

Wie man auf dem Bild sieht leuchtet die mittlere Segmentanzeige nicht so gut und das liegt daran, weil die Steckbrücken (Drähte) nicht sauber den Kontakt auf dem Steckbrett halten...
Bin am überlegen, ob ich nicht die Segmentanzeigen auf ne Lochraster löte, so mit Stiftleisten zum draufstecken auf das Steckbrett, dann hab ich auch nicht mehr so'n Kabelwirrwarr :-)

Code hab ich auch schon, sieht bisher so aus:

Code: Alles auswählen

$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output

Config Portb = &B11111111

Config Portc.0 = Input

Do
Loop
End
Spannend, nicht?? :-D

Irgendwann mal soll dann der DVM (momentan auf dem Steckbrett) mit auf die Platine für die Spannungsversorgung. Ist gleich oben drüber zu sehen (oben links steht 8-20V)...

Die Schaltung scheint korrekt zu laufen, ich glaub jetzt kommt der schwierige Teil, nämlich Code :-(

Ma gucken, was ich so im Internet finde...

Schönen Abend euch
Dateianhänge
CIMG4859.JPG
Zuletzt geändert von Mohi am Di, 01.11.11, 06:16, insgesamt 1-mal geändert.
Suntrader
Mega-User
Mega-User
Beiträge: 167
Registriert: Mi, 05.10.11, 00:51

Mo, 31.10.11, 23:59

Mohi hat geschrieben:Hab die C-Variante des BC557 geholt...

Schaltung hab ich jetzt soweit fertig und die Segmentanzeigen leuchten auch schon :-)
he he , fein fein :)

Wie man auf dem Bild sieht leuchtet die mittlere Segmentanzeige nicht so gut und das liegt daran, weil die Steckbrücken (Drähte) nicht sauber den Kontakt auf dem Steckbrett halten...
Bin am überlegen, ob ich nicht die Segmentanzeigen auf ne Lochraster löte, so mit Stiftleisten zum draufstecken auf das Steckbrett, dann hab ich auch nicht mehr so'n Kabelwirrwarr :-)
bestimmt keine schlechte idee Probier vorher noch das multiplexen aus, dann siehst du ob es hell genug ist.

Code hab ich auch schon, sieht bisher so aus:
..
Spannend, nicht?? :-D
hmm ... basic :cry: sieht immer wieder schlimm aus, :roll: glücklicherweise wars ja nicht soviel. :mrgreen:

Hatte heut zu nichts wirklich Lust da hab ich mal die Tiny version designed. Aber es sind ne Menge Entscheidungen zu treffen, z.B. ob ich 3 oder 4 Tasten dran mache. Und wie das Layout aussehen soll, was die Software alles so machen soll, ist ja ne Menge Speicher drin der nicht leer bleiben will. Auf jeden Fall ist nen Temperatursensor mit drin immer Spannung ist ja langweilig.
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Di, 01.11.11, 14:47

Wie meinst du das das ich das multplexen ausproboeren soll??
Die drei Segmentanzeigen sind gemultiplext.

Wenn ich die 3 oder besser gesagt 4 SA56 auf ne Lochrasterplatine löte, wirds eh nur 8 Pins geben für die 4 Anzeigen und die 4 Anoden der jeweiligen Segmentanzeige...

Wegen Basic:
Achhh Du bist ja nicht soo der Basic _freund, gell?
Ist aber einfach! Wenn ich es schon mehr oder weniger evrstehe, dann ists wirklich einfach :-)))

Auch witzig von dir, das du einfachs o aus langeweile dir was zusammen baust ;-)
Wahrscheinlich entstehen so immer die Mega-Erfolgd-Erfindungen :-)))
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Di, 01.11.11, 15:40

Die drei Segmentanzeigen sind gemultiplext.
Im Moment noch nicht. Sie leuchten ja alle gleichzeitig.

Um mal einen schnellen Multiplex-Test zu machen nimm mal diesen Code:

Code: Alles auswählen

    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000

    Config Portd.2 = Output
    Config Portd.3 = Output
    Config Portd.4 = Output

    Config Portb = &B11111111

    Config Portc.0 = Input

    Set Portd.2
    Set Portd.3
    Set Portd.4

    Do
        Reset Portd.2
        waitms 1
        Set Portd.2
        Reset Portd.3
        waitms 1
        Set Portd.3
        Reset Portd.4
        waitms 1
        Set Portd.4
    Loop
    End
Dann sollten immer noch alle leuchten, aber eben dunkler, weil jede Anzeige nur noch ein drittel der Zeit leuchtet.
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Di, 01.11.11, 18:26

Ahaa, ok du meinst nicht hardwareseitig Multiplex sondern softwareseitig...

Gut, habs gerafft, aber leider gibt es keinen Unterschied, was Leuchtstärke betrift, ob es zwischen Do und Loop leer ist, oder folgendes steht:

Code: Alles auswählen

Reset Portd.2
Waitms 1
Set Portd.2
Reset Portd.3
Waitms 1
Set Portd.3
Reset Portd.4
Waitms 1
Set Portd.4
Leuchtstärke ist bei beiden Codevarianten gleich...

Hmm, liegt es an der Hardware, oder an der Software, das die Leuchtstärke sich nicht ändert?

Eins steht fest, die 3 Segmentanzeigen müssen auf eine Lochrasterplatine...
Ist ja der Hammer, wie die einzelnen Segmente unterschiedlich stark leuchten, wenn ich dann noch einzelne Steckbrücken leicht bewege, dann blinken die Segmente sogar wie verrückt...

Mist, das bedeutet, ich muss ne Lochraster zurecht sägen, feilen und dann verlöten und verdrahten... Wird wieder supper fummelig, das Ganze...
Aber ich denk, dass das Flimmern der Segmente dann reduziert wird...


Übrigens hab bei den R2s ein Kilo Ohm Widerstände benutzt...
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Mi, 02.11.11, 09:08

Mohi hat geschrieben:Ahaa, ok du meinst nicht hardwareseitig Multiplex sondern softwareseitig...
Ich hab das Gefühl, du verstehst noch nicht ganz, was Multiplex bedeutet.
Dazu muss einmal die Verdrahtung entsprechend ausgeführt worden sein, wie du es ja schon getan hast. Dann muss in der Software aber auch entsprechend geschaltet werden. Es leuchtet immer nur eine Anzeige nach der anderen. Deshalb nimmt ja die Helligkeit ab.
Man stellt für die Segmente die Ausgangsbits entsprechend ein, und dann schaltet man kurz die entsprechende Anzeige dazu ein. Dann werden die Bits für die nächste Anzeige geladen, und auch diese nur kurz eingeschaltet. Das Tempo macht dann die scheinbar kontinuierlich leuchtende Anzeige draus.
Mohi
Mega-User
Mega-User
Beiträge: 104
Registriert: Di, 11.10.11, 08:13

Sa, 05.11.11, 13:35

Hab erst mal die Segment Anzeigen auf ne Platine gelötet, war ne ganz schöne Fummelarbeit... Mit entsprechendem Equipment wäre das wohl einfacher gewesen :?

Jedenfalls leuchten die Segmentanzeigen jetzt viel gleichmässiger, kein Flackern mehr...

Wegen Multiplex:
Also mir ist schon klar was Multplex bewirken soll...
Hat man beispielsweise 64 LEDs, dann kann man sich entweder einen AVR mit 64 Ports suchen :-) oder man verbindet die LEDs zu einem Quadrat , also acht mal acht LEDs senkrecht und acht mal acht LEDs waagerecht.
Etwa so (wobei ein "o" eine LED bedeutet):

Code: Alles auswählen

 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
 o---o---o---o---o---o---o---o--- (+)
 I   I   I   I   I   I   I   I
-) (-) (-) (-) (-) (-) (-) (-)

So hat man nur noch 8 senkrechte und 8 waagerechte Kontakte um die 64 LEDs zu steuern...

Gut, das ist Multplex hardwareseitig. Softwareseitig ist dann Multiplex so wie du das beschrieben hast:
Beatbuzzer hat geschrieben:Dann muss in der Software aber auch entsprechend geschaltet werden. Es leuchtet immer nur eine Anzeige nach der anderen. Deshalb nimmt ja die Helligkeit ab.
Man stellt für die Segmente die Ausgangsbits entsprechend ein, und dann schaltet man kurz die entsprechende Anzeige dazu ein. Dann werden die Bits für die nächste Anzeige geladen, und auch diese nur kurz eingeschaltet. Das Tempo macht dann die scheinbar kontinuierlich leuchtende Anzeige draus.
Was nur noch nicht so ganz klar ist, warum werden die einzelnen Segmente nacheinander mit hohem Tempo kurz eingeschaltet?
Man kann doch die einzelnen Segmente ganz normal an und wieder ausschlaten wie bei LEDs auch...


Und was mir beim coden auch noch nicht ganz klar ist, wie bekomme ich einen Wert auf die Segmentanzeigen?
Ok, ich configuriere erst mal den ADC des ATmega8 wie folgt:

Code: Alles auswählen

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Mit GETADC kann ich dann den entprechenden Pin als Messpunkt festlegen. In meinem Beipsiel ist es PC.0 (ADC0) also muss ich GETADC (0) dem Code hinzufügen

Die eingegeben Spannung an PC.0 (ADC0) wird nun mit der Spannung an AVcc (5Volt) verglichen...

Hab ich das bis hier hin so einigermaßen richtig verstanden?
Wenn ja, wie bekomme ich dann den "Vergleichswert" auf die Segmentanzeige?



Und hier meine SA56-Platine fürs Steckbrett. Es sind zwar vier Segmentanzeigen drauf gelötet, aber nutzen werde ich erst mal nur drei Segmentanzeigen wie auf dem DVM-Schaltplan aufgezeichnet...
Dateianhänge
4-seg-anz.jpg
Antworten