Summary of How to interface Servo Motor with PIC18F4550
This article explains interfacing a servo motor with a PIC18F4550 microcontroller to achieve precise angular motion. It details the three-wire configuration, PWM signal requirements (20ms total period, 1-2ms on-time), and calculation methods for specific angles like 45°. The project demonstrates rotating a spline in 45° steps from 0° to 180° and back using pulse width modulation.
Parts used in the Servo Motor Interfacing Project:
- Servo Motor
- PIC18F4550 Microcontroller
- Control Signal Wire
- Ground Wire
- Positive Supply Wire
Servo systems use the error sensing negative feedback method to provide precise angular motion.
Servo Motors are used where precise control on angular motion is needed. Servo motors are widely used in the field of
Robotics to design robotic arms, palms, legs and so on. They are also used in RC toys like RC helicopter, airplanes and cars.
The interfacing of servo motor using PIC microcontroller has been explained here. Readers are advised to go through the article on
Servo Motors to learn basic mechanism and control of servo motor.
A
Servo motor has three wire terminals : two of these wires are to provide ground and positive supply to the Servo DC motor, while the third wire is for the control signal. These wires of a servo motor are color coded. The servo motor can be driven only when PWM (pulse width modulated) signals are provided to the control terminal.
The total pulse duration for a typical servo motor should be of 20 milliseconds. The on-time duration of the control signal varies from 1ms to 2ms. This on-time variation provides angular variation from 0 to 180 degree. Also refer
Servo motor control using 8051.
According to the above diagram, desired angular position can be calculated by simple interpolations. For example, if the servo motor should be positioned at 45° angle, the desired output control pulse can be obtained as follows:
180° angular displacement is achieved by the pulse duration = 1 ms
1° angular displacement is achieved by the pulse duration of = 1 /180 ms
45° angular displacement is achieved by the pulse duration of = (1/180) x 45 = 0.25 ms
So total on-time pulse will be = 1ms + 0.25ms =1.25 ms
Please note that the on-time duration of the control signal may vary based on the manufacturer or certain other conditions. Therefore it is imperative that the on-time pulse for 0° and 180° positions must be obtained (either from the datasheet or by hit-n-trial) before using a servo motor for an application. The servo motor used here moves to 0° at 0.55 ms pulse.
Objective: To interface the servo motor with
PIC18F4550 microcontroller and generate pulses to rotate the servo spline in step angles (of 45°) from 0° to 180°. Please check the Video tab to see these rotations. After reaching 180° position, the spline is brought back to 0° position and the rotation thus continues.
Quick Solutions to Questions related to Servo Motor Interfacing Project:
- How does a servo motor receive control signals?
A servo motor is driven only when PWM signals are provided to its control terminal. - What is the typical total pulse duration for a servo motor?
The total pulse duration should be 20 milliseconds. - Can I calculate the required pulse duration for a specific angle?
Yes, desired angular positions can be calculated by simple interpolations based on the datasheet or trial values. - Does the on-time duration vary between different motors?
Yes, the on-time duration may vary based on the manufacturer or other conditions. - What range of on-time durations provides full angular movement?
An on-time variation from 1ms to 2ms provides an angular variation from 0 to 180 degrees. - How do you determine the pulse duration for 0 degrees if not standard?
You must obtain the on-time pulse for 0 degrees either from the datasheet or by hit-n-trial before application. - What is the objective of this specific interfacing project?
The objective is to interface the servo motor with a PIC18F4550 microcontroller to rotate a spline in 45-degree step angles.