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.
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
>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.
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
Ach ja, zwischen Schritt 6 und 7 musst du natürlich den alten Abtastwert mit dem neuen austauschen.
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).
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)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.