Member Since: May 19, 2006

Country: United States

  • Yes, there are two major connection techniques with this part: Parallel and chained

    The way it is currently wired lends itself to be a parallel connected device, so that all of the SPI inputs (SDI) are ganged and all of the SPI outputs (SDO) are ganged, and the CS signal is used to select the desired device.

    The other approach wires the previous chip SPI SDO into the next chip's SDI. I have used this in a design, also ganging together the SCK, CS, FLAG, and BUSY lines. It works well to save pins, but can get clogged up if there are a lot of movement commands flying around very quickly.

    A few recommendations I would make if there were a rev:

    It should be pretty straightforward to use jumpers to select between parallel and daisy chained configurations, if other people care about that approach.

    The ADC resistors are set for Vs of 16.5V MAX. At 45V, ADC_IN would be over 8V with R4 fully shorted. The given absolute max for that pin is 3.6V. I'm not sure what to do with this one, but the board doesn't appear to include a trim pot anyway, leaving this pin biased to ground. Since this is an unused feature, it might be nice if the ADC bias resistors were through hole so that you can source your own resistors to implement motor supply voltage compensation that's described in the datasheet section 7.5 . Yes it is possible to use a trimpot for this too, but blowing out the pin seems to be a severe gotcha if you install it...

    I would get rid of the OSCIN connection. I'm not sure why you would use it, and if you stop the clock signal to this part while it's operating [I've heard that] it may cause the otherwise excellent over-current protection to stop working.

    This is a complex part but a really nice one! Thanks for continuing to put great parts out there!

  • That's correct. If you want to keep track of more revolutions, you can reset the counter and keep track of the value yourself when it starts to get on the high end of things. You should probably only do this with the motor stopped though:

    motorcounts = getmotorcounts()
    if (abs(motorcounts) > 2^20) {
        motorcount_accumulator += motorcounts

    Call this code whenever your motor stops. If you want the current motor position at any given time, you need to query the chip's counter and add it to your accumulator. Resets only happen when it's in the last quarter of its travel. This method is untested, but the basic idea should work :P

  • The wrong datasheet is linked... it should be www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-42-ds.pdf

  • The All LilyPad Product Sticker Sheet PDF link is a bit off.. should be

  • Hey, just wanted to point out that the flash chip is 2Gb, aka 256MB!

No public wish lists :(