【西电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庫包
下載到電腦文件為:Keil.STM32L4xx_DFP.2.6.1.pack。雙擊它,然后Next
正確安裝,成功后雙擊KEIL打開 device中顯示出STM32L4 Series:
找到STM32L4,安裝你想要的版本(選擇對應版本前面的正方形框選中后,點擊下面INSTALL Now)
正確安裝后顯示為綠色(頁面如下):
二,驅動安裝
安裝串口驅動是為了使用串口通信模塊,使單片機的數據通過串口通信模塊,發送到電腦端;或者數據通過電腦發送給單片機。安裝老師A測群中文件:
此實驗使用軟件SSC-32 Servo Sequencer Utility.exe,通過串口通信,將數據發送到綠色開發板用來控制機械臂轉動的位置。
安裝步驟見:鏈接
安裝STLINK驅動是為了可以正常下載程序燒錄到開發板,代碼通過STCLK 和STDIO引腳下載。
正確安裝stlink驅動后,插上開發板,設備管理器,顯示如下:STM32 STLINK / STM32 Debug
3. Windows上下載串口調試助手:(非必須)
三,軟件基礎操作:
STLINK 下載程序:選擇圖示魔術棒Options for target
在下圖中點擊Debug
點擊下圖中Settings
選擇ST-LINK,SW。前述正確安裝STLINK驅動后,在下圖SW Device中會顯示Device中顯示名稱(可能和我的信息不一樣)
四,STM32L476介紹
這個才是STM32L476的引腳順序,不是開發板上標的字母,接線一定盯著上面這張圖!
上圖中,引腳接線整理如下:
開發板實物圖:可以參考需要接線的引腳
五,lwy代碼重要部分的解釋
后綴含lwy為本人自己添加的文件,內部已添加注釋。
Main.c文件(不斷修改,可能和圖中一些細節不一樣):
5.1 顏色識別TCS230
對于TCS230來說,當選定一個顏色濾波器時,它只允許某種特定的原色通過,阻止其它原色的通過。例如:當選擇紅色濾波器時,入射光中只有紅色可以通過,藍色和綠色都被阻止,這樣就可以得到紅色光的光強;同理,選擇其它的濾波器,就可以得到藍色光和綠色光的光強。通過這三個光強值,就可以分析出反射到TCS230傳感器上的光的顏色。TCS230傳感器有紅綠藍和清除4種濾光器,可以通過其引腳 S2 和 S3 的高低電平來選擇濾波器模式,如下圖。
L表示低電平,H表示高電平
當被測物體反射光的紅、綠、藍三色光線分別透過相應濾波器到達TAOS TCS230RGB感應芯片時,其內置的振蕩器會輸出方波,方波頻率與所感應的光強成比例關系,光線越強,內置的振蕩器方波頻率越高。TCS23傳感器有一個OUT引腳,它輸出信號的頻率與內置振蕩器的頻率也成比例關系,它們的比率因子可以靠其引腳S0和S1的高低電平來選擇,如下圖。
在CUBEMX中配置時鐘樹,定時器TIM4 如下:
f0=TIM4時鐘Prescaler?CounterPeriod=80MHz2000?4000=10Hzf_0=\frac{TIM4時鐘}{Prescaler*CounterPeriod} =\frac{80MHz}{2000*4000} =10Hzf0?=Prescaler?CounterPeriodTIM4時鐘?=2000?400080MHz?=10Hz
解釋:上圖中配置TIM4時鐘=80MHz,開一個定時器TIM4,分頻后為10Hz,即間隔1/10Hz =0.1s觸發一次中斷,在中斷服務函數中改變顏色濾波器并進行計算處理。
同時需要開啟一個定時器TIM3,采集顏色傳感器TCS230引腳OUT信號,捕獲方波脈沖個數:
HAL配置的參數在下圖代碼中可以體現:
需要自己寫的TCS230顏色識別代碼如下(colorHALbylwy.c):
上述芯片原理介紹參考原文鏈接為:鏈接1
鏈接2
5.2 電機控制MX1616
電機通過PWM控制即改變方波占空比,占空比越大,速度越快。使用TIM2配置引腳PA0輸出PWM方波。
通過CUBEMX配置產生方波,方波頻率:
f1=TIM2時鐘Prescaler?CounterPeriod=80MHz2000?4000=10Hzf_1=\frac{TIM2時鐘}{Prescaler*CounterPeriod} =\frac{80MHz}{2000*4000} =10Hzf1?=Prescaler?CounterPeriodTIM2時鐘?=2000?400080MHz?=10Hz
需要自己寫的電機控制代碼如下:
其中函數HAL_TIM_SET_COMPARE用來設置傳送帶運動速度。
5.3 機械臂舵機控制SSC32
綠色開發板如下:
USB SSC32路舵機控制是專為人形機器人、蜘蛛機器人、機械手等多舵機使用而量身定做的多路舵機控制器。該控制器不但保留了原版的所有功能,還在原版的基礎上作了升級,將原來的RS232串口改成了USB接口,方便電腦沒有串口的用戶使用。控制器還增加藍牙接口,可實現無線遠程控制。USBSSC32路舵機控制控制方式包括實時、定時、定速控制等。
單個舵機和舵機群運動命令:
# <ch> P <pw> S <spd>… # <ch> P <pw> S <spd> T <time><cr>
<ch> :舵機通道號,值為0 – 31。
<pw> :脈沖寬度,單位微秒(us),值為500 – 2500。
<spd> :單通道的運動速度,單位us/秒。(可選)
<time> :所有通道的速度,單位毫秒(ms),最大65535。(可選)
<cr> :結束回車符,ASCII碼中的13。(必選)
<esc> :取消當前的命令,ASCI碼中的27。
舵機0,1,2,3,4,5移動到1500位置,同時在1000ms內完成,這個命令能協調多個舵機的速度,即使多個舵機的初始位置相差很遠,都可以使他們同時開始轉動并同時停止到指定位置上。P后面的數字代表舵機的絕對角度,每組設備參數不同,需要借助軟件SSC-32 Servo Sequencer Utility調整,需要自己寫的機械臂抓取代碼如下(ssc32hal.c):
軟件SSC-32 Servo Sequencer Utility頁面:
SSC32舵機詳細介紹見:鏈接
六,步驟
七,注意事項
(對于新手,注意事項挺多的,累了,有機會就添加)
目錄
- 西電A測-自動貨物分揀系統
- 前言
- 一,軟件下載安裝
- 二,驅動安裝
- 三,軟件基礎操作:
- 四,STM32L476介紹
- 五,lwy代碼重要部分的解釋
- 5.1 顏色識別TCS230
- 5.2 電機控制MX1616
- 5.3 機械臂舵機控制SSC32
- 六,步驟
- 七,注意事項
總結
以上是生活随笔為你收集整理的【西电A测:设计和制造一款自动货物分拣系统】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 实现空间直角坐标系
- 下一篇: 售后管理系统常见系统角色分析