Go Down

Topic: Filtered PWM signals to Robot Wheels (Read 963 times) previous topic - next topic



As part of a project I'm currently doing I need to navigate two wheels on a differentially driven robot to be able to operate it with bluetooth.  I have bought a PS3 controller to send signals to a bluetooth dongle which turn is connected to a USB Host Shield and everything is mounted on an arduino. Now, currently I have a program which is communicating with the PS3 controller and producing two PWM signals and two direction signals (one for each wheel). Driving the motors using PWM creates a large inrush current since the back emf initially is zero at the initial stages. This could blow the LMD18200 H-bridge that I'm using.  So I, thought to using a filter whose transfer function is of this form:

                                                                                            Vo/Vin = 1/(s+a)
                                                                                            s*Vo + a*Vo = Vin
using the inverse laplace transform:
                                                                                            d(Vo)/dt + a*Vo = Vin
by Euler method:
                                                                                            (Vok - Vok-1)/T + a*Vok = Vink

where T is the time taken for Arduino to sample what the PS3 is sending.

Now, I already have the PWM signals operating at 20Khz through the use of interrupts.

My Questions are as follows:
1.  Is this the correct way to limit the current or is there any other way?
2.  Should the time T be smaller or larger than that of the PWM signal because I'm getting confused?
3.  Do I need to make all the existing code in a loop that operates under a specific time T using interrupts?

Thanks  for your help!!

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131