Forum: Mikrocontroller und Digitale Elektronik Wieviele Timer nötig?


von Thomas O. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich stehe vor folgendem Problem das ich 4 Verbraucher schalten will und
das ganze mit einem 16 Bit Timer machten will um eine große Genauigkeit
zu haben. Weiß aber nicht so richtig wie ich das machen soll. Ich habe
mir überlegt immer den nächsten Zeitpunkt ans Output Match zu übergeben
und müsste aber irgendwie der Interrupt-Routine übergeben was an der
Reihe ist.

Kann mir jemand sagen ob meine Überlegung Erfolg verspricht oder gibt
es da einen einfacheren Weg wie man das machen sollte.

von crazy horse (Gast)


Lesenswert?

und wie lang sind die "schwarzen"? µs, ms, s, min?

von Thomas O. (Gast)


Lesenswert?

Hallo,

Überschrift pass tnicht mehr so zum geänderten text da ich erst
überlegt hat 2 Timer einzusetzten was aber einen anderen AVR nötig
gemacht hätte.

Also im extrmsten Fall sind die schwarzen Balken 6 mSek lang.

von Paul (Gast)


Lesenswert?

> Also im extrmsten Fall sind die schwarzen Balken 6 mSek lang.

6ms maximale oder minimale Länge? "Extremfall" kann beides
bedeuten...

von Thomas O. (Gast)


Lesenswert?

Hallo,

minimale Länge, es kann aber passieren das sich die Überschneidung
verringert wenn der erste Impuls kürzer wird oder der 2te später
erfolgen soll und da denke ich wird dann die Probleme geben oder ist es
wirklich damit getan einfach eien neune Wert ins Compare Mtch Register
zugeben und beim nächsten Takt wird schon drauf reagiert. Deshalb
meinte ich evtl. 2 Timer dann hätte man ja genug abstand wenn z.b.
Timer 1 Nur Impuls 1 und 3 steuert und Timer 2 nur Impuls 2 und 4.

von ...HanneS... (Gast)


Lesenswert?

Was willst du überhaupt damit steuern? - Denn vielleicht geht es ja viel
einfacher, als du momentan denkst.

Und gib mal minimale UND maximale Schaltzeit an.

Wenn 6ms minimal sind, dann hast du ja bei 1MHz sechstausend Takte
Zeit. Da bietet es sich an, mittels Timer einen Zeittakt von z.B. 0,1ms
zu erzeugen und Register als "Zeitzähler" zu verwenden. Der Vergleich
der 4 (8, für ein und aus?) Schaltzeiten kann dann ja per Software
erfolgen, falls der AVR nicht noch mit UART, LCD und weißderGeierwas zu
kämpfen hat.

Wodurch sollen die Impulse ausgelöst werden? Also wonach richtet sich
Impulsbeginn, -Dauer und -Überlappung?

Was muss der AVR noch alles machen?

...

von Thomas O. (Gast)


Lesenswert?

Hallo,

wollte das Projekt eigentlich garnicht nennen, da man das als
Überforderung meinerseits abstempeln wird. Wobei ich ja garkeine
fertige Lösung suche sondern nur ein paar Tips obs so überhaupt gehen
würde. Ich konnte aber auch größere Aktoren nehmen dann reicht eine
kleienre Zeit als 6mSek udn es gäbe dann keine Überschneidung mehr. Es
geht ja eigentlich nur um ein paar Takte die ich dazwischen Zeit haben
müsste um einen neuen Wert in Comare Match Reister zu schreiben.

Es sid 4 Aktoren die abwechselnd angesteuert werden die Zeiten betragen
zw. 140mSek bis 6mSek bzw. auch kürzer gemacht werden könne wenn ich
größere Aktoren nehme.

von crazy horse (Gast)


Lesenswert?

ms sind Welten Welten für einen MC.
Mach es entweder so, wie Hannes es gesagt hat (der Timer erzeugt einen
Grundtakt in der geforderten Auflösung), der Rest ist Software.
Eine Alternative wäre die Nutzung des OC-Interrupts, bei der du in der
OC-ISR folgendes machst:
-einen Zähler erhöhen
-aufgrund dieses Zählers verzweigen, was zu tun ist
-OC mit der Zeit bis zum nächten Ereignis laden.

state++
switch (state){
case 1: PIN1=1;OCR1A+=xxx;break;
case 2: PIN2=1;OCR1A+=xxx; break;
case 3: PIN2=0;OCR1A+=xxx;break;
.
.

}

in der letzten Anweisung setzt du "state" wieder auf 0, dann geht der
Kram von vorne los. Die passenden OCR-Werte musst du dir ausrechnen,
hängen vom Vorteiler und Takt ab.

von Thomas O. (Gast)


Lesenswert?

Hallo,

ja der Grundtakt ändert sich aber ständig in der Frequenz sowohl auch
in der Pulsweite. Er ist abhängig von einer Scheibe die sich immer
dreht, umso schneller sie dreht desto schneller wird auch die Frequenz
da an einer bestimmten Stelle der Scheibe was ausgelöst werden soll.

Aber ihr habt mir schon geholfen, ich muss jetzt nur schauen das ich
die Überschneidung wegbekomme und dann hätte ich ja genug Zeit jedesmal
den OC neu zu setzten und in der Interruptroutine mit einem Zähler das
ganze zu lösen.

von Thomas O. (Gast)


Lesenswert?

Hallo,

@HanneS: Das ganze richtet sich nach einem Kennfeld das die Zeitpunkte
abgelegt hat. Im Prinzip kann man sagen höhere Drehzahl längere
Impulse. Dazu spielen dann noch ein paar andere Faktoren rein die das
ganze dann verkürzen oder auch etwas verlängern.

von Rahul (Gast)


Lesenswert?

Hallo Thomas!
So wie du das beschreibst (höhere Drehzahl, längere Impulse), klingt
das nach einer PWM.

von crazy horse (Gast)


Lesenswert?

klingt mir eher nach Einspritzung :-)
Auch die Überschneidung ist kein Problem:
Pin1 setzen, OCR +4,9ms
Pin2 setzen, OCR +0,1ms
Pin1 aus, OCR +5ms

Damit wird der Pin mit 5ms angesteuert, 0,1ms Überlappung.

von Santa Klaus (Gast)


Lesenswert?

Oder geht es vielleicht um die "Überlistung" eines Geldspielautomaten?

von Thomas O. (Gast)


Lesenswert?

Hallo,

@Santa Klaus. Ne nichts kriminelles.

@Crazy Horse hat recht, worum es geht. Ich will da was flexibles machen
wo nicht nur die Impulslänge nach hinten verändert wird sondern auch der
Beginn der Einspritzung um mich je nach Strömungsverhältnissen anpassen
zu können damit z.b. kein Sprit in der Überschneidung verloren geht usw
hat viele Gründe die dafür sprechen.

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.