[PYTHON] Essayez de déplacer le servomoteur avec RasPi (version ronde et ronde à 360 degrés)

Avant

Je l'ai écrit en utilisant le servomoteur SG-90 J'ai pensé à utiliser PI HAT, que j'avais acheté il y a longtemps. Cela n'a pas fonctionné, alors j'ai essayé. IMG_3894.JPG

les pièces

  1. RasPi3 / RasPi2
  2. Servomoteur FS90R
  3. Alimentation du moteur
  4. Contrôleur de moteur Adafruit 16 canaux PWM / servo HAT pour Raspberry Pi

environnement

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

Ce que j'ai levé les yeux et ce que j'ai fait

Pour l'instant, la première chose à faire est de Vérifiez l'exemple de code sur la page du produit.

Pour traduire l'explication, 1 signifie rotation avant, -1 signifie rotation arrière et 0,5 signifie demi-puissance. Il semble que 0 soit suffisant pour arrêter la rotation.

Pour le moment, je ne sais pas à quel point la rotation sera à pleine puissance, mais je vais d'abord essayer de la tourner avec 1.

kit.continuous_servo[1].throttle = 1

Rotation inverse

kit.continuous_servo[1].throttle = -1

Hmm? Arrêtons-nous pour le moment.

kit.continuous_servo[1].throttle = 0

Ne t'arrête pas ... Arrête ~~ Pour le moment, débranchez l'alimentation du moteur.

Donc, j'ai l'impression que je peux utiliser le code suivant.

# 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)

Le point est

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

Donc, je mets la conversion pour FS90R. Apparemment, il ne s'arrête pas à 0, il s'arrête à 0,1. L'argument peut être rotation avant, rotation arrière ou arrêt à 0, donnant une plage de 1 à -1 comme décrit dans l'exemple de programme.

référence

  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

Essayez de déplacer le servomoteur avec RasPi (version ronde et ronde à 360 degrés)
Essayez de déplacer le servomoteur avec RasPi (version à 180 degrés)
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Commande de servomoteur avec Raspberry Pi
Essayez de déplacer 3 servos avec Raspeye
Essayez de brouiller l'image avec opencv2
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python