PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lauflicht - einstellbare Geschwindigkeit - wie?



CapSob
25.06.2007, 22:30
Folgendes:Ich will eine Lauflichtschaltung bauen. Das Lauflicht soll 4 Programme haben:

1. Lauflicht
2. Zufall
3. Strobo
4. Alle An

Die Programme durchschalten, die Treiber-Stufe für die Lampen und der AVR an sich ist alles kein Problem.

Meine Frage ist bloß, wie kann ich extern die Geschwindigkeit einstellen? Wenn ich ne feste Geschwindigkeit hätte, wärs kein Prolem (waitms 500, etc.). Aber wie würdet ihr ne externe Geschwindigkeitsregelung machen? Poti mit Spannungsteiler am AD-Eingang? Oder doch andere Idee?

Pls hlp.
mfg,
Cap.

PICture
26.06.2007, 07:25
Hallo CapSob!

Ich bin zwar ein PIC Benutzer, aber habe eine Idee, die Dir vielleicht sogar gefällt. :)

Ich würde als externen Oszillator einen Spannung/Frequenz Wandler verwenden.

MfG

askazo
26.06.2007, 07:42
Spannungs-Frequenz-Wandler geht natürlich auch. Aber wozu ein extra IC verbraten, wenn's mit AVR-Bordmitteln geht?

Der Ansatz mit dem Poti am ADC ist schon mal gut. Damit hast Du Deinen Stellwert im Controller.

Zur Geschwindigkeitssteuerung ist ein Timer mehr als prädestiniert.
Mit einem Output Compare Interrupt kannst Du dann Dein Lauflicht steuern.

askazo

PICture
26.06.2007, 08:01
Hallo!

Natürlich, mann muss immer eine Kompromisslösung finden. Meistens ist es schwerig, da je mehr Hardware, um so einfachere Software und umgekehrt.

MfG

Bart W.
26.06.2007, 10:18
Hallo

Ich habe sowas vor kurzem auch gemacht und habe es so gelöst:
Wartezeit die mindestens einmal gewartet wird und je nach wunsch bis zu 255 mal hintereinander. Die Anzahl veränder ich bei mir per (Interrupt-)Knopfdruck. ADC und Poti ist aber auf jeden Fall bequemer, aber dann sind immer die Batterien so schnell alle. :wink:

bart

Otti20vt
26.06.2007, 11:24
Poti mit Spannungsteiler am AD-Eingang? Oder doch andere Idee?
.

Genau so und der wert vom ADC kannst du direkt als wert benützen, also Wait "ADC Wert"

ist doch voll eazy :-s

-tim-
26.06.2007, 13:04
Hallo ich weiß jetzt zwar nicht mit welchem Controller du diese Schaltung aufbeuen willst, aber ich weiß das einige Controller als Taktgeber auch ein RC Glied unterstützen. Bei dieser Möglichkeit änderst du halt den gesammten Systemtakt des Controllers.

Diese Möglichkeit hab ich schon mal bei einem PIC gesehen und im Datenblatt vom ATMega 16 steht dazu auch was drin. Vielleicht wäre das eine echte Alternative, denn so mußt du nicht irgendwelche Werte einlesen, analysieren und verarbeiten.

mfG Tim

CapSob
26.06.2007, 17:41
danke erstmal für die schnellen antworten!

ich würde für die schaltung eine mega8 verwenden, der liegt bei mir so grad rum ;)

ich finde die idee von -tim- eigentlich am besten - würde das rc-glied auch beim mega8 funktionieren?

EDIT:
beim rc-glied würde dann, wie in deinem bsp, r durch nen poti ersetzt werden - so könnte ich die gesamte geschwindigkeit des uC einstellen - ja?
END EDIT

alternativ würde ich die idee von Otti20vt aufgreifen. scheint recht simpel zu sein. bloß hab ich da folgendes problem:

ich hab beim mega8, bzw. allgemein, noch nie mit dem adc gearbeitet. gibts da irgendwo ein beispiel, am besten mit programmcode in basic? genauso bei spannungsteiler. ich hats zwar mal in der schule, aber das ist schon ewigkeiten her.

ich weiss bloß noch, dass ich z.B. einen widerstand mit zB 2k nehm, und nen poti mit 2k. widerstand zu 5V, poti zu masse. zwischen widerstand und poti bekomm ich jetzt ne spannung von 0V - 2,5V - richtig? wie müsste ich dann die ADCref am mega8 beschalten?

ahh.... input-overflow...

pls hlp.

-tim-
26.06.2007, 19:49
Hallo,
also der ATMega 8 unterstützt die RC Taktgebung. Siehe dazu das Datenblatt ab Seite 29.

Wie du schon geschrieben hat, der Widerstand ist bei veränderbarem Takt durch ein Poti zu ersetzen. Wie genau jetzt die Formel zur Berechnung der Taktfrequenz ist, welche Werte der Kondensator und das Poti haben muss, kann ich dir auf Anhieb nicht sagen, aber im Netz sollte dazu was zu finden sein.

mfG Tim

wkrug
26.06.2007, 21:35
Das mit der R/C Taktung würd ich lassen.
Ich hab ein Prog, das die Taktgeschwindigkeit am Controller umschaltet.
Nach dieser Sequenz hängt sich das Programm jedesmal auf.
Ausserdem kann es passieren, das das R/C Glied bei bestimmten Widerstands zu Kapazitätswerten nicht mehr zuverlässig anschwingt.

Also die A/D Wandler Variante:
Für den AREF Anschluß brauchst Du nur noch eine zusätzlichen 100nF Kondensator, wenn Du die interne Referenzspannungsquelle des ATMEGA 8 benutzt. Da es bei Dir ja nicht um absolute Präzision geht kann auch die Drossel am AVCC Eingang entfallen, einen 100nF Kondensator würd ich dem AVCC Eingang schon gönnen. Also AVCC mit VCC verbinden + 2x100nF anschalten.
Mit deiner Beschaltung 2k Vorwiderstand + 2k Poti (10k + 10k ginge auch), sollten sich A/D Werte von 0...1000 erzeugen lassen.
Diesen Wert kannst Du ja dann direkt in deiner "waitms" Warteschleife verwenden. Eventuell solltest Du den Bereich um 0 etwas entschärfen indem Du z.B. 100 zum A/D Wandlerwert dazuzählst.