驱动硬盘电机


老小孩
原创
发布时间: 2025-06-09 22:20:43 | 阅读数 0收藏数 0评论数 0
封面
之前,拆解一个SATA 旧硬盘,拆出来一个电机,遗忘在角落了。今天偶然又翻出来,兴趣使然,驱动它!

准备工作:

材料:

驱动模块L298

两节19650电源(8v左右)

杜邦线若干

51单片机系统板

1

硬件接线

把电机的4根线接驱动模块的OUT1-4。

用的电源是2节18650串联8V左右,接驱动模块的12V(宽电压输入)和GND,GND处再引出一根线接系统板的GND,再从驱动模块的5V引出一根线接系统板的5V。再用4跟杜邦线从系统板的P1^1-P1^4(对应自己设定的IO口)接驱动模块的IN1-4。

2

程序部分

搞软件部分,在电脑上用KEIL5编写程序文件:

#include <reg52.h>


sbit In1 = P1^1;

sbit In2 = P1^2;

sbit In3 = P1^3;

sbit In4 = P1^4;

sbit LED = P1^6;


unsigned int dm_time = 10;



void system_init(void)

{

EA = 1; //使能总中断

TMOD = 0x01; //设置 T0 为模式 1

TH0 = 0xFC; //为 T0 赋初值 0xFC67,定时 1ms

TL0 = 0x67;

ET0 = 1; //使能 T0 中断

TR0 = 1; //启动 T0

}



void dianji(void)

{

static char t = 0;


if(t==0)

{

In2 = 1;In3 = 1;In4 = 0;

}

else if(t==1)

{

In2 = 0;In3 = 1;In4 = 1;

}

else if(t==2)

{

In2 = 1;In3 = 0;In4 = 1;

}

t++;

if(t>=3) t=0;

}



void main(void)

{

system_init();

LED = 0;

while(1)

{


}

}


void com_isr() interrupt 4

{


}


void InterruptTimer0() interrupt 1

{

static unsigned int cnt = 0;

TH0 = 0xFC; //T0计时器定时1毫秒 高字节

TL0 = 0x67; //T0计时器定时1毫秒 低字节

cnt++;

if(cnt==dm_time)

{

dianji();

cnt=0;

LED = ~LED;

}

}



HEX
程序.hex
989B
3

测试

用STCAI-ISP软件把编译好的执行文件烧入到51系统板中。上电测试。

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载