#include<reg52h>
#include"delayh"
#define uchar unsigned char
#define uint unsigned int
////
sbit ENA = P2^2; //驱动芯片使能,若为0则电机停止;
sbit IN1 = P2^1; //控制电机正转和反转
sbit IN2 = P2^0; //控制电机正转和反转
sbit key1 = P1^0; //此键按下,电机正转;IN1=1;IN2=0 ;ENA=1
sbit key2 = P1^1; //此键按下,电机反转;IN1=0,IN2=1 ;ENA=1
sbit key3 = P1^2; //此键按下,电机刹停; IN1=1,IN2=1 ;ENA=1
////
int motor_change_mank=0;
// 按键设置
////
uint keylogo()
{
if(key1==0)
{
delayms(2) ;
//while(key1==0);
motor_change_mank=1;//正转标志位
}
if(key2==0)
{
delayms(2) ;
//while(key2==0);
motor_change_mank=2;//反转标志位
}
if(key3==0)
{
delayms(2) ;
//while(key3==0);
motor_change_mank=0;//刹停标志位
}
return(motor_change_mank);
}
////
//控制驱动芯片函数
////
void execute_motor()
{
switch(motor_change_mank)
{
case 0: //刹停标志位
{
IN1 = 1;
IN2 = 1;
ENA = 1;
}break;
case 1: //正转标志位
{
IN1 = 1;
IN2 = 0;
ENA = 1;
}break;
case 2: //反转标志位
{
IN1 = 0;
IN2 = 1;
ENA = 1;
}break;
default:break;
}
}
////
void main()
{
while(1)
{
keylogo();
execute_motor();
}
}
//
//
#define uint unsigned int
void delayms(uint n)
{
int i;
for(;n>0;n--)
for(i=0;i<1;i++);
}
//
//
#ifndef delay_h
#define delay_h
#define uint unsigned int
extern void delayms(uint n);
#endif
溢出了,time是什么类型?如果是整形变量的话,肯定time=0,因(th1+th2)不超过511除1000000结果是0,0不能当除数正确的是(th1256+th2),即使如此,time也不超过65535所以绝对不能除1000000如果算速度的话,可以v=2000000/time; V要是长整型(longint)当然,time和v可以取FLOAT型,但送数码管显示不方便还有计数器用之前要清0,不知你主程序里清了吗.
PLC是控制器,处理所有输入输出信号的逻辑关系;变频器是调速的,可以改变电机正反转及运行速度;编码器一般是同电机连轴的,可以测电机转过的一定圈数或角度时的脉冲数,经自学习或处理后可以用于定位,速度反馈等。编程序测速,如果是要测当前速度,你可以将1S前的编码器脉冲值和当前时间脉冲值相减的绝对值,再除以每米的脉冲个数就得到当前速度了。每米脉冲个数可用一段距离的脉冲总数除以所走的距离来计算。PLC控制电机转速最好用模拟量输出模块输出给变频器一个模拟值控制电机实时转速,该模拟值的大小需要你根据实际情况建立速度-位移-时间曲线模型来进行精确计算得出。
如果三者构成一个系统,PLC是控制中心,根据输入信号(编码器信号)处理输出指令,控制终端执行部件变频器。编码器是检测信号输出元件,将变频器的转速信号反馈回PLC。
编码器的检测信号实质上脉冲的个数,反映了变频器运转速度的快慢或转轴的位置,PLC程序要用到高速(脉冲)计数,脉冲数加减乘减等运算,和相关逻辑判断,要用到一些功能指令。PLC控制变频器,可用开关量触点信号接入变频器的控制端子,实现变频器的起、停控制;用数/模转换模块,控制变频器的转速。或用RS485通讯,控制变频器的起停和转速。需编写相关RS485通讯程度,或开关信号、数/模信号输出等相关程序。
可以从网上找几个程序实例研究一下,这方面的相关程序实例还是比较丰富的。
以上就是关于单片机直流电机测速实验程序全部的内容,包括:单片机直流电机测速实验程序、光电传感器测速编程怎么写这个程序输出乱码是怎么回事呢、变频器、PLC、和编码器之间的关系,plc中程序咋么编写,怎么写程序测速和控制电机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)