• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Übertritt kontinuierlich => diskontinuierlich im digitalen Regler
#81
Bezüglich ADC, okay.

Die Settlingtime (Einschwingzeit) nach Umschaltung berücksichtigst du sicher. Wieviel Bit musst du ein? Der Vorteil bei freerunning ist ja, das immer was im Register zum Abholen steht. Auch lässt sich der Modus beliebig per Interrupt syncen. Die Abholung des Wertes bei Freerun ist in jedem Fall schneller als eine Einzelmessung.
 
#82
Wie kann ich Christian mal erklären, dass ich synchron zum variablen Arbeitstakt messen muss und dass ich deswegen kein freerunning-ADC gebrauchen kann?

Irgendwie kann ich die Info nicht erfolgreich transportieren.
 
#83
Zitat:Original geschrieben von E_Tobi
So Bausteine für Multiphasen-Wandler gibts auch schon fertig, guck mal hier:
LTC3861
Die im PC-Bereich, die einige Zehn oder sogar hundert Ampere bei wenig Spannung aus 12V oder 5.5V wandeln nehmen sowas.
Ferrari gegen 2-Takter-Mofa. Hat was... Danke für den Link.
 
#84
Wie kann ich erklären, dass wenn der Arbeitstakt niedriger ist als die Samplerate, freerunning schneller und codesparender ist?
 
#85
Verstehst Du denn nicht, dass der variable Arbeitstakt und das freerunning nicht synchron laufen?

So kann es vorkommen, dass ich mitten in einer freerunning-Wandlung die Spulenladung einschalte. Wie soll ich das verhindern? Woher soll ich wissen, dass das passiert ist?

Gleiches beim Ende der Spulenladung. Entweder hol ich mir einen zu alten Messwert ab. Oder einen gestörten, weil ich die Spulenladung schon wieder beendet hab.

Man kriegt keine Synchronität zu einem variablen Takt, wenn der andere Takt frei läuft. Das ist wie Zündfunke irgendwann. Im besten Fall bleibt der Motor stehen. Im schlechtesten Fakll zerlegt er sich. Rund laufen kann er nicht mehr.
 
#86
Natürlich verstehe ich das und habe auch eine Lösung dafür.

öhm,

So kann es vorkommen, dass ich mitten in einer freerunning-Wandlung die Spulenladung einschalte. Woher soll ich wissen, dass das passiert ist?

?

Kann man das nicht als gegeben ansehen?
 
#87
Manchmal hakst Du - trotz Deiner üblichen Genialität - ziemlich massiv. Das ist auch vielleicht gut so, denn sonst bekäme man Angst vor Dir.

---------

Also nochmal:

Wenn ich die Spule an der Batterie auflade, so steigt der Spulenstrom an. Ich indiziere den jeweiligen Aufladungsbeginnzeitpunkt mit ungeraden Ziffern und den Entladungsbeginn mit geraden Ziffern. Die Zeiten berechnen sich durch ein im Controller verstecktes Formelwerk.

t1 = 0 us
t2 = 40 us
t3 = 120 us
t4 = 176 us
t5 = 251 us
usw...

Ich bin gezwungen, meine AD-Wandlung exakt zu diesen Zeitpunkten zu starten, um nach jweils weiteren 22 us dann ein Wandlungs-Ergebnis verfügbar zu haben.

Was für eine Lösung hast Du mit einem freerunning-ADC anzubieten?
 
#88
Wie fange ich am besten an..

Ein ADC, der nicht permanent läuft, benötigt/hat mehr Zeit zum samplen, als einer der immer läuft (Ladungsübertragungszeit). Das lässt sich aus dem Timingdiagramm ersehen. Im Freerunning gibt es "quasi" keine Wartezeit zwischen den Messungen. (Wenn man das braucht)

Setzt man jetzt, auf Kosten der Auflösung, die Frequenz des ADCs auf einen wesentlich höheren Wert, als dein Programm arbeitet/berechnet/sampled, kann man sich das Anstossen einer Messung sparen, da man hinreichend genau ein Ergebniss im Register trifft. Ich bin der Überzeugung, dass das reine Abholen des Wertes weniger Code benötigt, als das zusätzliche Anstossen und Abholen der Messung. (1 vs. 2 Befehle)

Bitte entschuldige, dass ich ein paar Links einwerfen muss:

http://www.atmel.com/Images/doc8444.pdf

http://www.openmusiclabs.com/learning/di...tmega-adc/
(Abbildung 4-6)

Nach Abbildung 1 geht die Auflösung natürlich runter, aber man muss dabei berücksichten, dass dies ebenfalls abhängig von der Quellimpedanz ist, die bei deiner Spule sicher sehr klein sein wird.

Man darf auch nicht vergessen, dass das erste Ergebnis nach dem Einschalten des ADC ungültig ist und verworfen werden muss.

So war/ist meine Idee/Kenntnisstand.
 
#89
Und warum sagst Du nicht einfach: "setz doch die Wandlerfrequenz hoch"?

Daraufhin sag ich Dir dann ebenso kurz: " nein. Ich brauch die volle Auflösung, sonst komm ich zu leicht in Regelschwingungen."
 
#90
Zitat:Original geschrieben von christianw.
Ich bin der Überzeugung, dass das reine Abholen des Wertes weniger Code benötigt, als das zusätzliche Anstossen und Abholen der Messung. (1 vs. 2 Befehle)

Das Anstoßen geschieht beim PIC mit einer Bitsetzung "GO = TRUE" und kostet eine Mikrosekunde.

Abholen muss ich den Wert so oder so.

Das Tolle ist, dass der Wert gespeichert bleibt und ich mir ihn dann abholen kann, wenn ich ihn in der Formel wirklich brauche.

Beim Freerunning dagegen MUSS ich ihn zwischenspeichern.
 
#91
Lasse ich gelten.

(Ich fand meine Lösung aber auch ganz gut. Big Grin )
Ich dachte, du nimmst einen Atmel. Kann man beim PIC den ADC auch über ein Compare-Register "autotriggern"? Bei einigen Atmel kann man den ADC nämlich auch auf den Komparator biegen.
 
#92
Ne. Solche Tricks kann der PIC alle nicht. Der kann noch nicht einmal freerunning... Wink

Aber ich kann ja jederzeit auf Atmel umsteigen. Die Formeln sind ja der Kern. Ansonsten brauch ich nur einen Timer, Ports und ADC. Nicht mal nen Interrupt. Selbst die PWM brauch ich nicht.

Ich werde aber wohl beim PIC bleiben, weil der soll ja auch in meine Handbohrmaschine. Ich machen diesen Zwischenschritt in diesem E_Tobi-Projekt ja nur, weil ich hoffe, daraus Erkenntnisse für Deine LED-Treiberei zu gewinnen.

 
#93
Beim 2-Zylinder kann ich eigentlich auch mit konstanter Frequenz arbeiten. Ich teile also einen Zyklus in zwei gleich lange Abschnitte. Und in jedem Abschnitt kann sich t_on dann zwischen 0% und 100% austoben, also 0-50% des Zyklusses.

t_off ist dann in konstant die Hälfte eines Zyklusses.
 
#94
Ich schaffs nicht. Das ist ein Bit-Schubser. Kein Formel-Cruncher. Ich brauch 300us zum Rechnen. In nur 400us ist meine Spule aber randvoll. So geht das nicht.

Nun gibts noch eine Chance.

Ich muss ihn gemütlich im Vordergrund rechnen lassen.

Und im Hintergrund - per Interrupts gesteuert - muss ich an den Pins rumwackeln, den Timer steuern und den ADC anwerfen. Der Vordergrund-Rechentask setzt - irgendwann - t_on und t_off. Und der Hintergrund liefert stets frische Werte der ADC-Wandlungen.

Also völlige Entkopplung durch Bufferung.

Das hat natürlich den großen Charme, dass ich mit einem Schlag allen Timing-Stress los bin. Die Controller-Geschwindigkeit ist mir dann schnuppe. Wen kümmerts, wann das Ding genau auf Lastschwankungen reagiert? Das dauert dann halt ein paar Millisekunden, bevor er seine Formeln durchgeleiert hat. Na und? Im Hintergrund tackert der Motor trotzdem gleichmäßig und zuverlässig.

 
#95
Und nun ist der kleine PIC den großen Atmels auf einmal überlegen. Denn er hat nen schnelleren Wandler. 3-faches Tempo.
 
#96
Achja? Der Wandler im Atmel ist variabel taktbar.

Ansonsten dachte ich, du machst es wie letztendlich beschrieben - Berechnung im Hauptthread und Timing in den Interrupts. überrascht
 
#97
ich nehm doch Rücksicht auf Dich. Du musst nicht denken. Lesen genügt. Ich schrieb in #92:

"Ansonsten brauch ich nur einen Timer, Ports und ADC. Nicht mal nen Interrupt. Selbst die PWM brauch ich nicht."

 
#98
Zitat:Original geschrieben von christianw.
Achja? Der Wandler im Atmel ist variabel taktbar.
Datenblatt lesen. Wenn ich die volle Auflösung behalten will, braucht der 60us, wenn ich mich richtig erinnere. 500kHz durch 23 oder sowas ähnliches
 
#99
Zitat:Original geschrieben von Rumgucker
ich nehm doch Rücksicht auf Dich. Du musst nicht denken. Lesen genügt.
Kein Wunder, dass du keine Freunde hast. Rolleyes

Zitat:Original geschrieben von Rumgucker

Zitat:Original geschrieben von christianw.
Achja? Der Wandler im Atmel ist variabel taktbar.
Datenblatt lesen. Wenn ich die volle Auflösung behalten will, braucht der 60us, wenn ich mich richtig erinnere. 500kHz durch 23 oder sowas ähnliches

War das gefordert? Der Wandler ist trotzdem variabel taktbar, mit all seinen Nachteilen. Streukapazitäten verringern auch die Auflösung, da sie die Wandlungszeit erhöhen. klappe

Bei 8 Bit Genauigkeit *1/2Bit Headroom kommt man auf 1MHz, reicht das nicht?

http://www.openmusiclabs.com/learning/di...tmega-adc/
Abbildung 1
 
Ich hatte doch nun mehrmals geschrieben, dass ich die volle Auflösung brauche, um Regelschwingungen unwahrscheinlicher zu machen.

Alternativ könnte ich auch nen 2-Pumkt-Regler oder Delta-Sigma machen. Aber warum?