PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino: Servo auf PCF8574 Erweiterung ansprechen



herbalmickey
24.10.2018, 11:34
Hallo,

habe eine Frage zum oben genannten Thema:

Ich möchte lediglich einen MircoServo (SG90) auf einer PCF8574 Erweiterung ansprechen. Am Servo hängt zur Zeit keine Last.
Die einzelnen Pins kann ich ansprechen / abfragen. Aber Das reicht ja nicht, um einen Servo in einen entsprechenden Winkel zu fahren. Das einzige was ich rausbekomme ist ein kurzes zucken des Servo's.

Habe schon mit der Servo.h versucht, aber das brachte mich letzten ende auch nicht weiter.

Anbei noch der Code, der natürlich nichts bringt: :-)


#include <Wire.h>
#define PCF8574 0x27


void setup()
{
Wire.begin();
}

void loop(){
schreiben_PCF8574(PCF8574, B000001);
delay(5);
schreiben_PCF8574(PCF8574, B000000);
delay(5);

delay(3000);
}


void schreiben_PCF8574(int I2C_Adresse, byte data)
{
Wire.beginTransmission(I2C_Adresse); // Connect
Wire.write(data); // data Byte senden
Wire.endTransmission(); // Disconnect
delay(1);
}


byte lesen_PCF8574(int I2C_Adresse)
{
byte data = 0xFF;
Wire.beginTransmission(I2C_Adresse); // Connect
Wire.requestFrom(I2C_Adresse, 1); // ein Byte (8 Bit) anfordern
if (Wire.available()) data = Wire.read(); // Daten vorhanden?
Wire.endTransmission(true); // Disconnect
return data;
delay(1);
}

Siro
24.10.2018, 15:00
Hallo herbalmickey,
erstmal willkommen im Forum.

Der PCF8574 ist für eine Servoansteuerung eher ungeeignet.
Die Servos benötigen einen Impuls in der Breite von 900 Mikrosekunden bis 2100 Mikrosekunden.
und dieser Impuls sollte regelmässig erzeugt werden. So ca. alle 20ms.
Ist der Impuls dann z.B. 1500 Mikrosekunden lang, fährt dein Servo in die Mitte. ist er kürzer fährt er weiter links.

Wenn der Servo angekommen ist, kann man die Impulsfolge zwar auch abschalten, aber dann hat der Servo auch keine Kraft mehr um seine Position zu halten,
weil er nicht mehr nachregelt, er weis nicht wohin weil ihm das Signal dann fehlt.

Wenn deine Software es hinbekommt die gewünschten Signale über den I2C für den Pin entsprechend schnell zu steuern, ist jedoch eine Ansteuerung für einen Servo denkbar.

Schau mal bitte hier rein, da wird es beschrieben:

https://rn-wissen.de/wiki/index.php?title=Servos#Ansteuerung

Siro

HaWe
24.10.2018, 16:23
schließe mich Siro an.
Als Servo-Chip nimm den
PCA9685 Servocontroller

s. z.B. von Adafruit (oder No-Name von Ebay oder Alibaba):
https://learn.adafruit.com/16-channel-pwm-servo-driver?view=all

Driver-Libs: https://learn.adafruit.com/16-channel-pwm-servo-driver?view=all#using-the-adafruit-library

github: https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

Beispiel-Sketch:
https://learn.adafruit.com/pages/643/elements/848850/download