请问一下小车为什么不能控制?
P2^2,P2^5,P2^6,P2^7,这四个口用来控制小车前进后退和转向,我用电压表测量过,明明有电压变化。但是小车就是不反应,为什么啊if(P22==1)//前进
{
Speed_need=20;
}
else if(P25==1)//后退
{
Speed_need=-20;
}
else//静止
{
Speed_need=0;
}
//左右变量控制
if(P26==1)//左转
{
Turn_need=40;
}
else if(P27==1)//右转
{
Turn_need=-40;
}
else//不转
{
Turn_need=0;
}
position+=Speed_need;
PWM = Kp_angle*angle+Kd_angle*angle_dot+Kp_speed*position_dot_filter+Ki_speed*position;
PWM_L=PWM+Turn_need;
PWM_R=PWM-Turn_need; 把硬件图画出来 回复【1楼】jssd 龙
-----------------------------------------------------------------------
硬件图?不需要了吧,就这么说,这四个口能够明显有电压的变化,我用万用表量过的,但是小车就是不受控制,应该不是硬件的问题。 lz有用什么电机驱动芯片吗? 回复【3楼】kenny17
-----------------------------------------------------------------------
L298N 回复【3楼】kenny17
-----------------------------------------------------------------------
L298N 回复【5楼】_Daniel_ _落魄書生_
-----------------------------------------------------------------------
其实之前单独用无线控制器控制电机转动是可以的,但是一旦放入程序中就没什么反应了,不知道有没有人遇到过? 回复【楼主位】_Daniel_ _落魄書生_
我用电压表测量过,明明有电压变化。但是小车就是不反应,为什么啊
-----------------------------------------------------------------------
先把电机撤去,看L298的输出电压正常不,你测的是控制端的电压而已吧 回复【7楼】kenny17
-----------------------------------------------------------------------
可以的,我试过,单独控制的程序,电机是可以转的,但是放入主程序后,不管这么弄都不转 引脚驱动力不够?在P2口加10K上拉电阻看看。LZ说单独控制可以转,不明白是什么。可以先把单片机拆下来,在控制L298的引脚直接接正负端看看能不能动,如果能,说明问题在单片机这边,不能则是L298后的问题。实测单片机这个脚有输出的话,应该是驱动力不够,加个三极管或门电路再接L298。 可以直接让四个控制脚输出高或低电平,看看行不行。如果行,则是程序问题,不行则是硬件问题 回复【10楼】jssd 龙
-----------------------------------------------------------------------
一定是程序的问题,但是我不明白为什么会这样,因为我是仿照别人的程序,别人可以,我的就不行 你怎么就肯定是程序 问题呢???我觉得9,10楼正解!!!!先看看问题发生在哪吧....... 回复【12楼】BadGuy
-----------------------------------------------------------------------
因为我都测试过了,肯定是程序的问题,这样说吧
if(P26==1)//左转
{
Turn_need=40;
}
else if(P27==1)//右转
{
Turn_need=-40;
}
else//不转
{
Turn_need=0;
}
PWM=0;
PWM_L=PWM+Turn_need;
PWM_R=PWM-Turn_need;
这样的话,我前后不能控制,但是左右能控制,很明显的
但是
if(P22==1)//前进
{
Speed_need=200;
}
else if(P25==1)//后退
{
Speed_need=-200;
}
else//静止
{
Speed_need=0;
}
//左右变量控制
if(P26==1)//左转
{
Turn_need=40;
}
else if(P27==1)//右转
{
Turn_need=-40;
}
else//不转
{
Turn_need=0;
}
position+=Speed_need;
PWM = Ki_speed*position;
PWM_L=PWM+Turn_need;
PWM_R=PWM-Turn_need;
这样前后也没反应,左右只有一个轮子有反应,而且特慢,求原因 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4798103&bbs_id=9999
页:
[1]