Ich hab da so ein kleines "Gedankenproblem"...
Ich arbeite mit einem Tiny2313 / 4313 (je nach Größe die ich brauche,
entscheidet sich noch), in diesen möchte ich 4 PWM Signale einlesen (Von
einem RC Empfänger, nein: der Empfänger liefert kein Summensignal).
Meine Gedanken zur Vorgehensweise ist jener: Ich lasse einen Timer
laufen, lasse die steigende und fallende Flanke von einem Ext. Int. Pin
lesen an denen das PWM Signal eines Kanales liegt. Messe dann die Zeit
vom Timer, setze ihn zurück und gehe von vorne los.
Nun hab ich da einen am laufen, benötige aber noch drei weitere. Da sich
ja die nur zwei Timer an Board befinden wird dies dann sicherlich schwer
zu realisieren sein. Nun frag ich mich ob es denn Sinn macht den
Gedanken, alle gleichzeitig lesen zu wollen, weiterzuverfolgen oder es
besser wäre sich über eine Art Mulitplexing zu machen?!
Meine Gedanken dazu: Ich lasse an PortD alle vier Kanäle jeweils an
einen Int Pin laufen. Timer2 (16 Bit) ließt die Signallänge der PWM aus.
Timer1 (8Bit) wechselt bei Überlauf den Int. Pin als Source. Somit
ließen sich ja bis zu acht Kanäle hintereinander auslesen. Halt
hintereinander... reichen da z.b. 50ms um einen gescheiten Mittelwert
aus einem RC PWM zu bilden oder ist das zu wenig?! Weil höher wollte ich
dann eigentlich nicht.
Oder gibt es da noch eine andere Möglichkeit?!
Liegen denn die RC-Kanalimpulse nicht zeitlich hintereinander im
Impulstelegram? Da würde doch ein Timer genügen. Der jeweilige
Kanalimpuls taucht doch erst nach ca. 20ms wieder auf.
Oder mach ich jetzt einen Denkfehler?
Meines Wissens nach senden RC-Empfänger die verschieden Signale immer in
einen 20ms Abstand, sodass immer bei maximal einem Channel das PWM
Signal anliegt.
sprich 1. 20->ms CH1 nächsten 20ms->Ch.2 ...
Das auszulesende Signal für ch.1 wird dann in diesem entsprechendem
Zeitraum(20ms) über die Länge des PWM-Signales übertragen.
So benötigst du für den kompletten RC-Emfänger insgesamt einen Timer
Ahhh....
Ja das kann sein, das muß ich mal durchmessen - also das mit den 20ms
Intervall... oder zumindest die Differenz zwischen den Signalen. Ich
weiß das ich bei meiner Spektrum da ein Timing einstellen kann (11ms,
16,5ms und 20ms) - hatte mich immer schon gefragt was dies sein könnte.
Da würde ja ein Timer wirklich reichen und dann einfach nur zeitlich
auswerten an welchem Pin der Interrupt auftritt - dann gestaltet sich
die ganze Geschichte ja doch ein wenig einfacher als Gedacht. Danke
euch.
Noch eine kleine Frage nebenher... isses sicherer für den Tiny wenn ich
die PWM Leitung mit einem 100Ohm Wiederstand an den Pin hänge oder gibt
es da Probleme?!
100Ohm bringen nicht viel als Schutz, kannst auch 1kOhm nehmen, wenn Du
Angst um Deinen Tiny hast. Das Signal wird dadurch nicht (wesentlich)
beeinflusst.
Draco schrieb:> Ich> weiß das ich bei meiner Spektrum da ein Timing einstellen kann (11ms,> 16,5ms und 20ms)
Was für ein Empfänger von Spektrum hast Du denn da?
Ist da zufällig ein kleiner "Satellitenempfänger" über ein 3-poliges
Kabel verbunden?
In dem Fall reicht der kleine Empfänger aus, dort fällt 115,2 kBaud
raus.
Knut B. schrieb:> 100Ohm bringen nicht viel als Schutz, kannst auch 1kOhm nehmen, wenn Du> Angst um Deinen Tiny hast. Das Signal wird dadurch nicht (wesentlich)> beeinflusst.
Danke, probiere ich mal aus.
Evtl. ist die APPNOTE AVR135 was für dich, zumindest zum inspirieren
lassen:
http://www.atmel.com/Images/doc8014.pdf
verwendet aber ICP und hat nur einen Kanal...
Draco schrieb:> (Von einem RC Empfänger, nein: der Empfänger liefert kein Summensignal).
Das tun Empfänger selten, für was auch. Ein normaler Modellbauer kann
damit nichts anfangen. Aber mit ein bißchen Phantasie, einem Scope und
ein wenig Spürsinn kann man das Signal sicher auf der Platine finden.
Und schon ist das Problem massiv geschrumpft.
MfG Klaus
Planlos schrieb:> Evtl. ist die APPNOTE AVR135 was für dich, zumindest zum> inspirieren> lassen:>> http://www.atmel.com/Images/doc8014.pdf>> verwendet aber ICP und hat nur einen Kanal...
Ja danke Planlos, die Appnote habe ich Tatsächlich schon durchgelesen
und auch die dazugehörigen Dateien mal eines Blickes riskiert. Für eine
hochpräzise PWM Auswertung ist diese Note natürlich absolut geil, aber
wie du bereits sagtest wird dort der ICP Verwendet, da stoße ich mit
meinem Tiny an die 2 Kanal Grenze (zwei externe Interrupt Pins, 2 Timer)
Bei meiner Version reicht da schon ein normaler Pinchange Interrupt über
PortB, ich errechne mir die Differenz zwischen der sinkenden und der
steigenden Flanken nach dem PWM Abfall und somit kann ich dann halt den
ganzen Port nutzen - ist natürlich relativ ungenau aber reicht
vollkommen aus für die Zwecke. Danke dennoch für deine Hilfe.
Klaus schrieb:> Das tun Empfänger selten, für was auch. Ein normaler Modellbauer kann> damit nichts anfangen. Aber mit ein bißchen Phantasie, einem Scope und> ein wenig Spürsinn kann man das Signal sicher auf der Platine finden.> Und schon ist das Problem massiv geschrumpft.>> MfG Klaus
Das mag stimmen Klaus, aber wie bereits oben geschrieben soll dies für
mehrere Modelle sein, ich kann und will auch nicht jeden Empfänger
öffnen und rumschustern. :D Wenn mir die Signale doch auch als PWM auf
Headern zur Verfügung steht. Da isses dann relativ simpel: Modell auf,
drei Servo Kabel ran, die Servo durchgeschleift und fertig.... und
sollte dann bei jedem funktionieren. Da brauche ich keinen Empfänger
öffnen oder drauf zu löten.
Aaaaber... einen SR410 kann ich ja dennoch mal opfern. Mal sehen...
Hi,
ich kann Dir sicher sagen, die Signale kommen nacheinander und in der
richtigen Reihenfolge. Das alles zusammen, allerdings mit 1,2ms high und
0,3ms Pause statt 1,5ms für Neutral, wird vom Sender an das HF-Modul
geschickt und kommt so beim Empfänger an.
Neutral für Servo ist also 1,5ms high, Neutral im Summensignal ist 1,2ms
high und 0,3ms low.Ob alle 16, 20 oder teilweise bis zu 30ms
Wiederholrate ist normalen Servos komplett egal.
Mit den PinChangeInterrupts geht das und wenn Du mit 8MHz oder mehr
taktest, wirst Du selbst mit primitivem Polling der Pins keinen
Unterschied merken.
Viele Empfänger haben das Summensignal, einfach mal in die Anleitung
schauen.
Oft optional wenn man z.B. Ch7-8 jumpert, dann ist das Summensignal auf
Kanal 1, RSSI auf 2 usw...
Sobald es aber einer der Vorgesehenen nicht hat, kannst Du Dir das
sparen.
Gruß,
Norbert
Draco schrieb:> Da würde ja ein Timer wirklich reichen und dann einfach nur zeitlich> auswerten an welchem Pin der Interrupt auftritt - dann gestaltet sich> die ganze Geschichte ja doch ein wenig einfacher als Gedacht.
Wenn in dem Empfänger die Signale direkt aus dem Summensignal generiert
werden, steht die Reihenfolge, in der die Pulse an den Pins auftauchen
auch fest - immer schön der Reihe nach, so wie sie im Summensignal eben
übertragen werden. Mit einem Oszi sieht man das schnell.
Servus Leute, hat der SR3300T einen PWM Signal?
Bin in der Sache eine leie, es geht darum ob ich einen Empfänger z.B den
SR3300T an einem DC Motor Regler anschließen kann. So dass ich es nicht
mit dem Hallgeber regle sondern über den Empfänger.