51单片机直流电机控制
最佳答案 问答题库1008位专家为你答疑解惑
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、pwm波形?
- 1.1高低电平交互,LED亮灭。
- 1.2 驱动电机时?
- 1.3 怎么调节电机的速度?
- 二、怎么用51单片机产生PWM波形
- 2.1 t 怎么来?
- 2.2 t0怎么来?
- 2.3 t1怎么来?
- 2.4 如何更好的写程序,只用一个时间基准1ms
- 2.5参考程序
- 三、电路连接图
- 3.1电机连接图
- 3.2 ULN2003 逻辑图
- 3.3 按键连接图
- 四、 电机开机、关机
- 五、思考
- 5.1 如何控制电机正反转?
- 5.2 如何控制多个电机?
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
我们学习了51单片机的定时器之后,已经定时1s,用按键控制定时的时间。
之前产生的波形都是方波,就是高电平、低电平一样的波形。PWM
提示:以下是本篇文章正文内容,下面案例可供参考
一个学期都没搞懂的直流电机工作原理,一分钟讲解清楚!
https://www.bilibili.com/video/BV1yV4y1o7Nd/?spm_id_from=333.337.search-card.all.click
基于51单片机直流电机调速实验
https://www.bilibili.com/video/BV1Eo4y1m774/?spm_id_from=333.337.search-card.all.click
一、pwm波形?
1.1高低电平交互,LED亮灭。
接通电机会有效果?
1.2 驱动电机时?
电压越高,电机转得越快
1.3 怎么调节电机的速度?
二、怎么用51单片机产生PWM波形
2.1 t 怎么来?
t=t0+t1;=50+10=60
D=10/60%100
2.2 t0怎么来?
sbit motor=P1^0;
t0=50ms ,motor=0;
定时50ms,
TH0=( 65536-50000)/256;
TL0=( 65536-50000)%256;
2.3 t1怎么来?
t1=10ms
定时10ms,motor=1;
TH0=( 65536-10000)/256;
TL0=( 65536-10000)%256;
2.4 如何更好的写程序,只用一个时间基准1ms
TH0=( 65536-1000)/256;
TL0=( 65536-1000)%256;
t0=150
t1=110
50 10 ->num
num<10 motor=1
num>=10 motor=0
num=60 num=0
2.5参考程序
代码如下(示例):
#include<reg51.h>void main()
{//初始化定时器while(1){if(key0){10}if(key1){60}}}void timer0()interrupt 1
{TH0=( 65536-1000)/256;TL0=( 65536-1000)%256;num++;if(num<10){motor=1;}else if(num<60){motor=0;}else{num=0;}/* t0=1*50t1=1*1050 10 ->numnum<10 motor=1num>=10 motor=0num=60 num=0*/
}
#include<reg51.h>sbit motor=P1^0;
sbit key0=P3^0;
sbit key1=P3^1;sbit led0=P2^0;unsigned int num=0;int d=0;//占空比
//unsigned int t=0;
#define t 1000void delay(unsigned int ms)
{unsigned int x,y;for(x=0;x<ms;x++){for(y=0;y<100;y++);}
}void timer_init()
{TMOD=0X01;//方式1 16位TH0=( 65536-1000)/256;TL0=( 65536-1000)%256;EA=1;ET0=1;TR0=1;}void main()
{//初始化定时器timer_init();key0=1;key1=1;while(1){if(!key0){delay(5);if(!key0){while(!key0);d=d+100;if(d>t){d=t;}}}if(!key1){delay(5);if(!key1){while(!key1);d=d-100;if(d<0){d=0; }}}}}void timer0()interrupt 1
{TH0=( 65536-1000)/256;TL0=( 65536-1000)%256;num++;if(num<d){motor=1;}else if(num<t){motor=0;}else{num=0;led0=~led0;}/* t0=1*50t1=1*1050 10 ->numnum<10 motor=1num>=10 motor=0num=60 num=0*/
}
三、电路连接图
3.1电机连接图
3.2 ULN2003 逻辑图
3.3 按键连接图
四、 电机开机、关机
//开机: TR0=1;if(!key2)
{TR0=1;
}//关机:TR0=0;if(!key3)
{TR0=0;
}
五、思考
5.1 如何控制电机正反转?
5.2 如何控制多个电机?
总结
了解直流电机工作原理,熟悉定时器定时功能,掌握电机调速技术。
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"51单片机直流电机控制":http://eshow365.cn/6-41826-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!