UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube Användarmanual
UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube

Introduktion

X-CUBE-SPN14 expansionspaket för STM32Cube ger dig full kontroll över stegmotorns funktioner.
När den kombineras med ett eller flera X-NUCLEO-IHM14A1-expansionskort tillåter denna programvara ett kompatibelt STM32 Nucleo-utvecklingskort att styra en eller flera stegmotorer.
Den är byggd ovanpå STM32Cube mjukvaruteknik för enkel portabilitet över olika STM32 mikrokontroller.
Programvaran kommer med somample implementering för en stegmotor. Den är kompatibel med NUCLEO-F401RE, NUCLEOF334R8, NUCLEO-F030R8 eller NUCLEO-L053R8 utvecklingskort med ett X-NUCLEO-IHM14A1 expansionskort monterat ovanpå.

RELATERADE LÄNKAR
Besök STM32Cube-ekosystemet web sida på www.st.com för mer information

Akronymer och förkortningar

Tabell 1. Lista över akronymer

Akronym

Beskrivning
API

Gränssnitt för applikationsprogrammering

BSP

Styrelsestödspaket
CMSIS

Cortex® mikrokontroller mjukvarugränssnitt standard

HAL

Hårdvaruabstraktionslager
ID

Integrerad utvecklingsmiljö

LED

Ljusdiod

Överview

Mjukvarupaketet X-CUBE-SPN14 utökar funktionaliteten hos STM32Cube. Dess nyckelfunktioner inkluderar:

  • Ett drivrutinslager för fullständig hantering av STSPIN820-enheten (lågeffektstegmotordrivrutin) integrerad i expansionskortet X-NUCLEO-IHM14A1
  • Enhetsparameterläs- och skrivlägen, GPIO-, PWM- och IRQ-konfiguration, mikrostepping, riktningsposition, hastighet, acceleration, retardation och vridmomentkontroller, automatisk fullstegsomkopplarhantering; hög impedans eller håll stoppläge val, aktivera och standby-hantering
  • Felavbrottshantering
  • Enkel stegmotorstyrningample ansökan
  • Enkel portabilitet över olika MCU-familjer, tack vare STM32Cube
  • Gratis, användarvänliga licensvillkor

Programvaran implementerar pseudoregister och rörelsekommandon genom att:

  • konfigurera timers som används för att generera stegklocka och voltage referens
  • hantera enhetsparametrar som acceleration, retardation, min. och max. hastighet, positioner vid hastighet profile gränser, markeringsposition, mikrostegningsläge, riktning, rörelsetillstånd, etc.

Programvaran hanterar en STSPIN820-enhet.
Vid varje tick-timerpulsslut exekveras en återuppringning för att anropa stegklockhanteraren som styr motorns rörelse
genom att hantera:

  • rörelsestatus (t.ex. stoppa motorn vid måldestinationen)
  • motorriktning via GPIO-nivå
  • relativ och absolut motorisk position i mikrosteg
  • hastigheten genom noll, positiv och negativ acceleration

Hastigheten ställs in genom att variera stegklockfrekvensen och, valfritt, stegläget när den automatiska fullstegsväxlingsfunktionen är aktiverad. Timern som används för stegklockan är konfigurerad i utgångsjämförelseläge. Ett nytt infångningsjämförelseregistervärde beräknas vid varje stegklockhanterareanrop för att uppnå frekvensstyrning.
Hastigheten är en linjär funktion av stegklockfrekvensen för ett givet mikrostegläge, som kan varieras av programvaran från fullt till 1/256:e steg.
För att använda STSPIN820-drivrutinsbiblioteket måste du köra initieringsfunktionen som:

  • ställer in de nödvändiga GPIO:erna för att aktivera bryggorna och hantera felstift EN\FAULT, dedikerat MODE1,
    MODE2 och MODE3 stegvalsstift, DIR-stiftet för motorriktning, DECAY-stiftet för decay-läge
    val och standby-återställningsstiftet STBY\RESET;
  • ställer in timern i utgångsjämförelseläge för STCK-stiftet och timerreferensvolymentage generation i PWM-läge för REF-stift;
  • laddar drivrutinsparametrarna med värden från stspin820_target_config.h eller definierade i huvudfunktionen med hjälp av en dedikerad initieringsstruktur.
    Drivrutinsparametrar kan ändras efter initiering genom att anropa specifika funktioner. Du kan också skriva återuppringningsfunktioner och bifoga dem till:
  • flaggavbrottshanteraren för att utföra vissa åtgärder när en överström eller ett termiskt larm rapporteras
  • felhanteraren som anropas av biblioteket när den rapporterar ett fel. Efterföljande rörelsekommandon inkluderar:
  • BSP_MotorControl_Move för att flytta ett givet antal steg i en specifik riktning
  • BSP_MotorControl_GoTo, BSP_MotorControl_GoHome, BSP_MotorControl_GoMark för att gå till en specifik position med den kortaste vägen
  • BSP_MotorControl_CmdGoToDir för att gå i en specifik riktning till en specifik position
  • BSP_MotorControl_Kör för att köras på obestämd tid

Hastighetsproffsetfile hanteras helt av mikrokontrollern. Motorn börjar röra sig vid BSP_MotorControl_SetMinSpeed ​​minimihastighetsinställningen, som sedan ändras vid varje steg av
BSP_MotorControl_SetAcceleration accelerationsvärde.
Om målpositionen för ett rörelsekommando är tillräckligt långt, utför motorn en trapetsformad rörelse genom att:

  • accelererar med enhetens accelerationsparameter
  • förblir stadig vid BSP_MotorControl_SetMaxSpeed ​​maxhastighet
  • retarderar med BSP_MotorControl_SetDeceleration
  • stannar vid måldestinationen
    Om målpositionen är för nära för att motorn ska nå maximal hastighet, utför den en triangulär rörelse som involverar:
  • acceleration
  • retardation
  • stannar vid måldestinationen

Ett rörelsekommando kan stoppas när som helst med BSP_MotorControl_SoftStop som gradvis minskar hastigheten med hjälp av retardationsparametern eller kommandot BSP_MotorControl_HardStop som omedelbart stoppar motorn. Kraftbryggan avaktiveras automatiskt när motorn stannar om HIZ_MODE-stoppläget tidigare var inställt (BSP_MotorControl_SetStopMode).
Riktning, hastighet, acceleration och retardation kan ändras antingen när motorn stoppas eller när rörelsen begärs via BSP_MotorControl_Run.
För att blockera nya kommandon innan de har slutförts, låser BSP_MotorControl_WaitWhileActive programexekveringen tills motorn stannar.
BSP_MotorControl_SelectStepMode kan ändra stegläget från fullt till 1/256:e steg. När stegläget ändras återställs enheten och aktuell position och hastighet.

Arkitektur

Denna mjukvaruexpansion överensstämmer helt med STM32Cube-arkitekturen och utökar den för att möjliggöra utveckling av applikationer som använder stegmotordrivrutiner.

Figur 1. X-CUBE-SPN14 mjukvaruarkitektur
Arkitektur

Mjukvaran är baserad på STM32CubeHAL hardare abstraktionsskikt för STM32 mikrokontroller. Paketet utökar STM32Cube med ett kortstödspaket (BSP) för motorstyrningsexpansionskortet och en BSP-komponentdrivrutin för STSPIN820 low voltage stegmotorförare.
Programvaruskikten som används av applikationsmjukvaran är:

  • STM32Cube HAL-lager: en enkel, generisk och multi-instans uppsättning API:er (applikationsprogrammeringsgränssnitt)
    för att interagera med övre applikations-, biblioteks- och stacklager. Den består av generiska och förlängnings-API: er
    på en gemensam arkitektur så att lager som är byggda på den, såsom mellanvarulagret, kan fungera utan att kräva specifika hårdvarukonfigurationer för mikrokontrollerenheter (MCU). Denna struktur förbättrar bibliotekskodens återanvändbarhet och garanterar enkel portabilitet på andra enheter.
    Styrelsestödpaket (BSP) lager: stöder kringutrustningen på STM32 Nucleo-kortet, med undantag för
    MCU. Denna begränsade uppsättning API:er tillhandahåller ett programmeringsgränssnitt för vissa kortspecifika kringutrustning som LED och användarknappen, och hjälper till att identifiera den specifika kortversionen. Motorstyrningen BSP tillhandahåller programmeringsgränssnittet för olika motordrivarkomponenter. Den är associerad med BSP-komponenten för STSPIN820-motordrivrutinen i programvaran X-CUBE-SPN14.

Mappstruktur

Mappstrukturfönster

Programvaran finns i två huvudmappar:

  • Drivrutiner, med:
    • STM32Cube HAL files i undermapparna STM32L0xx_HAL_Driver, STM32F0xx_HAL_Driver, STM32F3xx_HAL_Driver eller STM32F4xx_HAL_Driver. Dessa files är hämtade direkt från STM32Cube-ramverket och inkluderar endast de som krävs för att köra motordrivrutinen examples.
    • en CMSIS-mapp med CMSIS (Cortex® microcontroller software interface standard), leverantörsoberoende hårdvaruabstraktionslager för Cortex-M-processorserien från ARM. Denna mapp är också oförändrad från STM32Cube-ramverket.
    • en BSP-mapp med koden files för X-NUCLEO-IHM14A1-konfiguration, STSPIN820-drivrutinen och motorstyrnings-API.
  • Projekt, som innehåller flera användning examples av STSPIN820-motordrivrutinen för olika STM32 Nucleo-plattformar.

BSP-mapp
X-CUBE-SPN14-programvaran inkluderar BSP:erna som beskrivs i följande underavsnitt.

STM32L0XX-Nucleo/STM32F0XX-Nucleo/STM32F3XX Nucleo/STM32F4XX-Nucleo BSPs
Dessa BSP:er tillhandahåller ett gränssnitt för varje kompatibelt STM32 Nucleo-utvecklingskort för att konfigurera och använda dess kringutrustning med X-NUCLEO-IHM14A1-expansionskortet. Varje undermapp har två.c/.h file par:

  • stm32XXxx_nucleo.c/h: dessa omodifierade STM32Cube-ramverk files ger användarknapp och LED-funktioner för det specifika STM32 Nucleo-kortet.
  • stm32XXxx_nucleo_ihm14a1.c/h: dessa files är dedikerade till konfigurationen av PWM:erna, GPIO:erna och avbrottsaktivering/inaktivering som krävs för X NUCLEO-IHM14A1 expansionskortdrift.

Motorstyrning BSP

Denna BSP tillhandahåller ett gemensamt gränssnitt för åtkomst till drivrutinsfunktionerna för olika motordrivrutiner, såsom L6474, powerSTEP01, L6208 och STSPIN820, via MotorControl/motorcontrol.c/h file par.
Dessa files definierar alla drivrutinskonfigurations- och kontrollfunktioner, som sedan mappas till funktionerna för motordrivrutinskomponenten som används på det givna expansionskortet via motorDrv_t-strukturen file (definieras i Components\Common\motor.h.). Denna struktur definierar en lista med funktionspekare som fylls under dess instansiering i motsvarande motordrivarkomponent. För X-CUBE-SPN14 kallas strukturen stspin820Drv (se file: BSP\Components\stspin820\stspin820.c).
Eftersom motorstyrningen BSP är gemensam för alla motordrivrutinexpansionskort är vissa funktioner inte tillgängliga för ett givet expansionskort. Otillgängliga funktioner ersätts av nollpekare under instansieringen av motorDrv_t-strukturen i drivrutinskomponenten.

STSPIN280 BSP komponent
STSPIN820 BSP-komponenten tillhandahåller drivrutinsfunktionerna för STSPIN820-motordrivrutinen i mappen
stm32_cube\Drivers\BSP\Components\STSPIN820.
Denna mapp har 3 files:

  • stspin820.c: kärnfunktionerna i STSPIN820-drivrutinen
  • stspin820.h: deklaration av STSPIN820-drivrutinsfunktionerna och deras tillhörande definitioner
  • stspin820_target_config.h: fördefinierade värden för STSPIN820-parametrarna och för motorenhetskontexten

Projektmapp
För varje STM32 Nucleo-plattform, ett exampLe-projektet är tillgängligt i stm32_cube\Projects\Multi\Examples\MotionControl\:

  • IHM14A1_ExampleFor1Motor examples av styrfunktioner för enmotorkonfigurationer

Example har en mapp för varje kompatibel IDE:

  • EWARM för IAR Embedded Workbench
  • MDK-ARM för ARM/Keil µVision
  • STM32CubeIDE för integrerad utvecklingsmiljö för STM32

Följande kod files ingår också:

  • inc\main.h: Huvudhuvud file
  • inc\ stm32xxxx_hal_conf.h: HAL-konfiguration file
  • inc\stm32xxxx_it.h: rubrik för avbrottshanteraren
  • src\main.c: huvudprogram (kod för example baserad på motorstyrningsbiblioteket för STSPIN820)
  • src\stm32xxxx_hal_msp.c: HAL-initieringsrutiner
  • src\stm32xxxx_it.c: avbrottshanterare
  • src\system_stm32xxxx.c: systeminitiering
  • src\clock_xx.c: klockinitiering

Programvara som krävs resurser
MCU-kontroll av en enda STSPIN820 (ett X-NUCLEO IHM14A1-kort) och kommunikation mellan de två hanteras genom sju GPIO:er (STBY\RESET, EN\FAULT, MODE1, MODE2, MODE3, DIR, DECAY-stift) och en PWM för REF-stift . GPIO för STCK-stiftet är konfigurerat för att användas som en alternativ funktion för TIMER OUTPUT COMPARE.
För hantering av överström och övertemperaturlarm använder programvaran X-CUBE-SPN14 ett externt avbrott konfigurerat på GPIO:n som används för EN\FAULT-stiftet, efter att den har aktiverat eller inaktiverat kraftbryggorna.

Tabell 2. Nödvändiga resurser för programvaran X-CUBE-SPN14

Resurser F4xx

Resurser F3xx Resurser F0xx Resurser L0xx Stift Funktioner (bräda)
Port A GPIO 10

EXTI15_10_IRQn

Port A GPIO 10

EXTI15_10_IRQn

Port A GPIO 10

EXTI4_15_IRQn

Port A GPIO 10

EXTI4_15_IRQn

 

D2

SV/FAULT

(SV)

Port B GPIO 3

Timer2 Ch2

Port B GPIO 3

Timer2 Ch2

Port B GPIO 3

Timer15 Ch1

Port B GPIO 3

Timer2 Ch2

 

D3

STCK

(CLK)

 Port B GPIO 4

 

D5

FÖRFALL

(DEC)

 Port A GPIO 8  

D7

RIKTNING

(DIR)

 Port A GPIO 9  

D8

STBY/ÅTERSTÄLL

(STBY)

Port C GPIO 7

Timer3 Ch2

Port C GPIO 7

Timer3 Ch2

Port C GPIO 7

Timer3 Ch2

Port C GPIO 7

Timer22 Ch2

 

D9

PWM REF

(REF)

 Port A GPIO 7

 

D11

LÄGE 3

(M3)

 Port A GPIO 6

 

D12

LÄGE 2

(M2)

Port A GPIO 5  

D13

LÄGE 1

(M1)

API:er

X-CUBE-SPN14 API definieras i motorstyrningen BSP. Dess funktioner innehåller prefixet "BSP_MotorControl_".

Notera: Inte alla funktioner i denna modul är tillgängliga för STSPIN820 och därmed X-NUCLEO-IHM14A1 expansionskortet.
Fullständiga användar-API-funktioner och parameterbeskrivningar kompileras i en HTML file i mappen Software Documentation.

Sampapplikationsbeskrivningen
Ett exampEn applikation som använder X-NUCLEO-IHM14A1-expansionskortet med ett kompatibelt STM32 Nucleo-utvecklingskort finns i projektkatalogen, med färdiga att bygga för flera IDE:er (se avsnitt 2.3.2 Projektmapp).

Systeminstallationsguide

Maskinvarubeskrivning
  1. STM32 Nucleo
    STM32 Nucleo-utvecklingskort ger ett prisvärt och flexibelt sätt för användare att testa lösningar och bygga prototyper med vilken STM32-mikrokontrollerlinje som helst.
    Arduino-anslutningsstödet och ST morpho-anslutningarna gör det enkelt att utöka funktionaliteten
    STM32 Nucleo öppen utvecklingsplattform med ett brett utbud av specialiserade expansionskort att välja mellan.
    STM32 Nucleo-kortet kräver inga separata sonder eftersom det integrerar ST-LINK/V2-1 debugger/
    programmerare.
    STM32 Nucleo-kortet levereras med det omfattande STM32-programvaran HAL-biblioteket tillsammans med olika paketerade mjukvaror t.ex.amples för olika IDE:er (IAR EWARM, Keil MDK-ARM, STM32CubeIDE, mbed och GCC/ LLVM).
    Alla STM32 Nucleo-användare har fri tillgång till mbeds onlineresurser (kompilator, C/C++ SDK och utvecklare
    community) på www.mbed.org för att enkelt bygga kompletta applikationer.
    Figur 3. STM32 Nucleo-kort
  2. X-NUCLEO-IHM14A1 expansionskort för stegmotordrivrutin
    X-NUCLEO-IHM14A1 motordrivrutinexpansionskortet är baserat på STSPIN820 monolitisk drivrutin för stegmotorer.
    Den representerar en prisvärd, lättanvänd lösning för att driva stegmotorer i ditt STM32 Nucleo-projekt, implementera motordrivningsapplikationer som 2D/3D-skrivare, robotteknik och säkerhetskameror.
    STSPIN820 implementerar en PWM-strömkontroll med konstant AV-tid justerbar via ett externt motstånd och en mikrostegningsupplösning upp till det 256:e steget.
    X-NUCLEO-IHM14A1-expansionskortet är kompatibelt med Arduino UNO R3-kontakten och ST morpho-kontakten, så det kan anslutas till STM32 Nucleo-utvecklingskortet och staplas med ytterligare X-NUCLEO-expansionskort.
  3. Diverse hårdvarukomponenter
    För att slutföra hårdvaruinstallationen behöver du:
    • 1 bipolär (7 till 45 V) stegmotor
    • en extern likströmskälla med två elkablar för X-NUCLEO-IHM14A1-kortet
    • en USB-kabel av typ A till mini-B för att ansluta STM32 Nucleo-kortet till en PC
  4. Programvarukrav
    Följande mjukvarukomponenter behövs för att ställa in en lämplig utvecklingsmiljö för
    skapa applikationer baserade på motordrivrutinen expansionskort:
    • X-CUBE-SPN14 STM32Cube expansion för STSPIN820 låg voltage stegmotor förare applikationsutveckling. X-CUBE-SPN14 firmware och relaterad dokumentation finns tillgänglig på www.st.com.
    • En av följande utvecklingsverktygskedja och kompilatorer:
      • Keil RealView Microcontroller Development Kit (MDK-ARM) verktygskedja V5.27
      • IAR Embedded Workbench för ARM (EWARM) verktygskedja V8.50
      • Integrerad utvecklingsmiljö för STM32 (STM32CubeIDE)
Installation av hårdvara och mjukvara

Inställning för att driva en enda motor

Konfigurera följande byglar på STM32 Nucleo-kortet:

  • JP1 av
  • JP5 (PWR) på UV5-sidan
  • JP6 (IDD) på
    Konfigurera X-NUCLEO-IHM14A1 expansionskort så här:
  • Ställ in R7-potentiometern till 1 kΩ.
  • Ställ S1, S2, S3 och S4 omkopplare till neddragningssidan som i figur 4. X-NUCLEO-IHM14A1 stegmotor
    expansionskort för drivrutiner. Mikrostegsläget väljs genom MODE1, MODE2 och MODE3
    nivåer som kontrolleras av STM32 Nucleo-kortet.
    När kortet är korrekt konfigurerat:
  • Anslut X-NUCLEO-IHM14A1-expansionskortet ovanpå STM32 Nucleo-kortet via Arduino UNO-kontakterna
  • Anslut STM32 Nucleo-kortet till en PC med USB-kabeln via USB-kontakten CN1 för att driva kortet
  • Slå på X-NUCLEO-IHM14A1-expansionskortet genom att ansluta Vin- och Gnd-kontakter till en likströmskälla
  • Anslut stegmotorn till X-NUCLEO IHM14A1 bryggkontakter A+/- och B+/-

När systeminstallationen är klar:

  • Öppna önskad verktygskedja
  • Beroende på STM32 Nucleo-kortet, öppna programvaruprojektet från:
    • \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainNam
      e\STM32F401RE-Nucleo för Nucleo STM32F401
    • \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainNam
      e\STM32F030R8-Nucleo för Nucleo STM32F334
    • \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32F030R8-Nucleo för Nucleo STM32F030
    • \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32L053R8-Nucleo för Nucleo STM32L053
  •  För att anpassa standardparametrarna STSPIN820 till din låga volymtage stegmotoregenskaper, antingen:
    • använd BSP_MotorControl_Init med NULL-pekaren och öppna stm32_cube\ Drivers\ BSP\Components\ STSPIN820\ STSPIN820_target_config.h för att ändra parametrarna enligt dina behov
    • – använd BSP_MotorControl_Init med adressen till initDevicesParameters-strukturen med lämpliga värden.
  • Bygg om alla files och ladda din bild i målminnet.
  • Kör exetample. Motorn startar automatiskt (se main.c för detaljer om demosekvens).

Revisionshistorik

Datum

Version Ändringar

17 oktober 2017

1

Initial release.

20-2021 juli 2

Uppdaterade avsnitt 2.3.2 Projektmapp och avsnitt 3.2 Programvarukrav. Borttaget avsnitt 2 Vad är STM32Cube? och ersatte den med en länk i introduktionen.

VIKTIGT MEDDELANDE - LÄS VÄNLIGT NÄR

STMicroelectronics NV och dess dotterbolag (“ST”) förbehåller sig rätten att göra ändringar, korrigeringar, förbättringar, modifieringar och förbättringar av ST-produkter och / eller detta dokument när som helst utan föregående meddelande. Köpare bör få den senaste relevanta informationen om ST-produkter innan de beställer. ST-produkter säljs enligt ST: s försäljningsvillkor på plats vid beställningsbekräftelsen.
Köpare är ensamma ansvariga för val, val och användning av ST-produkter och ST tar inget ansvar för applikationshjälp eller utformningen av köparens produkter.
Ingen licens, uttrycklig eller underförstådd, till någon immateriell rättighet beviljas av ST häri.
Återförsäljning av ST-produkter med bestämmelser som skiljer sig från den information som anges häri upphäver all garanti som beviljats ​​av ST för sådan produkt.
ST och ST-logotypen är varumärken som tillhör ST. För ytterligare information om ST-varumärken, se www.st.com/trademarks. Alla andra produkter eller tjänster
namn är deras respektive ägares egendom.
Informationen i detta dokument ersätter och ersätter information som tidigare tillhandahållits i tidigare versioner av detta dokument.
© 2021 STMicroelectronics – Alla rättigheter reserverade

 

Dokument/resurser

ST UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube [pdf] Användarmanual
UM2300, X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube, UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube, X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin, Utvidgning av programvara för drivrutinprogramvara för STM32C Expan, Motor Driver. för STM32Cube, Expansion för STM32Cube, STM32Cube

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *