Raspberry Pi 4 ile servo motor nasıl kontrol edilir

Servo motor nedir?

Bir servo motor veya servo, genellikle 180 derece ile sınırlı olan ekseninin hızının ve açısal yer değiştirmesinin çok hassas bir şekilde kontrol edilmesini sağlayan elektromekanik bir cihazdır. Esas olarak bir DC motor, bir hız düşürücü, bir şaft, bir kontrol devresi ve genellikle bir potansiyometre olan bir geri besleme mekanizmasından oluşur.

Bir servo motor nasıl çalışır?

Raspberry Pi gibi bir mikrodenetleyici, servo motora bir elektrik darbesi (PWM) gönderir. Servo, kontrol devresi aracılığıyla darbenin genliğini okur ve DC motoru çalıştırır. Dişli sisteminden oluşan hız düşürücü, milin dönüş hızını azaltır. Eksenin açısal yer değiştirmesi, kendisine bağlı olduğu için potansiyometreyi döndürür. Potansiyometrenin çıkış voltajı, şaftın konumunu, yönünü ve açısal hızını hesaplamak için bu değeri kullanan kontrol devresi tarafından okunur.

gerekli malzeme

Bu proje için bir Raspberry Pi 4 ve bir Sunfunder 9g SG90 Micro Servo kullanacağız.

devre kablolaması

Servo motorlar tipik olarak üç farklı renkte kablo ile gelir: kontrol için turuncu; yemek için kırmızı; ve toprak için kahverengi.

Servo motor kablolarını Raspberry pinlerine aşağıdaki gibi bağlayın: turuncu kabloyu GPIO pin 23’e; GND pinlerinden herhangi birine sahip siyah kablo; ve 3.3V pinli kırmızı kablo.

kod

RPi.GPIO’yu GPIO olarak içe aktar SERVO_MIN_PULSE = 500 SERVO_MAX_PULSE = 2500 Servo = 23 def harita(değer, inMin, inMax, outMin, outMax): dönüş (outMax – outMin) * (değer – inMin) / (inMax – inMin) + outMin def setup(): global p GPIO.setmode(GPIO.BCM) GPIO.setup(Servo, GPIO.OUT) GPIO.output(Servo, GPIO.LOW) p = GPIO.PWM(Servo, 50) p.start( 0) def setAçı(açı): açı = maks(0, min(180, açı)) pulse_width = harita(açı, 0, 180, SERVO_MIN_PULSE, SERVO_MAX_PULSE) pwm = harita(darbe_genişliği, 0, 20000, 0, 100) p .ChangeDutyCycle(pwm) def loop(): while True: for i in range(0, 181, 5): setAngle(i) time.sleep(0.002) time.sleep(1) for i in range(180, -1 , -5): setAngle(i) time.sleep(0.001) time.sleep(1) def destroy(): p.stop() GPIO.cleanup() if __name__ == ‘__main__’: setup() try: loop () KeyboardInterrupt hariç: yok et()

SunFounder Kodu

ŞUNLAR DA HOŞUNUZA GİDEBİLİR

Similar Posts

Leave a Reply

Your email address will not be published.