Servo motor in Raspberry Pi

Author: Mitja Breznik

V tem vodiču bomo predstavili kako lahko prek programa python s PWM-jem (pulznoširinsko modulacijo) krmilimo servo motor.

 

Za napajanje servomotorja bomo uporabili zunanjo 5V napajanje, povezati je potrebno negativno polariteto napajalnika in Gnd na GPIO od Raspberry Pi.

 

Vezava:

 

Rdeča žica je povezana na + napajanja, rjava žica je povezana z Gnd in negativnim priključkom napajanja, rumena pa je povezana na GPIO17 ali pin 11.

 

 

Program:

 

duty=5       #spremenljivka hrani vrednost delovnega cikla v procentih

 

def levo():

 

    global duty                     #uporabimo globalni spremenljivko v funkciji

    if duty>4:

        duty=duty-1

    servo.start(duty)                           #inicializira PWM z duty delovnim ciklom

    print(duty)

      

def desno():

 

    global duty                        #uporabimo globalni spremenljivko v funkciji

    if duty<12:

        duty=duty+1

    servo.start(duty                            ) #inicializira PWM z duty delovnim ciklom

    print(duty)

 

 

from Tkinter import *

 

root = Tk()

 

gumb = Button(root, text= '->', command = desno)                #ustvarimo gumb, ki klice desno()

gumb.pack()

gumb = Button(root, text= '<-', command = levo)                  #ustvarimo gumb, ki klice levo()

gumb.pack()

 

 

import RPi.GPIO as GPIO                               #konfiguracija za GPIO

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11,GPIO.OUT)                          # pin 11 nastavimo kot izhod

 

servo=GPIO.PWM(11,50)                              #frekvenca 50Hz na pinu 11

servo.start(0)                                            # začetni delovni cikel 0%

 

 

root.mainloop()

 

 

 

 

Razlaga: Prek gumbov v uporabniškem oknu nastavljamo kot/pozicijo servo motorja z nastavljanjem delovnega cikla od 4% do 12%.

 

 

Nasvet:

 

Za natančnejši nadzor nad motorji predlagamo razširitvena vezja, ki omogočajo boljši nadzor nad nižjenivojskimi perifernimi enotami in ponujano več digitalnih izhodov/vhodov, analognih vhodov…

 

Tako lahko mikrokrmilnik skrbi za vhode in izhode ter prek vodila komunicira z Raspberry Pi, ki lahko opravlja zahtevnejše preračune, izris grafike in internetno komunikacijo.