遥控51单片机控制42步进电机(TB6600驱动)控制方向、速度
遥控51单片机控制步进电机控制方向、速度
- 控制开发板自带步进电机
- 遥控控制
- 控制42步进电机
大二在做srtp时做到了这部分内容,感觉C51控制起来挺简单的,之后有做关于MSP430的魂斗罗游戏和stm32的示波器,有时间也整理上来。
程序流程图:
控制开发板自带步进电机
最开始的时候想自己搭电路,还用protues画了仿真
但是后来综合考虑还是选了开发板,直接用开发板还是能省不少事。当时会的太少,代码写的很乱,参考着开发板的教程写的控制程序。原理就是通过改变电机相序来改变转动方向,延时控制速度,缺点就是无法精确控制。
void motor_ffw(unsigned int dir,unsigned int speed)//电机控制函数{ unsigned int i;for (i=0; i<8; i++) {if(dir==1){P1 = FFW[i]&0x1f;} else if(dir==2) {P1 = FFZ[i]&0x1f;}delay(speed); }}//部分主函数,当红外信号为1时进入以下情况case(0x06): //1LcdInit();for(i=0;i<11;i++){LcdWriteData(Disp1[i]); }K=1;for(m=0;m<512;m++){DisplayData[2] = smgduan[IrValue[2]];if(DisplayData[2]==0x3f){goto switchcase;}motor_ffw(K,500); }K=2;for(n=0;n<512;n++){DisplayData[2] = smgduan[IrValue[2]];if(DisplayData[2]==0x3f){goto switchcase;}motor_ffw(K,500);}break;
遥控控制
遥控控制使用红外控制,也是开发板自带的模块。可以用华为手机的手机遥控app进行红外控制。在app里面自定义一个波长一致的遥控器就行。
void ReadIr() interrupt 0 //红外
{u8 j,k;u16 err;Time=0; delay(700); if(IRIN==0) { err=1000; while((IRIN==0)&&(err>0)) { delay(1);err--;} if(IRIN==1) {err=500;while((IRIN==1)&&(err>0)) {delay(1);err--;}for(k=0;k<4;k++) { for(j=0;j<8;j++) {err=60; while((IRIN==0)&&(err>0)){delay(1);err--;}err=500;while((IRIN==1)&&(err>0)) {delay(10); //0.1msTime++;err--;if(Time>30){return;}}IrValue[k]>>=1; if(Time>=8) {IrValue[k]|=0x80;}Time=0; }}}if(IrValue[2]!=~IrValue[3]){return;}}
}
控制42步进电机
在进一步做项目时。发现自带的步进电机无法实现所要求的扭矩,改用42步进电机,采用TB6600驱动器控制。改用42步进电机好处是能提供足够的扭矩,控制器也可以精确控制速度和转动角度,只需要改中断和控制电平就能实现,接线图如下
void Timer0() interrupt 1 //中断
{TH0=(65536-cycle)/256; TL0=(65536-cycle)%256;CLK=~CLK;count++;DisplayData[2] = smgduan[IrValue[2]];if(DisplayData[2]==0x3f){count=2*step;}if(count==step){DIR=~DIR;}if(count==2*step){count=0;TR0=0;ENA=0;}
}
//部分主函数,当红外信号为6时进入以下情况case(0x7d): //6LcdInit();for(i=0;i<11;i++){LcdWriteData(Disp6[i]); }count=0;DIR=0;ENA=1;cycle=5000;Timer0Init();DisplayData[2] = smgduan[IrValue[2]];if(DisplayData[2]==0x3f){goto switchcase;}break;
当时做得比较简陋,但也算是第一个独立完成的项目吧。
遥控51单片机控制42步进电机(TB6600驱动)控制方向、速度相关推荐
- 【电机控制】Arduino mega 2560控制42步进电机接线
Arduino mega 2560控制42步进电机接线图 ****TB6600驱动器与42步进电机接线图**** 接线: 12V电源适配器正负极分别接驱动器VCC和GND 步进电机黑绿红蓝线分别接驱动 ...
- 基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)
基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S00 ...
- 51单片机NTC热敏电阻温度采集及控制ADC0832 LCD1602
实践制作DIY- GC0051-NTC热敏电阻温度采集及控制 一.功能说明: 基于51单片机设计-NTC热敏电阻温度采集及控制 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...
- 51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602
实践制作DIY- GC0068-K型热电偶温度采集及控制温控 一.功能说明: 基于51单片机设计-K型热电偶温度采集及控制温控 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...
- 51单片机最完美数码管驱动,仿真无缺显,实物无鬼影,最高亮度无黯淡.
51单片机最完美数码管驱动,仿真无缺显,实物无鬼影,最高亮度无黯淡 驱动程序https://blog.csdn.net/xianfajushi/article/details/89448933 #in ...
- 单片机51---步进电机的设计(4相5线步进电机的驱动控制)
单片机51-步进电机的设计 禁止作为商用,仅供学习交流. 0.本文主要内容 本文主要介绍了为实现步进电机的控制,先在电脑编写程序,仿真成功后,在进行实物的制作,最终独立自主的完成51单片机的编程,硬件 ...
- 使用51单片机来实现步进电机的控制
一.实验器件 1.STC89C52RC的学习板子一个 2.电机型号为28-YJ-的步进电机一个 3.图片如下 二.电路的设计 我们都知道,根据单片机的控制程序根据电路的不同,程序也是不同的.其实说白了 ...
- 【51单片机多机通信】主机控制从机1步进电机、从机2超声波测距(主机可集中显示步进电机的转速、转向、启停状态以及超声波测距结果)
一.设计目标 使用三个51单片机,实现多机通信. 二.实现功能 1号单片机可遥控2.3号单片机.超声波测距等: 1号单片机可集中显示步进电机的转速.转向.启停状态以及超声波测距结果. 三.硬件原理 5 ...
- 【51单片机】28BYJ48步进电机花样控制
文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 三.软件设计 1.软件结构 2.主要代码 四.实验现象 联系作者 一.主要功能 系统运行后,当按下KEY1键可调节电机旋转方向:当按下 ...
最新文章
- UGUI 帧动画插件
- allocator_difference_type的实例
- hql懒加载后判断对象是否存在_hibernate延迟加载(懒加载)详解
- C#测试数据库连接是否成功
- 牛客网笔记之JAVA运算符
- 巧用HashSet装载非重数据(洛谷P2250题题解,Java语言描述)
- 腾讯云推出首款自研H265硬件编码器瑶池,助力云游戏降低15%带宽
- 容器技术20年:容器引擎与江湖门派
- 全局唯一编码ID生成器
- EFResume - 一个普通的 Swift 简历模板
- 【机器学习】机器学习中无意识偏见的分析与预防
- 求两个数的最小公倍数(C语言)
- [渝粤教育] 江苏医药职业学院 急救护理 参考 资料
- java method方法_Java Method getDeclaringClass()方法
- 公司知识库的搭建步骤
- react.createContext
- OneNET麒麟座应用开发之一:初识OneNET麒麟座
- ilm 和dlm差异_第八章 大数据对象设计与维护
- 简单十步创建个人博客网站
- Windows环境下安装PyMySQL(已安装Anaconda)