![]() | ![]() | ![]() |
| | |||||||
| Electronic Projects Design/Ideas/Reviews Are you building an electronic project or want to? Maybe you need some assistance? Come and submit your electronic questions here and let our experienced members find a solution. |
| | Thread Tools | Display Modes |
| | (permalink) |
| New Member | Hi all, Here goes my problem: Current design: I've got a DC motor which I'm driving with a linear servo drive that I've constructed. The drive accepts -10V to +10V, where +10 is maximum motor speed clockwise and -10 is maximum motor speed counter-clockwise. Coming off the motor I have an incremental encoder, which spits out square wave pulses whos frequency varies with motor speed. I've then designed a small circuit which convert this frequency into a linear scale voltage (same as the input), where +10V out represents full motor speed clockwise etc. New problem: I'm designing a controller within a feedback loop to reject some sinusoidal disturbance. The sinusoidal disturbance is of magnitude (max couple volts) with a frequency range of 0 to say 10Hz. The controller is to reject this disturbance once inputted as if to say its not there at all and hence not effecting motor performance. A diagram of what I'm trying to do is located here: http://web.aanet.com.au/polerz/untitled.PNG My solution so far: I've managed to identify the plant mathematically in the form of a continous transfer function from a bode plot. (plant = incremental encoder, linear servo drive and freq to volt converter output). For all you math people out there, the transfer function is of first order and what I've done is derrived the output (call it Y), in terms of the input (call it U) and the disturbance sin wave (call it D). So: Y=A*U + B*D, where A and B are coefficients of the system. Now I've split up the equation and set the DC gain to A*U = 1 and B*D=0, since the steady state result of this system is not to vary at all as a result from the disturbance input and to have a gain of 1 based on the user input U (-10 to +10V). Since the controller is going to be programmed on a PIC18F458, I've converted all equations describing the system to discrete time. The problem is, I get an squation for B*D which looks like this: 1.095[sin(wT)/(1-(2cos(wT)+1)] ------------------------------ = 0 1 + 1.09545K Where K is the controller I'm trying to implement, w= frequency of sin wave in radians, T = sampling time of PIC. I can't solve for K. Ok if anyone even plans to read all that bs I've just typed I'd appreciate some advice. Thanks Chris Paloyanidis |
| | |
| Bookmarks |
| Thread Tools | |
| Display Modes | |
| |
| | ||||
| Thread | Thread Starter | Forum | Replies | Latest |
| calculator | sara_6252 | Micro Controllers | 8 | 1st June 2007 02:28 AM |
| LCD Alarm clock with PIC16F877 ( some pics included ) | pasanlaksiri | Micro Controllers | 10 | 22nd May 2007 10:36 PM |
| 4-20mA loop Powered Programmable Indicator | lalitbshah | Electronic Projects Design/Ideas/Reviews | 0 | 8th August 2006 10:25 AM |
| closed loop controller that receives set point updates TXRX | usacanbiteme | Electronic Projects Design/Ideas/Reviews | 5 | 28th September 2005 09:02 PM |
| little help with my program please - simple count loop | kud0s | Micro Controllers | 5 | 7th July 2005 09:40 PM |