Hi!
Nein, du kannst das einfach so direkt anschließen.
Viele Grüße,
William
hallo,
ich verwende die RN-Control mit atmega 32 mit bootloader.
jetzt möchte ich einen servo anschließen. dazu müsste ich eigentlich nur die stromversorgung anschließen und eben das "PWM kabel" an einen freien pin an port A? muss ich da noch einen widerstand dazwischenschalten oder eher nicht? (bzgl. strombegrenzung)
lg
ikarus_177
Hi!
Nein, du kannst das einfach so direkt anschließen.
Viele Grüße,
William
Soweit ich weis brauchst du nur + und masse an das Servo anzuschliessen und den (meistens gelben Draht) an den Pin wo du die PWM ausgiebst, ohne Widerstand https://www.roboternetz.de/wissen/index.php/Servo
Was das "ohne Widerstand" angeht ... also ich würde je nach Servo doch so 500-1000 Ohm dazwischenhängen am Signalpin. Habe schon einige Servos erlebt, die dort erstaunlich niederohmig waren. Geht 100 Mal ohne Widerstand gut ...
Mein Hexapod im Detail auf www.vreal.de
hallo,
erst mal danke für die antworten...
habe mich dazu "durchgerungen" doch einen widerstand dazwischenzuschalten, da ich nicht gleich meine neuen Servos schrotten möchte.
also danke sehr
lg
ikarus_177
Mein Hexapod im Detail auf www.vreal.de
mal ne frage zu den PWM. lann mir mal einer nen link schicken, der über ein software-pwm an nem atmega geht???
...and always remember...
...AVR RULES...
ich fass es mal kurz zusammen, nen link hab ich grad nicht, du nimmst en timer, stellst ihn dir so ein das er nützlich wird (10tel ms takt ein überlauf z.B.) aktivierst den timer-overflow interrupt, und schreibst in deiner interrupt routine mit hilfe einer zählvariable und einer sollwert variable in das portregister und schaltest je nach wunsch den pin zur richtigen zeit an und aus
EDIT: Beispiel
10tel ms takt
Code:ISR { count_vaiable inkrementieren; wenn (pin high && count_variable == sollvar+10) pin low; count_variable = 0; //wenn pin high dann 1-2mS high halten und dann wieder low schalten taktlänge ist 1.5ms +- 0.5ms wenn (pin low && count_variable > rund(20ms*10)) pin high; Count_variable = 0; //wenn pin auf low geht ne pause von 20-50ms einlegen damit der servo sich einstellen kann sonst ruckelt er
ok, aber was ich net verstehe, wie kriege ich den takt,nach dem die count_variable erhöht wird?
...and always remember...
...AVR RULES...
Die primitivste Möglichkeit ein PWM Signal zu erzeigen ist über die bereits vorliegenden Sleep Funktionen.
Also so in der Art, in diesem Fall kann man die PWM Zahl zwischen 0 und 10 einstellen(je höher die Auflösung desto besser), mit pwm_zahl=5 hat man ein Tastverhältnis von 50:50.
Pseudocode:
Es gibt natürlich viel elegantere Wege das zu lösen.Code:#define PWM_ZAHL_MAX 10 pwm_zahl=5; while(bedingung) { Ausgang_auf_5V; for(n=0;n<pwm_zahl;n++) Sleep(zeit); Ausgang_auf_0V; for(n=0;n<(PWM_ZAHL_MAX-pwm_zahl);n++) Sleep(zeit); }
Grüße,
Harri
Lesezeichen