51单片机怎么控制直流电机左转,右转,加速,停止?
这个还是比较容易实现的,定义个曲线表就可以了,比如按梯形曲线或S型曲线,定义一个升速和降速表,点击的控制分三个阶段:
1、启动
2、运行
3、刹车
所以需要修改run()这个程序,按这三部曲来做。
既然是技巧的话那就不提供详细的代码了,首先要看你这个小车是几轮几驱动的,首先假设你只用一个L298n驱动板的话,那么再假设只含左右两个轮,只对左右两个轮进行控制的话,那么就简单了,首先你要知道L298N驱动板怎么用,不同的驱动板功能都不一定相同,不过控制引脚一般来说都是4根,可以控制两个直流电机的正反转,同时还有两个PWM接口,可以控制两个电机的转速。
假设4个控制引脚分为A1、A2和B1、B2,A1、A2控制第一个直流电机,B1、B2控制第二个直流电机,当A1和A2接不同方向的电流后直流电机会正转或反转,同理B1和B2也是一样。PWM是通过控制占有率来控制电机速度的,即控制高电平和低电平的时间的,不同,这样在规定时间内,如果高电平的时间占有比例越高则电机转速越快,输出功率越高。
知道以上内容了那么之后的内容就更容易理解了
前进:两个直流电机朝正方向同时转动即可
后退:两个直流电机朝反方向同时转动即可
原地左转:类似原地打转,只需让两个电机一个正转一个反转即可,即左转为左边电机反转,右边电机正转
原地右转:与原地左转相反即可
固定轮转:固定左边令右侧轮前进即可实现固定轮转向的目的,例如左转的话令左边电机停止,右侧电机正向转动即可,向右转的话与左转相反。
至于keil程序,这个要根据具体的硬件来写,别人的无法通用,不过这些都不难,只要原理弄懂了,稍微花一点儿时间还是能很容易写出来的,先从控制电机的转向开始。别人的程序的话可能会越看越难理解,还是自己动手比较好,先不考虑调速的情况下完成了之后再去看看有关PWM调速的内容。
在电压允许范围内,直流电机的转数随着电压的升高而加快,若加上电压为负电压,则电机会反转。D/A变换课输出-18V到+8V的电压,将电压经驱动后加在直流电机上,使其运转。用QTH-2008xs实验箱实现 其中有:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit CH0=P1^0;
sbit CH1=P1^1;
void delay();
void main()
{
loop:
P1=0XFF;
CH0=0; //正转
CH1=1;
delay();
CH0=0; //停止
CH1=0;
delay();
CH0=1; //反转
CH1=0;
delay();
CH0=0; //停止
CH1=0;
delay();
goto loop;
}
void delay()
{
uint i,j;
for(j=0;j<50;j++)
{
for(i=0;i<5000;i++);
}
}
用单片机控制直流电机转动和停止?1盏灯来表示!
汇编程序: ORG0000H;复位后LED灭MAIN: JB P3.2,MAIN;等待按钮动作 ACALL DELAY_50MS;按钮去抖动延时50毫秒 JB P3.2,MAIN;确认按钮动作 CPL P1.0;LED动作取反 JNB P3.2,$;等待按钮释放 SJMP MAIN DELAY_50MS:MOV R2,#50;延时子程序LOOP: MOV R3,#200LOOP1:...
一个单片机控制另外一个单片机,怎么做
是并行通信,还是串口通信,还是1根2 根高低电平线控制。简单的是控制单片机的一根或两根线作为输出,被控单片机将它们作为输入,受控单片机根据检测到的高低电平去执行不同的操作
基于单片机的直流电机PWM调速控制(要单片机的代码)快啊
; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。;当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警 ;资源:p0口,8路指示灯。p1.4,p1.5亮度控制按键(端口按键)p3.7小喇叭报警 ;--- PWM EQU 7FH ;PWM赋初始值 OUT EQU ...
怎样用单片机控制数码管显示0或者1?
1、LS147优先编码器的输入端和输出端都是低电平有效,即当某一个输入端低电平0时,4个输出端就以低电平0的输出其对应的8421BCD编码。当9个输入全为1时,4个输入出也全为1,代表输入十进制数0的8421BCD编码输出。2、不用单片机,用数字电路实现很容易呀。用一片10线-4线编码器,接10个按键,输...
我想用一个单片机去控制另外一个单片机,如何连接以及相应的数据处理...
EA=1;ES=1; \/* 开串口中断*\/ ET1=0;TR1=1; \/* 启动定时器1*\/ RI=0;TI=0;} void Comm(void) interrupt 4 using 0 \/*串行中断服务程序*\/ { Temperature=SBUF; \/* 保存数据*\/ RI=0; \/*清中断标志*\/ } void Display(void) \/*显示程序*\/ { ;\/*此程序将收到的...
51单片机可以直接控制直流电机吗 在IO口上接个直流电机
不可以,电机工作电流很大,远远超过单片机的允许范围,直接控制,很容易烧坏单片机或者使系统无法正常工作,其他的问题还有一大把。 追问 用三极管可以实现吗 追答 也不是很好,电机的电流很大,一个玩具电机,就可以轻松达到100mA以上的水平,一个金鱼缸的小水泵,轻松可以达到2A,这种条件下,一般的三极管发热会很严重,而且...
改一下单片机控制PWM直流电机的程序
单片机控制PWM直流电机的程序,具体如下:PWM控制直流电机实现上来说应该不难,最主要是要求:比如加速度,需要多块达到设定速度;一般来讲有“开环的查表法”和“闭环的采集实时速度法”;“开环查表”:前提是知道要达到的速度是哪些,然后去增加(或减少)PWM的占空比来看速度是否和设定的一致,然后...
单片机系统指令的控制转移指令
指令执行时,先PC加2,然后把addrll送入PC.10~PC.0,PC.15~PC.11保持不变,程序转移到目标地址。注意:转移目标首地址必须在AJMP指令下一条指令地址(PC+2)的2KB范围内。二、长跳转指令 LJMP addr16 (3字节指令)64K字节范围内的无条件跳转指令。指令执行时,把指令的第二和第三字节分别装入...
请问stc单片机1个定时器怎么控制两个设备?
每次中断查询设定的时间点,然后同时输出两个灯的状态。如3S时(中断次数60), A灯亮,B灯灭,5S时,A灯亮,B灯也亮 10秒时AB灯都灭 过一个周期,如60s 回到0秒时的状态 如果灯亮灯灭的规律你自己都 找不出,编程序也就 很难了 如设备A启动后灯延时20秒熄灭 如设备B启动后另一灯灯...
51单片机怎么驱动直流电机c语言
51单片机驱动直流电机程序(用的是l298n芯片):include<reg51.h> include<math.h> define uint unsigned int define uchar unsigned char define N 100 sbit s1=P1^0; \/\/电机驱动口 sbit s2=P1^1; \/\/电机驱动口 sbit s3=P1^2; \/\/电机驱动口 sbit s4=P1^3; \/\/电机驱动口 sbit en1=P1...
汤缸尼尔: 首先,控制直流电机转动方向就是控制电流方向.直流电机两个输入端,如果是不同电平(一高一低),就会产生电流,那么交换高低电平就会改变运转方向.用PWM,就是通过一系列周期信号控制直流电机速度,周期持续时间相同,通过每一个周期内的高电平持续时间来控制直流电机的驱动电力.其次,控制速度,每一个周期内控制高电平的持续时间就行,要快一点那么高电平持续时间多一些,反之就低电平状态时间多一些.
崇义县17550796634: 求高手帮助编写51单片机控制直流电动机正反转的程序 - ?
汤缸尼尔: 正反转电路,加两个接触器,根据正转输入信号和反转输入信号,分别给正转输出信号控制正转接触器和反转输出信号控制反转接触器就可以了,没啥技术含量.
崇义县17550796634: 如何用51单片机控制一个直流电机的正反转和调速 - ?
汤缸尼尔: #include sbit K1 =P0^0; //PWM值增加键 sbit K2 =P0^1; //PWM值减少键 sbit pwm=P1^0; sbit pwm1=P1^2; unsigned char PWM=0x7f ; //赋初值/*********************************************************/ void delayms(unsigned char ms) // 延时子程序 { ...
崇义县17550796634: 如何用51单片机实现2个直流电机的正反转 - ?
汤缸尼尔: 硬件电路方面加一个LM298N直流电机驱动模块,此模块输出端分别接两个电机,控制信号输入端接单片机IO对应的IO输出高电平 相应的电机就转 给低电平就停止
崇义县17550796634: 求一篇51单片机控制直流电机正反转的程序段 - ?
汤缸尼尔: 直流电机 单片机端口是不能直接供电的 电流太小 带动不了直流电机要用电机驱动芯片比较简单和常用的是 l298 电机驱动芯片关于它的data sheet 网上很多 小搜索一下就有了 引脚资料和电机连接方式上面都有l298 可以控制两个电机的正反...
崇义县17550796634: 51单片机实现电动机正反转控制如何实现? - ?
汤缸尼尔: 51单片机的IO口一般不能直接输出控制电机,必须加装电机驱动电路,常见的如L298N等,电机正反转驱动采用H桥电路.你的要求使用很简单的代码就能实现.
崇义县17550796634: 51单片机中如何用c语言控制直流电机正反转 - ?
汤缸尼尔: #include <reg52.h>#define uint unsigned int#define uchar unsigned char sbit IN1=P1^0; sbit ENA=P1^1; //左轮 1 sbit IN2=P1^2;//左轮2 sbit IN3=P1^3;//右轮 1 sbit ENB=P1^4; sbit IN4=P1^5;//右轮 2 sbit left=P0^0; sbit right=P0^1;//sbit middle...
崇义县17550796634: 怎么用单片机最简单的控制直流电机的正反转 意思就是给一个力 往那边给力电机就往那边转 - ?
汤缸尼尔: 控制信号从PWM1,PWM2端口输入就可以了
崇义县17550796634: 51单片机怎么让直流电机转动 - ?
汤缸尼尔: 一般而言,所有单片机的端口驱动能力都有限,还有电机的额定电压也许会比单片机的供电电压高,直接驱动电机有困难.这时候要想驱动电机,就必须根据电机的额定电压和额定功率采用合适的功率器件去驱动.下边的电路图是我工程上实际使用的,可以正反转,脉宽调制的话还可以调速.
崇义县17550796634: 51单片机pwm直流电机怎么实现调速和正反转? - ?
汤缸尼尔: 如果要正反转控制,驱动电路做个全桥的,控制占空比.50%的话就停止了!