[PYTHON] Schalten Sie das E-MAX Mini-Servo ES08A II mit Hardware-PWM auf RaspberryPi ein

TL;DR

--Verfahren zur Verwendung des E-MAX Mini Servo ES08A II mit RaspberryPi Modell 3B

Umgebung

Verbindung zum GPIO

Gemäß dem WiringPi-Handbuch besteht jedoch die Bedingung, dass PWM nur für 18 verwendet werden kann und kein analoger Audioausgang verwendet wird.

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

Umgebungseinstellung

PIP-Update


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

wiringpi


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

Quelle

Berechnungsformel für Hardware-PWM https://hira-hide.hatenablog.com/entry/20170610/1497100926 Die meisten Servomotoren haben 1,5 ms anstelle von 1,4 ms in der Mitte http://gomisai.blog75.fc2.com/blog-entry-290.html

** Es gibt individuelle Unterschiede **. Wenn das Servo ruckelt oder sich plötzlich im maximalen Winkel erwärmt, bedeutet dies, dass der maximale Betriebswinkel des Servos überschritten wurde. Stellen Sie es daher sofort wieder in die neutrale Position und stellen Sie den Winkel ein. Bitte gib mir.

servoutil.py


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

def get_write_value(degree):
    """
Holen Sie sich den Wert zum Schreiben aus dem Winkel

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

    Returns
    ----------
    write_value : int
        wiringpi.Wert, der mit pwmWrite geschrieben werden soll
PWM-Frequenz = Basistaktfrequenz von Raspberry Pi PWM / (Takt x Bereich)
"Wie oft bewegen Sie sich um 0 Grad?" Wird berechnet.
7 bei 0 Grad.25%90 Grad ist 12%、-90 Grad ist 2.5%Ein Wert, der linear berechnet wird
    """

    #Wertprüfung
    if degree > 90:
        degree = 90
    if degree < -90:
        degree = -90

    print(degree)

    #0 für viele Servomotoren wie ES08A II.5ms~2.0 Grad ist 1 in 4 ms.Es sollte 45ms sein,
    #Eigentlich ist 0 Grad 1.Es ist oft 5ms.
    #Passen Sie basierend auf diesem Punkt an
    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    #Geben Sie Pin 18 an

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

wiringpi.wiringPiSetupGpio()    #Über dem Stift(BOARD)Modus zum Anheften nach Nummer
wiringpi.pinMode(servo_pin, 2)  #Als Ausgangspin bezeichnet
wiringpi.pwmSetMode(0)          #Geben Sie 0V an
wiringpi.pwmSetRange(1024)      #Geben Sie den Bereich von 0 bis 1024 an
wiringpi.pwmSetClock(375)       

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

sudo ist erforderlich, um pinMode einzustellen

Beispiel


sudo python2 testservo.py 90

Recommended Posts

Schalten Sie das E-MAX Mini-Servo ES08A II mit Hardware-PWM auf RaspberryPi ein
Einfache Installation von OpenCV auf RaspberryPi 3+
Deaktivieren Sie Python 2.7 auf Debian Stretch
Schalten Sie das E-MAX Mini-Servo ES08A II mit Hardware-PWM auf RaspberryPi ein