【西电A测:设计和制造一款自动货物分拣系统】

西电A测-自动货物分拣系统

题目介绍:有一个自动货物分拣系统的项目,系统由颜色识别系统,履带传送系统和机械臂分拣系统构成。该项目利用红、绿、蓝三色木块代表不同货物种类,能够通过对货物种类的自动判断,对不同货物进行智能分拣。
测试时,将红、绿、蓝三色木块间隔放在履带上,要求在规定的秒数内将木块输送到颜色识别区进行自动识别。如果当前木块是规定的目标颜色,则启动机械臂进行分拣,将其从履带上取下放在测试前现场指定的位置。其他颜色木块不做分拣,直接传送到履带末端。

前言

此文章针对XDer A测,写在这里,供大家做A测时学习参考,本人代码文件名后缀带有lwy,只在CSDN上发表过,其他平台非本人上传,转载请包含出处。
STM32学习不易,系统学习STM32知识见B站正点/野火视频。第一次写blog,若有bug,请海涵,同时望及时告知更正。

目录

  • 西电A测-自动货物分拣系统
    • 前言
    • 一,软件下载安装
    • 二,驱动安装
    • 三,软件基础操作:
    • 四,STM32L476介绍
    • 五,lwy代码重要部分的解释
      • 5.1 颜色识别TCS230
      • 5.2 电机控制MX1616
      • 5.3 机械臂舵机控制SSC32
    • 六,步骤
    • 七,注意事项

一,软件下载安装

本人使用CUBEMX+KEIL5,所以此教程需要安装:
KEIL5,KEIL5中STM32L4库,CUBEMX,CUBEMX中STM32L4的HAL库包

  1. KEIL5下载:下载+破解,安装步骤:自己搜视频 或B站野火/正点 STM32视频
  2. KEIL5安装后需要STM32L4系列库,下载地址:请点击STM32
    【西电A测:设计和制造一款自动货物分拣系统】_第1张图片
    下载到电脑文件为:Keil.STM32L4xx_DFP.2.6.1.pack。双击它,然后Next
    【西电A测:设计和制造一款自动货物分拣系统】_第2张图片
    在这里插入图片描述
    正确安装,成功后双击KEIL打开 device中显示出STM32L4 Series:
    【西电A测:设计和制造一款自动货物分拣系统】_第3张图片
  3. CUBEMX下载:TI官网+csdn搜下载教程
  4. CUBEMX安装后需要STM32L4系列的HAL库包:双击软件 CUBEMX 后点击
    【西电A测:设计和制造一款自动货物分拣系统】_第4张图片
    找到STM32L4,安装你想要的版本(选择对应版本前面的正方形框选中后,点击下面INSTALL Now)
    在这里插入图片描述
    正确安装后显示为绿色(页面如下):
    【西电A测:设计和制造一款自动货物分拣系统】_第5张图片

二,驱动安装

  1. 串口驱动
    安装串口驱动是为了使用串口通信模块,使单片机的数据通过串口通信模块,发送到电脑端;或者数据通过电脑发送给单片机。安装老师A测群中文件:
    【西电A测:设计和制造一款自动货物分拣系统】_第6张图片
    此实验使用软件SSC-32 Servo Sequencer Utility.exe,通过串口通信,将数据发送到绿色开发板用来控制机械臂转动的位置。
  2. stlink驱动
    安装步骤见:链接
    安装STLINK驱动是为了可以正常下载程序烧录到开发板,代码通过STCLK 和STDIO引脚下载。
    【西电A测:设计和制造一款自动货物分拣系统】_第7张图片【西电A测:设计和制造一款自动货物分拣系统】_第8张图片

【西电A测:设计和制造一款自动货物分拣系统】_第9张图片
正确安装stlink驱动后,插上开发板,设备管理器,显示如下:STM32 STLINK / STM32 Debug
【西电A测:设计和制造一款自动货物分拣系统】_第10张图片
3. Windows上下载串口调试助手:(非必须)
【西电A测:设计和制造一款自动货物分拣系统】_第11张图片

三,软件基础操作:

STLINK 下载程序:选择图示魔术棒Options for target
【西电A测:设计和制造一款自动货物分拣系统】_第12张图片
在下图中点击Debug
【西电A测:设计和制造一款自动货物分拣系统】_第13张图片
点击下图中Settings
【西电A测:设计和制造一款自动货物分拣系统】_第14张图片
选择ST-LINKSW。前述正确安装STLINK驱动后,在下图SW Device中会显示Device中显示名称(可能和我的信息不一样)
【西电A测:设计和制造一款自动货物分拣系统】_第15张图片
【西电A测:设计和制造一款自动货物分拣系统】_第16张图片

四,STM32L476介绍

【西电A测:设计和制造一款自动货物分拣系统】_第17张图片
这个才是STM32L476的引脚顺序,不是开发板上标的字母,接线一定盯着上面这张图
【西电A测:设计和制造一款自动货物分拣系统】_第18张图片
上图中,引脚接线整理如下:
【西电A测:设计和制造一款自动货物分拣系统】_第19张图片
【西电A测:设计和制造一款自动货物分拣系统】_第20张图片
【西电A测:设计和制造一款自动货物分拣系统】_第21张图片
开发板实物图:可以参考需要接线的引脚
【西电A测:设计和制造一款自动货物分拣系统】_第22张图片

五,lwy代码重要部分的解释

后缀含lwy为本人自己添加的文件,内部已添加注释。
【西电A测:设计和制造一款自动货物分拣系统】_第23张图片
Main.c文件(不断修改,可能和图中一些细节不一样):
【西电A测:设计和制造一款自动货物分拣系统】_第24张图片

5.1 颜色识别TCS230

【西电A测:设计和制造一款自动货物分拣系统】_第25张图片
对于TCS230来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个光强值,就可以分析出反射到TCS230传感器上的光的颜色。TCS230传感器有红绿蓝和清除4种滤光器,可以通过其引脚 S2 和 S3 的高低电平来选择滤波器模式,如下图。
【西电A测:设计和制造一款自动货物分拣系统】_第26张图片
L表示低电平,H表示高电平
当被测物体反射光的红、绿、蓝三色光线分别透过相应滤波器到达TAOS TCS230RGB感应芯片时,其内置的振荡器会输出方波,方波频率与所感应的光强成比例关系,光线越强,内置的振荡器方波频率越高。TCS23传感器有一个OUT引脚,它输出信号的频率与内置振荡器的频率也成比例关系,它们的比率因子可以靠其引脚S0和S1的高低电平来选择,如下图。
【西电A测:设计和制造一款自动货物分拣系统】_第27张图片
在CUBEMX中配置时钟树,定时器TIM4 如下:
【西电A测:设计和制造一款自动货物分拣系统】_第28张图片
【西电A测:设计和制造一款自动货物分拣系统】_第29张图片

f 0 = T I M 4 时 钟 P r e s c a l e r ∗ C o u n t e r P e r i o d = 80 M H z 2000 ∗ 4000 = 10 H z f_0=\frac{TIM4时钟}{Prescaler*CounterPeriod} =\frac{80MHz}{2000*4000} =10Hz f0=PrescalerCounterPeriodTIM4=2000400080MHz=10Hz
解释:上图中配置TIM4时钟=80MHz,开一个定时器TIM4,分频后为10Hz,即间隔1/10Hz =0.1s触发一次中断,在中断服务函数中改变颜色滤波器并进行计算处理。
同时需要开启一个定时器TIM3,采集颜色传感器TCS230引脚OUT信号,捕获方波脉冲个数:
【西电A测:设计和制造一款自动货物分拣系统】_第30张图片
HAL配置的参数在下图代码中可以体现:
【西电A测:设计和制造一款自动货物分拣系统】_第31张图片
需要自己写的TCS230颜色识别代码如下(colorHALbylwy.c):
【西电A测:设计和制造一款自动货物分拣系统】_第32张图片
上述芯片原理介绍参考原文链接为:链接1
链接2

5.2 电机控制MX1616

【西电A测:设计和制造一款自动货物分拣系统】_第33张图片
【西电A测:设计和制造一款自动货物分拣系统】_第34张图片
【西电A测:设计和制造一款自动货物分拣系统】_第35张图片
电机通过PWM控制即改变方波占空比,占空比越大,速度越快。使用TIM2配置引脚PA0输出PWM方波。
【西电A测:设计和制造一款自动货物分拣系统】_第36张图片
通过CUBEMX配置产生方波,方波频率:
f 1 = T I M 2 时 钟 P r e s c a l e r ∗ C o u n t e r P e r i o d = 80 M H z 2000 ∗ 4000 = 10 H z f_1=\frac{TIM2时钟}{Prescaler*CounterPeriod} =\frac{80MHz}{2000*4000} =10Hz f1=PrescalerCounterPeriodTIM2=2000400080MHz=10Hz
需要自己写的电机控制代码如下:
【西电A测:设计和制造一款自动货物分拣系统】_第37张图片
在这里插入图片描述
其中函数HAL_TIM_SET_COMPARE用来设置传送带运动速度。

5.3 机械臂舵机控制SSC32

绿色开发板如下:
【西电A测:设计和制造一款自动货物分拣系统】_第38张图片
【西电A测:设计和制造一款自动货物分拣系统】_第39张图片
USB SSC32路舵机控制是专为人形机器人、蜘蛛机器人、机械手等多舵机使用而量身定做的多路舵机控制器。该控制器不但保留了原版的所有功能,还在原版的基础上作了升级,将原来的RS232串口改成了USB接口,方便电脑没有串口的用户使用。控制器还增加蓝牙接口,可实现无线远程控制。USBSSC32路舵机控制控制方式包括实时、定时、定速控制等。
单个舵机和舵机群运动命令:
# P S … # P S T
:舵机通道号,值为0 – 31。
:脉冲宽度,单位微秒(us),值为500 – 2500。
:单通道的运动速度,单位us/秒。(可选)

SSC32舵机详细介绍见:链接

六,步骤

  1. 正确并且成功安装软件及驱动
  2. 对应引脚正确接线
  3. 测试代码能否编译下载
  4. 调节传送带速度参数,观察传送带速度变化是否与预期相符,若是传送带不动或速度不变,重新检查步骤1-3
  5. 改代码,在while循环内识别的颜色应与测试要求一致
  6. 借助软件SSC-32 Servo Sequencer Utility调节机械臂参数,并将参数更新到ssc32hal.c文件中。

七,注意事项

(对于新手,注意事项挺多的,累了,有机会就添加)

目录

  • 西电A测-自动货物分拣系统
    • 前言
    • 一,软件下载安装
    • 二,驱动安装
    • 三,软件基础操作:
    • 四,STM32L476介绍
    • 五,lwy代码重要部分的解释
      • 5.1 颜色识别TCS230
      • 5.2 电机控制MX1616
      • 5.3 机械臂舵机控制SSC32
    • 六,步骤
    • 七,注意事项

你可能感兴趣的:(STM32,单片机,stm32,嵌入式硬件)