Jump to content
Schiffsmodell.net

Fragen zu Programm #3 "RC-Kanal einlesen"


Recommended Posts

Hallo Thorsten,

 

mir ist nicht ganz klar, warum in dem Programm die Frequenz auf 8 MHz erhöht werden muss. Meine beiden Alternativ-Beipiele laufen auch bei 1 MHz für mich ohne erkennbaren Fehler. Nach meinem Verständnis sollte der Prozessor bei 1 MHz immer noch schnell genug die Interrupts abarbeiten können. Oder übersehe ich hier etwas?

Link to comment

Nachdem ich mich in den letzten 2 Wochen etwas intensiver mit der Thematik beschäftigt habe, wage ich hier jetzt mal eine Antwort (auch wenn ich meilenweit von nicht mehr "gefährlichem Halbwissen" entfernt bin.

 

- 8 Mhz bringt gegenüber 1 MHz bei prescale 1 des Timers theoretisch eine höhere Genauigkeit/höhere Auflösung der Messung. Der Timer wird ja mit der steigenden Flanke gestartet und wird dann mit jedem Prozessortakt um 1 erhöht bis die Flanke wieder abfällt. D.h. bei höherer Zählrate passt die Zahl nachher auch besser auf das Signal.

Zudem dürfte sich auch entsprechend die Zeit bis der Interrupt ausgelöst wird verkürzen, da bin ich mir aber nicht sicher.

Ob man das nun braucht oder nicht, sei mal dahingestellt....

 

 

Ohne Thorsten jetzt vorgreifen zu wollen, aber ich vermute mal dass hier demnächst das Ausgeben von Servosignalen noch mit auf dem Plan steht (Signal der Funke durch den µC schleifen).

Und für die Bascom-integrierte Servoroutine brauchts 8 Mhz sonst funktioniert die nicht :mrgreen: bzw. nur mit zuckenden Servos.

Link to comment
...- 8 Mhz bringt gegenüber 1 MHz bei prescale 1 des Timers theoretisch eine höhere Genauigkeit/höhere Auflösung der Messung. Der Timer wird ja mit der steigenden Flanke gestartet und wird dann mit jedem Prozessortakt um 1 erhöht bis die Flanke wieder abfällt...

Ja, wenn je Takt ein Befehl des AVR abgearbeitet wird und ich ein Signal von 1 bis 2 ms (=1000 bis 2000 µs) messen will, hat der Timer1 am Ende einen Wert in gleicher Größenordnung (eher etwas weniger wegen Verzögerungen im Programm) gemessen. Selbst wenn ich das jetzt noch mit 10 dividiere, sollte doch eine ausreichende Genauigkeit für weitere Aktivitäten erreicht sein. Bei 8 MHz würde ich zwar im gleichen Beispiel einen Wert zwischen 8000 und 16000 µs bekommen, aber hilft dieser größere Wertebereich wirklich weiter? Ich könnte mir vorstellen, dass die Übertragung von Zyklus zu Zyklus nicht so genau ist, als dass diese gesteigerte Genauigkeit wirklich weiter hilft.

Ohne Thorsten jetzt vorgreifen zu wollen...für die Bascom-integrierte Servoroutine brauchts 8 Mhz sonst funktioniert die nicht :mrgreen: bzw. nur mit zuckenden Servos.

Die Vermutung hatte ich auch schon; obwohl mir natürlich absolut nicht klar ist, warum. Aber vielleicht kriegen wird das ja noch im Kurs...

Link to comment

Nuja theoretisch wirds genauer :mrgreen:, da die Auflösung höher ist.

Nur, so genau sind unsere Anlagen so oder so nicht, dass damit 8000 Schritte auflösbar wären. Dazu zappelt das Signal bei den 2 Funken die ich bisher getestet habe (FC16 und Dx6i) doch viel zu stark rum, ohne dass man den Knüppel bewegt.

 

Deswegen nehm ich mittlerweile für das Einlesen nur noch nen 8Bit-Timer, da sinds dann nur 124 Schritte und das reicht dicke. Selbst damit kriegt man noch "Zappler" von 1 Schritt auf dem Signal.

 

Ich werd mich demnächst mal an eine Schottelsteuerung setzen, damit ich den Pumpjet nicht mit nem 1:4 übersetzten Servo rumdrehen muss.

 

Da wird es dann ggf. schon entscheidend, dass man mehr als 124 Schritte auflösen kann. Wobei das ist noch Zukunftsmusik, erstmal muss ich testen ob die 50Hz Servo-Ansteuerung überhaupt zu einer externen "Lage-Regelung" fähig ist. Da hab ich nämlich so meine Zweifel.

Link to comment
Hellmut Kohlsdorf

Time Bandit, hast natürlich recht. Aber ein Gedanke! Wenn man die Impulse mit hoher Auflösung erfasst und die Zahl dann durch schieben nach rechts um ein paar Bits schiebt, also durch 2 je Bit geschoben, dann vermeidet man schon beim erfassen die wakeligen Signale aus der Funke. Weiterhin kann man Signale nur weiterleiten, wenn dieses sich um ein gewisses Maß verändert hat, auch damit vermeidet man das Zittern der Servos wegen Ungenauigkeit der Signale der Funke!

Link to comment

Hi Leute,

 

die 8 MHz müssen rein funktionell tatsächlich nicht sein. Allerdings wird die Interrupt-Routine auch verlassen, während die Zeitmessung läuft. Damit in den 1..2ms noch was Sinnvolles im Programm (das auch nicht immer so kurz ist) passieren kann, darf der Prozessor schon etwas Dampf haben... und warum auch nicht - die Taktfrequenz ist ja verfügbar.

 

Etwas Unruhe hat man bei der Messung immer, das liegt in der Natur der Sache. So genau und stabil werden weder die Sender-Potis noch der Empfänger arbeiten.

 

Das etwas zittrige Verhalten bekommt man durch entsprechende Bereichsfenster und eine Skalierung der gemessenen Werte in den Griff. Selbstverständlich ist es technischer Unsinn, eine R/C-Kanalposition in 8.000 Schritte aufzulösen... :mrgreen:

 

Viele Grüße

 

Torsten

Link to comment
  • 1 month later...
Frankenmatrose

Hi Leute,

 

wollte nur mal wieder ein µC-technisches Lebenszeichen geben.

 

Mein erster Problem mit dem Programm war schlicht, dass ich das falsche geflasht hatte :cluebat:

 

Jetzt brauch ich erstmal eine funktionierende Signalquelle, um mit der PWM spielen zu können. Mein Servotester ist nämlich hin, genauso wie mein Senderakku...

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.