[活动]

蓝牙小车马上发车

[复制链接]
451|12
手机看帖
扫描二维码
随时随地手机跟帖
地瓜patch|  楼主 | 2024-3-26 22:56 | 显示全部楼层 |阅读模式
本帖最后由 地瓜patch 于 2024-3-27 20:58 编辑

非常感谢二姨家的外包平台DIY小车的活动收到后就迫不及待的安装起来

IMG_20240318_192244.jpg
IMG_20240318_192253.jpg

咱家娃也帮忙打下手
IMG_20240318_213725.jpg



焊接完成的样子
IMG_20240320_203550.jpg

MCU单片机STC89C52 38543660416a1dc069.png
一个CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写10000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的ST89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。ST89C52芯片具有以下特性:
指令集和芯片引脚与Intel公司的8051兼容;8KB片内在系统可编程Flash程序存储器;128字节片内随机读写存储器(RAM);32个可编程输入/输出引脚;2个16位定时/计数器;6个中断源,2级优先级;全双工串行通信接口;监视定时器;
STC89C52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚


电机驱动

319736604175fa1b18.png
L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D2H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12IN1IN2,其中EN12是使能信号,IN1IN2为电机转动方向控制信号,IN1IN2分别为10时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。

蓝牙模块HC-05

18254660414f2ed80d.png
蓝牙无线通信模块有两种工作方式,一个是命令响应工作模式,另一个是自动连接工作模式。在命令响应工作模式下,使用者通过向模块发送AT工作指令来对模块的控制参数进行设定和下达控制指令。而在自动连接工作模式下, 模块又有三种工作模式,分别为主机(Master)、从机(Slave)和回环(Loopback)三种工作模式,选定工作模式后,模块就自动按照提前设定好的方式进行数据传输。通过调节模块外部引脚的输入电平来动态转换模块的工作状态。

通电后一切正常,但是用手机控制,电极转动就不能停止,不受控
一会儿驱动芯片就烧掉了

IMG_20240325_195437.jpg

新买的驱动芯片刚到,还未找到问题所在,后续持续更新。


使用特权

评论回复
评论
地瓜patch 2024-3-28 21:55 回复TA
新买的10片驱动器,烧光了,哈哈哈 

相关帖子

WoodData| | 2024-3-27 10:44 | 显示全部楼层
真不错

使用特权

评论回复
ezcui| | 2024-3-28 19:40 | 显示全部楼层
好眼馋

使用特权

评论回复
地瓜patch|  楼主 | 2024-3-28 21:45 | 显示全部楼层
本帖最后由 地瓜patch 于 2024-3-28 21:48 编辑

蓝牙通信程序if (newLineReceived)
                   {
                        switch(inputString[1])
                        {
                                case run_car:   g_carstate = enRUN; break;
                                case back_car:  g_carstate = enBACK;break;
                                case left_car:  g_carstate = enLEFT;break;
                                case right_car: g_carstate = enRIGHT;break;
                                case stop_car:  g_carstate = enSTOP;break;
                                default:g_carstate = enSTOP;break;
                        }
                        if(inputString[3] == '1')  //ÓÒÐýת
                        {
                                TR0= 1;
                                tright();
                                delay(2000);//ÑÓʱ2s
                                stop();
                                TR0= 0;
                        }
                        else if(inputString[3] == '2')        // ×óÐýת
                        {
                                   TR0= 1;
                                tleft();
                                delay(2000);//ÑÓʱ2s
                                stop();
                                TR0= 0;
                        }
                        if(inputString[5] == '1')  //ÃùµÑ
                        {
                                FM = 0;
                                delay(1000);
                                FM = 1;
                        }
                        if(inputString[7] == '1')  //¼ÓËÙ
                        {
                                g_volume++;
                                if(g_volume>=4)
                                {
                                        g_volume = 4;
                                }
                        }
                        if(inputString[9] == '1')  //¼õËÙ
                        {
                                g_volume--;
                                if(g_volume<=0)
                                {
                                        g_volume = 1;
                                }
                        }                          
                        if(inputString[19] == '1')  //µÆ
                        {
                                FIRE = (FIRE == 1)?0:1;
                        }        

               PutString(returntemp); //·µ»ØЭÒéÊý¾Ý°ü      
               
               newLineReceived = 0;  
                   memset(inputString, 0x00, sizeof(inputString));  
         
            }

            switch(g_carstate)
            {
                        case enSTOP: stop();TR0= 0;break;
                        case enRUN:stop();delay(1);TR0= 0;run();TR0= 1;break;
                        case enLEFT:stop();delay(1);TR0= 0;leftrun();TR0= 1;break;
                        case enRIGHT:stop();delay(1);TR0= 0;rightrun();TR0= 1;break;
                        case enBACK:stop();delay(1);TR0= 0;back();TR0= 1;break;
                        default:stop();TR0= 0;break;
            }
                switch(g_volume)
                {
                        case 1: enMinMin();break;
                        case 2: enMin();break;
                        case 3: enMidle();break;
                        case 4: enMax();break;
                        default:enMidle();break;
                }

使用特权

评论回复
地瓜patch|  楼主 | 2024-3-28 21:46 | 显示全部楼层
本帖最后由 地瓜patch 于 2024-3-28 21:47 编辑

电机驱动程序//Ç°½ø
void run(void)
{
        Left_moto_go ;   //×óµç»úÍùÇ°×ß
        Right_moto_go ;  //ÓÒµç»úÍùÇ°×ß
}

//×óת
void leftrun(void)
{         
         Right_moto_go ;  //ÓÒµç»úÍùÇ°×ß
     Left_moto_Stop ;  //×óµç»úÍ£Ö¹
}

//ÓÒת
void  rightrun(void)
{
     Left_moto_go  ;   //×óµç»úÍùÇ°×ß
         Right_moto_Stop   ;  //ÓÒµç»úÍùÇ°×ß       
}

//ºóÍË
void back(void)
{
   Left_moto_back  ;  // ×óÂÖºóÍË
   Right_moto_back  ;  // ×óÂÖºóÍË
}

//ͣת
void stop(void)
{
  Right_moto_Stop  ;   //ͣת
  Left_moto_Stop   ;   //
}


//×óÐýת
void tleft(void)
{
        Left_moto_back  ;   //×óµç»úºóÍË
        Right_moto_go ;  // ÓÒµç»úÇ°½ø
}

//ÓÒÐýת
void tright(void)
{
        Left_moto_go  ;   //×óµç»úÇ°½ø
        Right_moto_back  ;  //ÓÒµç»úºóÍË
}


/************************************************************************/
//                   PWMµ÷ÖƵç»úתËÙ                                   

//                   ×óµç»úµ÷ËÙ                                       
/*µ÷½Úpush_val_leftµÄÖµ¸Ä±äµç»úתËÙ,Õ¼¿Õ±È*/
void pwm_out_left_moto(void)
{  
     if(Left_PWM_ON)
     {
          if(pwm_val_left<=push_val_left)
              {
                   EN1=1;
              }
              else
              {
                   EN1=0;
          }
          if(pwm_val_left>=32)
              pwm_val_left=0;
     }
     else   
     {
          EN1=0;   //Èô먦ÆôPWMÔòEN1=0 ×óµç»ú Í£Ö¹
     }
}
/******************************************************************/
/*                    ÓÒµç»úµ÷ËÙ                                  */  
void pwm_out_right_moto(void)
{
    if(Right_PWM_ON)
    {
        if(pwm_val_right<=push_val_right)        //20msÄÚµçƽÐźŠ111 111 0000 0000 0000 00
            {
                EN2=1;                                                         //Õ¼¿Õ±È6:20
        }
            else
            {
                EN2=0;
        }
            if(pwm_val_right>=32)
            pwm_val_right=0;
    }
    else   
    {
        EN2=0;          //Èô먦ÆôPWMÔòEN2=0 ÓÒµç»ú Í£Ö¹
    }
}

使用特权

评论回复
地瓜patch|  楼主 | 2024-3-29 22:22 | 显示全部楼层
烧掉的部分驱动器
IMG_20240328_224647.jpg

使用特权

评论回复
商周| | 2024-4-2 11:08 | 显示全部楼层
技术真的在快速发展,遥想10年前,我们做小车都没有这些成品组件就算有也买不起,都是自己手搓出来的,各种不稳定再加疑难杂症;

使用特权

评论回复
地瓜patch|  楼主 | 2024-4-4 18:13 | 显示全部楼层
商周 发表于 2024-4-2 11:08
技术真的在快速发展,遥想10年前,我们做小车都没有这些成品组件就算有也买不起,都是自己手搓出来的,各种 ...

有市场,有利润就有技术发展

使用特权

评论回复
商周| | 2024-4-4 22:08 | 显示全部楼层
地瓜patch 发表于 2024-4-4 18:13
有市场,有利润就有技术发展

现在直接用店家的code了,只要自己写的code写的低于20%一般都能正常运行;

使用特权

评论回复
地瓜patch|  楼主 | 2024-4-8 22:24 | 显示全部楼层
板载驱动电路有问题,验证了,控制是没问题的
IMG_20240408_222233.jpg

使用特权

评论回复
地瓜patch|  楼主 | 2024-4-8 22:27 | 显示全部楼层
插接电路把驱动器单挑出来测试控制正常
IMG_20240408_222251.jpg

使用特权

评论回复
地瓜patch|  楼主 | 2024-4-12 20:53 | 显示全部楼层
本帖最后由 地瓜patch 于 2024-4-12 20:55 编辑

用面包板重新搞了一下驱动电路
把灯改为左转左灯亮,右转右灯亮
IMG_20240412_205053.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1163

主题

11139

帖子

26

粉丝