六轴机器手臂运动控制——直流伺服反馈系统设计(比赛项目计划书+设计总结+硬件+源代码+上位机等)

TW的硬件一直很强,这是难得的硬件创新比赛的优秀作品,资料非常完整理。

硬件设计,源码,项目计划书,甚至包含了事后的复盘总结文档。

是不可多得的好资料。

项目系统框架图

1. 硬件系统框架图 (请以方块图形式呈现)

2. 软件系统框架图 (以文字或方块图表示算法流程)

  • 项目设计预计效果
  • 六軸機械手臂運動控制
  • 需使用六塊 Servo Motion controller

    方塊圖如下:

  • 使用PC 做為主控台, 在PC端產生各軸的位置透過RS-485 下達命令做多軸運動控制

    PC 人機介面規劃如下:

  • VT100  terminal 報文輸出
    系統會由COM1 (115200,n,8,1) 輸出 VT100 格式化文字如下畫面

  • 多軸接線圖
部份代码:
#include <stdio.h>
#include <string.h>
#include "define.h"
#include "MultiTask.h"
#include "M451Series.h"
#include "sysclk.h"
#include "uart0.h"
#include "uart1.h"
#include "pwm.h"
#include "adc.h"
#include "eint.h"
#include "flash.h"
#include "adc_ctrl.h"
#include "TemFunction.h"
#include "VT100.H"enum {COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_CYAN,COLOR_MAGENTA, COLOR_GRAY, COLOR_WHITE, COLOR_BLACK, COLOR_DGRAY,COLOR_DYELLOW, COLOR_DGREEN, COLOR_DRED,BCOLOR_YELLOW, BCOLOR_GREEN, BCOLOR_RED, COLOR_DBLUE};
typedef unsigned char*  Uptr;
extern  unsigned long g_ulFlags ;
//"FAULT   xLINK   oLINK   SERVO_o CAN_o   UART_o  VCOMP_m CURRENTm SPEED_m POSITIONm";
// SP_ENC  SP_iENC SP_qENC POS_ENC POS_POT POWERsts HALTED";
#define STATE_WAIT_FOR_LINK     0
#define STATE_RUN               1
#define STATE_FAULT             2
extern unsigned long g_ulControllerState;
//extern unsigned long g_ulMessageState;
extern long g_usEncoderCount; // encoder counter
extern unsigned long g_ulEncoderLines;  
extern unsigned long MsgIdxNum;
//----------------------------------------------------------
extern void UART0IntHandler(void);
extern void CAN0IntHandler(void);
extern void ControllerIntHandler(void);
extern void TaskCanDataReceive(void);
extern unsigned long g_ulFlags;typedef struct
{	uint32_t	id;uint8_t		t1;uint8_t		t2;uint8_t		t3;uint8_t		t4;
} STR_FLASH_T;STR_FLASH_T test;
void DiaplayInitial(void);
void DebugReport(void);
extern long g_lHBridgeV ;
int PwmCounter ;
void Initial_IoPort(void)
{// SETUP UARTUART0_Init(COM_485_BAUD);UART1_Init(COM_232_BAUD);  // debug port // SETUP PWMPWM_Init_PA3_PWM1CH2();PF->bMODE.MODE2 = 1;  // PF2 Output Mode Mode  LED_GPF->bMODE.MODE1 = 1;  // PF1 Output Mode Mode  LED_RPB->bMODE.MODE6 = 1;  // PB6 Output Mode Motor_CW   PB->bMODE.MODE7 = 1;  // PB7 Output Mode Motor_CCW PB->bMODE.MODE3 = 0;  // PB3 input mode Limit switchPB->bMODE.MODE4 = 0;  // PB4 input mode Limit switchPB->bMODE.MODE5 = 0;  // PB5 input mode Config SwitchPC->bMODE.MODE1 = 0;  // PC1 input mode Home switchPC->bMODE.MODE9 = 3;  // Quasi-bidirectional Mode // SETUP ADCADC_Init_PB0PB1PB2();// SETUP EINTEINT_Init_PC0PF0();	pwm_out(0);
}
//-----------------------------------------------------------------------------------
void CallBootloader(void)
{}//-----------------------------------------------------------
//software Watch dog simulation
//-----------------------------------------------------------//-----------------------------------------------------------------------
//software watchdog for reset the linking status 
//------------------------------------------------------------------------
unsigned int WatchDogCnt;
void WatchdogIntHandler(void)
{WatchDogCnt++;if (WatchDogCnt > 200)  // for 100mS{WatchDogCnt = 0;ControllerLinkLost(LINK_TYPE_NONE);}
}

资源分享:

六轴机器手臂运动控制-直流伺服反馈系统设计(比赛项目计划书+设计总结+硬件+源代码+上位机等)

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

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

相关文章

C#.net MassTransit和DotNetCore.CAP区别

MassTransit和DotNetCore.CAP对比 https://github.com/MassTransit/MassTransit https://github.com/dotnetcore/CAP MassTransit和DotNetCore.CAP是两种不同的.NET库&#xff0c;它们在核心概念、设计目的和技术实现等方面存在差异。具体分析如下&#xff1a; 核心概念 Mas…

idea的代码没有提交到仓库怎么撤回到本地?

代码已经提交到变更列表但是还没有push推送到仓库上&#xff0c;可以用这个方法 点击日志-右键要撤回的记录-选择撤销提交 撤销的又回到本地变更 当然你只能撤销自己提交的&#xff0c;别人的你撤销不了

python-题库篇-为什么数组下标从0 开始而不是 1

为什么很多编程语言要把 0 作为第一个下标索引&#xff0c;而不是直观的 1 呢&#xff1f; 这个问题 Dijkstra 已经解答过了&#xff0c;没错&#xff0c;就是你知道的 Dijkstra&#xff0c;Dijkstra 最短路径算法&#xff0c;荷兰语全名是 Edsger Wybe Dijkstra&#xff0c;于…

定制高温隧道炉,如何判断质量好坏

在现代工业生产中&#xff0c;高温隧道炉扮演着不可或缺的角色。对于特定工艺要求&#xff0c;如陶瓷烧制、金属热处理等&#xff0c;定制化的高温隧道炉更是不可或缺。然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;如何判断高温隧道炉的质量好坏成为了企业决策者面临…

js终止递归

终止递归 1. 实现目标&#xff1a;js 编写递归方法 查找指定节点&#xff1b; 2. 需解决问题&#xff1a;找到所需节点后&#xff0c;递归不会终止&#xff0c;直到所有节点遍历完成后才会停止&#xff0c;会消耗性能 3. 解决方案&#xff1a;优化递归方法&#xff0c;在找到…

解决vscode终端不显示conda环境变量名称问题【详细步骤!实测可行!!】

最近在使用Visual Studio Code (VSCode) 时候&#xff0c;发现终端没有正确显示激活的conda环境名称&#xff0c;搜了一下&#xff0c;找到原因&#xff0c;记录一下&#xff0c;如果有人也遇到同样的问题&#xff0c;可以收藏一下。   分别两种情况&#xff0c;一是windows系…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户登录实现

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

JVM学习-内存泄漏

内存泄漏的理解和分类 可达性分析算法来判断对象是否是不再使用的对象&#xff0c;本质都是判断一上对象是否还被引用&#xff0c;对于这种情况下&#xff0c;由于代码的实现不同就会出现很多内存泄漏问题(让JVM误以为此对象还在引用&#xff0c;无法回收&#xff0c;造成内存泄…

旭日X3与英伟达Orin NX通过TCP传输图片

观前提醒&#xff1a;本文主要内容为使用Python在局域网内建立TCP连接并传输图片信息&#xff0c;计算机为一块旭日X3和一块英伟达Orin NX。 一、什么是TCP TCP&#xff08;传输控制协议&#xff09;是一种可靠的、面向连接的协议&#xff0c;它确保数据包的顺序传输和完整性…

关于教务排课的那些事

在办学过程中&#xff0c;你是否被如下问题困扰&#xff1f; 1、排课功率低&#xff1a; 为了确保师资资源得到充分利用&#xff0c;教务教师排课要求了解每一个全职和兼职教师&#xff0c;了解每一个人的时刻组织和带班状况&#xff0c;因而在排课的时分需求处理很多的信息&a…

【Java数据结构】二叉树详解(四)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 2.1第一种思路 2.2第二种思路 3.根据一棵树的前序遍历与中序遍历构造二叉树 4.根据一棵树的中序…

vite相关配置

1、vite开发环境和生产环境的环境变量配置 1、环境变量配置 vite本身会直接读取为什么会读取&#xff0c;因为含有dotenv第三方库 &#xff0c;会直接读取 .env文件&#xff0c; 2、css模块化简单处理 css:{modules:{localsConvention: "camselCaseOnly" // 打包配…

机器学习_决策树与随机森林

决策树是一种常用的监督学习算法&#xff0c;既可以用于分类任务也可以用于回归任务。决策树通过递归地将数据集划分成更小的子集&#xff0c;逐步建立树结构。每个节点对应一个特征&#xff0c;树的叶子节点表示最终的预测结果。构建决策树的关键是选择最佳的特征来分割数据&a…

图文型LED显示屏的结构与安装

随着科技的不断进步&#xff0c;LED显示屏已成为商业广告、公共信息显示等领域不可或缺的一部分。图文型LED显示屏以其独特的优势和多样化的应用场景&#xff0c;受到了市场的广泛欢迎。本文将详细介绍图文型LED显示屏的结构特点、工作原理以及安装指南。 1、图文型LED显示屏的…

Python项目开发实战:看图猜成语小程序(案例教程)

一、项目背景与概述 在现代社会,随着智能手机的普及和移动互联网的快速发展,移动应用(App)已经成为人们日常生活中不可或缺的一部分。看图猜成语作为一种集知识性和娱乐性于一体的游戏,深受大众喜爱。本项目旨在开发一个基于Python的看图猜成语小程序,让用户能够通过简单…

跨境电商|Facebook Marketplace怎么做?

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

Java内部类、枚举类、注解类

Java 是一种面向对象的编程语言&#xff0c;它支持多种类型的类&#xff0c;包括内部类、枚举类和注解类 一、内部类&#xff08;Inner Class&#xff09;&#xff1a; 内部类是定义在另一个类内部的类。它可以访问外部类的成员&#xff08;包括私有成员&#xff09;&#xff…

AIGC在移动APP开发中的应用及未来前景

随着科技的不断进步&#xff0c;人工智能生成内容&#xff08;AIGC&#xff0c;Artificial Intelligence Generated Content&#xff09;在移动应用开发中的应用越来越广泛。AIGC不仅能提高开发效率&#xff0c;还能带来更好的用户体验。本文将探讨AIGC在移动APP开发中的应用及…

通过ssr-echarts,服务端生成echarts图

ssr-echarts &#xff1a;一个开源项目&#xff0c;它能够服务端渲染 ECharts 图表&#xff0c;并直接生成 PNG 图片返回。该项目提供了多种主题&#xff0c;并且支持 GET 和 POST 请求。如果参数较多&#xff0c;建议使用 POST 方法。用户可以自己部署这个服务。 1. 服务端安装…

Three.js-实现加载图片并旋转

1.实现效果 2. 实现步骤 2.1创建场景 const scene new THREE.Scene(); 2.2添加相机 说明&#xff1a; fov&#xff08;视场角&#xff09;&#xff1a;视场角决定了相机的视野范围&#xff0c;即相机可以看到的角度范围。较大的视场角表示更广阔的视野&#xff0c;但可能…