Forum: Mikrocontroller und Digitale Elektronik AD Wandler Programmieren


von Di L. (dillelara)


Angehängte Dateien:

Lesenswert?

Hey Forenteam,

ich bin das erste mal hier und viele beiträge hier haben mir geholfen en 
paar aufgaben zu lösen =).

Ich habe diesmal nur ein problem was ich garnicht lösen kann.
Ich bin im 2. Semester und habe ein Microcontroller Labor das ich 
relativ wenig verstehe.


Das programm soll mit Keil uVision3 und in c programmiert werden.

Aufgabenstellung Lautet:

Erstellen Sie zunächst ein Programm, das den gemessenen Spannungswert 
auf der
Siebensegmentanzeige auf 2 Stellen nach dem Komma darstellt. Benutzen 
Sie hierzu die
Anzeigen ANZ1 bis ANZ3.
Bestimmen Sie den Koeffizienten zur Umrechnung des Digitalwertes in 
einen Spannungswert
mit Hilfe eines Bruchs mit ganzen Zahlen im Zähler und Nenner. Verwenden 
Sie keine
Fließkommazahl!


Würde mich freuen wenn mir jemand helfen kann zumindest einen ansatz zu 
finden.

LG und dankeschön im vorraus =)

von flip (Gast)


Lesenswert?

Meine Glaskugel sagt mir 8051

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Aufgabe lässt sich doch wunderbar in mehre Teile zerlegen, die Du 
unabhängig voneinander lösen kannst:

- Ansteuern der Siebensegmentanzeige

Schreibe eine Funktion, die beliebige Werte auf die Siebensegmentanzeige 
ausgibt.
Schreibe eine Funktion, die die Dezimalpunkte der Siebensegmentanzeige 
ansteuert.

- Ansteuern des A/D-Wandlers

Lies das Datenblatt, initialisiere den Wandler und miss.

Wenn Du den Teil "Ansteuerung der Siebensegmentanzeige schon gelöst 
hast, kannst Du diesen Teil nutzen, um Dir die Rohdaten des Wandlers, 
also den Wert im Bereich 0 - 1023, den Dir der Wandler liefert, auf die 
Anzeige auszugeben.

- Umrechnen der Rohdaten des A/D-Wandlers in einen Fixkommawert

Hier musst Du Dir ansehen, welcher Eingangsspannungswert welchem 
Wandlungsergebnis (also dem Wert im Bereich von 0 - 1023) entspricht.

Entwickle eine Formel zu Umrechnung. Und überlege Dir, wie Du das ohne 
Floatingpoint-Arithmetik hinbekommst.

- Alles zusammenfügen

Hast Du alle drei Teilaufgaben gelöst, musst Du sie nur noch sinnvoll 
kombinieren --- und bist FERTIG!

von Karl H. (kbuchegg)


Lesenswert?

Dilara Saljii schrieb:

> Würde mich freuen wenn mir jemand helfen kann zumindest einen ansatz zu
> finden.

Wobei genau hast du jetzt ein Problem?

Wenn du die Anzeige in Hunderstel-Volt machen sollst und der ADC bei 
einem Voltwert von 5V (also 500 Hunderstel Volt) einen Wert von 1024 
liefert, wie rechnest du dann den ADC Wert um?


   Für 1024 Euro kannst du 500 Äpfel kaufen.
   Sei ADC ein beliebiger Wert zwischen 0 und 1024:
   Wieviele Äpfel (x) kannst du daher für ADC Euro kaufen?


    1024   .....   500
     ADC   .....     x
   --------------------
          ADC * 500
     x = -----------
            1024

von Floh (Gast)


Lesenswert?

Hast du die ersten beiden Versuche verpennt?
Wenn nein, geheich davon aus, dass du Werte auf den Anzeigen darstellen 
lassen kannst.
Dann sollte man den AD-Wandler dazu überreden, eine Wandlung 
durchzuführen. Also schnell das dementsprechende Kapitel im Datenblatt 
des uns unbekannten Controllers durchlesen.
Dann zeigst du uns den Code, und dann kann man weiterdiskutieren.

von flip (Gast)


Lesenswert?

Geh doch schrittweise vor, lies nach, wie man den ADC konfiguriert, tu 
das, lass die ausgabe vorerst weg. meinetwegen bestimmte werte irgendwie 
simulieren oder stur den eingelesenen wert anzeigen, vll. auch bitweise. 
stufe 2 ist dann umrechnen in volt und anzeigen
wenn schritt 1 fertig ist, darfst du dich wieder melden.

von Steel (Gast)


Lesenswert?

Wo ist denn das Problem?

"Formel" aufstellen um den AD-Wert in eine Spannung umzurechnen 
(Dreisatz sagt dir was?).

Wenn der Faktor z.B. 0.561 ist, dann sollst du den Ausgabewert berechnen 
indem du mit 561 multiplizierst und dann durch 1000 dividierst. Also 
keine float Berechnungen.

Dann den Wert auf dem Display ausgeben.

von Di L. (dillelara)


Lesenswert?

Ja ich hab die ersten beiden versuche aber keine ahnung ich steh voll 
auf dem schlauch :P

Aber Danke für die Antworten =)

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.