[Home]Dead Band Schmitt Trigger

HomePage | RecentChanges | Preferences

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.

friction feedback

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 
   return   
This is another way of doing this.

Magnetics and the Barkhausen Effect

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

Schmitt Triggers in A feedback loop

What happens if we get multiple Schmitt triggers in a feed back loop? Could we model magnetics?


HomePage | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited October 5, 2012 9:28 pm by dougrice.plus.com
Search:
dougFooter