所需要硬體:
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...