搜索
bottom↓
回复: 88

M16+内部AD+红外+298+减速电机+锂电的三轮寻迹小车【恢复】

[复制链接]

出0入18汤圆

发表于 2008-12-7 17:08:15 | 显示全部楼层 |阅读模式
    从开始知道AVR单片机那天起就有人给我推荐我这个论坛,经过几个月的学习终于成了一个菜鸟。最近还做了我的第一个寻迹小车。现在将我从中的一些体会记录下来已答谢论坛对我学习的帮助。

    我的小车是前轮万向轮后轮两个减速电机驱动的寻机小车。

    主控芯片采用ATMEGA16L,其实就是一个最小系统还是按照这个网站给的资料做的,制作过程就不再这里啰嗦了。传感器是采用5mm的红外发射管和二极管式接收管用热缩管制作的对管,经过简单的电路将电压模拟量输入给M16的ADC。通过单片机16分频连续采样转换成8位数字量。比较电压就是AVCC,我是在转换结束中断的时候转换通道的。转换方法是别人告诉我的先关中断然后转换通道然后开中断。这样就得到了数字量的路面状态。我的传感器是在前面一字排开的。这样我的主控芯片和传感器就弄好了。

    电源系统,由于我使用的电机功率很小,2个一共都不足2W,所以使用了单电源并且在单片机系统电源处加了滤波电容,跑起来还是不会掉电的。使用2节2000mAh、3.7v的锂电池加上一个7805稳压模块给整个系统供电。电池充满了还是要跑很久的。电源的问题就解决了。

    电机和控制系统,在网上买了一对带减速箱的直流电机,5V的功率0.8w。用298加1N4148做了一个电机控制模块,用M16的定时器输出2路占空比可调的PWM波加在298的使能端控制电机的速度。用4个单片机端口控制2个电机的正反转。

    车板和轮子,车的主体板是用一块绝缘板做得用起来和有机玻璃差不多只是颜色不一样材质不一样。

    软件设计,我是采用CVAVR编译器C语言写的,这个编译器里ADC和PWM波都有向导所以不难这里就不再说了。至于十字和丁字路口的处理有两只处理方案,一种就是通过计数然后程序设定转向,还有就是加上按键,通过按键设置。



主控电路 (原文件名:16 最小系统.JPG) 



传感器 (原文件名:传感器.JPG) 



电机控制板 (原文件名:电机控制.JPG) 



小车照片 那张黄色的纸是本打算做壳的 (原文件名:1-0012.jpg) 



小车照片 (原文件名:1-0013.jpg) 



小车照片 (原文件名:1-0014.jpg) 



小车照片 (原文件名:1-0015.jpg) 

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2008-12-8 09:51:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-8 15:53:26 | 显示全部楼层
不错,LZ的变速箱好象在哪见过.....

另外提醒下,图片怎么都没直接显示呢?要一个个点来看?

本贴被 mph2004 编辑过,最后修改时间:2008-12-08,15:54:08.

出0入18汤圆

 楼主| 发表于 2008-12-8 16:14:15 | 显示全部楼层
我也不知道图片为什么不能直接显示 

出0入0汤圆

发表于 2008-12-8 17:07:21 | 显示全部楼层
刚接触AVR,想自己做个小车,很多不懂,相信做出来挺有成就感的,呵呵,期待楼主继续分享

出0入18汤圆

 楼主| 发表于 2008-12-8 21:36:16 | 显示全部楼层
上面提供的资料,做硬件已经没有问题了,至于软件嘛,寄存器的配置可以参考芯片资料

等我继续开发了,就分享哈!

出0入0汤圆

发表于 2008-12-9 13:30:11 | 显示全部楼层
呵呵,谢谢无私分享,继续期待.......

出0入0汤圆

发表于 2008-12-9 13:58:41 | 显示全部楼层
哈哈,这不是我学弟的车么?

出0入18汤圆

 楼主| 发表于 2008-12-9 15:29:06 | 显示全部楼层
呵呵!

出0入0汤圆

发表于 2008-12-11 20:06:28 | 显示全部楼层
那个减速电机不错,不知道楼主在哪买到的,我买过几十个减速电机,都是全金属的,8块钱一个,不错12V电压下的速度才90转每秒,不知道你的那个速度怎么样

出0入18汤圆

 楼主| 发表于 2008-12-12 21:00:46 | 显示全部楼层
那个减速电机是在淘宝上的寻梦小车店买的,14元一个,上面有资料的,减速比好像是12,电机原来的转速是1万转,所以减了也很快哈,但是感觉带载能力不是很好,主要原因是不是工作在最高效率点上,如果拿来把电机换成转速是5000左右的我想很合适哈!

出0入0汤圆

发表于 2008-12-18 23:15:17 | 显示全部楼层
楼主研究好程序了吗?

出0入18汤圆

 楼主| 发表于 2008-12-20 12:18:55 | 显示全部楼层
我到是有程序,但是自己感觉用起来不是很好。所以就没有上传,至于硬件的配置嘛,用CVAVR很好配置的,在跑道识别和转向上没有使用什么好的算法!

出0入0汤圆

发表于 2008-12-23 00:06:07 | 显示全部楼层
传上来给大家研究一下!
头像被屏蔽

出0入0汤圆

发表于 2008-12-23 08:09:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入18汤圆

 楼主| 发表于 2008-12-26 21:25:34 | 显示全部楼层
费心了!

出0入18汤圆

 楼主| 发表于 2008-12-26 22:27:46 | 显示全部楼层
还是把程序贴上来,不然说我不厚道,主要是我的程序判断十字口有点不准确。然后AD结果的值也没有处理即多次转换去掉最大值和最小值求平均,听说这样可以很好的抗干扰,自己没有试过不知道哈。出轨的情况没有考虑哈!这就是我这个程序的毛病。我写程序喜欢按照自己的思想去写,也不知道还有多少隐藏的毛病!

/*****************************************************

Project :  寻迹小车控制函数

Date    :   2008-11-27

Author  :   天下的人

Company :   China

Chip type           : ATmega16L

Clock frequency     : 12.000000 MHz

*****************************************************/

#include <mega16.h>

#include <delay.h>

#define BIT(i) (1<<(i))

#define ADC_VREF_TYPE 0x60

#define uchar unsigned char

#define uint unsigned int



/********************  变量定义  ********************************/



  const unsigned char high=179;                  //AD转换有信号的比较值

  const unsigned char low=153;                    //AD转换无信号比较值

   flash uchar tiaos[5]={0x01,0xc0,0xEe,0xff,0xee};    //实现5级调速 分别是0% 75% 90% 100% 95%

   unsigned char adc_dat[5];                      //AD转换 比较值存放数组

  unsigned char adc_hc[5];                       //AD转换 缓冲存放数组

  unsigned char js=0;                           //计数 js 计数AD装换通道和赋值给对应的数组中;

  uchar OCR0_1=0x80,OCR2_1=0x80;                //PWM 波占空比调节变量

  uchar jiaod=78;                              //转向的角度时间延时

//  uchar chuli[5][7];                            //AD处理函数的变量

  uchar cishu=0;                                //转换的次数

  

/************************    中断处理函数   **************************************************/

interrupt [TIM0_COMP] void timer0_comp_isr(void)        // 定时器 计数器0比较中断

     {

         OCR0=OCR0_1;                                   //占空比调节

     }



interrupt [TIM2_COMP] void timer2_comp_isr(void)       // Timer 2 比较中断

     {

          OCR2=OCR2_1;                                 //占空比调节

     }



interrupt [ADC_INT] void adc_isr(void)                // ADC interrupt service routine

 {

   // chuli[js][cishu]=ADCH;

     adc_dat[js]=ADCH;

    js++;

    if(js==5)

      {

        cishu++;

    //    jsbz=1;

        js=0;

        adc_hc[0]=adc_dat[0];

        adc_hc[1]=adc_dat[1];

        adc_hc[2]=adc_dat[2];

        adc_hc[3]=adc_dat[3];

        adc_hc[4]=adc_dat[4];

      }

    switch (js)

       {

          case 0:

           ADCSRA&=~BIT(3);    //关中断

           ADMUX=0x60;         //转换通道

           ADCSRA|=BIT(3);     //开中断

           break;

          case 1:

           ADCSRA&=~BIT(3);

           ADMUX=0x61;

           ADCSRA|=BIT(3);

           break;

          case 2:

           ADCSRA&=~BIT(3);

           ADMUX=0x62;

           ADCSRA|=BIT(3);

           break;

          case 3:

           ADCSRA&=~BIT(3);

           ADMUX=0x63;

           ADCSRA|=BIT(3);

          break;

          case 4:

           ADCSRA&=~BIT(3);

           ADMUX=0x64;

           ADCSRA|=BIT(3);

           break;        

       }  

    }





/*******************************************************************************************/

/********************************  小车的应用函数  *****************************************/

/* void display(void)

      {

      char i;

      for (i=0;i<=5;i++)

       {

       PORTB=led_7[dis_buff];    //rang A kou shu chu di i wei yu xian shi de shu

       PORTC=~BIT(i);     //第1位的显示; ||只有靠自己去区分了,如果用八段数码管则可以用小数点区分 可以修改此程序实现

       delay_ms(2);             //显示延时用,如果去掉则不能显示。

       PORTC=0xFF;           //         刷屏用

       }

      }



  void shanshuo()         //PD.0的指示灯闪烁10次;

   {

       uchar j;

       for(j=0;j<10;j++)

       {

         PORTD.0=~PORTD.0;

         delay_ms(100);

       }

       PORTD.0=1;

   }   */

   

/*   void chul(uchar chuli[][7])   //本来是用来写AD处理函数的

   {

       uchar i,j;

       for(i=0;i<5;i++)

       {

          for(j=0;j<7;j++)

          {

             

          }

       }

   

   }     */



/*******************  调速函数 (测试通过) **********************/

  void TiaoSu(uchar jishu,uchar dianjh)   //jishu 即为级数输入  dianjh 表示要调速的电机号 第0或者第1个;

    {

      if(dianjh==0)

       {

        OCR0_1=tiaos[jishu];       //jishu只能是0~5中间的某一个数字;

       } 

      else                         //dianjh (电机号)只可以是0或者1,而且1是对应的计数器2产生的PWM波;

       {

          OCR2_1=tiaos[jishu];

       } 

    }

/**********************  转向函数(测试通过)  ******************/   

     void zhuanx(uchar zx)   //高速左转向(1)右转向(2)低速左转(3)

   {                       //右转(4)低速前行(5)高速前行(6)急停(7)倒退(8)

        switch (zx)        //外加转弯灯,左转PB.0控制左边2个黄灯亮,右转PD.0控制的黄灯亮

        {                  //急停灯(红色)有PD.1控制

          case 1:

             PORTD.0=0;               //高速左转

             PORTC.0=0;      //正转

             PORTC.1=1;

             PORTB.1=0;      //反转

             PORTB.2=1; 

             TiaoSu(3,0);

             TiaoSu(3,1);

             PORTB.5=1;

             

             delay_ms(jiaod);     //转向一定的角度

             break;

          case 2:

             PORTB.5=0;              //高速右转

             PORTC.0=1;      //反转

             PORTC.1=0;

             PORTB.1=1;      //正转

             PORTB.2=0;

             TiaoSu(3,0);

             TiaoSu(3,1);

             PORTD.0=1;

             

             delay_ms(jiaod);

             break;

          case 3:              //低速左转(3)

             PORTC.0=0;      //正转

             PORTC.1=1;

             PORTB.1=0;      //反转

             PORTB.2=1; 

             TiaoSu(2,0);

             TiaoSu(3,1);

             PORTD.0=0;

             PORTB.5=1;

             delay_ms(jiaod);

             break;

          case 4:              //低速右转(4)

             PORTC.0=1;      //反转

             PORTC.1=0;

             PORTB.1=1;      //正转

             PORTB.2=0;

             TiaoSu(3,0);

             TiaoSu(2,1);

             PORTB.5=0;

             PORTD.0=1;

             

             delay_ms(jiaod);

             break;

          case 5:              //低速前行(5)

             PORTC.0=0;      //正转

             PORTC.1=1;

             PORTB.1=1;

             PORTB.2=0;

             TiaoSu(1,0);

             TiaoSu(1,1);

             PORTB.5=0;

             PORTD.0=0;

             delay_ms(jiaod);

             break;

          case 6:            //高速前行(6)

             PORTC.0=0;      //正转

             PORTC.1=1;

             PORTB.1=1;

             PORTB.2=0;

             TiaoSu(2,0);

             TiaoSu(2,1);

             PORTB.5=0;

             PORTD.0=0;

             delay_ms(jiaod);

             break;

          case 7:             //急停

             PORTC.0=0;      //不转

             PORTC.1=0;

             PORTB.1=0;

             PORTB.2=0;

             TiaoSu(1,0);

             TiaoSu(1,1);

             PORTB.5=0;

             PORTD.0=0;

             PORTD.1=1;

             break;

          case 8:

             PORTC.0=1;      //正转

             PORTC.1=0;

             PORTB.1=0;

             PORTB.2=1;

             TiaoSu(3,0);

             TiaoSu(3,1);

             PORTB.5=1;

             PORTD.0=1;

             PORTD.1=1;

             break; 

        }

  }

/*********************************  判别函数  ***************************************/



   void panduan(unsigned char adc_da[]) //将得到的AD转换值导入

   {  

        unsigned char lukou=0;  //lukou变量用于路口判断

      //单个传感器检测到信号的情况

        //2号传感器检测到信号,其余没有检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]>=high)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

       {

             zhuanx(6); //调用高速前行函数

       }

       // 1号传感器检测到信号,其余没有检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]>=high)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

       {

             zhuanx(3);//调用低速左转函数

       }

       // 0号传感器检测到信号,其余没有检测到

       if((adc_da[0]>=high)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

       {

             zhuanx(1); //调用高速左转函数

       }

       //3号传感器检测到信号,其余没有检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]>=high)&&(adc_da[4]<=low))

       {

            zhuanx(4);  //调用低速右转

       }

       //4 号传感器检测到信号,其余没有检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]>=high))

       {

           zhuanx(2);  //调用高速右转

       }

       // 1,2号检测到信号 其余没有         白线在两个传感器中间

     //  if((adc_da[0]<=low)&&(adc_da[1]>=high)&&(adc_da[2]>=high)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

     //    {

     //        zhuanx(3); // 调用低速左转函数

     //    }

       //0,1号检测到信号

       if((adc_da[0]>=high)&&(adc_da[1]>=high)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

         {

             zhuanx(1);  //调用高速左转函数

         }

         //2,3号检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]>=high)&&(adc_da[3]>=high)&&(adc_da[4]<=low))

       {

             zhuanx(4); //调用低速右转函数

       }

       //3,4检测到信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]>=high)&&(adc_da[4]>=high))

         {

             zhuanx(2);//调用高速右转函数

         }

       //0,1,2有信号              ( 折线检测 )

       if((adc_da[0]>=high)&&(adc_da[1]>=high)&&(adc_da[2]>=high)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

         {

            zhuanx(1);//左转折线  调用高速左转函数

         }

       //2,3,4有信号

       if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]>=high)&&(adc_da[3]>=high)&&(adc_da[4]>=high))

         {

             zhuanx(2); //右转折线  调用高速右转函数

         }

       //1,2,3 有信号

       if((adc_da[0]<=low)&&(adc_da[1]>=high)&&(adc_da[2]>=high)&&(adc_da[3]>=high)&&(adc_da[4]<=low))

        {

             zhuanx(6); //备用函数  调用高速直行函数

        }

        //0,1,2,3,4 都有信号        (路口判断)

   if((adc_da[0]>=high)&&(adc_da[1]>=high)&&(adc_da[2]>=high)&&(adc_da[3]>=high)&&(adc_da[4]>=high))

      {

          switch (lukou)       //走折线分支 选择函数

          {

            case 0:

               zhuanx(6);  //调用高速直行函数

              break;

            case 1:

                zhuanx(6);  //调用高速右转函数

              break;

            case 2:

               zhuanx(2); //调用高速左转函数

                break;

            case 3:

                zhuanx(1);//调用低速直行函数

                break;

          }

          /* switch(lukou)         //走曲线分支  选择函数

             {

                case 0:

                  zhuanx(6); //调用直行函数

                break;

                case 1:

                 zhuanx(1);  //调用高速左转函数

                break;

                case 2:

                 zhuanx(6);  // 调用高速直行函数

                break;

                case 3:

                 zhuanx(6);  // 调用直行函数

                break;

                case 4:

                 zhuanx(5);  //  调用直行函数

                break;

             }

          */         

          lukou++;  

      } 

      //出轨处理,以及停车 

      if((adc_da[0]<=low)&&(adc_da[1]<=low)&&(adc_da[2]<=low)&&(adc_da[3]<=low)&&(adc_da[4]<=low))

      {

           if(lukou>=3)    //选择折线分支 时是4   曲线分支是5

           {

            zhuanx(7); //高速停车

           }

           else   //非正常情况出轨  (1)反向出跑到

           {

                      //AD转换的到的状态设置缓冲,如果有缓冲数组,可以设置找回路径函数

              // panduan(adc_hc); 

             ;

           }

      }  

       

    }   



/*******************************************************************************************/

/**********************************     主函数   ******************************************/

void main(void)

{

PORTA=0x00;        //端口初始化

DDRA=0x00;

PORTB=0x00;

DDRB=0xff;

PORTC=0x00;

DDRC=0xff;

PORTD=0x00;

DDRD=0xff;



TCCR0=0x6B;                                         // Timer/Counter 0 initialization

TCNT0=0xFF;                                         // Clock source: System Clock

OCR0=0x6f;                                          // Clock value: 187.500 kHz

                                                    // Mode: Fast PWM top=FFh

                                                     // OC0 output: Non-Inverted PWM                                                    

TCCR1A=0x00;                                         // Timer/Counter 1 initialization   未使用

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;



ASSR=0x00;                                     // Timer/Counter 2 initialization

TCCR2=0x6C;                                   // Clock source: System Clock

TCNT2=0xFF;                                  // Clock value: 187.500 kHz

OCR2=0x6f;                                  // Mode: Fast PWM top=FFh    OC2 output: Non-Inverted PWM



MCUCR=0x00;                               // External Interrupt(s) initialization

MCUCSR=0x00;                             // INT0: Off   INT1: Off     INT2: Off



TIMSK=0x82;                              // 定时器 计数器 中断初始化



ACSR=0x80;                                // 模拟比较器 关

SFIOR=0x00;



ADMUX=0x60;                            // ADC initialization    Clock frequency: 750.000 kHz

ADCSRA=0xec;                           // ADC Voltage Reference: AVCC pin   Free Running

SFIOR&=0x1F;                          // Only the 8 most significant bits of



// 全局中断使能

#asm("sei")





while (1)

      {     

      panduan(adc_hc);                          

      };

}



               

出0入18汤圆

 楼主| 发表于 2009-1-8 16:10:12 | 显示全部楼层

出0入18汤圆

 楼主| 发表于 2009-1-30 18:56:20 | 显示全部楼层
自己来定一下





出0入18汤圆

 楼主| 发表于 2009-2-25 22:37:50 | 显示全部楼层
呵呵,我的恢复过来了哈,感谢站长和工作人员还有那些提供数据的网友!

出0入0汤圆

发表于 2009-3-23 23:44:22 | 显示全部楼层
请问 您是怎么对减速电机进行调试的。。。。减速电机达到怎样的效果才可以呢。。。
PWM在这里的应用是什么 谢谢

出0入0汤圆

发表于 2009-3-23 23:48:27 | 显示全部楼层
我最不能明白的是 电源不封是怎么做的

出0入0汤圆

发表于 2009-3-31 18:35:20 | 显示全部楼层
这么好的帖子,当然要顶!!
不知道楼主还来不来啊 ,有问题请教。目前也开始做小车

出0入0汤圆

发表于 2009-4-18 23:29:09 | 显示全部楼层
顶!!!太好了,呵呵!!

出0入0汤圆

发表于 2009-5-6 17:29:58 | 显示全部楼层
LZ 的传感器  我做小车的时候也是这个 哈哈

出0入0汤圆

发表于 2009-5-8 12:15:25 | 显示全部楼层
顶!最今刚做小车跷跷板,见到楼主的车好精致呀!我也冲动起来想做一辆想楼主一样的车!相互学习!

出0入0汤圆

发表于 2009-5-8 12:22:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-14 15:17:01 | 显示全部楼层
顶了,我也正在做小车,参考一下!谢谢啦

出0入0汤圆

发表于 2009-6-4 15:21:58 | 显示全部楼层
想看看你的程序  但还没用过CVAVR呢!1想看看你的程序 刚才还专门下了一个

出0入0汤圆

发表于 2009-6-9 20:59:00 | 显示全部楼层
hao

出0入18汤圆

 楼主| 发表于 2009-7-9 14:00:53 | 显示全部楼层
回复20楼:PWM是控制L298的使能端的。调试嘛和车的整体性能有关,如果是要竞速当然越快越好了。当然也要和内部单片机处理程序配合。

出0入18汤圆

 楼主| 发表于 2009-7-9 14:03:10 | 显示全部楼层
回复21楼:这个小车的电机只有1W,所以没有隔离直接和单片机共地的。但是如果大功率的电机一定要隔离。

出0入0汤圆

发表于 2009-7-11 21:24:04 | 显示全部楼层
MARK 请教下楼主 小车是怎么转弯的呢?是不是控制万向轮?
以前没接触个这个方面的内容 不要笑哦

出0入0汤圆

发表于 2009-7-13 13:10:40 | 显示全部楼层
回楼上的    这个小车的相对的轮子不是连起来的     由不同的电机控制     只要一个转的快点一个慢点就可以转弯拉
          你去看看他的小车底面就明白了!

出0入0汤圆

发表于 2009-7-14 19:21:10 | 显示全部楼层
谢谢 33楼的
我看了好多的是控制一边快一边慢
也看到了 有电机控制前轮转向的角度 那个可能没那么好做

出0入0汤圆

发表于 2009-7-20 17:08:10 | 显示全部楼层
楼主好样的~~

出0入18汤圆

 楼主| 发表于 2009-7-24 22:17:22 | 显示全部楼层
回复34楼:我接触的智能车主要有2中,一种是三轮,一种是4轮,当然也有2轮的,不过我没亲自接触过。因此在这里不讨论2轮的。三轮的基本思路是全论万向轮,后轮分别用一个电机控制,转向时主要是靠速度差实现的。优点是转向灵活,可以实现原地打转。缺点是由于转向是要求速度差,势必造成速度不肯能太高,因此三轮车没有四轮车速度高。 四轮车:前轮由舵机控制转向(也有的玩具车使用直流电机加齿轮实现),后轮有一个电机驱动。四轮车的优点是速度快,缺点是不可以原地打转,存在最小的转弯半径。

出0入0汤圆

发表于 2009-7-24 22:48:40 | 显示全部楼层
楼主的18650该不会是烙铁焊的吧???焊这电池要么就是虚焊,要么就点焊,如果用100W烙铁硬焊我觉得这东西会变成炸_弹

出0入0汤圆

发表于 2009-7-25 03:35:03 | 显示全部楼层
哎,下次让你看看我做的……
我在最近又做了一个

出0入0汤圆

发表于 2009-8-2 16:19:21 | 显示全部楼层
楼主能传一下单片机和l298是怎么联的吗。还有, 您是用pwm控制en的吗,和直接控制IN有什么区别呢?

出0入18汤圆

 楼主| 发表于 2009-8-4 23:05:22 | 显示全部楼层
回复37楼:我的电池就是30W的烙铁焊的,没有条件点焊,只有用尖锐的东西刻一下,上点松香,然后用30W的电烙铁焊了!感觉还不是很难焊的!

出0入18汤圆

 楼主| 发表于 2009-8-4 23:06:33 | 显示全部楼层
回复38楼:等着你拿来交流一下了!

出0入18汤圆

 楼主| 发表于 2009-8-4 23:09:42 | 显示全部楼层
回复39楼:298的连接图我也是在网上找的,他的官方资料上也有的。
PWM是控制使能端en的,in1、2,和in3、4分别控制out的1、2,3、4。
in1、2同时为00或者11时都是停,01顺转,10就反转!

出75入4汤圆

发表于 2009-8-5 09:16:00 | 显示全部楼层
lz的传感器从什么地方买的,什么型号?

出0入0汤圆

发表于 2009-8-6 22:38:17 | 显示全部楼层
对了,楼主,你的车子循迹效果好吗,按了多少个传感器啊,是按电路图直接连两个红外管而没用运放吗。
我们今天也做了一个,有运放的,但只有两个传感器。直接将信号送到IO口,效果不太好,灵敏度很不好调。
明天打算用ADC处理一下。希望效果好点。

出0入18汤圆

 楼主| 发表于 2009-8-7 23:22:14 | 显示全部楼层
回复43楼:传感器就是市场上卖的普通的5mm的红外发射接收对管,几毛钱一对!相当的便宜,形状就像发光二极管一样,只是接收的是黑色的,发生有的是白色有的是淡蓝色的! 很好找的!

出0入18汤圆

 楼主| 发表于 2009-8-7 23:33:35 | 显示全部楼层
回复44楼:我从开始做车就与传感器打交道,个人感觉红外传感器是个烈女,只要你好好驯服,他会为你做很多有用的工作!相当不错但是如果驯服不好那么他会拉坏你整个系统的性能的!
灵敏度就是需要驯服的一个关键,个人认为只要记住接收管在有红外和没有红外的时候“电阻”值不同,而且相差很明显,但是这个电阻是有方向的,也就是你用万用表再有光和没有光(自然光中的红外光起主导作用)的条件下测电阻会有明显的变化,根据这个变化来设计测量电路。至于LS所说的运放个人觉得没必要,可以加一个比较器,也可以直接近AD。
我们今年改进了电路,用了桥式测电阻的方法,把放射距离拉到了20多cm,甚至可以不要发生管,直接利用自然光对黑白的反射不同来检测都可以!呵呵,可惜传感器的聚光性不好,远了光斑很大,使用起来不方便,所以最后还是没有用太长距离的!

出0入0汤圆

发表于 2009-8-8 07:54:19 | 显示全部楼层
楼主  有没有玩过 超声波啊  小弟 下载想做  不知道怎么做啊

出0入0汤圆

发表于 2009-8-25 16:59:07 | 显示全部楼层
支持楼主。

出0入0汤圆

发表于 2009-8-25 16:59:11 | 显示全部楼层
支持楼主。

出0入0汤圆

发表于 2009-9-1 18:32:46 | 显示全部楼层
MARK

出0入198汤圆

发表于 2009-9-9 21:37:44 | 显示全部楼层
Mrak

出0入0汤圆

发表于 2009-10-26 13:41:22 | 显示全部楼层
楼主,我也是成都的,老乡哦,很想向你学点这个M16寻迹小车的东西,可以加个QQ么?我的是496724812

出0入0汤圆

发表于 2009-10-31 00:06:21 | 显示全部楼层
正在学习

出0入0汤圆

发表于 2009-10-31 11:18:26 | 显示全部楼层
实在是感谢啊  研究研究下

出0入0汤圆

发表于 2009-11-12 19:06:48 | 显示全部楼层
呵呵 楼住好人啊  
    最近刚开始做小车 这东西很有帮助 谢谢了!!

出0入0汤圆

发表于 2009-11-15 12:03:27 | 显示全部楼层
楼主你好!我想要一下 你的 联系 方式  问你一下 关于 那个 电池的问题!

出0入18汤圆

 楼主| 发表于 2009-11-15 17:47:55 | 显示全部楼层
QQ 286115417

出0入0汤圆

发表于 2009-11-30 21:14:35 | 显示全部楼层
很强大的项目!我是一名快要毕业的学生,正做着一个关于能判别自身位置的机器人为毕业设计,希望能得到楼主的指教!我的QQ是461638342!

出0入0汤圆

发表于 2009-12-24 12:24:27 | 显示全部楼层
MARK!!!  好东西!

出0入18汤圆

 楼主| 发表于 2009-12-28 20:37:28 | 显示全部楼层
回复:59楼:你加我就是了!!!

出0入0汤圆

发表于 2009-12-29 16:32:35 | 显示全部楼层
有没有可能用步进电机驱动小车?

出0入0汤圆

发表于 2010-4-16 13:21:58 | 显示全部楼层
mark~~~~~~~

出0入0汤圆

发表于 2010-4-25 19:52:56 | 显示全部楼层
去年用51做了个小车    哈哈!!
   什么时候也玩玩AVR下车!

出0入18汤圆

 楼主| 发表于 2010-7-16 09:21:52 | 显示全部楼层
回复62  :  可以的

出0入0汤圆

发表于 2010-7-16 09:35:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-16 15:15:29 | 显示全部楼层
S

出0入0汤圆

发表于 2010-7-23 17:58:53 | 显示全部楼层
谢谢分享!

出0入18汤圆

 楼主| 发表于 2010-8-9 12:31:30 | 显示全部楼层
没事 过来看看

出0入0汤圆

发表于 2010-9-7 11:26:24 | 显示全部楼层
http://shop59582324.taobao.com/  这里有很好的红外寻迹,红外避障模块 哦,精度很高,可以测到40CM,有单路,也有双路哦,老板人也很好,在同等产品中,非常的便宜,大家可以去看看,不懂的地方,并且还有人给回答,是超声波初学者的首选哦

出0入0汤圆

发表于 2011-4-3 16:30:28 | 显示全部楼层
看此贴后,获益匪浅~~~!!

出0入0汤圆

发表于 2011-4-4 14:00:26 | 显示全部楼层

(原文件名:})G1CL})YWT(}0KGZ(UIDS2.jpg)
我用两个光电RPR220进行探测,不过程序搞不懂,有哪个高手帮忙看下,指点下。纠结的斑竹还没给我审核。。。

出0入0汤圆

发表于 2011-4-4 14:01:16 | 显示全部楼层
晶振忘了弄上了

出0入18汤圆

 楼主| 发表于 2011-4-7 11:09:02 | 显示全部楼层
呵呵

出0入0汤圆

发表于 2011-4-7 14:03:59 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-4-9 01:32:19 | 显示全部楼层
学习了,谢谢楼主无私分享!

出0入0汤圆

发表于 2011-4-12 11:34:18 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-4-12 12:48:13 | 显示全部楼层
如果发光管使用调制信号发送(38HZ), 接受的效率会更高, 我做小车的时候测试距离可以到1m以上。

不过当时小车跑迷宫,跑道太窄,后来又改成和楼主一样的了。

出0入0汤圆

发表于 2011-5-8 00:01:23 | 显示全部楼层
COOL

出0入18汤圆

 楼主| 发表于 2011-6-7 08:39:17 | 显示全部楼层
谢谢关注

出0入0汤圆

发表于 2011-7-7 10:50:58 | 显示全部楼层
顶一下,学习一下

出0入0汤圆

发表于 2011-7-30 19:52:58 | 显示全部楼层
牛逼的lz,我喜欢

出0入18汤圆

 楼主| 发表于 2011-8-1 17:08:26 | 显示全部楼层
回复 81  82楼: 谢谢 支持 我的东西

出0入0汤圆

发表于 2011-8-3 09:11:19 | 显示全部楼层
精华,学习中,,

出0入0汤圆

发表于 2011-8-4 19:56:47 | 显示全部楼层
哇,很强大的说

出0入18汤圆

 楼主| 发表于 2011-8-5 13:35:57 | 显示全部楼层
回复84 楼:  多年前的帖子  哈哈  肯定有不少 bug

出0入0汤圆

发表于 2011-10-5 20:55:25 | 显示全部楼层
线最好减少一点

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-26 13:13

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

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