{"id":470,"date":"2017-11-24T23:47:54","date_gmt":"2017-11-24T22:47:54","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=470"},"modified":"2019-11-27T22:29:05","modified_gmt":"2019-11-27T21:29:05","slug":"69-l298-schrittmotor-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/69-l298-schrittmotor-library-stm32f4\/","title":{"rendered":"69-L298-Schrittmotor-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/68-rn42-library-stm32f4\/\" title=\"68-RN42-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 68-RN42-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/70-stemwin-library-stm32f4\/\" title=\"70-STemWin-Library (STM32F4)\">70-STemWin-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Wer einen Schrittmotor \u00fcber einen L298-Treiber an den STM32F4 anschlie\u00dfen will, kann diese Library dazu benutzen.<\/p>\n<p>Ich habe das L298-Treiber-Modul und den Schrittmotor von \u201cJoerg\u201d zur Verf\u00fcgung gestellt bekommen\u2026.<strong>Danke<\/strong> nochmal daf\u00fcr.<\/p>\n<p>Der L298N kann entweder einen 6pol Unipolaren oder einen 4pol Bipolaren Schrittmotor ansteuern (5pol Unipolare funktionieren nicht !!).<\/p>\n<p>Beim Init der Library kann angegeben werden in welchem Mode der Schrittmotor betrieben werden soll (HalfStep, FullStep, WaveStep)<\/p>\n<p>Die CPU simuliert einen L297 und wird \u00fcber 6 Leitungen mit dem L298 verbunden.<\/p>\n<p><em>Hinweis: im FullStep-Mode werden die beiden Leitungen \u201cENA\u201d und \u201cENB\u201d eigentlich nicht ben\u00f6tigt und k\u00f6nnten am L298 fix auf Vcc gelegt werden. So k\u00f6nnte man zwei Pins an der CPU einsparen wenn man nur diesen Mode benutzt.<\/em><\/p>\n<p>Ich habe die Library so einfach wie m\u00f6glich gehalten und auf eine Beschleunigungs- und Abbrems-Rampe verzichtet.<\/p>\n<p>Im H-File muss f\u00fcr alle 3 Modis das kleinste Delay (in us) von einem Schritt zum n\u00e4chsten eingestellt werden (das ist Motorabh\u00e4ngig). Der Wert muss durch ausprobieren rausgefunden werden und zwar so das der Motor keine Schritte verschluckt oder \u00fcberspringt.<\/p>\n<p>Alle Geschwindigkeitsangaben in den Funktionen beziehen sich dann auf dieses kleinste Delay.<\/p>\n<p>Es gibt zwei Funktionen um den Schrittmotor eine einstellbare Anzahl von Schritten nach links oder rechts laufen zu lassen. (Wenn Anzahl = 0, dann l\u00e4uft der Schrittmotor permanent)<\/p>\n<p>Mit einer Funktion kann getestet werden ob der Motor noch l\u00e4uft (um zu testen ob er seine Zielposition erreicht hat) und mit einer anderen kann er gestoppt werden.<\/p>\n<p>Mit der Funktion \u201cUB_L298_StepTo\u201d kann eine bestimmte Position angefahren werden. Der Motor dreht dann solange nach rechts oder links, bis die Position erreicht ist.<\/p>\n<p>Es gibt auch eine Pausen-Funktion (in us) die man benutzen kann.<\/p>\n<p><strong>Bilder :<\/strong><\/p>\n<div id=\"gallery-1\" class=\"gallery galleryid-3131 gallery-columns-3 gallery-size-thumbnail\">\n<dl class=\"gallery-item\">\n<dt class=\"gallery-icon\"><a title=\"l298_b2\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/l298_b2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-thumbnail\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/l298_b2-150x150.jpg\" alt=\"L298-Modul und Schrittmotor\" width=\"150\" height=\"150\" \/><\/a><\/dt>\n<dd class=\"wp-caption-text gallery-caption\">L298-Modul und Schrittmotor<\/dd>\n<\/dl>\n<dl class=\"gallery-item\">\n<dt class=\"gallery-icon\"><a title=\"l298_b1\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/l298_b1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-thumbnail\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/l298_b1-150x150.jpg\" alt=\"Schaltplan L298\" width=\"150\" height=\"150\" \/><\/a><\/dt>\n<dd class=\"wp-caption-text gallery-caption\">Schaltplan L298<\/dd>\n<\/dl>\n<p>&nbsp;<\/p>\n<\/div>\n<p>im Beispiel h\u00e4ngt der L298 an Port-E :<\/p>\n<pre lang=\"c\" line=\"1\">PE4  -&gt;  L298_IN1 (Pin5)\r\nPE5  -&gt;  L298_IN2 (Pin7)\r\nPE6  -&gt;  L298_IN3 (Pin10)\r\nPE7  -&gt;  L298_IN4 (Pin12)\r\nPE8  -&gt;  L298_ENA (Pin6)\r\nPE9  -&gt;  L298_ENB (Pin11)<\/pre>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, TIM, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  L298_HALF_STEP = 0,  \/\/ Halb-Schritt-Mode\r\n  L298_FULL_STEP,      \/\/ Voll-Schritt-Mode\r\n  L298_WAVE_STEP       \/\/ Wave-Mode\r\n}L298_Mode_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_L298_Init(L298_Mode_t mode);                  \/\/ zum init vom L298\r\nvoid UB_L298_StepRight(uint32_t speed, uint32_t cnt); \/\/ rechts drehen\r\nvoid UB_L298_StepLeft(uint32_t speed, uint32_t cnt);  \/\/ links drehen\r\nvoid UB_L298_StepTo(uint32_t speed, uint32_t pos);    \/\/ eine position anfahren\r\nvoid UB_L298_Stop(void);                              \/\/ motor anhalten\r\nbool UB_L298_StopCheck(void);                         \/\/ test ob motor steht\r\nvoid UB_L298_SetZeroPos(void);                        \/\/ null-position setzen\r\nvoid UB_L298_Pause_us(uint32_t cnt);                  \/\/ pausenfunktion<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 07.12.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der L298-Stepper-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_l298_stepper.h\"\r\n\r\nint main(void)\r\n{\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init vom L298 im FullStep-Mode\r\n  UB_L298_Init(L298_FULL_STEP);\r\n\r\n  while(1)\r\n  {\r\n    \/\/ 1sec warten\r\n    UB_L298_Pause_us(1000000);\r\n    \/\/ Schrittmotor 30 Schritte nach rechts\r\n    \/\/ mit 80% Speed\r\n    UB_L298_StepRight(80,30);\r\n    \/\/ 1sec warten\r\n    UB_L298_Pause_us(1000000);\r\n    \/\/ Schrittmotor 30 Schritte nach links\r\n    \/\/ mit 35% Speed\r\n    UB_L298_StepLeft(35,30);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/ub_stm32f4_l298_v100.zip\">ub_stm32f4_l298_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/12\/Demo_69_L298_Stepper.zip\">Demo_69_L298_Stepper<\/a><\/p>\n<div class=\"sdm_download_item \"><div class=\"sdm_download_item_top\"><div class=\"sdm_download_thumbnail\"><img decoding=\"async\" class=\"sdm_download_thumbnail_image\" src=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2018\/03\/CoIDE-Demo-Thumbnail.jpg\" alt = \"STM32F407 Demo 69 L298 2 Stepper\" \/><\/div><div class=\"sdm_download_title\">STM32F407 Demo 69 L298 2 Stepper<\/div><\/div><div style=\"clear:both;\"><\/div><div class=\"sdm_download_description\"><p>STM32F407 Demo Projekt um zwei L298 Schrittmotoren gleichzeitig anzubinden.<\/p>\n<p>Hier der komplette CooCox-Projektordner zum Download.<\/p>\n<p>Ungetestet, bitte Feedback geben ob alles funktioniert.<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=QGz2nau0pn0\" target=\"_blank\" rel=\"noopener\">Fix Google Chrome Failed Download Error<\/a><\/p>\n<\/div><div class=\"sdm_download_link\"><span class=\"sdm_download_button\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?sdm_process_download=1&download_id=2738\" class=\"sdm_download green\" title=\"STM32F407 Demo 69 L298 2 Stepper\" target=\"_self\">Jetzt herunterladen!<\/a><\/span><span class=\"sdm_download_item_count\"><span class=\"sdm_item_count_number\">401<\/span><span class=\"sdm_item_count_string\"> Downloads<\/span><\/span><\/div><\/div><div class=\"sdm_clear_float\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wer einen Schrittmotor \u00fcber einen L298-Treiber an den STM32F4 anschlie\u00dfen will, kann diese Library dazu benutzen. Ich habe das L298-Treiber-Modul und den Schrittmotor von \u201cJoerg\u201d zur Verf\u00fcgung gestellt bekommen\u2026.Danke nochmal daf\u00fcr. Der L298N kann entweder einen 6pol Unipolaren oder einen &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/69-l298-schrittmotor-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":69,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[219,9,220,7],"class_list":["post-470","page","type-page","status-publish","hentry","category-stm32f4","tag-l298","tag-library","tag-schrittmotor","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=470"}],"version-history":[{"count":5,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/470\/revisions"}],"predecessor-version":[{"id":2740,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/470\/revisions\/2740"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}