Pages: [1] 2   Go Down
Author Topic: Servo.h Frequenz ändern  (Read 2362 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen

Ich möchte Fragen ob ich ein Servo mit der Servo Bibliothek Servo.h die Frequenz auf z.B.100Hz ändern kann.
Also das die Periodendauer 10ms beträgt.

Geht das, und wenn ja wie geht das?

Ich danke euch schon im voraus für eine Antwort.

Gruss Kai
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 272
Posts: 21939
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wieso brauchst Du das?
Hast Du superschnelle, supergenaue, superteure digitale Servos?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es sind normale Bl regler die ich ansteuere, es geht um eine Lageregelung.

Meine Frage diesbezüglich kannst du aber nicht beantworten?

Gruss Kai
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wo sind denn hier die Experten?
Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2346
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wo sind denn hier die Experten?
Keine Ahnung! Mir sind die Informationen zu dünn, um eine hinreichend gute Hilfestellung geben zu können. Du redest zwar von einem "Bl regler", ich denke aber, dass den wenigsten klar ist, dass ein Brushless-Regler gemeint ist. Welches Fabrikat/Hersteller, dass man mal in ein Datenblatt schauen kann?
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es geht um das "wie" und nicht "wieso".

Die Frage ist doch Präzise genug, oder hab ich was übersehen?

Durch die Bibliothek Servo.h erzeugt man ein PWM Signal um Servo's oder ähnliches anzusteuern.
Gibt es eine Möglichkeit bei dieser Bibliothek die Periodendauer von Standard 20ms (50Hz) auf 10ms (100Hz) zu ändern?

Gruss Kay
« Last Edit: April 10, 2012, 11:55:26 am by Ketchup » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 272
Posts: 21939
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sicher gehts für Dich um das <<Es geht um das "wie" und nicht "wieso".>>
Aber eine gewisse Neugierde und den Wunsch unsererseits nicht "eine Antwort" zu geben sondern "eine möglichst gute Antwort" zu geben mußt Du aber schon akzeptieren.
Un die Frequenz zu ändern braucht man nur den "richtigen" Wert in der Bibiothek zu verändern. Ich habe aber ehrlich gesagt keine Lust, Zeit zu investieren, die richtige Stelle zu finden, weil Du gerne die Bibothek mit 100 Hz anstatt 50 Hz am laufen haben möchtst.
Ich habe oft erlebt, daß man in einer Lösung festgefahren ist diese umbedingt haben will, obwohl andere Lösungswege zielführender und einfacher sind.
Viele Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich selber habe noch zu wenig Ahnung über Bibliotheken um das selber zu finden.

Das warum ist eigentlich einfach:

Ich habe eine PID Lageregelung Programmiert für einen Quatrokopter, die Brushless-Regler steuere ich mit 200Hz an, diese Regler Funktionieren sehr gut mit diesem Signal, die Regelung ist viel ruhiger als mit 50Hz.

Nur generiere ich das Servosignal durch einen eigenen Code ohne Bibliothek, und finde dies nicht so schön.
Eventuell weiss ja jemand wo und was ich in dieser Bibliothek ändern muss.

Gruss Kay
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 11
Posts: 643
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vermutlich gehts um diesen Wert:
Code:
#define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds
Steht ungefähr am Ende der Definitionen.
Logged

_______
Manfred

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo MaFu

Vielen Dank für deine Antwort.
Reicht es wenn ich in der Datei Servo.h diesen Wert ändere und dann speichere?
Oder braucht es da mehr dazu?

Gruss Kay
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 11
Posts: 643
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Keine Ahnung, sollte aber reichen. Probiers aus.
Logged

_______
Manfred

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Werde ich Morgen machen, vielen Dank.


Gruss Kay
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So

Habe es versucht, leider ohne Erfolg.
Scheinbar reicht es nicht wenn man diese Zahl ändert, die Bibliothek neu einliesst und Uploadet.
Das Oszi hat keine Änderung des Signales angezeigt, ich habe diverse Werte versucht.

Jetzt sind wieder die Experten gefragt, ich hoffe jemand weiss eine Lösung wie ich diese Bibliothek ändern kann.

Gruss Kay
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jungs, hier mal ein Beispiel wie ich ein Servosignal mit 100Hz erzeuge:

Code:
// von Kay
// 14 April 2012

// Erzeugen von einem Servosignal von 100Hz
// Ohne Bibliothek und ohne Delay


int Winkel=1500;          // Servo Winkel 90°
int Periodendauer=10000;  // Periodendauer 10 millisekunden = 100Hz
int x=1;
int Servo=9;              // Servo an Pin 9
unsigned long Zeit;

void setup()
{
  Zeit = micros();
  pinMode(Servo,OUTPUT);
}

void loop()
{
if (x == 1)
digitalWrite(Servo,HIGH);
if (x==1&&(micros() - Zeit) >Winkel)  // Erzeugen von einem Impuls von 1,5ms = 90° Servo Winkel
{
  Zeit=micros();
  digitalWrite(Servo,LOW);
  x=0;
  }
  if (x==0&(micros() - Zeit) >Periodendauer) // Erzeugen von 100Hz Periodendauer
  {
    Zeit=micros();
    x=1;
  }
}


Schön währe wirklich wenn ich die Bibliothek Servo.h so ändern kann das ich Servosignale von z.B. 100Hz erzeugen kann.

Gruss Kay

« Last Edit: April 16, 2012, 01:12:16 pm by Ketchup » Logged

Germany
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Walking on Nails
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

REFRESH_INTERVAL ist der entsprechende Wert, der das Intervall zwischen den Impulsen angibt. Ich vermute hier hast du einen Fehler an anderer Stelle gemacht. Dein Beispiel arbeitet auch eher bei 80Hz als bei den von dir angegebenen 100Hz - das sollte dein Oszi dir aufgezeigt haben. Versuch doch mal, die Wiederholrate in der Servo.h geringer einzustellen und das Ergebnis auf dem Oszi zu messen.

Und in deinem Beispiel hast du & mit && verwechselt - was bei deinem Code glücklicher Weise trotzdem zum richtigen Ergebnis führt.
« Last Edit: April 15, 2012, 09:25:14 am by Marek080 » Logged

loved the 68000 assembler back then and now I have to deal with THIS 8 bit thingy

Pages: [1] 2   Go Up
Jump to: