88、基于STM32单片机学习型搬运机器人四自由度机械臂机械手遥感控制设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

news2024/11/24 10:42:41

单片机主芯片选择方案
方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的4K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护我们的劳动成果。再者,AT89C51目前的售价比8031还低,市场供应也很充足。AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需lOms。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。PO口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。
方案二:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字节,本次设计足够,内部高达20K字节的SRAM。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STM32系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STM32为更合理的选择。

STM32STM32概述
          STM32系列是为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:“增强型”STM32F103系列和“基本型”STM32F101系列。增强型系列的时钟频率能达到72MHz,是同类产品中频率最高的;基本型的时钟频率为36MHz,用16位产品一样的价格得到比16位产品更大的性能,是16位产品的最好选择。两个系列都有内置的32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率为72MHz时,从闪存执行代码来看,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz[6]。
以STM32103C8T6单片机为处理器,该单片机为32位处理器。内核为Cortex-M3,其并行总线结构,嵌套中断向量控制单元,调试系统和它标准的存储映射。嵌套中断向量控制器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3处理器中一个比较关键的组件,它为基于Cortex-M3的微控制器提供了标准的中断架构和优秀的中断响应能力,为超过240个中断源提供专门的中断入口,而且可以为每个中断源赋予单独的优先级。采用NVIC可以达到非常快的中断响应速度,从收到中断请求到执行中断服务的第一条指令仅需12个周期。这种极快的响应速度一方面得益于Cortex-M3内核对堆栈的自动处理机制,这种机制是通过固化在CPU内部的微代码实现的。另一方面,在中断请求连续出现的情况下,NVIC使用一种称为“尾链”的技术,使连续而来的中断可以在6个时钟周期内得到服务。在中断的压栈阶段,更高优先级的中断可以不耗费任何额外的CPU周期就能完成嵌入低优先级中断的动作。具体的细节后面我会继续总结的。用户可以通过设置CPU自动进入低功耗状态,而使用中断来将其唤醒,CPU在中断时间来临之前会一直保持睡眠状态[7]。
  Cortex-M3的CPU支持两种运行模式:线程模式(Thread Mode)与处理模式(Handler Mode)并且需要注意的是,这两种模式都拥有各自独立的堆栈。这种设计使得开发人员可以进行更为精密的程序设计,对实时操作系统的支持也就更好了。Cortex-M3处理器还包含了一个24位可自动重装载定的定时器,可以为内核(RTOS)提供一个周期中断。
在指令集方面,ARM7和ARM9都有两种指令集(32位指令集和16位指令集),而Cortex-M3系列处理器支持Thumb-2指令集。由于Thumb-2指令集融合了Thumb指令集和ARM指令集,使得32位指令集的性能和16位指令集的代码密度之间取得了平衡[5]。 专业嵌入式、单片机技术实训。而且,ARM Thumb-2 专门为C/C++编译器设计,这就意味着Cortex-M3系列处理器的开发应用可以全部在C语言环境中完成。
  STM32微控制器的推出标志着ST公司在两条产品主线(低价位主线和高性能主线)上迈出了重大一步。STM32最初发布时有14个不同型号,分为两个版本:最高CPU时钟为72MHZ的“增强型”和最高CPU时钟为36MHZ的“基本型”。这些不同STM32型号里内置的Flash最大可达128KB,SRAM最大为20KB,在STM32发布之初,配置更大Flash,RAM和更复杂外设的版本就已经在规划之中了。不管是什么版本,什么型号的STM32器件,它们在引脚功能和应用软件上是兼容的。这就使得开发人员在使用STM32系列微控制器时,不必改动PCB就可以根据需要随意更换器件型号。乍一看STM32的设备配备,与往日熟悉的51单片机倒有几分相似。一般,STM32都会配备常见外设,诸如多通道ADC,通用定时器,I2C总线接口,SPI总线接口,CAN总线接口,USB控制器,实时时钟RTC等。但是,它的每一个外部设备都具有独特之处。例如,12位精度的ADC具备多种转换模式,并带有一个内部温度传感器,带有双ADC的STM32器件,还可以使两个ADC同时工作,从而衍生出了更为高级的9种转换模式;STM32的每一个定时器都具备4个捕获比较单元,而且每个定时器都可以和另外的定时器联合工作以生成更为精密的时序;STM32有专门为电机控制而设的高级定时器,带有6个死区时间可编程的PWM输出通道,同时其带有的紧急制动通道可以在异常情况出现时,强迫PWM信号输出保持在一个预订好的安全状态;SPI接口含有一个硬件CC8单元,支持8位字节和16位半字数据的CC8计算。在对SD或MMC等存储介质进行数据存取时相当有用。而且,STM32还包含了7个DMA通道。没恶搞通道都可以用来在设备与内存之间进行8位,16位,32位数据的传输。每个设备都可以向DMA控制器请求发送或者接收数据。STM32内部总线仲裁器和总线矩阵将CPU数据接口和DMA通道之间的连接大大的简化了,这就意味着DMA通道单元是很灵活的其使用方法简单,足以应付微控制器应用中常见的数据传输要求。

一、硬件方案

硬件构成:本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、四路舵机(搭配机械臂四个自由度控制)、2路摇杆(四个方向)、按键组成。


二、设计功能

1、该系统由2个摇杆表达四个方向,对应驱动控制四个舵机的运行,搭配机械臂结构能够表达左右云台转动、前后机械臂运动、抓放轻物品及上下运动功能。
2、该系统分为“手动模式”、“学习模式”、“自动模式”,通过按键K1进行切换模式。上电默认是手动模式。
3、“手动模式”:通过2路摇杆左右、前后操作,控制四个舵机运动,搭配机械臂并能够抓取运输轻物品;摇杆操作时机械臂相应动作,不操作时静止不动。
4、“学习模式”:学习过程用到手动模式的操作,即通过2个摇杆的四个方向,分别能够控制四个舵机搭配机械臂运行。运动到某个需要记录的位置时,按键K2按下对当前四个自由度的舵机状态进行记录,最多记录20条动作,一般7个动作就能够表达出一个抓取、运输、投放等动作功能。并且对学习的动作步骤进行显示统计,方便在自动模式下进行运行。
5、“自动模式”:在学习模式学习后,进入该模式,(如果没有做过学习,无法进入自动模式)机械臂自动执行学习模式下学习的动作,比如学习模式中学习了,抓取、运输、投放等功能;该自动模式自动按照学习的运行动作反复抓取、运输、投放。并且能够显示当前操作步骤是学习模式下学习的第几步。
6、“复位模式”为隐含模式,任何情况下按键K3按下,能够恢复多节到原始位置。即按下K3后,四个舵机自动运行到上电时初始位置,然后退出复位模式返回到手动控制模式。
 

三、实物图

 

 

四、原理图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。


 

五、PCB图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。


 

 

六、程序源码  

Keil 5是美国Keil Software公司出品的51和STM32系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。


 

 

资料包括:

 

 

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。

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

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

相关文章

VR智慧景区:数字文旅新模式,你体验了吗?

传统的旅游行业如果想要破局,就势必要发展线上业务,VR智慧文旅就是一个很好的发展选择。随着5G技术的发展,我们该如何进一步的探索数字文旅的新趋势、新机遇和新发展呢? VR智慧景区可以帮助文旅行业实现全景漫游、实景导航、电子沙…

UG\NX二次开发 获取基准面的点和方向

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取基准面的点和方向,包括坐标系上的基准面。 效果: 代码: #include "me.hpp" #include <stdio.h> #include <string.h> #include <uf.h> #include <uf_ui.h&…

《CAPL编程语言》来啦!!!

目标人群 想入门CAPL编程的 想提高CAPL编程能力的 想系统性学习CAPL编程语言的 时长 30小时 报名方式 联系作者微信 内容 &#xff01;&#xff01;&#xff01;始于CAPL&#xff0c;又不止于CAPL&#xff01;&#xff01;&#xff01; 这里不只有CAPL语法介绍&#xf…

力扣 216. 组合总和 III

题目来源&#xff1a;https://leetcode.cn/problems/combination-sum-iii/description/ C题解&#xff1a;由 进入for循环进行回溯&#xff0c;到 ......&#xff0c;以此类推。 递归法&#xff1a; 确定递归函数参数&#xff1a;要求集合的个数k&#xff0c;目标和n&#x…

ES6模块化的基本语法

ES6模块化的基本语法 1、默认导出与默认导入2、按需导出和按需导入3、直接导入并执行模块中的代码 1、默认导出与默认导入 默认导出的语法 export default 默认导出的成员示例 let n110let n220function show(){}export default{n1,show }默认导入的语法 import 接收名称 f…

基于Java学生事务处理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

vue2【监听器】

目录 1&#xff1a;监听器的作用 2&#xff1a;语法格式 3&#xff1a;示例 4&#xff1a;应用场景 4.1&#xff1a;axios发送请求 4.2&#xff1a;JQuery发送请求 5&#xff1a;监听器的格式&#xff1a; 5.1&#xff1a;函数格式的监听器&#xff1a; 缺点一&#x…

MySQL数据库、表、用户的基础操作

根据两个实例进行练习 1&#xff09;创建库 mysql> create database Market; Query OK, 1 row affected (0.00 sec) 2&#xff09;创建表 mysql> create table customers (-> c_num int(11) PRIMARY KEY AUTO_INCREMENT,-> c_name varchar(50) ,-> c_contact…

F103串口和DMA配合使用总结

常规的串口使用是这样的&#xff1a;先配置基本的GPIO和串口&#xff0c;然后调用发送和接收函数&#xff0c;如果需要中断&#xff0c;可以根据情况配置发送中断和接收中断。 比如&#xff1a; //PB10:UT3_TX //PB11:UT3_RX void lcd_usart_init(uint32_t bound) {//GPIO端口…

Linux内核模块开发 第 7 章

The Linux Kernel Module Programming Guide Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang译 断水客&#xff08;WaterCutter&#xff09;源 LKMPG 7 /proc 文件系统 Linux 中有一个额外的机制——/proc file system&#xff0c;用于支持内核…

Linux学习之分区挂载

VMWare 16虚拟机添加一块硬盘 点击“硬盘&#xff08;SCSI&#xff09;”&#xff0c;在弹出来的窗口点击“硬盘&#xff08;SCSI&#xff09;”之后添加。 选择硬盘之后&#xff0c;点击下一步。 虚拟磁盘类型&#xff0c;就选择默认的SCSI(S)。 选择“创建新虚拟机磁盘…

SpringBoot整合minio笔记

SpringBoot整合minio笔记 物料准备&#xff1a; 1.引入minio以及 spring-file-storage 相关依赖 2.配置yml 3.配置 FileRecorder实现类 4.启用EnableFileStorage注解 5.测试上传 引入minio以及 spring-file-storage 相关依赖 minio是一个OSS云存储服务&#xff0c;mini…

web 页面布局:(二)float 浮动布局

web 页面布局&#xff1a;&#xff08;二&#xff09;float 浮动布局 页面宽度使用样式居中 使用浮动浮动元素外的剩余空间使用浮动的高度细节 页面宽度 在很早很早的时期&#xff0c;各大网站的底部都会有这么类似的一句声明&#xff1a;最佳分辨率 sss x ttt&#xff0c;比如…

web前端设计师的具体职责

web前端设计师的具体职责 web前端设计师负责将设计图转化成页面&#xff0c;并实现页面动态效果&#xff0c;并配合后端程序员嵌入数据。下面是学习啦小编整理的web前端设计师的具体职责。 web前端设计师的具体职责1 职责&#xff1a; 1.负责网站页面的整体美工创意、设计与…

redis 笔记

文章学习参考&#xff1a;Redis 教程 | 菜鸟教程 (runoob.com) 1、安装并执行 1.1 安装 下载地址&#xff1a;https://github.com/tporadowski/redis/releases 点击下面的压缩文件下载&#xff0c;版本不一定是这个。 1.2 执行redis 打开cmd窗口&#xff0c;跳转到redis解压的…

void QWidget::stackUnder(QWidget *w)

Places the widget under w in the parent widgets stack. To make this work, the widget itself and w must be siblings. 在父窗口的栈中&#xff0c;放置widget在w下面。 为了生效&#xff0c;widget和w必须是兄弟。 什么意思呢&#xff1f; widget和w的父窗口必须是同一个…

计算机与网络发展的7个阶段【图解TCP/IP(笔记一)】

文章目录 计算机与网络发展的7个阶段批处理分时系统计算机之间的通信计算机网络的产生互联网的普及以互联网技术为中心的时代从“单纯建立连接”到“安全建立连接” 计算机与网络发展的7个阶段 批处理 所谓批处理&#xff0c;是指事先将用户程序和数据装入卡带或磁带&#xf…

从小白到大神:可能是最全的前端学习大纲

导读 俗话说得好&#xff1a;“不谋全局者不足谋一域。”前端开发是一个广泛而复杂的领域&#xff0c;需要掌握多方面的知识。 在之前的文章中&#xff0c;我们介绍了计算机领域的各种方向&#xff0c;以及前端在公司中的地位和日常工作内容&#xff0c;相信你对前端开发已经…

冰冰学习笔记:初识网络

欢迎各位大佬光临本文章&#xff01;&#xff01;&#xff01; 还请各位大佬提出宝贵的意见&#xff0c;如发现文章错误请联系冰冰&#xff0c;冰冰一定会虚心接受&#xff0c;及时改正。 本系列文章为冰冰学习编程的学习笔记&#xff0c;如果对您也有帮助&#xff0c;还请各位…

剑指offer30天打卡活动

文章目录 Day1: 用两个栈实现队列包含min函数的栈 一、用两个栈实现队列OJ链接 本题思路&#xff1a;定义两个栈&#xff0c;&#xff08;Enqueue&#xff09;是用来存储入队的元素&#xff0c;&#xff08;Cnqueue&#xff09;用来出队的&#xff0c;那么如何进行操作呢&am…