[PYTHON] Versuchen Sie, den Servomotor mit RasPi zu bewegen (360-Grad-Rund- und Rundversion).

Vor

Ich habe es geschrieben, als ich den Servomotor SG-90 verwendet habe Ich habe über die Verwendung von PI HAT nachgedacht, das ich vor langer Zeit gekauft hatte. Es hat nicht funktioniert, also habe ich es versucht. IMG_3894.JPG

Teile

  1. RasPi3 / RasPi2
  2. Servomotor FS90R
  3. Stromversorgung für Motor
  4. Motorsteuerung Adafruit 16-Kanal-PWM / Servo-HAT für Raspberry Pi

Umgebung

  1. python 3.7.3
  2. adafruit-circuitpython-servokit 1.2.1

Was ich nachgeschlagen habe und was ich getan habe

Das erste, was Sie tun müssen, ist Überprüfen Sie den Beispielcode auf der Produktseite.

In der Übersetzung bedeutet 1 Vorwärtsdrehung, -1 Rückwärtsdrehung und 0,5 halbe Kraft. Es scheint, dass 0 ausreicht, um die Drehung zu stoppen.

Im Moment weiß ich nicht, wie viel die Rotation bei voller Leistung sein wird, aber zuerst werde ich versuchen, sie mit 1 zu drehen.

kit.continuous_servo[1].throttle = 1

Rückwärtsdrehung

kit.continuous_servo[1].throttle = -1

Hmm? Hören wir vorerst auf.

kit.continuous_servo[1].throttle = 0

Hör nicht auf ... Hör auf ~~ Lassen Sie uns vorerst die Stromversorgung für den Motor trennen.

Ich habe das Gefühl, dass ich den folgenden Code verwenden kann.

# Adafruit 16-Channel PWM/Servo HAT & Bonnet for Raspberry Pi & FS90R sample
#
# see:
# https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi
#
# test system:
# python 3.7.3
# adafruit-circuitpython-servokit 1.2.1

import time
from adafruit_servokit import ServoKit

# Set channels to the number of servo channels on your kit.
# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.
kit = ServoKit(channels=16)

ch = 1

def fs90r_convert(throttle):
    """
    Parameters
    ----------
    throttle : float
      require -1.0 .. 1.0, but no check

    Returns : float
      -0.4(right rotation) <= 0.1(stop) <= 0.6(left rotation)
    """
    return 0.1 + throttle / 2

# left rotation (0.1 .. 1.0(max))
for i in range(1,11):
    v = fs90r_convert(i/10)
    print( "i=%f v=%f" % (i/10, v) )
    kit.continuous_servo[ch].throttle = v
    time.sleep(1)

# right rotation (-0.1 .. -1.0(max))
for i in range(-1,-11,-1):
    v = fs90r_convert(i/10)
    print( "i=%f v=%f" % (i/10, v) )
    kit.continuous_servo[ch].throttle = v
    time.sleep(1)

# stop rotation
kit.continuous_servo[ch].throttle = fs90r_convert(0)
time.sleep(1)

# left rotation, max throttle
kit.continuous_servo[ch].throttle = fs90r_convert(1)
time.sleep(1)

# right rotation, half throttle
kit.continuous_servo[ch].throttle = fs90r_convert(-0.5)
time.sleep(1)

# stop rotation
kit.continuous_servo[ch].throttle = fs90r_convert(0)

Der Punkt ist

def fs90r_convert(throttle):
    return 0.1 + throttle / 2

Also habe ich die Konvertierung für FS90R vorgenommen. Anscheinend hört es nicht bei 0 auf, sondern bei 0,1. Das Argument kann Vorwärtsdrehung, Rückwärtsdrehung oder Stopp bei 0 sein, was einen Bereich von 1 bis -1 ergibt, wie im Beispielprogramm beschrieben.

Referenz

  1. https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi
  2. https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi/using-the-python-library
  3. http://akizukidenshi.com/catalog/g/gM-13206/

Recommended Posts

Versuchen Sie, den Servomotor mit RasPi zu bewegen (360-Grad-Rund- und Rundversion).
Versuchen Sie, den Servomotor mit RasPi (180-Grad-Version) zu bewegen.
Versuchen Sie, den Hintergrund und das sich bewegende Objekt des Videos mit OpenCV zu trennen
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Servomotorsteuerung mit Raspberry Pi
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Versuchen Sie, das Bild mit opencv2 zu verwischen
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren