Pages: [1]   Go Down
Author Topic: Arduino - Pololu Maestro Servo Controlle  (Read 910 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

Hat jemand von euch zufällig den Maestro Servo Controller im Einsatz?

Ich verzweifle hier gerade mit dem Ding. Wenn ich Ihn an den PC anschließe funktioniert alles wunderbar.

Verbinde ich jedoch TX vom Arduino mir RX vom Maestro und nutze die 5V und Masse vom Arduino am Maestro bekomme ich den Servo nicht zum bewegen.

Folgenden Code nutze ich aktuell dafür:

Code:
#include <SoftwareSerial.h>
#define txPin 4
#define rxPin 3

SoftwareSerial mySerial(rxPin, txPin);
void setup()// run once, when the sketch starts
{
  pinMode(7,OUTPUT);
  pinMode(7,HIGH);
  delay(50);
  pinMode(7,LOW);
  
  mySerial.begin(9600);
  delay(1000);  
}

void loop()
{
   delay(1000);
   set_target(0, 8000);
   delay(1000);
   set_target(0, 4000);
}


void set_target(unsigned char servo, unsigned int target)
{
    mySerial.write(0xAA); //start byte
    mySerial.write((byte)0x00); //device id
    mySerial.write(0x84); //command number
    mySerial.write(servo); //servo number
    mySerial.write(target & 0x7F);
    mySerial.write((target >> 7) & 0x7F);
}

Hat jemand einen Tipp für mich?


* Foto.JPG (662.86 KB, 1632x1224 - viewed 31 times.)
« Last Edit: July 14, 2012, 10:18:16 am by gloob » Logged


Offline Offline
Full Member
***
Karma: 3
Posts: 137
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Machst du nicht ein Durcheinander zwischen dem Compact und dem Pololu protocol.

http://www.pololu.com/docs/0J40/5.e

Code:
void set_target(unsigned char servo, unsigned int target)
{
    mySerial.write(0x84); //command number
    mySerial.write(servo); //servo number
    mySerial.write(target & 0x7F);
    mySerial.write((target >> 7) & 0x7F);
}
Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hall.

Danke für deine Hilfe. Hab es gestern dann auch noch gesehen. Auch dass ich ein Problem beim setzen des Reset hatte. Jetzt habe ich 3 Funktionen um das Target zu setzen, einmal MiniSSC, Compact und pololu.

Besteht hier Interesse an einer Bibliothek für den Pololu Servo Controller? Ich konnte bisher noch nichts richtiges finden.
Logged


0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Besteht hier Interesse an einer Bibliothek für den Pololu Servo Controller?

Ich denke das dies eine sehr gute Idee wäre, vielleicht kannst Du ja so etwas selber auf die Beine stellen !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist genau das was ich mit der Anfrage jetzt vor hatte. Werd mich mal ran setzen heute für einen ersten Draft mit SoftwareSerial.
Logged


0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gutes gelingen !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So der erste Draft der Library ist fertig.  smiley-mr-green

Genutzt wird SoftwareSerial und verfügbar ist folgendes:

Code:
   MaestroServo(unsigned char rxPin, unsigned char txPin, int baudRate, unsigned char resetPin, unsigned char commandSendPin);
    void reset();
    
    void set_target(unsigned char servo, unsigned int target);
    void set_target(unsigned char device, unsigned char servo, unsigned int target);
    void set_target_minissc(unsigned char servoNumber, unsigned char servoPosition);
    
    void send_home();
    void send_home(unsigned char device);
    
    void set_speed(unsigned char servo, unsigned int speed);
    void set_speed(unsigned char device, unsigned char servo, unsigned int speed);

    void set_acceleration(unsigned char servo, unsigned char acceleration);
    void set_acceleration(unsigned char device, unsigned char servo, unsigned char acceleration);

    void set_servo_off(unsigned char servo);
    void set_servo_off(unsigned char device, unsigned char servo);
    
    char get_moving_state();
    char get_moving_state(unsigned char device);
    
    char get_errors();
    char get_errors(unsigned char device);

Ich denke damit ist schonmal ein guter Baustein gelegt.

Wenn Interesse daran besteht muss ich mir nur noch überlegen wie ich es sinnvoll veröffentlichen kann.
« Last Edit: July 15, 2012, 10:27:48 am by gloob » Logged


0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das sieht doch schonmal sehr interessant aus, habe meinen Maestro 6 bisher nur zusammen mit dem PC benutzt aber noch nicht mit dem Arduino alleine !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich benutze den Micro Maestro zur Zeit parallel am Arduino und PC.

Per USB seh ich die Position und Einstellungen am PC und kann so checken ob der Arduino alles richtig setzt.
Logged


0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das kommt bei mir noch !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Offline Offline
Full Member
***
Karma: 3
Posts: 137
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

wie ich es sinnvoll veröffentlichen kann.
https://bitbucket.org/
https://github.com/

sind gute Platformen dafür.
Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

Pages: [1]   Go Up
Jump to: