基於TQ2440驅動28BYJ 48步進電機

2021-06-19 14:45:29 字數 2383 閱讀 8228

所需要硬體:

tq2440開發板一塊

28byj-48步進電機兩個

uln2003驅動模組兩個

杜邦線若干

5號電池4節

一、首先設計用cpu的哪些引腳來驅動步進電機

用五線四線步進電機連線uln2003驅動模組,每個驅動模組需要4個gpio,要想驅動兩個步進電機所以需要用到8個gpio口。

我選擇用了4個led燈口和4個中斷口

二、修改gpio的驅動led的驅動為我們需要的驅動。

下面上一部分主要的修改後的gpio驅動,主要是把這8個引腳設定成gpio的功能,提供介面用以上層應用呼叫控制輸入高電平或低電平。

#define device_name "gpio-control"

/* 應用程式執行ioctl(fd, cmd, arg)時的第2個引數 */

#define ioctl_gpio_on 1

#define ioctl_gpio_off 0

/* 用來指定led所用的gpio引腳 */

static unsigned long gpio_table =

;/* 用來指定gpio引腳的功能:輸出 */

static unsigned int gpio_cfg_table =

;static int tq2440_gpio_ioctl(

struct inode *inode,

struct file *file,

unsigned int cmd,

unsigned long arg)

switch(cmd)

}

三、編寫程式來簡單的控制電機正轉和反轉

程式很簡單只是簡單的控制兩個電機同時正轉、反轉或停止。

moto.c

#include #include #include #include int setgpio(int led_no,int on)

ioctl(fd, on, (led_no-1));

close(fd);

return 0;

}#define uchar unsigned char

#define uint unsigned int

uchar ccw[8]=; //逆時鐘旋轉相序表

uchar cw[8]=; //正時鐘旋轉相序表

int k1=0;

int k2=1;

int k3=1;

void switchport(char value,int flag)else if(flag==2)

setgpio(p1,value&1);

setgpio(p2,(value >> 1) & 1);

setgpio(p3,(value >> 2) & 1);

setgpio(p4,(value >> 3) & 1);

#endif

}void beep()

ioctl(fd,1,3);

usleep(500);

ioctl(fd,0);

close(fd);

#endif

}void motor_ccw(void) }}

void motor_cw(void) }}

void switchdir(uint key)else if(key==1)else if(key==2)else

printf("please put 0|1|2 \n");

}int main(int argc,char **argv)

{ uint tmp;

uchar r;

uchar n=64; //因為步進電機是減速步進電機,減速比的1/64,

//所以n=64時,步進電機主軸轉一圈

printf("please enter the direction number (0 is stop) :\n");

scanf("%d",&tmp);

switchdir(tmp);

while(1)

{ if(k1==0)

{ beep();

for(r=0;r四、重新編譯核心和moto.c

將核心燒到開發板,並將moto.c生成的moto放到檔案系統中,在串列埠執行./moto。

僅僅只是在下班後做著玩的,功能很簡單,有時間後期還會慢慢完善的,文章寫得很簡單,不足之處請見諒。

致我們逝去的不眠夜

28BYJ 48步進電機

今天練習了一下步進電機,看過資料後開始進行程式設計測試,程式設計後能順利讓電機轉動起來,並且數度可調,但是當我想讓電機只轉一圈時問題來了。這款步進電機的減速比為1 64,步進角為5.625 64度。那麼要轉一圈需要的脈衝多少呢,我自己算了算。乙個脈衝轉5.625 64 0.087890625度,所以...

28BYJ 48步進電機原理

28byj 48 是 4 相永磁式減速步進電機,其外觀如圖 9 3 所示 圖 9 3 步進電機外觀 我們先來解釋 4 相永磁式 的概念,28byj 48 的內部結構示意圖 9 4 所示。先看裡圈,它上面有 6 個齒,分別標註為 0 5,這個叫做轉子,顧名思義,它是要轉動的,轉子的每個齒上都帶有永久的...

28BYJ 48步進電機介紹

步進電機28byj 48名稱含義 28 表示步進電機的有效最大外徑為28公釐 b 表示步進電機 步 字漢語拼音首字母 y 表示永磁式 永 字漢語拼音首字母 j 表示減速型 減 字漢語拼音首字母 byj 組合即為永磁式減速步進電機 48 表示四相八拍 5v 表示額定電壓為5v,且為直流電壓 步進角 5...