Ganzanzeige mit uC

Gast #3164889
Lesenswert?

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
#3164917
Lesenswert?

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.
Gast #3166021
Lesenswert?

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
Gast #3166075
Lesenswert?

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
#3166087
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren