这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 为遥控小车巧添功能

共1条 1/1 1 跳转至

为遥控小车巧添功能

助工
2026-07-30 15:01:18     打赏

在众多的遥控小车中,图1所示的这款是价格最低且功能最少的。

它采用电池供电,电压为3V。由于只有一个电机进行驱动,在遥控电路的控制下,只能作前进、后退及停止操作。

image.png

1 遥控小车

遥控小车的电路结构见图2所示,通过遥控发送模块的2个按键来控制小车前进或后退。

image.png

2 电路结构

 

为了丰富其功能,可为其添加运动方向指示灯以指示其前进与后退。

由于电机是由遥控接收模块来供电,小车的正、反转控制是靠接收模块改变供电的极性来实现的,故在电机的供电线路上并接2个方向相反的LED灯即可指示运动的方向。当然,2LED都需要串如1K的电阻来限流,以防烧毁LED灯。

3是添加一个LED模块的测试发送,经测试思路正确,在电机转动时能指示运行方向。

image.png

3 添加运动方向指示灯

在小车运行中,进行有效的避障处理是十分必要的。否则。即使是在人工的操控下,也易出现碰撞问题。

为此,可以在小车的前、后两端添加避障模块来解决该问题。

避障模块的外观如图4所示,其电路见图5所示。

image.png

4避障模块

image.png

5避障电路

此外,若将避障模块的输出信号与蜂鸣器模块相连接,则可起到方向障碍提升的作用。

image.png

6 蜂鸣器模 

有了避障模块该如何控制电机呢?

那就是在电机的供电线上,传入一个继电器常闭触点,一旦避障模块发出信号,就控制继电器打开继电器触点以使电机停止转动。

这里之所以使用继电器,是因为电机的供电线路是允许极性变换的,一般的开关电路不好控制。

在使用2路避障模块的情况下,为进行继电器的控制,可通过一个与门电路将2个输入信号合并成一个继电器控制信号。

继电器模块的外观及引脚功能见图7所示:

image.png

7 继电器模块 

在添加避障功能后,其形式如8所示,经测试能达到避障效果。

image.png

添加避障功能 

前面小车一侧进行了功能补充,而在遥控模块的发送端,也可进行相应的功能改造。

其着手处就是2个控制键,将它由手控改为兼有手控和程控2种模式。

具体的方法就是将按键的控制端引出,可由外部的MCU功能模块进行控制。

这样,在MCU的控制下就可对小车进行行进方向和时长的控制,而时长则可对应行进距离的控制。

为此,在程控模式下小车就变成了一个在多个工位间传送工件的机器人,其整体电路结构如图9所示

image.png

10 整体电路结构

演示视频1:避障


通过前面的添加,尽管其功能有所改善,它还有提升的空间。前面的改善只是添加了一些功能模块,要想有更大的提升,则需将MCU功能模块移到小车上。

此外,为了驱动直流电机,需配置驱动模块,见图11所示。

image.png

11 驱动模块 

在使用RA2T1开发板进行PWM调节的情况下,其器件连接见如图12所示。

image.png

12 PWM调速 

1.调速控制:

MCU的控制下,通过占空比的变化即可调整小车的转速,其相关的程序内容为:

占空比设置函数:

void GPT_PWM_SetDuty(uint8_t duty)
{
    timer_info_t info;
    R_GPT_InfoGet(&g_timer2_ctrl, &info);
    uint32_t current_period_counts = info.period_counts;
    uint32_t duty_cycle_counts = (uint32_t)(((uint64_t)current_period_counts * duty) / 100);
    R_GPT_DutyCycleSet(&g_timer2_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB);
}

其主程序为:

void hal_entry(void)
{
	uint8_t duty = 0;
	err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);   
        assert(FSP_SUCCESS == err);	
        err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
        assert(FSP_SUCCESS == err);	
	R_GPT_Open(&g_timer2_ctrl, &g_timer2_cfg);
        R_GPT_Start(&g_timer2_ctrl); 
	duty=10;
        while(1)
	{		
		   if(R_BSP_PinRead(BSP_IO_PORT_02_PIN_00)==BSP_IO_LEVEL_LOW)
		   {               
                         duty=(duty+3)%40;
			 R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
			 while(R_BSP_PinRead(BSP_IO_PORT_02_PIN_00)==BSP_IO_LEVEL_LOW);
		   }	
                   GPT_PWM_SetDuty(duty);				
                   R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MILLISECONDS);			
        }
}

经程序的编译和下载,在按键的控制下,即可看到明显的转速变化。

演示视频2PWM调速


2.手机控制:

尽管遥控小车可控制运动的方向,但毕竟难于进行数字化控制。

通过串口与蓝牙模块的连接,可实现同手机的数据交换。

这里选取的蓝牙模块为KT6368A,其串口通讯的波特率为115200bps,其连接形式如图13所示。

image.png

13 连接形式

以手机数据控制转速的主程序为:

void hal_entry(void)
{
    uint8_t duty = 0;
    err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
    assert(FSP_SUCCESS == err);	
    err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 2);
    assert(FSP_SUCCESS == err);	
    R_GPT_Open(&g_timer2_ctrl, &g_timer2_cfg);
    R_GPT_Start(&g_timer2_ctrl); 
    duty=10;
    while(1)
    {	
	  if(uart_receive_complete_flag)
          {
              uart_receive_complete_flag = false;
              if(uart_rx_buffer[0] == 0x55)
              {
			duty=uart_rx_buffer[1];
		        printf("%x\n", m);
	      } 
              err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer,2);
              assert(FSP_SUCCESS == err);
	  }
          GPT_PWM_SetDuty(duty);				
          R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MILLISECONDS);				  
    }
}

在运行程序的情况下,在手机端可见到该蓝牙设备的存在,见图14所示。

image.png

14 发现蓝牙设备 

在连接该蓝牙设备后,发送相应的控制码可控制电机的转速,数据发送界面见图15所示,运行效果见图16所示。

image.png

15 发送控制码

image.png

16 运行效果

演示视频3:蓝牙控制




关键词: 遥控小车    

共1条 1/1 1 跳转至

回复

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