TB@@@2.9元买个几个小电机锁,无任何电路驱动部分,金属减速箱力量很大,手弄不不停。只是一直没写程序直接3.6V电就能转,但是用来开锁没程序控制不行,一直转会打坏齿轮。。。。 就几根线就不画电路图了,L298直驱就行。
制作出来的实物图如下:
//电机锁单片程序///
- #include<AT89x51.H>
- #define uint unsigned int //重定义无符号整数类型
- #define uchar unsigned char //重定义无符号字符类型
- /******************* 驱动接线定义**************************************/
- #define Left_moto_go {P0_0=1,P0_1=0;} //正转
- #define Left_moto_back {P0_0=0,P0_1=1;} //反转
- #define Left_moto_Stop {P0_0=0,P0_1=0;} //停转
- sbit k1=P1^0;//正转按键
- sbit k2=P1^1;//反转按键
- sbit D1=P1^2;//正转限位1
- sbit D2=P1^3;//反转限位2
- bit kk=1;//正转标志位
- bit kk2=1;//反转标志位
- /************************************************************************/
- //延时函数
- void delay(unsigned int k)
- { unsigned int x,y;
- for(x=0;x<k;x++)
- for(y=0;y<2000;y++);
- }
- void keyscan()
- {
- if(k1==0)
- {
- kk=0;//正转标志位
- }
- if(k2==0)
- {
- kk2=0; //反转标志位
- }
- }
- /****************************主函数*****************************************/
- void main(void)
- {
- while(1)
- {
- keyscan();//按键
-
- /////////////////////////正转开锁//////////////////////////////////////////
- if(kk==0)
- {
- Left_moto_go; //正转
- if(D1==1)//限位1
- {
- Left_moto_back;//正转、、回转一点松开限位
- }
- else
- {
- Left_moto_Stop
-
- kk=1;
- }
- }
- ////////////////////////反转上锁//////////////////////////////////////////
- if(kk2==0)
- {
- Left_moto_back; //反转
- if(D2==1)//限位1
- {
- Left_moto_go;//正转、、回转一点松开限位
- }
- else
- {
-
- Left_moto_Stop
- kk2=1;
- }
- }
- }
- }
复制代码
全部资料51hei下载地址:
STC89电机锁控制OK1.zip
(32.53 KB, 下载次数: 36)
|