Accurate Control Of Servos Using FPGA

Accurate Control Of Servos Using FPGA

Servos are extremely useful in robotics for their excellent position control. These motors are small and have built in control circuitry. A simple control consists of a potentiometer to provide assignment matlab help, code project in matlab and feedback about the rotor position and a driver to drive the current inversely proportional to the difference between the desired and current position.  A simple diagram is shown below. The current input is in the form of a PWM signal.

Matlab Assignment Help Order Now

Accurate Control Of Servos Using FPGA

The control algorithm will create an accurate PWM that will control the servos. The PWM can be created by several control mechanisms like PID, state feedback, adaptive control etc.  First I will describe PI control and then I will tell a recent innovation in control for servos using FPGA.

I will model the DC servo motor and the frequency to voltage converter. The servomotor can be modelled using one dominant pole.

P(s) =B/ (1+As)

Programming Assignment Help

In the z domain

C(z)=U(z)/E(z)= k* (z-b ) / z (z-1)

Solving the differential equation we get

U(n)=U(n-1)+k*E(n-1)- k*b+E(n-2)

This equation will be implemented in the controller implementing PID. U (n) is present value written to the PWM register. E(n) is the present error signal.

Now I will also describe a modern control for servos i.e. using FPGA. Here FPGA system is required to send out varying pulses. The amount of power applied to the motor is proportional to the distance it needs to travel. Therefore, if the shaft needs to turn a large distance, the motor will run at full speed. If it needs to turn only a small amount, the motor will run at a slower speed. This is called proportional control. The control wire is used to communicate the angle information, via the duration of a pulse that is applied to the control wire; this technique is the actual Pulse Width Modulation signal. The servo requires a pulse every 20ms in order to maintain its position and the duration of this pulse determines how far the motor turns. A 1.5ms pulse, for example, will make the servo turn to the 90 degree position, (often called the neutral position). If the pulse is shorter than 1.5 ms, then the motor will turn the shaft to closer to 0 degrees. If the pulse is longer than 1.5ms, the shaft turns closer to 180 degrees the most effective way to create these PWM pulses is to use an onboard clock oscillator .All Altera FPGA development boards provide a built-in clk frequency. The basic signal used for the PWM must be in the form of

Movement = 1.50ms± (9.72µs.?)

 where ? is the number of degrees the servo needs to turn through.

Therefore for the servo to move 89 degrees anticlockwise, the pulse duration would be 634.96µs. The FPGA will model a counter that will produce the required pulses.

Our Matlab assignment help homework tutor or live tutoring online free on matlab providing assignment matlab help faster together with assignment problems and answers in matlab to your matlab assignment problem.

Accurate Control Of Servos Using FPGA | FPGA Assignment Help | FPGA Tutorial | Programming | Study Programming | Programming Online Tutor | Programming Homework Help | Programming Help | Programming Solutions | Programming Problems | Programming Tutor | Programming Online Tutoring | Tutoring Services | Private Tutors | Writing Help | Term Paper Help | Assignment Help | Online Tutoring