这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 湖北理工TEA » B8组 (康夏涛,符友,罗积昌) 两轮平衡小车

共38条 2/4 1 2 3 4 跳转至
菜鸟
2016-04-17 18:33:24     打赏
11楼

      今天上午调了一上午的平衡程序,发现好多问题,电机这块的程序就好多bug,然后就越调越乱,最后完全没了思路,所以准备把车全部搭出来再程序写程序。

      把各种模块都拿出来,需要的电阻,电容,烙铁,跳线,摆一排,感觉我们三是要大干一场了


(搭第二层中)


这里打孔又是最麻烦的,因为不在实验室,没有钻孔机了,我们用锤子螺丝慢慢打出来的


(红外线循迹)


(资料是在网上找的)

(原理图)


      红外发射二极管跟普通的LED二极管一样,只是LED发射的是肉眼看得到的可见光,而红外发射二极管发射的是人眼看不见的红外线,红外发射二极管的正向压降大约1.2V,发射的功率以及发射的距离跟流经的电流成正比,嘴大平均工作电流不要大于100mA,这里选用的是220欧姆的限流电阻,流经红外发射二极管电流为(5V-1.2V)/220欧姆=17.2mA。
      红外接收二极管跟光敏电阻类似,可以根据这一点在其电路上加一个10K欧姆的电阻,当有红外线照射时电阻很小,则在上图中与红外接收二极管负极相连的P2.0/P2.1/P2.2输出口输出为“0”,当没有红外线照射时,输出为“+5V”。


      可以根据这一点进行红外巡线,巡线原理如下:当红外发光二极管照射到白色地板时,反射红外线,被与之对应的红外接收二极管接收,输出为逻辑“0”。反之当红外发光二极管照射到黑线时,红外线被黑色物体吸收,则与之对应的红外接受二极管无红外线照射,输出为逻辑“1”。


我的想法是将其分为“左”“中”“右”3路,那么分别会有8中情况,情况如下


左路 中路 右路 电机动作
0 0 0 停止
0 0 1 右转
0 1 0 前进
0 1 1 右转
1 0 0 左转
1 0 1 停止
1 1 0 左转
1 1 1

程序以后供上


(电源)

从图中可以看出我接了两个电源接口,一个5V usb接口,一个接9V 电池,因为电池不怎么好,所以调程序时准备用移动电源。

(整体)

一下午搭的,是不是帅到想哭

(顺便分享一点经验,就是用排针引出VCC或GND时多接几个排针,像我们只接了四个排针,回来发现少了时再引出来特别麻烦的。)

    

然后简单的写了个lcd的程序,哈哈,感觉特别特别特别帅

(附上所用单片机IO口)

接下来的日子就只要是把一个一个的模块程序写出来,然后慢慢调吧


菜鸟
2016-04-17 20:21:48     打赏
12楼

很好,内容丰富!图文并茂!继续努力



高工
2016-04-18 11:35:53     打赏
13楼
很牛,观望大神操作

菜鸟
2016-04-18 19:41:28     打赏
14楼

过程很详细  可以   做二轮的话多查查二轮的资料!!



专家
2016-04-19 09:52:28     打赏
15楼
相当不错,进来学习一下
动手能力很强,大赞

高工
2016-04-20 09:27:12     打赏
16楼
写的不错 很详细 想起当初的自己啊 

专家
2016-04-20 21:38:32     打赏
17楼
我决定跟着这个帖子学做平衡车啦

专家
2016-04-20 21:38:59     打赏
18楼

菜鸟
2016-04-20 21:55:28     打赏
19楼

不好意思几天没有更新了,这几天事情多,进展比较慢

首先说一下小车控制方面,小车一开始是打算用蓝牙控制的,因为运气太差,淘宝到一个坏的蓝牙模板,害我们调半天搞不懂,后来就准备用无线,我们首先是用315无线发射和接收模块,没有资料,百度说要自己编码,找几个例程和天书一样,当时就蒙了,然后试了各种方法,还是放弃了,于是我发现了一种带遥控器的无线模板

固定码,接收到信号就输出高电平,一下就简单了。


(信号问题)

这个无线模板主要问题是信号弱,我们首先想到的就是加天线,一开始我们是自己用绝缘线做的,根本没起到什么作用,百度一查,原来天线中间是空心的,然后我们果断拆了路由器的一根天线装上,效果一下就来了,距离可以到一两米了。




菜鸟
2016-04-20 22:01:54     打赏
20楼

今天我们把电机的程序程序重新写了一遍,用到PWM信号调速,方便平衡小车的自平衡

程序如下:

#include <reg51.h> 

//IO口
sbit dian1=P2^0;
sbit dian2=P2^1;
sbit dian3=P2^2;
sbit dian4=P2^3;
sbit k1=P2^6;	 
sbit k2=P2^7;
sbit k3=P3^4;
sbit k4=P3^5;

//变量
unsigned char i,n,nk,nd,fx;
	     	  //n,nk,nd     速度标识
	          //fx(1正 2反 3左 4右)  方向标识

//声明函数
void zz();	                //电机正方向
void ff();	                //电机反方向
void fz();					//电机左转
void zf();					//电机右转
void sudu();                //根据速度标识选择速度值
void dian();                //检测按键
void delay(unsigned int z);	//延时函数

//主函数
void main()
{	
	while(1)
	{
		dian();
		sudu();
		if(fx==1)	 //根据方向标识选择方向
			zz();
		if(fx==2)
			ff();
		if(fx==3)
			fz();
		if(fx==4)
			zf();
	}
}

//函数
void dian()	 //检测按键,用无线模块控制,接收到信号时输出高电平
{
	if(k1==1)	  //前进
	{
		n++;
		if(n==5)
			n=4;
		fx=1;
	}
	if(k2==1)	  //左转
	{
		n++;
		if(n==5)
			n=4;
		fx=3;
	}
	if(k3==1)	  //减速、后退
	{
		n++;
		if(n==5)
			n=4;
		fx=2;
	}
	if(k4==1)	  //右转
	{
		n++;
		if(n==5)
			n=4;
		fx=4;
	}
	if((k1!=1)&&(k2!=1)&&(k3!=1)&&(k4!=1))//没有无线信号时电机停止转动
	{
		n=0;
	}
}

void zz()	 //正方向
{
	for(i=0;i<nd;i++)
	{
		dian1=1;
		dian2=1;
		dian3=1;
		dian4=1;
		delay(5);
	}
	for(i=0;i<nk;i++)
	{
		dian1=0;
		dian2=1;
		dian3=0;
		dian4=1;
		delay(5);
	}
}

void ff()	 //反方向
{
	for(i=0;i<nd;i++)
	{
		dian1=1;
		dian2=1;
		dian3=1;
		dian4=1;
		delay(5);
	}
	for(i=0;i<nk;i++)
	{
		dian1=1;
		dian2=0;
		dian3=1;
		dian4=0;
		delay(5);
	}
}

void fz()	 //一正一反,左转
{
	for(i=0;i<nd;i++)
	{
		dian1=0;
		dian2=0;
		dian3=1;
		dian4=1;
		delay(5);
	}						
	for(i=0;i<nk;i++)
	{
		dian1=1;
		dian2=0;
		dian3=0;
		dian4=1;
		delay(5);
	}
}

void zf()	 //一反一正,右转
{
	for(i=0;i<nd;i++)
	{
		dian1=1;
		dian2=1;
		dian3=0;
		dian4=0;
		delay(5);
	}						
	for(i=0;i<nk;i++)
	{
		dian1=0;
		dian2=1;
		dian3=1;
		dian4=0;
		delay(5);
	}
}

void sudu()//根据n的值赋nk,nd来调节IO口输出的PWM信号
{
	switch(n)
	{
		case 0:
			nk=0;
			nd=4;
			break;
		case 1:
			nk=1;
			nd=3;
			break;
		case 2:
			nk=2;
			nd=2;
			break;
		case 3:
			nk=3;
			nd=1;
			break;
		case 4:
			nk=4;
			nd=0;
			break;
	}
}
	    
void delay(unsigned int z)	//延时函数 (1ms)
{													 
	unsigned int x;									         
	for(;z>0;z--)									  
		for(x=110;x>0;x--);							
}


共38条 2/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]