4 LEDs so lange wie möglich leuchten lassen, aber wie?
Moderator: T.Hoffmann
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?
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?
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 hat geschrieben:Was ist daran 'Falsch'?Dürfen schon, aber die Messgenauigkeit leidet.
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.Durch entsprechende Software bekommt man die gleiche Anzeigegenauigkeit hin.
Aber lassen wir die Spitzfindigkeiten...
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?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
.
Dann würdest Du aber nicht mehr hinter dem 7805 messen.Wenn ich irgendwann mal mehr als nur maximal 9,99Volt messen, müsste ich ja theoretisch die Diodenschuztschaltung wieder hinzufügen.
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).
Ich weißBorax hat geschrieben:Dann würdest Du aber nicht mehr hinter dem 7805 messen.Wenn ich irgendwann mal mehr als nur maximal 9,99Volt messen, müsste ich ja theoretisch die Diodenschuztschaltung wieder hinzufügen.
Nee, wenn dann würd ich ein neues basteln!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.
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
OoohhhBTW: In Deinem Schaltplan hast Du noch den ADC3 als Messeingang beschaltet (nicht ADC0).
Cool, dann fang ich mal anBorax hat geschrieben:Ok. Na dann mal los!
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
- Beatbuzzer
- Auserwählter

- Beiträge: 3177
- Registriert: Fr, 17.08.07, 11:02
- Wohnort: Alfeld / Niedersachsen
- Kontaktdaten:
Damit hast du RechtMohi hat geschrieben: Steht warscheinlich im Datenblatt, ahaaa
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.
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:
Spannend, nicht?? 
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
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
EndIrgendwann 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
Zuletzt geändert von Mohi am Di, 01.11.11, 06:16, insgesamt 1-mal geändert.
he he , fein feinMohi hat geschrieben: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...
bestimmt keine schlechte idee Probier vorher noch das multiplexen aus, dann siehst du ob es hell genug ist.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
hmm ... basicCode hab ich auch schon, sieht bisher so aus:
..
Spannend, nicht??
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.
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
))
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
Im Moment noch nicht. Sie leuchten ja alle gleichzeitig.Die drei Segmentanzeigen sind gemultiplext.
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
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:
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...
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.4Hmm, 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...
- Beatbuzzer
- Auserwählter

- Beiträge: 3177
- Registriert: Fr, 17.08.07, 11:02
- Wohnort: Alfeld / Niedersachsen
- Kontaktdaten:
Ich hab das Gefühl, du verstehst noch nicht ganz, was Multiplex bedeutet.Mohi hat geschrieben:Ahaa, ok du meinst nicht hardwareseitig Multiplex sondern softwareseitig...
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.
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):
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:
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:
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...
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
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:
Was nur noch nicht so ganz klar ist, warum werden die einzelnen Segmente nacheinander mit hohem Tempo kurz eingeschaltet?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.
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 AdcDie 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...


