Forum: Compiler & IDEs Servo Signal lesen mit ATtiny26


von Unkrautmonster (Gast)


Lesenswert?

Hi,

nun sitze ich schon den ganzen Tag und bekomms einfach nicht hin.. :(
Zuerst wollt ichs mit nem Counter einfach über nen IO pin messen, dann 
hab ich bemerkt das das Signal nur 3V hat.. (Bei 5V Betriebsspannung des 
AVR's wird der High wert ja erst bei 3,5V erreicht)
Nach vielen weiteren versuchen in der richtung landete ich beim ADC, 
weil's da ja egal is wie viel Spg. am Signal anliegt :D
Bring ich grad aber auch nicht hin.. :(

Jetzt würd ich von euch gerne wissen welche möglichkeiten sich da noch 
bieten würden.. ohne viel elektronik, in nem Servo geht das Signalkabel 
ja auch meist nur durch nen Wdst. und dann dierekt in nen Controller.. 
:P

Was gäbs denn da für möglichkeiten? Hab mal was von Input Capturing 
gehört..?
Oder werden da wieder spannungen in 5V gegend benötigt?

Wenn ihr also nen Code oder ein beispiel übrig hättet wär ich euch sehr 
dankbar.. ;)

von Max (Gast)


Lesenswert?

Tipp:
Nimm nen einfachen NPN-Transistor und verpass dem an der Basis das 
Signal, der erkennt ab ~ 1V sicher ein "High" und zieht dann seinen 
Kolektor (und den daran angeschlossenen Pin) auf low -> fertig is die 
Laube.
Zur Abtastung:
1. Möglichkeit: Quick & Dirty Timerinterrupt mit ~10 kHz in der routine 
den Pin einlesen und was hochzählen wenn das Signal dann zu Ende ist 
wird der Wet ins Hauptproggi geschoben (per globaler Variable). (in den 
int kann man dann glei mehrere Signale abtasten, oder noch ein paar 
taster abfragen...
2. Möglichkeit: lies dir das dbl. zum input capture durch und dreh da 
dann was (hab grad nich das vom tiny da...)...

PS: normalerweise erkennt ein avr an 5V aber ab ~ 2,7 V sicher high...

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Mach doch RC und dann ADC, oder ist dir das nicht genau genug?
Ansonsten, nimm einen normalen rising-edge Interrupt und setze in diesem 
die Taktquelle eines Timers.
Dann im falling-edge Interrupt die Taktquelle wieder auf 0 setzen.
Nun einfach das Timerregister auslesen und mal die Frequenz nehmen.
Schon ist die Zeit da.

Mit freundlichen Grüßen,
Valentin Buck

von Unkrautmonster (Gast)


Lesenswert?

Die 3,5V bei High hab ich aus'n Tutorial hier, häng ich für die Active 
High aber den PullDown Wdst dran sinkt die Signal Spg. weit ab 
komischwerweise beim Transistor auch.. was vlt. egal wär aber bei nem 
servo sinkt die Spg. bloß um 0,05-0,1V, so zusagen also garnicht..

Daher leg ich viel wert drauf meinen empfänger nicht zu killen :D

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Unkrautmonster schrieb:
> Die 3,5V bei High hab ich aus'n Tutorial hier, häng ich für die Active
> High aber den PullDown Wdst dran sinkt die Signal Spg. weit ab
> komischwerweise beim Transistor auch.. was vlt. egal wär aber bei nem
> servo sinkt die Spg. bloß um 0,05-0,1V, so zusagen also garnicht..
>
> Daher leg ich viel wert drauf meinen empfänger nicht zu killen :D

Aus welchem Tut. hast du du denn d. Ang. mit d. 3,5V? U. Wozu hängst du 
d. Pulldown dran? Hast du mal n Schaltpl. f. uns, dmt. w. u. e. Bld. 
mchn. knn.?

Und hör auf damit, jeden Quatsch abkürzen zu wollen!!!

Gruß,
Magnetus

von Unkrautmonster (Gast)


Lesenswert?

Ja moment das mit dem Pulldown Widerstand versteh ich grad auch nicht 
mehr, war wohl ne reine verzweiflungs sache, denn der Empfänger gibt ja 
sowieso neben den 3V auch die 0V aus.. :P
War'n hilfloser verbesserungs versuch peinlich xD

Das mit den 3,5V hab ich von hier: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29

von Unkrautmonster (Gast)


Lesenswert?

Einen Tag nach meinem Blackout hab ich's nun geschafft, und nebenbei 
gelernt mit Interrupts zu arbeiten :D

Trotzdem Danke an euch ;)

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.