Softwareprogramm mit Poti und AD-Wandlung

Gast #906846
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.
#907107
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.
#907179
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
Gast #907768
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).
#908258
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)

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