Skip to main content

Interface for ST SpinFamily motor drivers

Project description

ST Spin Family Interface

A Python library for interfacing with ST Spin Family devices, specifically the ST Micro L6470, L6472, L6474, and L6480 ICs. Can be used nearly without modification with similar ICs.

If you do not specify your own spi_transfer function when creating a SpinChain, this project relies on spidev's SPI transfer function.

Python 3.6 or greater recommended.

Getting Started

pip install st-spin pip install spidev (if you intend to use /dev/spi and spidev's spi transfer function)

Add imports

import time  # Used in our example

from stspin import (
    SpinChain,
    SpinDevice,
    Constant as StConstant,
    Register as StRegister,
    utility,
)

Create a device chain

stChain = SpinChain(
    total_devices=2,
    spi_select=(0, 0),
)

This assumes the spi device is at 0, 0.

Create devices

motorMain = stChain.create(1)
motorAux = stChain.create(0)

# Unless you absolutely need holding current,
# it is good practice to disable the power bridges
motorMain.hiZHard()
motorAux.hiZHard()

Run basic commands

motorMain.setRegister(StRegister.SpeedMax, 0x22)

motorMain.run(100)
time.sleep(3)
motorMain.hiZSoft()
time.sleep(1)

# {{{ Set some registers
motorMain.setRegister(StRegister.Acc, 0x5)
motorMain.setRegister(StRegister.Dec, 0x10)
motorAux.setRegister(StRegister.Acc, 0x20)
# }}}

# {{{ Go n steps with both motors
motorMain.move(steps=420000)
motorAux.move(steps=420000)
while motorMain.isBusy():
    time.sleep(0.2)
# }}}

# {{{ Head back
motorMain.setDirection(StConstant.DirReverse)
motorMain.move(steps=420000)
while motorMain.isBusy():
    time.sleep(0.2)
# }}}

# Release holding current
motorAux.hiZHard()
motorMain.hiZHard()

More details

For details on the SPI setup, see create() in spin_chain.py. See example.py.

Creating your own spi_transfer function You may use your own spi transfer function in place of spidev's xfer2.

def custom_spi_transfer(buffer: List[int]) -> List[int]:
    # TODO: Implement me
    pass

stChain = SpinChain(
    total_devices=2,
    spi_transfer=custom_spi_transfer,
)

custom_spi_transfer() must take a list of bytes as int, and return a same-length list of bytes as int from the MISO pin.

It should handle latching using the Chip Select pin, and transfer data with MSB first in SPI Mode 3 (sample on rising edge, shift out on falling edge).

On these devices, Chip Select is active low.

Troubleshooting

getStatus() is your friend. Feel free to use getPrettyStatus() under utility.py. The manual is also your friend.

Q: Why is my motor stalling, loud, or both? Most likely the Back-EMF compensation is not configured properly. The correction parameters depend heavily on your motor's ke value (V/Hz), inductance, and phase resistance.

After calculating the parameters using the manufacturer's tool, set KvalAcc, SpeedInt, SlpSt, etc. using setRegister().

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

st_spin-0.0.22.4.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

st_spin-0.0.22.4-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file st_spin-0.0.22.4.tar.gz.

File metadata

  • Download URL: st_spin-0.0.22.4.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.2

File hashes

Hashes for st_spin-0.0.22.4.tar.gz
Algorithm Hash digest
SHA256 696373d6ab5a3df8f6859ae84ef53784d233483e0a235073ac53ded9d0106faf
MD5 23c9a009ad33d0b7fdba26e94078cf5e
BLAKE2b-256 d3e256cff23150a354dc2888b91c9bc85166f5378119004368b48857052a205b

See more details on using hashes here.

File details

Details for the file st_spin-0.0.22.4-py3-none-any.whl.

File metadata

  • Download URL: st_spin-0.0.22.4-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.2

File hashes

Hashes for st_spin-0.0.22.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ea4763b288c8e2f1614c5117830b1aadfae558858a44252115b33163b1bd2ccd
MD5 d3eb9fa8785aa5726840b13bb9d24b48
BLAKE2b-256 29185e362088084d293589ce3ab45ea3d1079523fde3fc17606a764b1810d0f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page