日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

選用的步進電機的型號為28BYJ-48(或MP28GA5V,轉速比1/64),驅動電路選用uln2003芯片的驅動板,其控制時序圖如下:

?

四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA

ABCD指的是uln2003芯片驅動板的1N11N21N31N4,波形在上表示有輸入信號,波形在下表示無輸入信號。

我們采用紅牛開發板進行步進電機控制,為了便于接線,我們需要在紅牛開發板上焊接兩條30腳雙排排陣,焊接后的紅外板如下:

?

此外至少需要4根杜邦線,還需提供一個5V的直流電源,接線方式如下:

PC4IN1

PC5IN2

PC6IN3

PC7IN4

5V電源連接

網友fangyuan和奮斗中寫了一個純.NET MF C#的控制代碼,比較容易理解,但是由于是托管代碼,需要虛擬機解釋執行,所以運行效率較低,部分代碼如下:

?? //四相八拍:A->AB->B->BC->C->CD->D->DA??

??? while (true)??

??? {??

??????? //A相輸出高電平,BCD??

??????? pios[0].Write(high);??

??????? pios[1].Write(low);??

??????? pios[2].Write(low);??

??????? pios[3].Write(low);??

??????? Thread.Sleep(sleepTime);??

? ??????//AB相輸出高電平,CD??

??????? pios[0].Write(high);??

??????? pios[1].Write(high);??

??????? pios[2].Write(low);??

??????? pios[3].Write(low);??

??????? Thread.Sleep(sleepTime);??

????? ??

????? }

詳細內容請參見fangyuan的博客文章《.NET MF 學習筆記系列(一)】MF控制步進電機》。

??? 由于步進電機一般都采用PWM控制,我最初也打算這么做,STM32系列的芯片的時鐘控制器是可以輸出4PWM的,但是研究后我覺得采用uln2003芯片的驅動板是無法實現PWM控制的。如果硬要采用PWM控制,其中一路的PWM(占空比)是可以實現的,但是其它三路,無法調整相位,所以目前我無法輸出占空比相同,但是相位不同的波形。

我調整了一下思路,實現了所謂的IO Timer功能,就是采用Timer定時中斷,定時處理C#上層的IO輸出要求,底層代碼暫且不說了,先說一下封裝后的上層接口。

??? public sealed class IOTimer

??? {

??????? public static bool Initialize(byte timer, int Compare, int psc, byte[] pins, byte[] states);

??????? public static bool SetPSC(byte timer, int psc);

??????? public static bool Start(byte timer);

??????? public static bool Stop(byte timer);

??????? public static bool Uninitialize(byte timer);

??? }

?? STM32F103芯片有8個定時器,其中timer1timer8暫且不要用,timer的取值為1~6timer1timer8連接APB2總線,其它定時器連接APB1總線,APB1操作速度限于36MHzAPB2操作于全速(最高72MHz)Compare是計數器數值,16位最大65535psc預分頻器數值,也是16位的,最大為65535,計數器的時鐘頻率CK_CNTfCK_PSC/(PSC[15:1]+1)

?? ?Psc可以實時動態調整。

?? ?Pins數組存放要設置的IOpin腳號,一次最多可以控制8路,states數組存放IO的輸出狀態,最多可以有32個狀態值,一個字節的每一位控制每一路。

?? ?Start就是計時器開始工作,IO此時輸出,Stop就是定時器停止工作,IO停止輸出。

好了,在實際控制步進電機之前,我們先控制一下LED燈,讓它亮一秒,滅3(紅牛開發板,輸出0燈亮),相關代碼如下:

??? //LED燈控制(定時器timer6

??? byte[] pins = new byte[] { (byte)GPIO_NAMES.PF7 };

??? //亮一秒,滅3(紅牛開發板,輸出0燈亮)

??? byte[] control_Data = new byte[] { 0x0, 0x1, 0x1, 0x1};

??? //時鐘頻率36M? 計數60000次,在分頻(599+1)次大概一秒觸發一次

??? IOTimer.Initialize(5, 60000, 599, pins, control_Data);

IOTimer.Start(5);?

?? 至于控制步進電機,其代碼也是非常簡單,核心代碼如下:

?? ?//順時針旋轉

??? static void Run()

??? {

??????? IOTimer.Uninitialize(5);

??????? byte[] pins = new byte[] { (byte)GPIO_NAMES.PC4, (byte)GPIO_NAMES.PC5, (byte)GPIO_NAMES.PC6, (byte)GPIO_NAMES.PC7 };

??????? byte[] control_Data = new byte[] { 0x1, 0x3, 0x2, 0x6, 0x4, 0xC, 0x8, 0x9 };

??????? IOTimer.Initialize(5, 60000, 1, pins, control_Data);

??????? IOTimer.Start(5);??

??? }

??? //逆時針旋轉

??? static void AntiRun()

??? {

??????? IOTimer.Uninitialize(5);

??????? byte[] pins = new byte[] { (byte)GPIO_NAMES.PC4, (byte)GPIO_NAMES.PC5, (byte)GPIO_NAMES.PC6, (byte)GPIO_NAMES.PC7 };

??????? byte[] control_Data = new byte[] { 0x9, 0x8, 0xc, 0x4, 0x6, 0x2, 0x3, 0x1 };

??????? IOTimer.Initialize(5, 60000, 1, pins, control_Data);

??????? IOTimer.Start(5);

??? }

??? //速度級別

??? static void SetV(int value)

??? {

??????? switch(value)

??????? {

??????????? case 1:

??????????????? IOTimer.SetPSC(5,1); break;

??????????? case 2:

??????????????? IOTimer.SetPSC(5,5); break;

??????????? case 3:

??????????????? IOTimer.SetPSC(5,10); break;

??????? }????????????

??? }

?? 完整代碼請從下面的連接進行下載,最終的運行效果圖如下:

?

? 至于PWM方式控制步進電機的示例,需要等我采購好相關驅動板后,再做探究。

? 注:該示例程序,紅牛開發板需要部署最新的V0.9.7固件。

-----------------------------------------------------------------------------------------

【低價開發板】http://item.taobao.com/item.htm?id=7117999726?

源碼下載:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/IOTimerTest.rar

文章參考: 《.Net Micro Framework 快速入門

中文討論組:http://space.cnblogs.com/group/MFSoft/

總結

以上是生活随笔為你收集整理的【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲午夜无码av毛片久久 | 蜜乳av一区二区 | 日韩视频一区二区三区四区 | 成人h动漫精品一区 | 淫语对白 | 五月天导航 | 在线观看毛片av | 色婷婷色婷婷 | 日本va欧美va欧美va精品 | 麻豆免费观看视频 | 一边摸一边做爽的视频17国产 | 伊人av在线播放 | 性生活av| 94av| 亚洲大尺度av| 性――交――性――乱 | 久久久成 | 亚洲九九精品 | xxx日韩| 国产精品视频久久久久久久 | 国产一级在线 | 国产熟女一区二区 | 一区av在线 | 亚洲av无码专区国产乱码不卡 | wwwww国产| 一区二区男女 | 亚洲国产成人无码av在线 | 韩国理论午夜 | 国产小视频在线看 | 欧美tickle狂笑裸体vk | 亚洲黄色av | 精品麻豆av | 成年人精品 | 国产视频一区二区三区四区五区 | 蜜芽久久 | 欧美成人精品一区二区免费看片 | 高h av| 爆操巨乳美女 | av55 | 免费高清av在线看 | 欧美一级二级视频 | 亚洲逼图| 奇米影视第4色 | 日韩色道 | 精品国产精品 | 国产专区在线视频 | 精品av一区二区 | 特黄一区二区三区 | 午夜视频在线观看网站 | 日韩精选| 日韩草逼视频 | 国模无码大尺度一区二区三区 | 亚洲av无码一区二区三区人 | 亚洲精品在线播放视频 | 一区二区三区视频免费视 | 亚洲一区二区三区四区视频 | 中文字幕av网址 | 一级全黄裸体免费视频 | 亚洲欧美精品aaaaaa片 | 在线视频日本 | 快色网站 | 日韩精品在线视频免费观看 | 在线视频导航 | 欧美1页| 一区二区福利电影 | 国产99久久久久久免费看 | 日韩不卡免费 | xxx国产精品 | 激情久久久 | 妺妺窝人体色www在线下载 | 久热这里只有精品在线 | av在线看片 | 美女扒开腿免费视频 | 黄色中文字幕在线观看 | 91超碰免费| 好吊色一区二区 | 白白色视频在线 | 美日韩一区二区 | 亚欧在线 | 操她视频网站 | 成人毛片100免费观看 | 污污网站在线看 | 波多野结衣一区二区三区高清av | 女性私密整形视频 | 国产91一区二区三区在线精品 | 黄色小网站在线观看 | 亚洲三区视频 | 中文字幕一区二区三区不卡 | 中文成人无字幕乱码精品区 | 激情五月婷婷色 | www.日日操 | 久久麻豆av| 日本亚洲高清 | 国产极品美女高潮无套在线观看 | 特级一级黄色片 | 亚洲最大成人在线视频 | av不卡一区| 精品中文字幕在线播放 | 五月婷婷狠狠干 | 能看的av网站 |