news 2026/5/3 16:14:30

用L9110S驱动模块和51单片机,从零搭建一辆能前后左右跑的小车(附完整代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用L9110S驱动模块和51单片机,从零搭建一辆能前后左右跑的小车(附完整代码)

用L9110S驱动模块和51单片机打造智能小车全攻略

第一次看到自己组装的小车在地面上灵活地前进、后退、转弯,那种成就感是难以言喻的。作为电子爱好者入门项目,智能小车制作不仅能让你掌握51单片机的基本编程,还能深入理解电机驱动原理。本文将带你从零开始,用最常见的L9110S驱动模块和STC89C52单片机,打造一辆能完成基本运动的小车。

1. 项目准备与硬件认识

1.1 所需材料清单

在开始前,确保你已准备好以下组件:

  • 核心控制器:STC89C52单片机开发板(或其他51系列)
  • 电机驱动:L9110S驱动模块(至少1个,建议2个)
  • 动力部分:直流减速电机(2个,带轮子)
  • 电源系统:18650锂电池两节(带电池盒)
  • 连接材料:杜邦线若干、锡焊工具
  • 车体结构:亚克力小车底盘(或自制木板底盘)

小技巧:初次尝试建议购买现成的小车底盘套件,可以省去机械结构调试的时间。

1.2 L9110S驱动模块详解

L9110S是一款专为控制和驱动电机设计的H桥集成电路,主要特点包括:

特性参数说明
工作电压2.5V-12V适合多种电机
峰值电流800mA驱动小型电机足够
控制方式双路H桥可独立控制两个电机
封装形式SOP8模块化设计方便使用

模块引脚功能示意图:

VCC -- 电源正极 (3.3-5V) GND -- 电源负极 A-1A -- 电机A控制线1 A-1B -- 电机A控制线2 B-1A -- 电机B控制线1 B-1B -- 电机B控制线2

注意:虽然开发板上有5V输出,但建议使用独立电源为L9110S供电,避免单片机电源不稳定导致复位。

2. 硬件连接与电路搭建

2.1 电机与驱动模块连接

正确的接线是项目成功的关键。按照以下步骤操作:

  1. 电机焊接

    • 将左侧电机两根线焊接到L9110S的A-1A和A-1B
    • 将右侧电机两根线焊接到B-1A和B-1B
    • 建议:用不同颜色线区分,方便后续调试
  2. 电源系统连接

    • 锂电池正极 → L9110S的VCC
    • 锂电池负极 → L9110S的GND → 单片机GND(共地)
  3. 控制信号连接

    • L9110S的A-1A → 单片机P3.4
    • L9110S的A-1B → 单片机P3.5
    • L9110S的B-1A → 单片机P3.2
    • L9110S的B-1B → 单片机P3.3
// 引脚定义示例 sbit LEFT_MOTOR_PIN1 = P3^4; // 左电机控制线1 sbit LEFT_MOTOR_PIN2 = P3^5; // 左电机控制线2 sbit RIGHT_MOTOR_PIN1 = P3^2; // 右电机控制线1 sbit RIGHT_MOTOR_PIN2 = P3^3; // 右电机控制线2

2.2 电机转向测试

在组装完整车前,建议先测试电机转向是否正确:

void testMotors() { // 左电机正转测试 LEFT_MOTOR_PIN1 = 0; LEFT_MOTOR_PIN2 = 1; delay(1000); // 左电机反转测试 LEFT_MOTOR_PIN1 = 1; LEFT_MOTOR_PIN2 = 0; delay(1000); // 右电机同理... // 停止所有电机 LEFT_MOTOR_PIN1 = LEFT_MOTOR_PIN2 = 0; RIGHT_MOTOR_PIN1 = RIGHT_MOTOR_PIN2 = 0; }

如果电机转向与预期相反,只需交换控制线的接线顺序即可。

3. 运动控制程序设计

3.1 基础运动函数封装

良好的代码结构会让后续扩展更容易。创建motor.h头文件声明以下函数:

// 电机初始化 void Motor_Init(); // 基础运动控制 void Move_Forward(); // 前进 void Move_Backward(); // 后退 void Turn_Left(); // 原地左转 void Turn_Right(); // 原地右转 void Stop_Motors(); // 停止

对应的motor.c实现:

#include "motor.h" #include "reg52.h" // 引脚定义 sbit LEFT_A = P3^4; sbit LEFT_B = P3^5; sbit RIGHT_A = P3^2; sbit RIGHT_B = P3^3; void Motor_Init() { LEFT_A = LEFT_B = RIGHT_A = RIGHT_B = 0; } void Move_Forward() { LEFT_A = 0; LEFT_B = 1; // 左电机正转 RIGHT_A = 0; RIGHT_B = 1; // 右电机正转 } void Move_Backward() { LEFT_A = 1; LEFT_B = 0; // 左电机反转 RIGHT_A = 1; RIGHT_B = 0; // 右电机反转 } void Turn_Left() { LEFT_A = 1; LEFT_B = 0; // 左电机反转 RIGHT_A = 0; RIGHT_B = 1; // 右电机正转 } void Turn_Right() { LEFT_A = 0; LEFT_B = 1; // 左电机正转 RIGHT_A = 1; RIGHT_B = 0; // 右电机反转 } void Stop_Motors() { LEFT_A = LEFT_B = RIGHT_A = RIGHT_B = 0; }

3.2 运动组合与延时控制

通过组合基础运动函数和延时,可以实现更复杂的运动轨迹:

void Square_Path() { for(int i=0; i<4; i++) { Move_Forward(); delay(1000); // 前进1秒 Turn_Right(); delay(500); // 右转0.5秒 } Stop_Motors(); }

进阶技巧:使用定时器中断实现更精确的时间控制,避免delay函数占用CPU。

4. 系统优化与扩展

4.1 电源管理优化

长时间运行时,电源稳定性至关重要:

  • 为单片机单独添加0.1uF去耦电容
  • 电机电源回路增加100uF电解电容
  • 考虑使用开关稳压模块(如LM2596)提供稳定5V电压

4.2 PWM速度控制

通过PWM调节电机速度,使小车运动更平滑:

void Set_Motor_Speed(uint8_t left, uint8_t right) { // 需要配置定时器产生PWM信号 // 左电机速度控制 PWM_LEFT = left; // 右电机速度控制 PWM_RIGHT = right; }

配置定时器代码示例:

void Timer0_Init() { TMOD &= 0xF0; // 设置定时器模式 TMOD |= 0x01; // 定时器0工作方式1 TH0 = 0xFF; // 初始值 TL0 = 0x9C; ET0 = 1; // 开启定时器中断 EA = 1; // 开启总中断 TR0 = 1; // 启动定时器 }

4.3 扩展思路

完成基础功能后,可以考虑以下扩展:

  • 增加红外或超声波避障功能
  • 通过蓝牙模块实现手机遥控
  • 添加巡线传感器实现自动循迹
  • 扩展编码器实现精确里程计算
// 蓝牙控制示例框架 void Bluetooth_Control() { if(received_data == 'F') Move_Forward(); else if(received_data == 'B') Move_Backward(); // 其他指令处理... }

调试小车时常见问题:

  1. 电机不转 → 检查电源和接地
  2. 只有一个电机工作 → 检查信号线连接
  3. 转向相反 → 交换电机两根控制线
  4. 单片机频繁复位 → 加强电源滤波
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 16:13:01

如何在Windows电脑上轻松安装Android应用:APK-Installer完整指南

如何在Windows电脑上轻松安装Android应用&#xff1a;APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows电脑无法直接运行Android应用…

作者头像 李华
网站建设 2026/5/3 16:11:32

Taotoken 的模型广场如何帮助开发者根据场景与预算选择合适的大模型

Taotoken 的模型广场如何帮助开发者根据场景与预算选择合适的大模型 1. 模型广场的核心功能 Taotoken 模型广场为开发者提供了集中查看和比较不同大模型能力的平台。通过统一的界面&#xff0c;开发者可以快速浏览当前支持的模型列表&#xff0c;包括各模型的基础信息、能力特…

作者头像 李华