从零造车笔记

day1:学习pwm调速控制直流电机调速转动

PWM:脉冲宽度调制技术 

主要通过调节占空比(高电平时间占整个周期的时间)来调节速度,占空比越高,转速越快。

电机频率在 6-16kHZ   转换成周期大约在62.5us~167us(便于使用定时器控制占空比)存在计算公式可查资料

产生pwm基本思路:利用定时器产生脉冲,引入计数变量,当小于或者大于设定宽度时改变电平

void Timer0Routine() interrupt 1        //中断
{
    TL0 = 0xA4;        //设置定时初值
    TH0 = 0xFF;        //设置定时初值
    Count++;                                        //每100us打断一次,计数器加1
    if(Count<Compare)                           
    {
				
			    Motor=1;


    }
    else
    {
				
			    Motor=0;

    }
    Count%=100;
}

   宽度compar为50时

day2:学习驱动电机L298N,H桥电路

主要了解 接线

驱动电路主要是放大电流以便达到控制电机转动,如果直接与单片机相连电流太小不能使电机转动

正反转原理:需要通过H桥电路来实现

                              

                  

P型MOS管在栅极为低电平时导通,高电平时关闭。

N型MOS管在栅极为高电平时导通,低电平时关闭。

三极管导通为输入正向电压。

转向(假设为nmos):

当Q1,Q4给高电平,Q2,Q3给低电平时,电机正向转动

当Q2,Q3给高电平,Q1,Q4给低电平时,电机正向转动

重要  当要改变转向时,要控制死区,避免上下两个mos管直接导通,电流过大,烧坏mos管

例如:当电机从正转变为反转过程中,若二者的下降沿同时出现(同时为高电平),则上下直接导通,可以在逻辑中对上升沿以及下降沿添加的延时(死区)避免出现

刹车:可以两个上桥或者两个下桥同时导通,短路

调速:当转动时,可以给导通的上桥或者下桥一个pwm实现调速

对于l298n来说

IN1输入高电平,IN2输入低电平,对应电机A正转

IN1输入低电平,IN2输入高电平,对应电机A反转

停转对于IN1、IN2同时高电平或者低电平

调速对IN1或者IN2输入pwm(拔掉跳线帽)     电机B同理

day3: HC-05蓝牙模块及蓝牙app制作,并利用蓝牙串口通信实现控制直流电机

学习蓝牙模块的原因是因为方便调试代码是否有问题,便于修改

参考视频:https://www.bilibili.com/video/BV1Cy4y1h7ma?vd_source=100abe451980ff9dd4a5647d880af0c5

app制作网站:MIT App Inventor (gzjkw.net)

 app制作完成后利用AT指令配置蓝牙(在xcom串口助手完成)

 

 串口通信:

串口寄存器配置参考数据手册,也可以直接利用isp生成

因为发送(单纯发送可以不用中断)和接收同时用一个中断系统,所以在中断中要判断是发送还是接受产生的中断

参考视频:江科协UART串口通信

day4:利用L298N和HC05控制电机正反转以及调速

利用day2的学习成果,先进行正反转调节主函数如下:

#include <REGX52.H>
#include "timer0.h"
#include "hc05.h"
 
sbit IN3=P1^0;
sbit IN4=P1^1;
 

unsigned char Speed;
 
void main()
{
	IN3=0;IN4=0;
	Uart1_Init();
	Timer0_Init();
   while(1)
	 {
		 switch(Speed)
		 { 
			 case 1: IN3=0;IN4=0;break;  //停止
			 case 2: IN3=1;IN4=0;break;  //正转
			 case 3: IN3=0;IN4=1;break;  //反转
		 }
	 }
	 
}
 
void Uart1_Isr(void) interrupt 4
{
	if (TI==1)				//检测串口1发送中断
	{
		TI = 0;			//清除串口1发送中断请求位
	}
	if (RI==1)				//检测串口1接收中断
	{
		Speed=SBUF;
		RI = 0;			//清除串口1接收中断请求位
	}
}

 注意:单独的调节正反转不需要接ENA和ENB,当进行pwm调速时才接ENA和ENB

进行调速就对IN3或者IN4利用定时器进行pwm输入即可

day5 :编写函数装车

装车成果如下:

该版本小车简单,只用了蓝牙模块实现了遥控功能故存在缺陷

后续将对小车的做如下改进 :1.增加电磁循迹模块 2.超声波测距模块 实现自动避障 3.pid控制差速转向

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值