How to Controlling Servo Motors in Raspberry pi

You want to use a Raspberry Pi to control the position of a servo motor. Today I show you How to Controlling Servo Motors in Raspberry pi in  step by step complete process

Servo motors are used in remote control vehicles and robotics. Most servo motors are not continuous; that is, they cannot rotate all the way around but rather just over an angle of about 180 degrees. The position of the servo motor is set by the length of a pulse. The servo expects to receive a pulse at least every 20 milliseconds. If that pulse is high for 1 millisecond, the servo angle will be zero; if it is 1.5 milliseconds, it will be at its center position; and if it is 2 milliseconds, it will be at 180 degrees Servo motors pusls
The example program sets the PWM frequency to 100 Hz, which will send a pulse to the servo every 10 milliseconds. The angle is converted into a duty cycle between 0 and 100 Using  PWM to control the width of pulses to a servo motor to change its angle. Although this will work, the PWM generated is not completely stable, so there will be a little bit of jitter with the servo. For an alternative solution that produces much more stable pulse timing using the ServoBlaster device driver software 

 Components Required 

 
 
 
 4.Resistors 

This book will help you to gain more knowledge of Raspberry pi  Software and Hardware Problems and Solutions

Raspberry Pi Cookbook

Circuit diagram Controlling Servo Raspberry :

raspberry pi all pin is not PWM Pin only  4 are  PWM pin  But I have connected the PWM pin of Servo with Physical Pin 22  of Raspberry Pi  Connect the VCC and GND of the  MG995 Servo Motor to +5V and GND pins of the power supply. Then connect the PWM Pin of the Servo Motor to Physical Pin 22 of Raspberry.

Code Controlling Servo Raspberry :

from tkinter import *
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 100)
pwm.start(5)
class App:
     def __init__(self, master):
         frame = Frame(master)
         frame.pack()
         scale = Scale(frame, from_=0, to=180,
         orient=HORIZONTAL, command=self.update)
         scale.grid(row=0)
     def update(self, angle):
         duty = float(angle) / 10.0 + 2.5
         pwm.ChangeDutyCycle(duty)
root = Tk()
root.wm_title('Servo Control')
app = App(root)
root.geometry("200x200+0+0")
root.mainloop()
After running this code you can see like this interface
  Servo GUI raspberry pi 
  you can modify it so that the slider sets the angle to be between 0 and 180 degrees

If you want to know more about raspberry pi then click on the link below

RASPBERRY PI TUTORIALS FOR BEGINNERS

No comments

Theme images by Dizzo. Powered by Blogger.