Auflösung der Servo.h Bibliothek ändern
hallo zusammen.
wie man die periodendauer der bibliothek servo.h ändern kann habe ich hier gelernt, und funktioniert für den einen zweck sehr gut.
nun bin ich einer anderen sache dran und wie das ist scheitere ich nun wieder dieser servo.h bibliothek.
ich möchte mit einem gimbal (servo einer kameraplattform) eine achse verstellen, auch funktioniert.
sieht in etwa aus:
bild
was ich nun bemerkt habe ist das ich bei der bibliothek servo.h nur eine auflösung von ca.180 habe (angabe in °).
bei einen eigenen (sehr uneleganten) code habe ich eine auflösung von ca. 1600.
das servo verfährt auch in dieser besseren auflösung, wenn ich meinen eigenen code benutze.
ich habe wirklich auch in der praxis die viel bessere mechanische auflösung.
nur ist dieser code alles andere als professionell.
darum würde ich gerne die servo bibliothek benutzen.
leider habe ich bis jetzt nicht gefunden ich der bibliothek ändern muss um die auflösung zu ändern.
hier noch mein code:
ich hoffe hier gibt es experten die wissen wie man die servo.h bibliothek ändern muss.
gruss kay
.
wie man die periodendauer der bibliothek servo.h ändern kann habe ich hier gelernt, und funktioniert für den einen zweck sehr gut.
nun bin ich einer anderen sache dran und wie das ist scheitere ich nun wieder dieser servo.h bibliothek.
ich möchte mit einem gimbal (servo einer kameraplattform) eine achse verstellen, auch funktioniert.
sieht in etwa aus:
bild
was ich nun bemerkt habe ist das ich bei der bibliothek servo.h nur eine auflösung von ca.180 habe (angabe in °).
bei einen eigenen (sehr uneleganten) code habe ich eine auflösung von ca. 1600.
das servo verfährt auch in dieser besseren auflösung, wenn ich meinen eigenen code benutze.
ich habe wirklich auch in der praxis die viel bessere mechanische auflösung.
nur ist dieser code alles andere als professionell.
darum würde ich gerne die servo bibliothek benutzen.
leider habe ich bis jetzt nicht gefunden ich der bibliothek ändern muss um die auflösung zu ändern.
hier noch mein code:
code: [select]
// von kay
// 1 mai 2012
// erzeugen von einem servosignal pin 9 von ~85hz mit einer auflösung von ~ 1600
// einzelne schritte werden mit ~0.1 sekunden hoch / runter gezählt
// ohne bibliothek und ohne delay
int winkel=700; // servo starwinkel ~0°
int periodendauer=10000; // periodendauer 10 millisekunden ~ 85hz
int x=1; // umschalter high @ low pin 9
int y=0; // umschalter winkel zählen
int servo=9; // servo pin 9
unsigned long zeit;
unsigned long zeit2;
long pause = 100000; // pause zwischen Änderung winkel
void setup()
{
zeit = micros();
zeit2= micros();
pinmode(servo,output);
}
void loop()
{
if (x == 1)
digitalwrite(servo,high);
if (x==1&&(micros() - zeit) >winkel) // erzeugen von einem impuls für den winkel
{
zeit=micros();
digitalwrite(servo,low);
x=0;
}
if (x==0&(micros() - zeit) >periodendauer) // erzeugen von ~ 85hz periodendauer
{
zeit=micros();
x=1;
}
if (y==0&(micros() - zeit2)>pause) // hochzählen des winkels
{
winkel=winkel + 1;
zeit2=micros();
}
if (y==1&(micros() - zeit2)>pause) // runter zählen des winkels
{
winkel=winkel - 1;
zeit2=micros();
}
if (y==0&winkel>=2300) // umschalter runter zählen
y=1;
if (y==1&winkel<=700) // umschalter hochzählen
y=0;
}
ich hoffe hier gibt es experten die wissen wie man die servo.h bibliothek ändern muss.
gruss kay
.
vieleicht hilft dir schon dieser auszug aus der servo.cpp weiter:
viel feiner wird die servoelektronik kaum auflösen.
lg lena
code: [select]
attach(pin ) - attaches servo motor i/o pin.
attach(pin, min, max ) - attaches pin setting min , max values in microseconds
default min 544, max 2400
write() - sets servo angle in degrees. (invalid angle valid pulse in microseconds treated microseconds)
writemicroseconds() - sets servo pulse width in microseconds
viel feiner wird die servoelektronik kaum auflösen.
lg lena
Arduino Forum > International > Deutsch (Moderator: uwefed) > Auflösung der Servo.h Bibliothek ändern
arduino
Comments
Post a Comment