69-L298-Schrittmotor-Library (STM32F4)

Wer einen Schrittmotor über einen L298-Treiber an den STM32F4 anschließen will, kann diese Library dazu benutzen.

Ich habe das L298-Treiber-Modul und den Schrittmotor von “Joerg” zur Verfügung gestellt bekommen….Danke nochmal dafür.

Der L298N kann entweder einen 6pol Unipolaren oder einen 4pol Bipolaren Schrittmotor ansteuern (5pol Unipolare funktionieren nicht !!).

Beim Init der Library kann angegeben werden in welchem Mode der Schrittmotor betrieben werden soll (HalfStep, FullStep, WaveStep)

Die CPU simuliert einen L297 und wird über 6 Leitungen mit dem L298 verbunden.

Hinweis: im FullStep-Mode werden die beiden Leitungen “ENA” und “ENB” eigentlich nicht benötigt und könnten am L298 fix auf Vcc gelegt werden. So könnte man zwei Pins an der CPU einsparen wenn man nur diesen Mode benutzt.

Ich habe die Library so einfach wie möglich gehalten und auf eine Beschleunigungs- und Abbrems-Rampe verzichtet.

Im H-File muss für alle 3 Modis das kleinste Delay (in us) von einem Schritt zum nächsten eingestellt werden (das ist Motorabhängig). Der Wert muss durch ausprobieren rausgefunden werden und zwar so das der Motor keine Schritte verschluckt oder überspringt.

Alle Geschwindigkeitsangaben in den Funktionen beziehen sich dann auf dieses kleinste Delay.

Es gibt zwei Funktionen um den Schrittmotor eine einstellbare Anzahl von Schritten nach links oder rechts laufen zu lassen. (Wenn Anzahl = 0, dann läuft der Schrittmotor permanent)

Mit einer Funktion kann getestet werden ob der Motor noch läuft (um zu testen ob er seine Zielposition erreicht hat) und mit einer anderen kann er gestoppt werden.

Mit der Funktion “UB_L298_StepTo” kann eine bestimmte Position angefahren werden. Der Motor dreht dann solange nach rechts oder links, bis die Position erreicht ist.

Es gibt auch eine Pausen-Funktion (in us) die man benutzen kann.

Bilder :

im Beispiel hängt der L298 an Port-E :

1
2
3
4
5
6
PE4  ->  L298_IN1 (Pin5)
PE5  ->  L298_IN2 (Pin7)
PE6  ->  L298_IN3 (Pin10)
PE7  ->  L298_IN4 (Pin12)
PE8  ->  L298_ENA (Pin6)
PE9  ->  L298_ENB (Pin11)

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : GPIO, TIM, MISC
Benutzte Librarys : keine

Enumerationen :

1
2
3
4
5
typedef enum {
  L298_HALF_STEP = 0,  // Halb-Schritt-Mode
  L298_FULL_STEP,      // Voll-Schritt-Mode
  L298_WAVE_STEP       // Wave-Mode
}L298_Mode_t;

Funktionen :

1
2
3
4
5
6
7
8
void UB_L298_Init(L298_Mode_t mode);                  // zum init vom L298
void UB_L298_StepRight(uint32_t speed, uint32_t cnt); // rechts drehen
void UB_L298_StepLeft(uint32_t speed, uint32_t cnt);  // links drehen
void UB_L298_StepTo(uint32_t speed, uint32_t pos);    // eine position anfahren
void UB_L298_Stop(void);                              // motor anhalten
bool UB_L298_StopCheck(void);                         // test ob motor steht
void UB_L298_SetZeroPos(void);                        // null-position setzen
void UB_L298_Pause_us(uint32_t cnt);                  // pausenfunktion

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//--------------------------------------------------------------
// File     : main.c
// Datum    : 07.12.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der L298-Stepper-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_l298_stepper.h"
 
int main(void)
{
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init vom L298 im FullStep-Mode
  UB_L298_Init(L298_FULL_STEP);
 
  while(1)
  {
    // 1sec warten
    UB_L298_Pause_us(1000000);
    // Schrittmotor 30 Schritte nach rechts
    // mit 80% Speed
    UB_L298_StepRight(80,30);
    // 1sec warten
    UB_L298_Pause_us(1000000);
    // Schrittmotor 30 Schritte nach links
    // mit 35% Speed
    UB_L298_StepLeft(35,30);
  }
}

Hier die Library zum Download :

ub_stm32f4_l298_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_69_L298_Stepper


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.