基于单片机的智能扫地机设计

news2025/2/23 10:39:58

收藏和点赞,您的关注是我创作的动力

文章目录

    • 概要
  • 一、方案设计
  • 二、电路设计与理论分析
    • 2.1 硬件设计总体概要
    • 2.2 电源电路设计
    • 总控制电路的设计
    • 总电路设计
  • 三、PCB板的设计与制作
  • 四、 结论
  • 五、 文章目录

概要

  本文主要设计一个简单的智能扫地机。该扫地机的核心控制元器件是stc89c52,具有编写程序简单,成本普遍较低,功能较多,效率特别高等优点,因此在市场上得到很大的应用。除此之外,该扫地机能够自动避开障碍物、自动利用风机进行吸尘功能。该文介绍了扫地机系统的整体制作过程,它主要由单片机主控电路、单片机最小系统电路、红外光电避障电路、按键启动停止电路以及电机驱动电路组成。通过利用Altium Designer集成电路设计软件,进行原理图以及电路板的设计。其次通过KEIL编程软件为单片机输送程序,来控制整个扫地机的逻辑。

关键字:智能吸尘机;壁障;stc89c52单片机;L298N

一、方案设计

1.3.1 扫地机器人功能
(1)自动吸尘
(2)自动识别障碍
(3)自动转弯
1.3.2 功能参考
(1)电池供电:12V
(2)稳压输出:5v

二、电路设计与理论分析

2.1 硬件设计总体概要

将单片机最小系统电路组,按键启动停止电路,红外光电避障电路,直流无刷电机电路,风扇吸尘电路以及下载端电路围绕着stc89c52组合成一个系统,总框架如下2.1所示。
在这里插入图片描述

图2.1硬件系统总框图

2.2 电源电路设计

所有电子产品中,电源的起着关键的作用,如同一座房子的根据,只有电源稳定才能为后续提供更多功能作保证,输出的纹波趋向平滑则性能才能良好工作。该智能吸尘机人采用L298N电机驱动模块中的内置的L7805CV稳压芯片来获得稳定的5V电压.通过L298N和L7805CV主控芯片和稳压芯片结合,充分减小因电源不稳定的干扰,提高整体驱动电路的稳定。
L7805CV具备众多的高质量性能:相关抵偿的元器件可以省略不接;在内部设置了限流庇护的电路,它可以避免负载短路而导致损坏元器件;在内部还集成了功耗限制电路,可以阻拦损坏输出启动的晶体管。L7805CV可以输出4.75-5.25V的电压,静止状态的电流大约在4.2-8mA,最大的输出电流约在1.5A,纹波抑止比大概在78dB。其采用TO-220的封装形式,如下图2.2所示,从左到右分别为引脚1是输入端,引脚2是接地端,引脚3是输出端。

总控制电路的设计

① VCC,EA/Vpp的引脚端口,联通5V电源;
② P32,P33控制启动停止按键;
③ P16、P17分别控制左右红外避障探头;
④ P30RXD,P31TXD为下载程序引脚;
⑤ P10、P11、P12、控制电机A驱动引脚ENA,AIN1和AIN2,P13、P14、P15、控制电机B驱动引脚BIN1,BIN2和ENB;
⑥ VSS即,接地引脚GND;
⑦ P20为吸尘小风扇控制信号;
⑧ 第十八和第十九号引脚为晶振连接端口
⑨ 第九号脚位为按键复位连接端口

总电路设计

总共分为七大模块L298N电机驱动模块,两个红外避障模块,复位电路模块,晶振电路模块,下载端口模块,启动停止按键模块,风扇吸尘模块。如下图2.5总控制电路图所示。
在这里插入图片描述

图2.5总控制电路

三、PCB板的设计与制作

Altium Designer拥有许多好用的功能,包含了原理图,PCB,3D仿真PCB,输出word文档等功能。它不仅拥有许多原器件库,还能够自己建立属于自己的原器件库,大大提高了电路设计的效率与质量。下面介绍以下主要元器件封装及整个PCB绘制过程。
1)STC89C52的DIP-40封装
首先建立一个原器件库并保存,可以利用工具选项中的器件导向,然后选择DIP的模式,输入单片机有引脚横向之间的距离为15.24毫米左右,列向之间的距离为2.54毫米左右;焊盘直径为15.24毫米左右以及2.54毫米左右,过孔的直径为33mil,采取的层为Multi-layer,线的宽度为8mil。这是一种快捷绘制封装的方法,不过一般适用于市面上比较典型的封装
在这里插入图片描述

四、 结论

便采用PCB的形式节省了众多电线。焊接过程中需要注意的是虚焊的问题,一个元器件未连接都可能导致失败。就这样,焊接过程中多注意,多加小心问题也边轻易可以解决。单片机中程序的编写尤为重要,开始自己对于C语言特别惧怕,于是去查看一些网络教程,渐渐地明白了一个单片机中程序所包含基本上都有头文件,端口声明,函数声明,子函数,主函数等。逐渐了解后开始查阅相关扫地机的程序,然后自己尝试着编写。开始编写的一塌糊涂,各种小问题不断,不过经过一段时间的学习不断地调试,逐渐有了清晰的思路。虽然有了清晰的思路,不过真正运行起来又是一大问题,编写过程中细节特别主要,输入法中英文不能混淆,冒号不能忘记,语句结构不能用错等各种细节,把这些都做好,最终便能解决各种问题。在硬件和程序都解决情况下,并不意味着就结束了,还有整个扫地机调试的过程。在运行过程中又会发现各种问题,比如避障能力弱,于是又去寻找解决方案,调整感应器位置,在不同环境测试。还有一个比较严重的问题是吸尘能力弱,也是当初选择小风机未能预测它的吸尘能力。整个产品设计之初到结束都是一个挑战,不断碰见问题,不断地去解决,让自己在各方面都有了一定的提升,明白一个产品的诞生不是这么容易的,想要做好一个产品,需要不断尝试,不断改进

五、 文章目录

目 录
1、概述 1
1.1 国内产品研究背景 1
1.2 研究的目的和意义 1
1.3 课题的主要内容 2
1.3.1 扫地机器人功能 2
1.3.2 性能指标 2
1.3.3 论文的主要内容 2
2、电路设计与理论分析 3
2.1 硬件电路设计总概要 3
2.2 电源电路原理 4
2.3 总控制电路 4
2.3.1 STC89C52单片机简介 4
2.3.2 总控制电路的设计 6
2.4 复位电路模块 7
2.5 晶振电路模块 8
2.6 启动停止按键模块 9
2.7 下载口 9
2.8 风扇吸尘电路 9
2.9光电传感模块电路设计 11
2.10电机驱动电路设计 12
3、PCB板的设计与制作. 17
3.1 PCB板的设计 17
3.2 PCB板的制作 19
4、电路焊接与调试 20
4.1 电路焊接 20
4.2 红外避障调试 20
4.3 风扇吸尘电路调试 20
5、系统程序的设计 21
5.1 C语言与汇编语言的优缺点 21
5.2 系统程序设计 23
5.2.1 程序的设计 23
5.2.2 程序的初始化 24
5.2.3 延时子程序 25
5.2.4 中断函数 25
5.2.5 子函数 26
5.2.6主函数 28
6、整机调试与功能介绍 29
6.1 存在的问题与解决方案 29
6.1.1 传感器缺陷 29
6.1.2 电池缺陷 29
6.1.3 吸尘器功率缺陷 29
7、总结 30
参考文献 31
致谢 32
附 录 33

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BUUCTF ningen 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 人类的科学日益发展,对自然的研究依然无法满足,传闻日本科学家秋明重组了基因序列,造出了名为ningen的超自然生物。某天特工小明偶然截获了日本与俄罗斯的秘密通信,文…

【实战Flask API项目指南】之一 概述

实战Flask API项目指南之 概述 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握Flask在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 小菜是一个Python编程爱好者,他目前…

Angular组件生命周期详解

当 Angular 实例化组件类 并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期一直伴随着变更检测,Angular 会检查数据绑定属性何时发生变化,并按需更新视图和组件实例。当 Angular 销毁组件实例并从 DOM 中移除它渲染的模板时…

Proteus仿真--基于51单片机的按键选播电子音乐(仿真文件+程序)

本文主要介绍基于51单片机的按键选播电子音乐(完整仿真源文件及代码见文末链接) 本设计中包括一个按键和一个喇叭,点击按键可以切换选择播放不同的音乐 仿真图如下 其中点击按键K1进行音乐选播选择切换 仿真运行视频 Proteus仿真--基于5…

C++二分查找算法的应用:将数据流变为多个不相交区间

本文涉及的基础知识点 二分查找 题目 给你一个由非负整数 a1, a2, …, an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。 实现 SummaryRanges 类: SummaryRanges() 使用一个空数据流初始化对象。 void addNum(int val) 向数据…

Redis安装与配置及常用命令使用讲解

目录 一、Redis简介 二、Redis安装和配置 2.1 Linux版 2.2 Windows版 三、Redis命令 3.1 通过命令操作Redis 3.2 String 字符串 3.3 Hash 哈希 3.4 List 列表 3.5 Set 有序集合(sorted set) 一、Redis简介 Redis是一个开源的内存数据结构存储…

闲谈自适应借贷式拥塞控制

首先,借贷式拥塞控制 为什么能收敛到公平。sender 遵守算法约定的前提下给出一个原则和两个逻辑: 小 cwnd 的流在用大的但越来越小的 burst 率抢,大 cwnd 的流在用小的但越来越大的 burst 率让,最终达到平衡,不抢也不…

vite vue3打包时出现TS类型错误解决最快速解决方案

快速解决看这里或者直接到 解决 packge.json中将build的vue-tsc命令删除 问题描述 在执行 npm build时报错 node_modules/.pnpm/element-plus2.3.4_vue3.3.7/node_modules/element-plus/es/components/tabs/index.d.ts:106:14106 readonly stretch: boolean;~~~~~~~The …

第六章 包图组织模型|系统建模语言SysML实用指南学习

仅供个人学习记录 概述 包是容器的一个例子。包中的模型元素称为可封装元素,这些元素可以是包、用例和活动。由于包本身也是可封装元素,因此可以支持包层级。 每个有名称的模型元素也必须是命名空间的一份子,命名空间使得每个元素均能够通过…

KDChart2.8编译过程-使用VS+CMake-MSVC2017

文章目录 一、下载KDChart源文件二、只用Visual Studio(有缺陷)1.配置系统环境变量2.使用Visual Studio中的Qt集成功能3. 打开sln解决方案编译生成相关设置(以Release为例) 三、CMakeVisual Studio(完美)1.…

信息泄露--

大唐电信AC简介 大唐电信科技股份有限公司是电信科学技术研究院(大唐电信科技产业集团)控股的的高科技企业,大唐电信已形成集成电路设计、软件与应用、终端设计、移动互联网四大产业板块。 大唐电信AC集中管理平台存在弱口令及敏感信息泄漏漏…

webgoat(A2) Broken Authentication

身份验证绕过 身份验证绕过以多种方式发生,但通常会利用配置或逻辑中的某些缺陷。篡改以达到正确的条件。 隐藏输入 最简单的形式是依赖于网页/DOM 中的隐藏输入。 删除参数 有时,如果攻击者不知道参数的正确值,他们可能会从提交中完全删…

excel利用正则匹配和替换指定内容

上班中, 突然接到电话, 屋里的上司大人发来个excel, 说要替换里面x-x-xxx列的内容为x栋x单元xxx. 大致表格如下, 原表格我就不发了 身为程序猿的我, 肯定第一就想到了 正则! 打开excel-开始-查找和替换, 我擦, 只能完全匹配和替换 比如一次只能替换1-1- -> 为1栋1单元 1-2…

牛客项目(五)-使用kafka实现发送系统通知

kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…

不使用屏幕在树莓派4B安装Ubuntu22.04桌面版(64位)

因为时间有限只说一下基本路径: 1首先安装Ubuntu22.04server版本 2设置服务器版本的SSH和WiFi 3通过服务器版本安装Ubuntu-desktop升级到Ubuntu22.04桌面版 4在桌面版上安装远程控制软件:xrdp; 5使用Windows自带的远程桌面连接访问Ubuntu 6完成

Linux -----------------------Shell 流程判断

什么是shell Shell是操作系统的用户界面,负责接收和解释用户的命令,并将这些命令转化为操作系统内部能够理解的指令,然后执行相应的操作。Shell还允许用户编写脚本,以自动化和批处理任务,从而提高效率。在Linux系统中&…

【Nginx38】Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析

Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析 继续我们的 SSL 模块的学习。上回其实我们已经搭建起了一个 HTTPS 服务器了,只用了三个配置,其中一个是 listen 的参数,另外两个是指定密钥文件的地址…

【LeetCode刷题-排序】--912.排序数组

912.排序数组 方法&#xff1a;使用插入排序 class Solution {public int[] sortArray(int[] nums) {int len nums.length;//循环不变量:使nums[i]插入区间[0,i),使之成为有序数组for(int i 1;i<len;i){//先缓存这个元素&#xff0c;然后之前的元素逐个后移&#xff0c;…

LeetCode----52. N 皇后 II

 题目 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。 示例 1: 输入:n = 4 输出:2 解释:如上图所示,4 皇后问题存在两个不同的解法。 示例 2: 输入:n = …

【CSDN 每日一练 ★★☆】【数学】旋转图像

【CSDN 每日一练 ★★☆】【数学】旋转图像 数学 数组 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 示例 1&a…