首页 > 电脑 > 51单片机通过AD采集的数据,控制电机转动

51单片机通过AD采集的数据,控制电机转动

电脑 2022-01-04

我用的8051单片机,试图用ad采集来自可变电阻的信号转变成数字信号,提供给单片机来驱动步进电机

检测电平很简单,首先让单片机读出与ad转换芯片连接管脚的电平信号,再接着写判断此电平变化的时刻送出此信号控制步进电机动作。在判断电平变化的方法中,自己根据需要的结果写。可以在上升沿动作,也可以在下降沿动作,或者是高低电平动作。看你自己怎么写了。具体思路就是这样。但是根据你提的问题。我个人感觉实现起来很是困难,根据脉冲信号控制步进电机???? 数据的传输波特率是很高的,电平脉冲变化间隔时间一般都是us级的如何有时间去动作步进电机。如果你的目的是用旋钮开关的转动控制步进电机的话,那你的思路就大大的不对了。不知道你做的是什么项目,也知道最终目的是什么,但是感觉你的表述上有问题。不太清楚。

51单片机控制电机转速原理

51单片机完全可以控制电机转速,无论是直流电机的电压控制还是步进电机或者无刷直流电机的脉冲控制都可以通过外扩芯片或者引脚的PWM调试。

用51单片机控制直流电机的转动

电路图就简单了,只要按照程序去连接就不会有问题。这里需要用到一个H桥电路,注意桥电路中Q1和Q3是PNP型三极管,负电导通。Q2和Q4是NPN型三极管,正电导通。Q1和Q4导通是正传,Q3和Q2导通是反转。

#include

#defineucharunsigndechar

#defineuintunsigndeint

sbitzheng=P3^0;//按键正转

sbitfan=P3^1; //按键反转

sbitting=P3^2;//按键停

sbitQ1=P3^4;//定义4个IO控制桥电路

sbitQ2=P3^5;

sbitQ3=P3^6;

sbutQ4=P3^7;

sbitled1=P0^0; //定义3个LED灯

sbitled2=P0^1;

sbitled3=P0^2;

voiddaley(ucharz);//延时函数

voidmain()

{

while()

{

if(zheng==0) //电机正转

{

delay(10);

if(zheng==0);

{

Q2=0;

Q3=1;//这两句是把反转关掉

Q1=0;

Q4=1;//这两句是打开正转

led1=0;//红灯亮

led2=1;//其他等关闭

led3=1;//其他等关闭

}

}

if(fan==0) //电机反转

{

delay(10);

if(fan==0)

{

Q1=1;

Q4=0;//把正转关掉

Q2=1;

Q3=0;//开反转

led1=1;//其他等关闭

led2=0;//绿灯亮

led3=1;//其他等关闭

}

}

if(ting==0) //关掉电机

{

delay(10);

if(ting==0)

{

Q1=1;

Q2=0;

Q3=1;

Q4=0;

led1=1;//其他等关闭

led2=1;//其他等关闭

led3=0;//黄灯亮

}

}

}

}

voiddaley(ucharz) //延时函数

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

51单片机控制电机转速

前天帮别人做了一个,还可以显示当前速度,和设置的速度, 4X4键盘(16个按键),设置速度可直接输入,有正转,反转,启动,停止,和加速,减速功能


51单片机, 编一个控制步进电机转动的程序。

#include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; /**************************************************

标签:单片机 51单片机 信息技术 步进电机 自动化

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved.