Hello and welcome back. In this tutorial, we will learn, how to control a servo motor using a Raspberry Pi board. For that, I use the SG90 servo motor and the Raspberry Pi 2 Model B board. It depends on your requirement. Also, potentiometer analog values are used to rotate the servo motor. For that, I used the ADS7830 analog to digital converter. Because the raspberry pi boards don’t have analog input pins. If you don’t have any knowledge of this ADS7830 analog to digital converter, please use this link for that. I think this tutorial knowledge is most important for servo motor-based projects.
Specifically, I used a GPIO extension board and a GPIO ribbon cable for this project. Those components were very useful for me. But you can do this project without these components. OK, let’s move on.
- GPIO Extension board
- GPIO Ribbon cable
- How to control a servo motor with the Raspberry Pi Pico board — Click me
Ok, let’s do this project step by step. The required components are given below.
- Raspberry Pi board x 1 — Amazon
- ADS7830 Analog to Digital Converter x 1
- SG90 servo motor x 1 — Amazon / Banggood
- Potentiometer x 1 — Amazon / Banggood
- GPIO Extention board x 1 — Amazon / Banggood
- GPIO Ribbon cable x 1 — Amazon / Banggood
- Breadboard x 1 — Amazon / Banggood
- Male to Male Jumper wires x 10 — Amazon / Banggood
Firstly, identify these components.
Secondly, place the GPIO extension board on the breadboard. Then, connect the GPIO ribbon cable to the extension board.
Thirdly, place the ADS7830 analog to digital converter on the breadboard and connect it to the extension board. For that, use the circuit diagram below.
And then, connect the potentiometer and servo motor to the extension board.
Now, connect the ribbon cable to the Raspberry pi board. Then, connect the mouse, keyboard, monitor, and SD card (including the operating system) to the Raspberry Pi board.
Finally, connect the power supply to the board.
Ok, now let’s create the program for this project. For that, follow the steps below.
- First, enable I2C communication, And then, you can check it using the terminal.
- Next, open the Thonny IDE. Then, copy and paste the program below. It is described line by line.
- The complete program of this project — Download
#Include the library files import RPi.GPIO as GPIO from smbus import SMBus from gpiozero import AngularServo from time import sleep bus = SMBus(1) # Include the servo motor pin servoPin = 17 # Analog input min and max values in_min = 0 in_max = 255 # Servo motor min and max degrees out_min = 0 out_max = 180 # Create an object for the servo motor servo = AngularServo(servoPin,min_angle=0,max_angle=180,min_pulse_width=0.0005,max_pulse_width=0.0025) def analogInput(): bus.write_byte(0x4b,0xd4) #sleep(0.05) value = bus.read_byte(0x4b) # Convert analog values from 0 to 180 value = (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min return int(value) while True: value = analogInput() # Rotate the servo motor using analog values servo.angle = value
- Now, save this program and click the run button.
OK, enjoy this project. The full video guide is below. So, see you in the next tutorial or project.