PID-filter routine (2nd try).


Closed Thread
Results 1 to 40 of 132

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516

    Default PID-filter routine (2nd try).

    Hi,
    (Ok, lets try this again. The previous version contained a non working example which is not very suitable in the Example Section so it has been updated. Here goes...)

    This is a basic PID filter routine in the form of an include file.

    Instructions:
    1) Download the file incPID.txt attached to this post
    2) Rename it to incPID.pbp
    3) Place it in your project folder.

    Example code:
    This is a short example demonstrating how the PID routine can be used. The PIC's CCP module drives a motor via a suitable driver chip such as the LMD 18200. The motor shaft is connected to a potentiometer which is feeding position information back to the PIC's ADC forming a closed loop.

    Code:
    ' |--PIC CCP --> LMD18200 --> Motor --> Potentiomter --> PIC ADC --|
    ' |                                                                |
    ' |---<-----<-----<------ P I D  F i l t e r <------<------<-------| 
    
    
    
      '// Set up hardware registers, ADC etc here (not shown) //
    
      ADValue VAR WORD                     '<---This is your variable.
      SetPoint VAR WORD                    '<---This is your variable.
      Direction var PortB.7                '<---Direction bit to motor driver.
    
      Setpoint = 512		       '<---Set desired position.
    
      INCLUDE "incPID.pbp"                 'Include the PID routine.
    
        'These variables are declared by the incPID routine but
        'the user needs to assign values to them.
        pid_Kp = $0700                     'Set Kp to 7.0
        pid_Ki = $0080                     'Set Ki to 0.5
        pid_Kd = $0225                     'Set Kd to 2.14
        pid_Ti = 8                         'Update I-term every 8th call to PID
        pid_I_Clamp = 100                  'Clamp I-term to max ±100
        pid_Out_Clamp = 511                'Clamp the final output to ±511
         
      Start:
        Gosub GetAD                        'Get position from AD - NOT SHOWN HERE.
                                         
        pid_Error = Setpoint - ADValue     'Calculate the error
        Gosub PID                          'Result returned in pid_Drive
        Direction = pid_Out.15             'Set direction pin accordning to sign
        pid_Out = ABS pid_Out              'Convert from two's comp. to absolute
        HPWM 1, pid_Out, 10000             'Set PWM output
        Pause 10                           'Wait....
      Goto Start                           '...and do it again.
    The code does not check for overflow in the calculations so the user needs to make sure that the value sent to the PID routine doesn't cause an overflow based on the current P, I and D gains.

    More detalied information can be found in the attached file.

    A special thank you goes to Darrel Taylor for spotting a couple of misstakes in the example but most of all for streamlining the code further, reducing its footprint about 20%.

    /Henrik Olsson.
    Attached Files Attached Files
    Last edited by HenrikOlsson; - 8th March 2007 at 22:37. Reason: Attached file.

  2. #2
    Join Date
    May 2007
    Posts
    65


    Did you find this post helpful? Yes | No

    Default questions

    hi Henrik;
    i see you are a motor control specialist..
    first of all thank you for sharing your work on your PID routine. About it i have some questions to understand.
    _________
    question1:
    i don't understand theese variables:
    pid_I_Clamp = 100 'Clamp I-term to max ±100
    pid_Out_Clamp = 511 'Clamp the final output to ±511

    _________
    question2:
    I see it controls position. ¿Does it control speed?

    _________
    question3:
    from my pc i get two parameters: position and speed. i want to preset a 1 second of gradual speed increasing (you know, for not damaging mechanism & stuff..) and speed decreasing for before getting to the given position. Do any of your PID inc file variables handle this parameter/s or i need to do it by myself?

    to let you breathe, it's all for now thank you.

    regards, Rodrigo
    "Beethoven had his critics too, see if you can name 3 of them"

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Hi Rodrigo,
    No, no motorcontrol specialist at all actually, just a guy who tinkers with a lot of stuff, trying to pick up on what ever interests me at the moment ;-)
    question1:
    i don't understand theese variables:
    pid_I_Clamp = 100 'Clamp I-term to max ±100
    pid_Out_Clamp = 511 'Clamp the final output to ±511
    The pid_I_clamp helps preventing what is called integrator wind-up. Let's say you are controlling the position of a motor. You command a new position but the mechanics that the motor is moving is blocked so it can't move. The I-term will now start to add "effort" to the total output of the filter to get the motor moving (decrease the error) but since the mechanics is blocked the error won't change so the I-term gets larger and larger and larger. When the mechancis finally "loosens up" you can imagine what happens. So with pid_I_clamp you can set the max amount of "effort" that the I-term will apply to the total output, no matter how big or how long the error persists.

    (Another thing is that the I-term output is not protected from overflowing internally so we have to clamp it to something)

    pid_Out_Clamp works the same way. Let's say you are running a 12V motor with a 24V powersupply. Applying full power (24V) to the motor may damage it so you can use the pid_Out_Clamp to prevent the final output of the PID-filter to ever go above a certain value, for example.


    question2:
    I see it controls position. ¿Does it control speed?
    "It" controls anything you like. You provide it with an "error" and gives back a "drive-value" based on the gains etc that you've specified. It doesn't know or care what it is you are controling. With that being said it may lack features that is better suited for controling one thing or another, like feedforward etc but more or less, it doesn't care.

    question3:
    from my pc i get two parameters: position and speed. i want to preset a 1 second of gradual speed increasing (you know, for not damaging mechanism & stuff..) and speed decreasing for before getting to the given position. Do any of your PID inc file variables handle this parameter/s or i need to do it by myself?
    No, there's no trajectory planner built in. If you want acceleration and deceleration ramps you need to "slowly" increase the "setpoint" to bring it up to speed and so on.

    Hope that answers your questions.

    /Henrik.

  4. #4
    Join Date
    May 2007
    Posts
    65


    Did you find this post helpful? Yes | No

    Smile thx

    Thank you so much Henrik, now I got it!
    I'll test it as soon as I can. Then i'll bother you again

    I have another question in a new thread, not related to PID, but related to counting position. Thread title: "Pulse count matching"
    "Beethoven had his critics too, see if you can name 3 of them"

  5. #5
    Join Date
    Jan 2009
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    can i use the code to control speed and position of motor using same pic?

  6. #6
    Join Date
    May 2007
    Posts
    65


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by infinitrix View Post
    can i use the code to control speed and position of motor using same pic?
    First step (get), you Get variables from hardware (via pot, encoder, ...)
    Second step (control), you correct those variables (PID between desired and got variables)) to reach your desired speed, direction & position by PWM and polarity (depending on the type of motor DC, BLDC or what ever). That is control.

    And yes, both steps you can perform them in a single MCU. Motor control oriented MCU's works great for this, such as a dsPIC30F3011; or for this compiler, a PIC18F2431 (or any of the family PIC18Fxx31) which have QEI peripheral, where QEI stands for Quadrature Encoder Interface, which decodes signal from a rotary Quadrature Encoder, ideal for gathering motor rotation activity.

    Rodrigo M.-
    Last edited by RodSTAR; - 27th March 2009 at 18:36.
    "Beethoven had his critics too, see if you can name 3 of them"

  7. #7
    Join Date
    Feb 2009
    Posts
    10


    Did you find this post helpful? Yes | No

    Question Use on RC servo?

    Hi Henrik,
    Is it possible to use portion of the code on a RC servo which is connected to an externat 10k potentiometer.?
    My existing circuit is driving an RC servo in the range of 1mS to 2mS, the servo pulls a throtle of an engine, to keep revolutions at 1500 RPM (50Hz). The engine is directly coupled to an alternator. The position of the servo is controlled by a voltage (F/V), form the alternator frequency and a 10k setpoint potentiometer. I use analog inputs on 16f88 to convert volt to value. I then subtract values from each other and send the difference to the servo. (simple calculation)
    My problem is that the voltage conversion is not linear to the servo movement. The result is that servo movement is always too litlle in comparison of the set speed needed.
    I was wondering whether I can use feedback in order to counteract the non-linear characteristic of the servo.

  8. #8
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,611


    Did you find this post helpful? Yes | No

    Cool

    Hi, Daaan

    I use such a routine to drive cooling flaps of an engine cowl ... ( of course with temp. as input ... lol )

    no problems just change the lines :

    Code:
        Direction = pid_Out.15             'Set direction pin accordning to sign
        pid_Out = ABS pid_Out              'Convert from two's comp. to absolute
        HPWM 1, pid_Out, 10000             'Set PWM output
        Pause 10                           'Wait....
    to drive a servo and not a " Bridge driven " DC motor.

    Did not understand your linearity problems ... IF you use the servo within its NORMAL RANGE ( say 800 - 2200 µs ) linearity is fine - Whatever its brand ( humour !!! )

    Moreover, ... as it's a closed control loop with Integral action, your servo HAS to reach the required position ... more or less qickly !!!

    But, might be, your project is only a PROPORTIONNAL regulator ... This could easily explain never reaching the setpoint ...

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  9. #9
    Join Date
    Nov 2008
    Posts
    19


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by daan.joubert View Post
    Hi Henrik,
    Is it possible to use portion of the code on a RC servo which is connected to an externat 10k potentiometer.?
    My existing circuit is driving an RC servo in the range of 1mS to 2mS, the servo pulls a throtle of an engine, to keep revolutions at 1500 RPM (50Hz). The engine is directly coupled to an alternator. The position of the servo is controlled by a voltage (F/V), form the alternator frequency and a 10k setpoint potentiometer. I use analog inputs on 16f88 to convert volt to value. I then subtract values from each other and send the difference to the servo. (simple calculation)
    My problem is that the voltage conversion is not linear to the servo movement. The result is that servo movement is always too litlle in comparison of the set speed needed.
    I was wondering whether I can use feedback in order to counteract the non-linear characteristic of the servo.
    I have used a magnetic pickup on the fly wheel in the past, adc this to a stepper motor, incorporate the feedback once you get to the stage of engine hunting, then set your fine tuning (gain etc).

  10. #10
    Join Date
    Aug 2009
    Posts
    7


    Did you find this post helpful? Yes | No

    Default Hi Henrik

    I have many trys to solve my problem but fail.Actually i want to control GAS engine speed.I am using AGB130 LINEAR ELECTRIC ACTUATOR to drive BUTTERFLY VALVE.I am using MAGNETIC PICKUP UNIT located on flyweel to sense engine speed.After F/V conversion i have 0-5000Hz to 0-5V.
    Problem is that ACTUATOR drive only forward direction through given voltage
    and reverse direction through SPRING located inside.
    ACTUATOR always needed some voltage to remain in a position to maintain speed.But INCPID routine gives 0 output when no error found.
    I am giving some examples in atachements which will help to identify problem.
    Best regards
    IFTIKHAR AHMAD
    Attached Images Attached Images   

  11. #11
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Hi,
    Don't really know how the spring return will work here...Can't really see why it wouldn't work....

    The 0V at 0 error isn't really true.... When the error is 0 output from the P- and D-term is indeed 0 (the D-term might not be 0 but for this discussion let's say it is). But the output from the I-term is whatever was needed to bring the error to 0. (It might be 0 but not necessarily).

    Think of the car analogy, you're trying to keep the speed at 50mph and you're starting to climb a steep hill, if you simply keep the gas-pedal at the exact same position the speed will start to drop. The P-term adds a little effort based on the error but not enough since the load now is larger (we're climbing a hill). The I-term starts adding a little effort (giving some gas) and soon the velocity is back at 50mph. Now the P term is 0 (since there is no error) the D-term is 0 since there is no error but the I-term is not zero - if it were the speed would start to drop again.

    With that said, simply add a little to the output of the PID-filter rto overcome the force of the spring - if that's what you want. This is often called feed-forward and means that for a particular speed, torque, position or whatever you have like a "starting point" for the "drive" - the PID filter then takes it from there.

    /Henrik.

  12. #12
    Join Date
    May 2007
    Posts
    65


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by hadiengg View Post
    I have many trys to solve my problem but fail.Actually i want to control GAS engine speed.I am using AGB130 LINEAR ELECTRIC ACTUATOR to drive BUTTERFLY VALVE.I am using MAGNETIC PICKUP UNIT located on flyweel to sense engine speed.After F/V conversion i have 0-5000Hz to 0-5V.
    Problem is that ACTUATOR drive only forward direction through given voltage
    and reverse direction through SPRING located inside.
    ACTUATOR always needed some voltage to remain in a position to maintain speed.But INCPID routine gives 0 output when no error found.
    I am giving some examples in atachements which will help to identify problem.
    Best regards
    IFTIKHAR AHMAD
    PID is a loop. If spring moves something, PID will detect it and it will correct it immediatly. Don't confuse error variable with PWM value. In my project it works fine and it responds to dynamic loads and it correct it as it should (read above post of my project). Sorry for answering you, as you only refer to Henrik.
    "Beethoven had his critics too, see if you can name 3 of them"

  13. #13
    Join Date
    Nov 2008
    Posts
    19


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by hadiengg View Post
    I have many trys to solve my problem but fail.Actually i want to control GAS engine speed.I am using AGB130 LINEAR ELECTRIC ACTUATOR to drive BUTTERFLY VALVE.I am using MAGNETIC PICKUP UNIT located on flyweel to sense engine speed.After F/V conversion i have 0-5000Hz to 0-5V.
    Problem is that ACTUATOR drive only forward direction through given voltage
    and reverse direction through SPRING located inside.
    ACTUATOR always needed some voltage to remain in a position to maintain speed.But INCPID routine gives 0 output when no error found.
    I am giving some examples in atachements which will help to identify problem.
    Best regards
    IFTIKHAR AHMAD
    You will need to find the required pwm to output 1500 rpm (1.5v) from your engine,(you will need this on startup to have your engine idling at no load) this you will use as your setpoint after adc. Anything above it will generate a negative P substracting from setpoint,slowing the engine down, above it adding to the setpoint,speeding up the engine. The gains of each part of p.i.d will be from the variable resistors via adcs. Have these initially set to one, set the p then p gain etc the idea is to have the engine fairly responsive to load change and the fine settings of the gains will limit the droop and overshoot.
    Last edited by anonymouse; - 3rd September 2009 at 23:11.

  14. #14
    Join Date
    Feb 2009
    Posts
    10


    Did you find this post helpful? Yes | No

    Smile PID for servo

    Hi Alain and others,
    Thank you all for info given, it is much appreciated.

    Alain, regarding the linear problem - I have tested the actual distance travel of the servo arm by connecting a ruler to the arm.
    To test I then adjusted the speed voltage, taking voltage readings and distance readings as I go along.
    The distance values on Excel graph showed a non linear line in comparison to the linear nature of the voltage.
    /Daan Joubert

  15. #15
    Join Date
    Nov 2009
    Location
    Dallas, Texas, USA
    Posts
    10


    Did you find this post helpful? Yes | No

    Default PID with no negative values

    I need to get a simple PID application going using a PIC, and this PID include looks to be ideal for what I need to do.

    The system I'm working with doesn't incorporate an output device that accepts a direction bit. Everything is a positive variable i.e. the setpoint value, feedback value, and the output to the process (a value that I'll plug into a hardware PWM channel). Specifically, everything operates within the span of a WORD variable, 0-1023.

    If I'm properly interpreting how the routine works, I'll need to edit the include file to make the sign indicator passed to the include, currently B.0, a bit variable, and then do a sign determination in the main calling program to indicate if the error signal that I pass to the PID sub is below or above the setpoint.

    Likewise, I'll need to take the output of the PID include that gets passed back to the main process, and add/subtract the new output with the last output based on the direction bit, currently B.15.

    OR

    Can I simply make the direction variable passed to the PID a constant 1, and ignore the sign information returned from the routine?

    OR

    Do I have this all wrong?

    Thanks in advance for the help!

    Mike

  16. #16
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Hi Mike,
    There should be no need to edit the include file for this, I don't think.

    All you need to do is calculate the error and send it to the PID-filter, it determines if the error is positive or negative, calculates the "drive" and returns it in the variable PID_Out. You never need to pass any "direction-bit" TO the PID-routine.

    Now, if you're driving something like a heater where you can only deliver power in "one direction" (you can just add more or less heat, you can't remove it) then you simply look at the sign-bit of the PID_Out variable (PID_Out.15) and if it's set (meaning negative "drive" becuse the temperature is too high) you simply set the output to 0.

    OR (and this is probably a better aproach)

    Let's say you know that under normal conditions you need a duty cycle of ~30% to keep the temperature fairly constant. Now you look at the sign of the value in the PID_Out variable and depending on its state you either add or subtract the ABS value of PID_Out from whatever value corresponds to 30% duty cycle. Here you need to make sure you clamp the end value between 0 and 1023 before moving it to the duty cycle register.

    Does this make sense?

    /Henrik.

  17. #17
    Join Date
    Nov 2009
    Location
    Dallas, Texas, USA
    Posts
    10


    Did you find this post helpful? Yes | No

    Default

    Thanks for the reply.

    Yes, makes sense to me. The process does accept a variable input, not on-off. It's a DC drive that I'm generating a reference voltage for using hardware PWM on a 18F2320 @ 40MHz. Sounds like this should work out fine.

    Once again, thanks!

    Mike

  18. #18
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Yes, what I meant with set the output to 0 was that if the ouput of the PID filter goes negative you "clamp" the dutycycle at 0 since you can't effectively have a negative drive with that system.

    In any case the second aproach should work better. Just a note though, in your first message you wrote:
    Likewise, I'll need to take the output of the PID include that gets passed back to the main process, and add/subtract the new output with the last output based on the direction bit, currently B.15.
    You don't add/subtract the PID filter output from the last output, you add/subtract it from the initial "steady state value". I guess you had that figured out but just in case.

    Let me know how it goes or if there's anything I can do.

    /Henrik.

  19. #19
    Join Date
    Nov 2009
    Location
    Dallas, Texas, USA
    Posts
    10


    Did you find this post helpful? Yes | No

    Default

    The routine works like a champ!

    Did the first trial run-up today. No problem at all with mono-polar operation. A few tweaks on the constants and it's working great. Need to make a small hardware change in external circuitry, and it'll be wound up.

    Again, thanks! A very handy tool to hang onto.

  20. #20
    Join Date
    Nov 2009
    Location
    Dallas, Texas, USA
    Posts
    10


    Did you find this post helpful? Yes | No

    Default

    A word of advise to anyone who needs to do PID control with a PIC, and is thinking of using this subroutine but is concerned about how well it works, you needn't worry. I used it to implement a fairly tough industrial application, and it worked like a champ. Highly recommended!

    Mike

  21. #21
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Thanks a bunch Mike, it's always nice to hear when things works out!

    If you don't mind (and are allowed) to disclose some details about the system I'd love to hear about it. Like what it is you're controlling, sensor, sampling rate, how you tuned it etc. I think it would make a nice post for future (and current) users of the PID-routine.

    I've been considering an update of the routine for quite some time, you gave me the motivation to move forward with it. I just need to get my PBP260 working on my main PC here (looks like an OS re-install is needed and I hate doing that). I'll try adding feed-forward and a few other things, mostly tailored towards motor-control although probably useful in other applications as well.

    Thanks again Mike!
    /Henrik.

  22. #22
    Join Date
    Nov 2009
    Location
    Dallas, Texas, USA
    Posts
    10


    Did you find this post helpful? Yes | No

    Default

    The application was a rewind control on a rather elderly commercial printing press.

    The original setup was a commercial PID board made up of *many* op amps. At its best it was cranky acting when it was working well, and it had been going flaky for some time. When it finally failed, and I determined that it had chips on it that I had no idea how to get and that the OEM had discontinued the board long ago, I decided to replace it with a digital implementation.

    The system consists of a 50HP speed regulator DC drive and a control board that accepted an input from a pot set by the machine operator that determined the desired dancer position (check out Wiki or the like if you're not up on compressed air loaded printing press dancer rewind setups). A gear driven pot provided feedback from the dancer, indicating its position.

    The drive required a 0-15VDC reference signal. I built up a board consisting of a +18 and +5 supply. +5 supply was run out to the operator and dancer pots. Those two signals became setpoint and feedback, respectively, and were dumped directly into PIC A/D pins. Half of a LM358 op amp fed by a simple RC filter took the PIC PWM output, smoothed it, and raised it to 0-15VDC.

    My calling app sets the reference voltage to the drive to zero should the PID routine ever call for a negative, but that's probably superfluous.

    Took less than an hour to set up the P, I & D constants to achieve better dancer control than the original had *ever* provided.

    I have no doubt that the identical hardware, with no changes other than retuning in software, could do a perfectly acceptable job in any web material rewinding application. And speed regulator drives are simpler to set up, less expensive, and more readily available than the torque regulator drives that I've used in similar applications in the past.

    Again, thanks for your help and use of a very handy routine!

    Mike

  23. #23
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default

    Thanks Mike!
    A 50HP DC drive...that's cool!

    /Henrik.

  24. #24
    Join Date
    Dec 2009
    Location
    Kalamazoo
    Posts
    42


    Did you find this post helpful? Yes | No

    Default pid routine for h-bridge

    first of all, a big thanks to mr henrik for this wonderful code. it works, as i have it all set up right here.
    but instead of locked antiphase, im trying to implement a h-bridge powered by the two hpwm (forward/reverse motion)on a 18f4431.
    i have a lcd displaying variables like position, setpoint, dutycycle1(for hpwm0) and dutycycle2(hpwm1)

    Main: ; main loop

    LCDOUT $FE, $80, "POS=" ,DEC5 POSITION, " SP=" ,DEC5 SETPOINT
    LCDOUT $FE, $C0, "DUTY1=" ,DEC3 DUTY1, " DUTY2=" ,DEC3 DUTY2
    IF PORTB.3 = 0 then SETPOINT = SETPOINT + 1 ; Increment setpoint
    select case setpoint ; Circular count for Setpoint condition
    case is > 65535 ; Circular count for Setpoint condition
    setpoint = 0 ; reset setpoint
    POSCNTH=0 ; set counter for encoder, H bit ; reset QEI counter high byte
    POSCNTL=0 ; set counter for encoder, L bit ; reset QEI counter low byte
    end select
    ;SELECT CASE PID_ERROR
    IF POSITION<SETPOINT THEN ; End of Circular count for Setpoint condition
    pid_Error = setpoint - position
    ;GOSUB FORWARD
    ENDIF
    IF POSITION>SETPOINT THEN
    PID_ERROR = POSITION - SETPOINT
    endif

    gosub pid ; go to PID rutine
    DIRECTION = PID_OUT.15
    select case direction ; condition determine PWM
    case 0 ; condition determine PWM
    Duty1 = abs pid_out
    GOSUB FORWARD
    ;DUTY1 = 0 ; condition determine PWM
    case 1 ; condition determine PWM
    Duty2 = ABS pid_Out
    GOSUB BACKWARD
    ;DUTY2 = 0
    END SELECT

    goto Main ; do main loop

    sub forward turns on first hpwm and sub backward turns on second hpwm.

    here is the problem: if i increment/add to the setpoint, both duty cycles reset when position rolls over from 65535 to 0. i know its something to do with my integer math, and ive spent a whole week on this issue. im trying to implement a step/dir routine, for my cnc machine.

    any suggestion will be highly appreciated. thanks
    NAG CON WIFE!
    WIFE VAR MOOD

Similar Threads

  1. Darrel's latest 16 bit averaging routine?
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 17th October 2009, 02:57
  2. 2nd order Low-pass passive RC filter on PWM
    By munromh in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 29th January 2009, 20:03
  3. Atod Digital Filter
    By GeoJoe in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd April 2008, 18:04
  4. PID controller in 16F737
    By joeri in forum mel PIC BASIC
    Replies: 8
    Last Post: - 24th June 2006, 12:39
  5. 2nd Order Digital Filter for 24-bit
    By sefayil in forum mel PIC BASIC
    Replies: 0
    Last Post: - 2nd December 2005, 22:55

Members who have read this thread : 4

You do not have permission to view the list of names.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts