[PYTHON] Tournez le mini servo E-MAX ES08A II avec PWM matériel sur RaspberryPi

TL;DR

--Procédure pour utiliser E-MAX Mini Servo ES08A II avec RaspberryPi modèle 3B --Utilisez le matériel PWM pour la stabilisation. Avec le logiciel PWM, ça tremble.

environnement

Connexion à GPIO

--Il semble que seuls GPIO 18, Physical 12 peuvent être utilisés pour le matériel PWM (ligne jaune).

Cependant, selon le manuel WiringPi, il existe une condition selon laquelle PWM ne peut être utilisé que pour 18 et aucune sortie audio analogique n'est utilisée.

Source: https://blog.boochow.com/article/456203751.html

--Connectez le fil noir à GND et le fil orange à 5V. (Il y a aussi un article qu'il semble préférable d'avoir une alimentation différente si possible)

Cadre environnemental

Mise à jour PIP


sudo pip install -U pip --proxy="http://<proxy>:<port>/"

wiringpi


sudo pip install wiringpi --proxy="http://<proxy>:<port>/"

La source

Formule de calcul pour PWM matériel https://hira-hide.hatenablog.com/entry/20170610/1497100926 La plupart des servomoteurs ont 1,5 ms au lieu de 1,4 ms au centre http://gomisai.blog75.fc2.com/blog-entry-290.html

** Il existe des différences individuelles **, donc si le servo devient saccadé ou se réchauffe soudainement à l'angle maximum, cela signifie que l'angle de fonctionnement maximum du servo a été dépassé, ramenez-le donc immédiatement en position neutre et ajustez l'angle. S'il te plait donne moi.

servoutil.py


#!/usr/bin/python
# -*- coding: utf-8 -*-

def get_write_value(degree):
    """
Obtenez la valeur à écrire sous l'angle

    Parameters
    ----------
    degree : int
        -90 -> 90,Milieu 0

    Returns
    ----------
    write_value : int
        wiringpi.Valeur à écrire avec pwmWrite
Fréquence PWM = fréquence d'horloge de base du Raspberry Pi PWM / (horloge x plage)
"Combien de fois vous déplacez-vous autour de 0 degré?" Est calculé.
7 à 0 degré.25%, 90 degrés est 12%、-90 degrés est 2.5%Une valeur qui calcule linéairement
    """

    #Vérification de la valeur
    if degree > 90:
        degree = 90
    if degree < -90:
        degree = -90

    print(degree)

    #0 pour de nombreux servomoteurs tels que ES08A II.5ms~2.0 degré équivaut à 1 en 4 ms.Cela devrait durer 45 ms,
    #En fait, 0 degré est 1.C'est souvent 5ms.
    #Ajuster en fonction de ce point
    edit_degree = degree + 10

    return int((4.75 * edit_degree / 90 + 7.25) * (1024 / 100))

testservo.py


#!/usr/bin/python
# -*- coding: utf-8 -*-

import wiringpi
import sys
import servoutil
 
servo_pin = 18    #Spécifiez la broche 18

param = sys.argv
set_degree = int(param[1])
print(set_degree)

wiringpi.wiringPiSetupGpio()    #Au-dessus de la broche de la figure(BOARD)Mode à épingler par numéro
wiringpi.pinMode(servo_pin, 2)  #Désigné comme broche de sortie
wiringpi.pwmSetMode(0)          #Spécifié comme 0V
wiringpi.pwmSetRange(1024)      #Spécifiez la plage de 0 à 1024
wiringpi.pwmSetClock(375)       

wiringpi.pwmWrite(servo_pin, servoutil.get_write_value(set_degree))

sudo est requis pour définir pinMode

Exemple


sudo python2 testservo.py 90

Recommended Posts

Tournez le mini servo E-MAX ES08A II avec PWM matériel sur RaspberryPi
Installation facile d'OpenCV sur RaspberryPi 3+
Désactivez Python 2.7 sur Debian Stretch
Tournez le mini servo E-MAX ES08A II avec PWM matériel sur RaspberryPi