In Servo system it is often the case that a dead band is used to stop motor jitter.
http://adamone.rchomepage.com/guide2.htm
On the Microchip forum, we discussed this. http://www.microchip.com/forums/tm.aspx?m=518712&high=dougrice
| output | | | | --------- HIGH | v ^ | ------------ OK | v ^ |------- LOW | +----------------------------------- input
Input was measured using an AtoD and converted to a digital output. e.g. LOW,OK,HIGH
Measure the input, and subtract a constant based on LOW,OK,HIGH and then compare which band to use.
This applies a dead band.
The idea above works but not for all AtoD values and there is some interesting zones where it does not work near the limits.
Another way of doing this is to use "friction" and only update the output if the input changes significantly from the current value.
Compare the new value to the current value and only use the new value if the difference is big enough. Only update the current value if you use the new value.
I tried this code on the Micro LPC lesson 4 and cannot get the LEDS to flicker.
It uses a dead zone to stop updates when the AtoD reading goes from XXX0011 to XXX0100. A simple mask does not work for this.
test_deadband ; W contains new AtoD reading. ; This compares last two reading and only updates if difference is greater than 3 ; ; If not zero, then mask of least significant bits and then see if difference greater than the dead zone ; DEADBAND equ 0x03 ; bit mask of unwanted bits movwf AtoDnew ; look for dead band subwf AtoDlast,w bz test_same ; ; The readings are not the same ; ; Mask off bottom bits to ignore them ; looking for 000000XX or 111111XX ; ; check for 000000XX andlw ~DEADBAND bz test_same ; may still be negative so toggle Most Significant bits to 0 ; check for 111111XX xorwf ~DEADBAND bz test_same test_update ; update value movfw AtoDnew movwf AtoDlast test_same ; close enough so keep the same. swapf AtoDlast,w returnThis is another way of doing this.
http://en.wikipedia.org/wiki/Barkhausen_effect
The London Science Museum used to have a really good demo of this.
Consider a pile of magnets, how do they align.
Lets put the magnetics into a line we get:
NS NS NS NS NS NS NS
The north and south pols align.
Now put them in a grid.
Or, If spaced more by Y
NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
Or, If spaced more by X
NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN NS SN
Maybe we get
NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
I think this is why we see lines of magnetic force with iron filings on paper as lines.
The iron filings align and push apart.
here is a link to a you tube demo http://www.youtube.com/watch?v=-TXXVDQaeYM
What happens if we get multiple Schmitt triggers in a feed back loop? Could we model magnetics?