Hallo,
ich versuche mit einem µc die signale meines modellbau empfängers (die
zu den Servos etc. gehen) auszulesen und entsprechend an einem
Motorsteuerung etc. auszugeben. Die µc Seite stellt nicht das Problem da
(möchte einen Tiny2313 benutzen da dieser bis zu 16 IO als interrupt
konfigurieren kann, was perfekt zum abgreifen der Steuersignale ist, 4
PWM pins für ne Motosteuerung hat, nochn timer dabei und die sache ist
gegessen). Probleme macht mir das Steuersignal des Empfängers selbst,
habe erst nur versucht mit nem normalne voltmeter die spannung zu messen
ob da auch ein schöner TTL pegel rauskommt aber die ging nur bis auf
0.3V hoch was mir doch sehr komisch erschien da normale Servos ohne
probleme mit dem empfänger funktionieren und soweit ich weiss diese
einen TTL pegel zur steuerung brauchen. Dann dachte ich das ich wegen
des PPM signals nich richtig messen könnte und habs mit nem Oszi
probiert, auch da wieder maximal 0.3V aber das PPM Signal stimmte. Als
Masse hab ich entweder den Minuspol der spannungsquelle oder den
Minuspol der spannungsversorgung am Servostecker genommen keine
Änderung, nen richtigen Plan wie ich jetzt weitermachen soll hab ich
nich mehr, vielleicht hat jemand schonmal mit sowas rumexperimentiert
und kann mir nen tipp geben wie ich das nun hinbekommen könnte...
Achja die Fernsteuerung ist ein älteres Modell.. Westfalia Technica
Commander 2002 40 MHz mit dem entsprechenden Empfänger APR-5C hab schon
etliche Stunden mit google verbraucht um n etwas detailierteres
datenblatt als das was beiliegt zu finden weil da so gut wie nix drin
steht, aber fehlanzeige.
Grobi
> aber warum zeigt dann das Voltmeter auch nur 0.3V maximal an?
Ich meine ein Voltmeter ist nicht geeignet um ein Servosignal zu messen.
Wenn das Servo richtig funktioniert, wird warscheinlich die Messung
falsch sein. Aber miss mal die Versorgungsspannung am Servo. Probier mal
die Masseverbindung am Tastkopf nicht anzuschliessen, verändert sich
dabei das Oszillogram?
Äääääähhhh..... habe ich das richtig verstanden?? Du mist mit einem
Digitalvoltmeter die Impulsausgänge des Empfängers?? Dann kannst Du nur
M... messen, weil diese Ausgänge Pulsdauermoduliert sind! D.h. Du liesst
einen Impuls von 1-2 ms Länge (abhängig von der Knüppelstellung des
Senders), der sich alle 20ms wiederrholt. Dein DVM mittelt diesen Wert
natürlich und dann kommen solche Sachen bei raus. Für sowas solltest Du
sinnvollerweise ein Oszi verwenden!
wenn ich beim oszi masse nicht anschließe liegt die spannung bei ca.
2.irgendwas V und das signal wird ziehmlich verzerrt, wirft n Bogen und
hat kleine einbrüche zwischendurch. das kann nich gut sein.. das die
Messung mit dem Voltmeter nich korrekt sein kann dachte ich mir schon.
Habe das ganze an nen externen interrupt pin von nem mega32 gehängt (den
2313 hate ich noch nicht) und empfänger sowie controller über den selben
7805 versorgt also hatten die schonmal gemeinsame masse. Aber es sah so
aus als wenn der Interrupt nur ausgelöst wurde wenn sich der
steuerknüppel in einer extrem position befand dann war die spannung n
bischen höher was wohl fürn n high signal ausgereicht hat, aber das traf
auch nur sporadisch zu.... das der Empfänger zu wenig spannung
abbekommen hat kann auch nich sein, konnte dabei noch n servo steuern
(was aber nicht gut is da der servo zuviel strom zieht (der 7805 wurde
ganz schön warm)... weiss langsam echt nich mehr weiter..
Beitrag "Servo am Mikrocontroller"
ok den thread hatte ich auch schon mal gelesen.. wie das alles mit dem
interrupt und dem timer funzt is mir bekannt, aber hate wohl die stelle
überlesen wo stand man sollte doch nen 1kohm widerstand zwischen die
signalleitung hängen, das werd ich später mal probieren und dann
berichten... aber vielen dank schonmal für die schnellen antworten
hmm auch der 1Kohm widerstand inner Signalleitung hat nix gebracht, aber
habe festgestellt je nach Knüppelstellung bewegt sich die Spannung
zwischen 0.19 - 0.32V
Ich denke eher du solltest dich bei dem empfänger auf das komplette
PPM-Signal nivea begeben, d.h. vorm decode-chip (nach empfänger) das
PPM-Signal abgreifen und dann per yC deine maximal 9 servo-ausgänge PWM
moduliert weitergeben ... wenn ich es richtig verstehe nimmst du
momentan das PWM-Signal von jedem servo-ausgang ab (?)
wenn du einmal das PPM-Signal hast (ist mit osz recht einfach zu finden)
ist es dir egal wieviel volt (dme servo überigens auch) entstehen,
lo/!lo zählt, mehr nicht, die zeit dazwischen (0,5-1,5ms) ist der
servoweg, kann nun entweder 1:1 an den servo geben oder idealerweise per
yC an den servo geschickt werden, da erst in 20ms das nächste signal
kommt ist es ratsam aller 5ms den impuls an das servo zu senden, somit
kann es schneller vergleichen und schneller nachstellen, ich denke du
willst schiff/auto mit betreiben, das es das vielleicht nicht ganz so
wichtig, aber ich fliege und da macht bei präzisen 3d-kunstflug ein
augenblick (10ms) viel aus, habe ich festgestellt ... btw: digitalservos
machen das nicht anders, die merken sich das PWM signal und stellen
immer wieder nach bis ein neues signal kommt ... analog-servos kommen
nur in den vergleich rein wenn was ankommt ... und ob 0.3 oder 1V das
ist dem servo egal, google einfach mal nach der funktionsweise von
servos, dann weisst du wieso ... rihtig heisst es 0 oder nicht 0 ...
vielen dank, das hilft mir auf jedenfall schonmal weiter, werde
versuchen das PPM direkt abzugreifen.
Ja ich wollte halt jeden kanal einzeln von den servo buchsen am
Empfänger abgreifen, weil am Empfänger rumlöten wollt ich eigentlich
nicht, aber wenns nich anders geht dann halt so.
Das ganze soll in einen E-Heli der mir mal abgestürzt ist und den ich
wieder flott machen möchte brauch nur 3 Motoren damit zu steuern 2 haupt
(doppel rotor Koaxial heli) und weil die Taumelscheibenanlenkung sowie
die komplette steuerelektronik des helis schrott ist, ein dritter
kleiner motor der ihn nach vorn und hinten neigen soll. Nach Links und
Rechts rollen fällt dann halt weg, aber er sollte trotzdem noch
steuerbar sein durch die gegeläufigen hauptrotoren.
mhh .. kannst auch direkt den servo-impuls nehmen, geht schon, je
nachdem wie der empfänger zugänglich ist, für dein vorhaben ist
vermutlich der servo ausgang besser ...
ansonsten ist der rest recht "einfach" die 2 motoren musst du halt mit
strom versorgen, je nachdem wieviel "gas" du gibst, wobei einer linear,
der andere mit einer gaskurve gesteuert werden muss, da drehzahlabhäng
getrimmt werden muss, die trimmung selbst kommt ja auf dem "seitenruder"
gier heisst das glaube beim heli, die mischst du einfach in einen motor,
bzw. generell seite, damit kannst du links/rechts fliegen, willst du
noch vor/zurück geht das normalerweise über das nick servo, und roll
servo sollte auch sein, aber wenn die taumelscheibe auch im eimer ist
:-O
dann hinten ein motor dran (horizontal) und über drehzahl am besten
links/rechtslauf, da die doppelrotoern sich ja aufheben vor/zurück,
allerdings weiss ich nicht ob du dann noch das "koax-feeling" hast, das
schöne dort ist ja alle hebel los und der bleibt stehen ...
das ganze musst du aber über ordentlich FET's jagen, pwm alleine schaft
der AT nicht, die motoren ziehen ordentlich strom!
oder halt regler dahinter, wobei ein neuer LAMA V2 dann warscheinlich
billiger wird ...
ansonsten 3 eingänge, 3 ausgänge, und 2 mischer, dann passt das ;-)
ich glaub nur die brauchst so oder so keinen TTL-Pegel, ansonsten legst
du das ganze auf einen PNP transistor der schaltet bei 0 !0 und musste
halt 0 durchschleifen, aber brauchst nicht, ich denke direkt in den
atmel rein damit reicht völlig!
Kann es sein, dass dein Oszi auf AC-Messung steht?
Egal!
Der Impuls ist zwischen ~1ms und ~2ms lang. Je nach Hersteller variieren
die Werte etwas. Bei etwa 1,5ms ist die Mittelstellung.
Mehr braucht man eigentlich nicht zu wissen.
Bei einer PPM-Fernsteuerung (preiswerte Variante) werden die Impulse der
Reihe nach an die Empfänger-Ausgänge geleitet - bei PCM-empfänger werden
sie IMHO gleichzeitig ausgegeben.
Guck mal auf Hannes Lux Seite. Da hat er ein paar schöne Beispiele zu
dem Thema (so, jetzt habe ich mal Werbung für Hannes gemacht! [Erster!])
http://www.hanneslux.de
.... sooo ich hab grad alles nochmal zusammengebaut n kleines
Testprogramm gemacht, die Signalleitung an externen Interrupt, diesen
auf rising edge eingestellt und sobald er ausgelöst wird entsprechend
dann auf falling edge oder rising edge umschalten je nachdem was er
vorher war, wenn er bei falling edge triggert, was ja das ende des
Servosignals bedeuten würde, hab ich ihn einfach ne Varibale erhöhen
lassen, die dann über n seriellenport raus und siehe da wenn meine
Fernbedienung einngeschaltet ist wird der Interrupt jetzt auf einmal
getriggert und das auch dementsprechend oft wie es sich gehört, wenn sie
aus ist dann wird er ca. 1 oder 2 mal pro Sekunde nur getriggert was
aber wohl normal ist da sich der Empfänger wohl abschaltet wenn kein
Sendersignal mehr da ist.
Also es funktioniert.... aber keine ahnung warum jetzt auf einmal! Wenns
morgen immernoch geht kann ich ja endlich mit dem rest weitermachen.
Btw. für die Steuerung der 2 hauptmotoren wollte ich ein erzeugtes PWM
signal auf einen 2n2222 legen der mir dann die logigspannung(5V) direkt
auf nen IRF540N Fet schaltet (sollte dann entsprechend genug strom sein
um den Fet zu schalten, Spannunsmäßig schaltet der wohl schon ob 3V)
welcher dann die Akkuspannung direkt auf die Motoren schaltet. Für den
NickRotor hinten wollte ich einfach nen L293D verwenden, der sollte für
den kleinen Motor (Servomotor des abgestürzten Helis, die Sersos
bestanden nur aus so einem Minimotor und nem poti) ausreichen um ihn
drehzahlgesteuert links, rechts laufen lassen zu können. Das könnte doch
soweit funktionieren, oder hat da jemand einwände?`
Vielen Dank für eure viele und schnelle Hilfe!!!!!!!!!!
Grobi
wenn du einen koax-heli hast, brauchst du keinen motor hinten. da du
links/rechts durch drehzahlunterschiede der 2 hauptrotoren
bewerkstelligst, ich würde den hinteren motor gleich wie einen
hauptrotoer einbauen, damit kannst du dann vor/zurück, wenn du keine
taumelscheibe hast, ansonsten sind 2 servo besser als alles andere, und
ne taumelscheibe rein ;-)
"... Also es funktioniert.... aber keine ahnung warum jetzt auf einmal!
..."
Naja, wenn der Oszi-Tastkopf einen 50 Ohm-Eingang hatte, bricht halt das
Empfängerausgangssignal auf ganz kleine Spannungswerte zusammen.
Deine µC-Schaltung ist hochohmiger, wie die Servoeingänge auch. Deshalb
funktionierts jetzt.
Das wäre meine Vermutung.
Blackbird
...schon klar mit dem heckmotor das der so ausgerichtet werden muss wie
die hauptrotoren damit das nicken auch funktioniert sonst würde die
ganze koaxgeschichte auch keinen sinn mehr machen. Wollte nur sicher
gehen bovor ich alles komplet zusammenbaue das die motorsteuerung auch
so funktionieren kann mit den Fets usw...
Danke
Grobi