Hallo zusammen, ich habe eine analoge Spannung von 0-5V. Ich möchte diese mir über eine 7Sgement anzeigen lassen. Ein uC (z.b 8051) soll mir die Spannung über ein ADC auswerten und dann auf eine 7 Segment anzeigen. Das sind die Schaltschwellen... 1,9V 2,3V 3,1V 3,8V 4,6V 4,9V Habt ihr ein Programm Vorschlag o.ä.? Danke im vorraus :) Mfg Chris
Nimm lieber einen Controller, der einen ADC schon eingebaut hat (ATMega48 oder Tiny26 wären mein Vorschlag). Das Programm selbst ist trivial. Etwas Augenmerk musst du auf die Stromversorgung des ganzen legen.
H.Joachim Seifert schrieb: > Nimm lieber einen Controller, der einen ADC schon eingebaut hat > (ATMega48 oder Tiny26 wären mein Vorschlag). > Das Programm selbst ist trivial. > Etwas Augenmerk musst du auf die Stromversorgung des ganzen legen. Als ob es keine 8051 mit ADC gibt...
Chris schrieb: > Habt ihr ein Programm Vorschlag o.ä.? Bei welchem Teil genau hast du denn Schwierigkeiten? Pseudocode
1 | ....
|
2 | |
3 | |
4 | while( 1 ) { |
5 | |
6 | adcWert = ADC abfragen |
7 | |
8 | if( adcWert < adcWert für 1.9V ) |
9 | stelle 0 auf der 7-Seg dar |
10 | |
11 | else if( adcWert < adcWert für 2.3V ) |
12 | stelle 1 auf der 7-Seg dar |
13 | |
14 | else if( adcWert < adcWert für 3.1V ) |
15 | stelle 2 auf der 7-Seg dar |
16 | |
17 | ...
|
18 | }
|
eigentlich einfach genug, wenn man die 'Baugruppen' ADC und 7-Segment-Anzeige auch nur annähernd im Griff hat. Zumal die Anzeige in diesem Fall im Grunde ja ganz einfach als 7 LED aufgefasst werden kann, ohne auf irgendwelche Spezialitäten Rücksicht nehmen zu müssen, wie zb Multiplexing. Jeder der mit seinem µC ein paar LED gezielt ein/ausschalten kann, sollte diesen Teil eigentlich hinkriegen.
fonsana schrieb: > WAS soll er denn auf diese eine 7-Segment ausgeben? Es geht vermutlich um eine Gan_g_anzeige für ein Auto.
Rufus Τ. Firefly schrieb: > Es geht vermutlich um eine Gan_g_anzeige für ein Auto. Ich will auch so eine Glaskugel! fonsana
Route_66 schrieb: > fonsana schrieb: >> Ich will auch so eine Glaskugel! > > In meinem Kaffeesatz steht: für ein Bike! Meinst du Mopedfahrer?
fonsana schrieb: > Was denn; Glaskugel mit Kaffeesatz? Alles nur virtuell! Sowas kann man sich auf einer Sieben-Segment-Anzeige ausgeben lassen!
fonsana schrieb: > WAS soll er denn auf diese eine 7-Segment ausgeben? "Prindel" http://www.youtube.com/watch?v=fYxR0lheTEE&feature=endscreen&NR=1
Ja das ist für mein Motorrad, Das hat einen Gangsensor welcher im 1 Gang 1,9V 2 Gang 2,3V 3 Gang 3,1V 4 gang 3,8V 5 Gang 4,6V 6 Gang 4,9V ausgibt. Und mit dem möchte ich jetzt auf einen 8051 (testweise) gehn. Ich wollte das ganze mit EdSim51 ausprobieren ;) Programmvorschläge?! Danke
Chris schrieb: > Programmvorschläge?! waren ja oben schon als Pseudo-Code vorgegeben. > Ich wollte das ganze mit EdSim51 ausprobieren ;) Lass doch mal sehen, was du bisher schon so in deinem Edsim51 als Rahmen für deine Ganganzeige programmiert hast. Wir helfen gerne bei der Aufdeckung von Fehlern ...
Chris schrieb: > Programmvorschläge?! Ja willst du nen fertigen Code? Wenn du einen Attiny oder einen Atmega nimmst kriegst du den vielleicht sogar, weil schon x-Leute sowas gemacht haben.
Also ich habe hier mal den ADC ... jetzt weis ich aber nicht wie ich diesen Wert umrechne das ich wie oben genannt die gewünschte Zahl bei dem bestimmten Wert rausbekomme ORG 0 ; reset vector 0000| JMP main ; Springe in Hauptprogramm ORG 3 ; external 0 interrupt vector 0003| JMP ext0ISR ; springe in die externe 0 ISR ORG 0BH ; timer 0 interrupt vector 000B| JMP timer0ISR ; jump to timer 0 ISR ORG 30H ; Hauptprogramm startet hier main: 0030| SETB IT0 ; Interrupt einschalten 0032| SETB EX0 ; Interrupt einschalten 0034| CLR P0.7 ; P0.7 leeren 0036| MOV TMOD, #2 0039| MOV TH0, #-50 003C| MOV TL0, #-50 003F| SETB TR0 0041| SETB ET0 0043| SETB EA 0045| JMP $ ; Ende des Hauptprogramms timer0ISR: 0047| CLR P3.6 0049| SETB P3.6 004B| RETI ext0ISR: 004C| CLR P3.7 004E| MOV P1, P2 0051| SETB P3.7 0053| RETI
bei diesem projekt unter software hast du code für einen atmega8 und ausgabe an 7 segment! weiters findest du auch noch die schaltung wie der adc mit der spannung verbunden ist! mfg
Chris schrieb: > jetzt weis ich aber nicht wie ich diesen Wert umrechne das ich wie oben > genannt die gewünschte Zahl bei dem bestimmten Wert rausbekomme Du brauchst nichts 'umrechnen'. Du brauchst einfach nur mit einem Wert vergleichen, ob der Wert vom ADC kleiner ist oder nicht. Und die Vergleichswerte kriegst du, indem du dir einen Taschenrechner nimmst, und deine Spannungen zurückrechnest auf die Werte, die dir der ADC liefern würde, wenn genau die Spannung anliegt. Machs doch nicht zu kompliziert zu programmieren. Die Rechnung selber ist ganz einfach. Das ist einfach nur ein Dreisatz. Wenn der ADC bei 5V 1023 liefert (Annahme das ist ein 10 Bit ADC), welchen Wert liefert er dann bei 2.78V? Das ist in der Kategorie: 5 Äpfel kosten 3 Euro. Wieviel kosten 8 Äpfel? Das ist doch keine Hexerei das mit dem Taschenrechner auszurechnen. Ausserdem wird es wohl herzlich egal sein, ob die Schwelle jetzt genau bei 1.9V liegt oder bei 1.89 oder bei 1.91 oder anderen Werten in dieser Nähe. Dein Schaltgetriebe liefert sowieso nur die SPannungen die es liefert und maximal beim Schalten mal kurz einen Zwischenwert. D.h. Du könntest die Werte auch einfach feststellen, in dem du den ADC machen lässt und dir einfach mal für jeden Gang den Wert notierst, den der ADC liefert. Dann rechnest du dir den Wert dazwischen aus und du hast deine Schaltschwelle ohne dich auch nur im Geringsten um irgendwelche Spannungen gekümmert zu haben. Einfach die 'Schwellen' am Objekt selber abnehmen, so wie der ADC das Objekt sieht. Komisch. Heutzutage will jeder was ganz tolles hochtechnisches bauen und die einfachsten Herangehensweisen muss man ihnen immer erst mal lernen.
Karl Heinz Buchegger schrieb: > Das ist doch keine Hexerei das mit dem Taschenrechner auszurechnen. Ich lasse das trotzdem den Compiler ausrechnen. Als Mensch kann man Tippfehler machen. Ich würds daher in C schreiben und nicht in Assembler.
Peter Dannegger schrieb: > Als Mensch kann man Tippfehler machen. Naja, kannst du beim Code wohl auch, oder?
Chris schrieb: > Also ich habe hier mal den ADC ... Nö. Du hast was falsches gepostet. Außerdem muß man wissen, welchen 8051 mit ADC Du verwendest.
Peter Dannegger schrieb: > Chris schrieb: >> Also ich habe hier mal den ADC ... > > Nö. Und ich hab mir schon gedacht - was hat da der timer damit zu tun. Aber was weiß ich schon von den 8051 :-) > Du hast was falsches gepostet. Eher was falsches kopiert :-)
fonsana schrieb: >> Es geht vermutlich um eine Gan_g_anzeige für ein Auto. > > Ich will auch so eine Glaskugel! Für Ganzanzeigen braucht man aber eine Zlaskugel! :-) Gruss Harald
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.