搜索
bottom↓
回复: 10

智能小车,自动停车快慢行驶

[复制链接]

出0入0汤圆

发表于 2011-3-16 21:41:32 | 显示全部楼层 |阅读模式
智能小车,自动停车,快慢行驶怎么弄啊?第一次弄这个,不咋懂啊!请高手帮帮忙。谢谢了哦!
(非诚勿扰)

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2011-3-16 22:43:09 | 显示全部楼层
这个标题让人蛋疼,你想做什么样的智能车,有循迹的,有找光的 ,有待摄像功能的,有照热源的,很多不同的我不知道你想做个什么玩意。停车肯定是有一个标准,那就使用相关的传感器检测,快慢速行驶也就是 控制电机的转速而已,一般是使用PWM控制占空比,精确调速需要使用反馈控制,常用的是PID控制。鉴于你的说明,你的确很菜,很菜也就算了+一个非诚勿扰算个什么事情。让老夫情何以堪!

出0入0汤圆

发表于 2011-3-16 22:56:16 | 显示全部楼层
从楼主的提问来看,的确很菜。你请教高手的时候,首先得把自己的问题描述清楚了,高手给你解答的时候,也要你有一定的基础。不知道基础如何,不然 讲了也是白讲

出0入0汤圆

 楼主| 发表于 2011-3-19 16:53:22 | 显示全部楼层
你好!
   是的,我确实是菜鸟,本来就是第一次接触智能小车, 我们这学期刚刚才开始学习单片机,就要我们做这个实验,本来就不懂,这是实话!
   我所想说的是,一个,可以自动停车,可以变速行驶的小车!

出0入0汤圆

发表于 2011-3-23 01:20:03 | 显示全部楼层
你首先要做的,是用你的单片机让小车动起来,然后才可以谈到你要的功能。

出0入0汤圆

发表于 2011-3-23 08:24:11 | 显示全部楼层
要知道电机调速的原理,建议看下电机驱动的基本知识,其实只要单片机+L298芯片就可以了,利用IO口的PWM控制快慢和启停,正反转等

出0入0汤圆

发表于 2011-3-24 17:36:07 | 显示全部楼层
首先是最最基本的H桥电机驱动,这是能控制车子(或者说轮子)的最基本条件..具体利用网上资源看一下吧,很多的....

出0入0汤圆

 楼主| 发表于 2011-3-30 17:08:01 | 显示全部楼层
回复【5楼】solyp 李
-----------------------------------------------------------------------

  这位兄台你好!
  我们现在已经知道用 C51或者C52加一个L298N   
   但是我们联出来还是不对……
    还是搞不懂……
   我们是这学期刚刚学单片机 就开始让我们做实验
   老师又不怎么讲,所以……
   我们这一组又都是女生  对这个也不是很懂  
   不知兄台、是否愿意借近聊聊
   QQ153272152
   谢谢……

出0入0汤圆

发表于 2011-3-30 18:01:11 | 显示全部楼层
这是一个用飞思卡尔芯片做的寻线车代码,注释的很详细,是用两个舵机做车轮,控制差速来转弯,不管什么单品机,程序基本思想都一样的,看懂代码后停止和车速调整也很简单



#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */


//----时钟初始化----//
void PLL_Init(void)
{                //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
  REFDV=1;       //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  SYNR=2;        
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;   //使用锁相环时钟(0x00使用晶振频率)
                 //总线时钟=48/2=24MHz
}

//----PWM通道3初始化---//
//极性= 0(x = 0的PPOL)
//占空比= [(PWMPERx - PWMDTYx)/ PWMPERx] * 100%
//极性= 1(PPOLx = 1)
//占空比= [PWMDTYx / PWMPERx] * 100%
void PWM_Init(void)
{
  PWME_PWME3=0;  // 关PWM3(P3口disable)
  PWME_PWME2=0;  // 关PWM3(P3口disable)
  PWMPRCLK=0x33;    //0011 0011 A=B=24M/8=3M 时钟预分频
  PWMSCLA=150;      //SA=A/2/150=10k  PWM Scale A
  PWMSCLB=150;       //SB=B/2/150= 10k  PWM Scale B
  PWMCLK_PCLK3=1;  //为1即选择PWM通道3的SB作为时钟源
  PWMCLK_PCLK2=1;
  PWMPOL_PPOL3=1;  //为1设置输出时起始电平为高
  PWMPOL_PPOL2=1;
  PWMCAE_CAE3=0;   //为0设置控制为左对齐输出模式
  PWMCAE_CAE2=0;
  PWMCTL=0x00;     //控制寄存器为0是分别输出(为1则是将2个通道级联输出)
  PWMPER3=200;    //周期寄存器设置 周期=SB/200=50Hz
  PWMPER2=200;
  PWMDTY3=15;     //脉宽1.5ms
  PWMDTY2=15;
  PWME_PWME3=1;   //开PWM3输出
  PWME_PWME2=1;
}


byte b;

void main(void) {
  /* put your own code here */
  
  PLL_Init();
  PWM_Init();
  DDRB=0x00;
// DDRA=0xFF;

        EnableInterrupts;


  for(;;) {
  
  b = (byte)PORTB;
  
switch(b)
{
case 0x33:{PWMDTY3=10;PWMDTY2=20;}break;
case 0x37:{PWMDTY3=10;PWMDTY2=20;}break;
case 0x3B:{PWMDTY3=10;PWMDTY2=20;}break;
case 0x27:{PWMDTY3=10;PWMDTY2=18;}break;
case 0x2F:{PWMDTY3=10;PWMDTY2=18;}break;
case 0x0F:{PWMDTY3=10;PWMDTY2=15;}break;
case 0x1F:{PWMDTY3=10;PWMDTY2=15;}break;
case 0x39:{PWMDTY3=12;PWMDTY2=20;}break;
case 0x3D:{PWMDTY3=12;PWMDTY2=20;}break;
case 0x3C:{PWMDTY3=15;PWMDTY2=20;}break;
case 0x3E:{PWMDTY3=15;PWMDTY2=20;}break;

default :PWMDTY3=15;PWMDTY2=15;break;

}
  
  /*PWMDTY3=10;    //脉宽1ms,右转最大
  Dly_ms(1000);
  PWMDTY3=15;    //脉宽1.5ms,停
  Dly_ms(1000);
  
  PWMDTY3=10;    //脉宽1ms,右转最大
  Dly_ms(1000);
  PWMDTY2=15;    //脉宽1.5ms,停
  Dly_ms(1000);  */
  
  
  
  
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

出0入0汤圆

发表于 2011-3-30 18:34:19 | 显示全部楼层
回复【8楼】zhang601huan  
-----------------------------------------------------------------------

我帮阿莫说一句:这里的信息都是公开的,开源的,不建议私聊,呵呵。即使你的这个问题,在老鸟看来无所谓是否开源。

我做过“智能小车”(本科阶段),简单说一下:

1,你要弄明白你手上的电机驱动的原理,如何实现转速调节和转向调节。如果你是有刷直流,那么就是调节电压,或者调节有效驱动时间长度。
2,假定你是直流有刷电机,需要调速的话,假如你直接调节驱动电压,对你们而言难度不小,因此建议调节有效驱动时间——也就是通过PWM调节作用在电机上的电压时间长度。
3,既然你提到你用了L298,那么想必你也找到了参考电路图,那么你要做的就是确认你的电路图是否正确(建议发上来大家帮你把把关),以及你的51是否有输出PWM(建议断开L298,然后通过示波器看),以及L298是否工作正常(接上L298,也是看示波器)。如果电路正确,而PWM设置正确(有输出),但是L298没有正确输出(比如有波形,但是波形不是方波),你在PWM的IO上加上1k~4.7K的上拉电阻试一试。
4,如果PWM没有输出,重新翻书本,看看51的程序设计!(你还要确保你的51是好的哦!比如通过做一个跑马灯,或者让某一个IO输出0101看看是否工作,以及频率是否正确)

勿Q了,如果我说的有遗漏,楼下补上,哈哈。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-2 21:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表