Forum: Mikrocontroller und Digitale Elektronik Softwareprogramm mit Poti und AD-Wandlung


von chris (Gast)


Lesenswert?

Hallo an Alle,

Ich bin Anfänger auf dem Gebiet der μ-Controllertechnik.
Will nichts desto trotz ein kleineres Projekt realisieren.

Ich habe ein Programm mit 13 LED´s welche aufsteigend immer eine höhere 
Wertigkeit haben.
Nun will ich mit einem Poti, den ich langsam aufdrehe, die LED´s langsam 
hochlaufen lassen. Wenn ich bei einer Einstellung für eine gewisse Zeit 
verharren (5Sekunden), dann soll der μC die LED´s langsam wieder 
runterregeln.

Ich hab mich mal eingelesen das ich hierfür eine AD-Wandlung benötige, 
allerdings ist mir die Anwendung noch nicht ganz klar wie ich mit der 
AD-Wandlung die LED´s ansteuern kann.

Danke für eure Hilfe schonmal im vorraus.

von Frank L. (hermastersvoice)


Lesenswert?

mit der AD Wandlung kannst du keine LED steuern. Das Ergebnis der 
Wandlung wird in einem Register abgelegt und kann dann nach Belieben 
verarbeitet werden.

bye

Frank

von Rahul D. (rahul)


Lesenswert?

>mit der AD Wandlung kannst du keine LED steuern. Das Ergebnis der
>Wandlung wird in einem Register abgelegt und kann dann nach Belieben
>verarbeitet werden.

sinnfreier Post...


Der AD-Wandler liefert dir einen Wert zwischen 0 und einer oberen Grenze 
(je nach Auflösung des ADC).
Nimmt man beispielsweise einen 8-Bit ADC so, liefert dieser Werte 
zwischen 0 und 255.
Dieses Intervall muß man dann nur noch in 13 Teile teilen und jeden Teil 
jeweils einer Diode zuordnen.
Wenn man dann noch den aktuell eingelesene Wert mit dem vorhergehenden 
vergleicht, kann man auch das gewünschte Timeout programmieren.

von Alexander L. (lippi2000)


Lesenswert?

Also du willst quasi mit dem Poti nen Spannunsgteiler aufbauen und somit 
den Wert von 0-2,5V z.B. verändern. Ist die Änderung groß, werden 
entspr. viele LED's angeschalten. Ist die Änderung klein, so nimmt der 
aktuelle Wert ab.

1. ADC einlesen und Wert abspeichern.
2. Delay oder Timer für Verzögerung
3. neuen Wert über ADC  einlesen und separat abspeichern
4. Auswertung der Differenz beider Werte
5. (Diff groß --> ausgabewert erhöhen)bzw.(diff klein --> ausgabewert 
verringern.
6. Ausgabewert für LED's aufbereiten
7. alles in ne Endlosschleife


Gruß Alexander

von Alexander L. (lippi2000)


Lesenswert?

Ach ja, zwischen Schritt 6 und 7 musst du natürlich den alten Abtastwert 
mit dem neuen austauschen.

von chris (Gast)


Lesenswert?

Danke schonmal für eure vielen Anregungen.

>Also du willst quasi mit dem Poti nen Spannunsgteiler aufbauen und somit
>den Wert von 0-2,5V z.B. verändern. Ist die Änderung groß, werden
>entspr. viele LED's angeschalten. Ist die Änderung klein, so nimmt der
>aktuelle Wert ab.


Ich will den Poti von 0 an langsam aufdrehen bis zum maximum. Die LED´s 
sollen sich dann von der untersten langsam nach oben schrauben, so das 
am Ende die letzte LED leuchtet wenn ich den Poti voll aufgedreht 
habe.(Also es soll immer nur eine LED leuchten).

von Karl H. (kbuchegg)


Lesenswert?

chris wrote:

> Ich will den Poti von 0 an langsam aufdrehen bis zum maximum. Die LED´s
> sollen sich dann von der untersten langsam nach oben schrauben, so das
> am Ende die letzte LED leuchtet wenn ich den Poti voll aufgedreht
> habe.(Also es soll immer nur eine LED leuchten).


Können wir fürs erste den Teil mit 'langsam aufdrehen' und
'die LED sollen langsam der Potistellung nachgeführt werden'
mal vergessen?

Denn dann wird die Aufgabenstellung einfacher:
Die Anzahl der LED soll von der Potistellung abhängen.
So wie die Potistellung ist, soviele LED sollen leuchten.


Einverstanden?

> die Anwendung noch nicht ganz klar wie ich mit der
> AD-Wandlung die LED´s ansteuern kann

gar nicht. Das Eine hat mit dem Anderen nichts zu tun.
Aus dem AD-Wandler kriegst du einen Zahlenwert von 0 bis 1023.
Nicht mehr.
Was du dann mit diesem Zahlenwert machst ist dein Bier.
Du brauchst also eine Umrechnung von diesem Zahlenwert zu
der Anzahl der LED die leuchten sollen. Wie könnte das aussehen?

Nun, nehmen wir einfach mal an, ich liefere dir Zahlen von 0 bis 1023.
(Im Grunde ist es ja völlig egal, woher diese Zahl kommt. Ob ich
die Zahlen vorgebe oder der AD-Wandler ist ja völlig nebensächlich)

Deine Aufgabe ist es aus dieser Zahl zu errechnen, wieviele LED
leuchten sollen. Du weißt
bei einer Zahl von 0 sollen 0 LED leuchten
bei einer Zahl von 1023 sollen 13 LED leuchten

Aus diesen beiden Angaben musst du dir jetzt eine Formel bauen,
die dir für jede beliebige Zahl x, die Anzahl der zu leuchtenden
LED bestimmt.

zb könntest du sagen:  y = x * 13 / 1023;

Setzt du für x (also den Wert den du vom ADC bekommst) mal eine 0
ein, so liefert die Formel den Wert 0 ( also keine LED leuchtet),
setzt du für x mal 1023 ein, so kommt 13 heraus (also alle LED
sollen leuchten). Setzt du 768 ein, so liefert die Formel
768 * 13 / 1023 = 9, also 9 LED sollen leuchten.

Tja. Und jetzt brauchst du noch Programmcode, der sich diese
Zahl hernimmt und die entsprechende Anzahl an LED auch tatsächlich
einschaltet.

Ich würde mit letzterem anfangen:
* ein Programm schreiben, welches eine bestimmte Anzahl an
  LED einschalten kann. Die Anzahl ist natürlich variabel.
* wenn das soweit funktioniert, dann hängst du die Umrechnung
  von 0..1023 davor und testest ob auch das funktioniert
* wenn soweit alles klar ist, dann kommt der ADC ins Spiel,
  der die Zahl liefert, welche nach Umrechnung die entsprechende
  Anzahl an LED einschaltet (das ganze natürlich in einer
  Schleife, damit die LED-Reihe auch immer vom Poti-ADC
  nachgeführt wird)

von chris (Gast)


Lesenswert?

Dankeschön für eure zahlreichen Lösungsvorschläge

von Florian (Gast)


Lesenswert?

Hallo Chris,

bin auch Anfänger und hatte mir neulich das gleiche überlegt als ich 
über AD Wandlung gelesen habe. Sag mal ob es geklappt hat, wenn du 
fertig bist!

Viele Grüße
Flo

von chris (Gast)


Lesenswert?

Hallo Flo,

Ja das ganze funktioniert so. Danke nochmals an jeden für eure Beiträge.

Wenn du nicht weiterkommst, kannst du aber auch nochmal den Walter 
fragen.


Gruß Chris

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.