找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10304|回復(fù): 4
收起左側(cè)

風(fēng)力擺設(shè)計(jì)實(shí)例

[復(fù)制鏈接]
ID:223786 發(fā)表于 2017-8-1 11:31 | 顯示全部樓層 |閱讀模式
.風(fēng)機(jī)選用
讀題可知, 題目要求使用風(fēng)機(jī)將受控部分自身吹起
我們組事先備有一些風(fēng)機(jī), 但是由于過于笨重, 只能將自身吹起10°度左右, 只好放棄.
之后尋找替代方案, 想到嘗試用空心杯電機(jī), 測試發(fā)現(xiàn)3.5V/1.5A可將自身吹起25°左右, 還是略勉強(qiáng).
只好狠心把手上現(xiàn)有的四軸飛行器拆了, 利用上面帶齒輪組的空心杯電機(jī)做
2.傳感器
這是需要控制一個(gè)風(fēng)擺
要做到精確控制, 得做一個(gè)閉環(huán)系統(tǒng), 控制的同時(shí)觀測控制效果作為反饋改變控制量(常用算法是PID).
控制的是風(fēng)擺上的風(fēng)機(jī), 需要測的是當(dāng)前風(fēng)擺的姿態(tài), 自然能聯(lián)想到陀螺儀, 使用它可以得知擺的當(dāng)前姿態(tài).
手上有現(xiàn)成的MPU6050
3.結(jié)構(gòu) p1.jpg
設(shè)計(jì)結(jié)構(gòu)時(shí), 材料都盡量選了輕的, 將主控板/驅(qū)動(dòng)板/電源都外置了,
擺子上, 只放置風(fēng)機(jī)+MPU6050.
擺的竿子, 用了鋁棒, 很輕, 容易加工, 運(yùn)動(dòng)中不會(huì)像塑料棒一樣左搖右晃更不會(huì)自旋, 省了不少事.
支架嘛…東拼西湊來的, 找了一截粗鋁棒, 拆了個(gè)抽屜取了軌道做支架, 借了個(gè)鉆臺(tái)的底座…
線材, 信號線統(tǒng)一用細(xì)的, 電機(jī)的線用了比較粗的2A的線, 用自緊塑料扎帶整理好.
這個(gè)結(jié)構(gòu)在后面的評測環(huán)節(jié)證明, 容易拆解, 還不容易出問題…
4.電機(jī)驅(qū)動(dòng)電路 motor_driver.jpg
由于沒有正反轉(zhuǎn)的需求, 這里直接就用了mos管驅(qū)動(dòng).
5.電源
一開始用著實(shí)驗(yàn)室的穩(wěn)壓電源, 沒考慮電源的問題.
后來換了自制的4A電源發(fā)現(xiàn), 3個(gè)以上空心杯一起工作, 電源電壓就明顯下降了.
才意識(shí)到一個(gè)空心杯在3.5V時(shí), PWM滿調(diào)制電流會(huì)在2A以上.. 電源完全不達(dá)要求.
馬上使用萬能的TB找到了本市的某個(gè)角落有賣開關(guān)電源, 馬上打飛的購回5V 10A(10%電壓可調(diào))的開關(guān)電源, 丙把電壓調(diào)到3.8V.
6.主控
這種比賽當(dāng)然是直接上平時(shí)用得多的..STM32F1.
P.S.完全確定這些架構(gòu)的時(shí)候 已經(jīng)是第三天的中午了…于是第三天的晚上只睡了3個(gè)小時(shí)…

程序部分
題目要求那么多, 總之就是: 擺直線/制動(dòng)/畫圓
風(fēng)機(jī)調(diào)速
使用MCU的TIMER提供的PWM功能
PID算法
做這一題必須用到PID算法, 網(wǎng)上資料已經(jīng)很多了.
我們發(fā)現(xiàn), 做這題只用P參數(shù)就夠.
角度傳感器
這里選用的MPU6050, 網(wǎng)上資料很多.
我們使用別人從MSP430移植到STM32上的DMP庫, 能直接讀出四元數(shù), 轉(zhuǎn)換成歐拉角就能知道當(dāng)前姿態(tài).
詳見interface_mpu6050.c
程序框架
這里使用一個(gè)平面狀態(tài)機(jī)做框架.
每輸入一個(gè)傳感器數(shù)據(jù), 都根據(jù)當(dāng)前系統(tǒng)狀態(tài), 進(jìn)行不同的處理.
制作了一個(gè)串口調(diào)試命令系統(tǒng), 可以使用串口, 輸入命令更改一些參數(shù), 幫助調(diào)試.
P.S. 以上是比賽前就做好的準(zhǔn)備工作
風(fēng)機(jī)控制程序 motor.jpg
風(fēng)機(jī)控制程序控制PWM輸出量,
以同在一個(gè)方向的1,3的電機(jī)為例,
當(dāng)風(fēng)機(jī)控制量為正, 1號轉(zhuǎn),3號停; 為負(fù)反之.
這里還有一個(gè)很必要的工作, 就是為每個(gè)電機(jī)設(shè)定一個(gè)運(yùn)行時(shí)可調(diào)的系數(shù), 每次運(yùn)行時(shí), 手動(dòng)把四個(gè)電機(jī)的風(fēng)速盡可能調(diào)平衡.
一般來說, 為了達(dá)到更好的控制效果, 會(huì)在這個(gè)程序中做一個(gè)PWM與風(fēng)速的擬合, 使控制量與風(fēng)速盡可能的呈線性關(guān)系.
我們沒做是因?yàn)轱L(fēng)速很難測.
擺直線
要求一.
畫不定長直線段(超過50cm)
方案
開始時(shí), 先給風(fēng)擺動(dòng)起來, 具體做法是讓單邊電機(jī)工作, 然后停止, 之后進(jìn)入測控流程.
m1.jpg
測控流程:
若當(dāng)風(fēng)擺角度為正時(shí), PID目標(biāo)角度值也設(shè)為正;
若當(dāng)風(fēng)擺角度為負(fù)時(shí), PID目標(biāo)角度值也設(shè)為負(fù).
這樣做的目的是:
速度方向朝向目標(biāo)角位置時(shí), 遠(yuǎn)離目標(biāo)值時(shí)(就是底部)風(fēng)機(jī)速度最快, 在目標(biāo)值附近風(fēng)機(jī)不起作用;
速度方向背向目標(biāo)角位置時(shí), 風(fēng)擺由于重力會(huì)有向下的力, 風(fēng)機(jī)使風(fēng)擺下降速度變緩;
設(shè)定一個(gè)合適的目標(biāo)角, 讓畫出的直線段超過50cm即可.
要求二.
畫長度可控的直線段
方案
同要求一方案, 但是需要標(biāo)定, 即確定目標(biāo)角與實(shí)際畫出的直線段間的關(guān)系.
根據(jù)用戶輸入長度, 查表即可.
要求三.
在底圖上標(biāo)注的任意角度上畫直線
方案
依舊是方案一的擴(kuò)展.
只不過現(xiàn)在需要用兩個(gè)PID, 分別控制兩個(gè)方向的兩組螺旋槳.
然后依舊用標(biāo)定的方式, 調(diào)整
以下是我們做的標(biāo)定, 從0°測到40°(其余角度都可以根據(jù)這個(gè)推出來),
2
4
6
const uint32_t DATA_J3_pwm_table[][3] = {
    { 16000 , 5000  , 11},       /* 10 */
    { 16000 , 9200  , 11},       /* 30 */
};

第一個(gè)值為x方向PID的P參量,
第一個(gè)值為y方向PID的P參量,
第三個(gè)值為目標(biāo)角.
成功的關(guān)鍵, 是前面提到的電機(jī)必須調(diào)平衡….否則擺若干次后, 風(fēng)擺會(huì)開始畫明顯的橢圓.
制動(dòng)
題目要求5s內(nèi)達(dá)到靜止?fàn)顟B(tài)
方案
使用兩路PID用來控制兩個(gè)方向的兩組風(fēng)機(jī), 將目標(biāo)角設(shè)為0, p參數(shù)為負(fù)數(shù)(就是讓風(fēng)擺在下落時(shí)減速以趨向靜止)即可.
單以這樣的原理, 實(shí)際效果并不好, 在p參數(shù)不會(huì)引起自激的前提下, 只能做到在15s內(nèi)靜止.
于是我們讓PID的p參數(shù)在不斷接近靜止的過程中下降, 最后基本能做到5s內(nèi)靜止.
我們的具體做法是: 角度低于某數(shù)值一段時(shí)間后, 確定下降到一定高度, 調(diào)低一次p值.
畫圓
原理: 讓風(fēng)機(jī)產(chǎn)生的合力為定值, 且力的方向與當(dāng)前風(fēng)擺抬起的方向相同.
方案
我們用了一個(gè)投機(jī)取巧的方法, 我們叫它”PWM值傳遞畫圓”
以初始PWM=3為例, 四個(gè)風(fēng)機(jī)的PWM值這樣變化:
[td]
風(fēng)機(jī)1風(fēng)機(jī)2風(fēng)機(jī)3風(fēng)機(jī)4
3000
2100
1200
0300
0210
0120
0030
0021
0012
0003
1002
2001
不斷循環(huán)執(zhí)行.
用這個(gè)偷懶的方法, 需要確定三個(gè)變量: 初始PWM, 每隔多少時(shí)間傳遞一次PWM值, 每次傳遞多少PWM值
慢慢調(diào)整這三個(gè)參數(shù), 就能調(diào)出不同直徑的圓…
這是一個(gè)省事又有效的方法..
如果畫的不夠圓, 先把風(fēng)機(jī)調(diào)平衡吧.


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-2-16 23:01 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:285920 發(fā)表于 2019-8-3 15:31 | 顯示全部樓層
好厲害論壇,牛人的解析易懂
回復(fù)

使用道具 舉報(bào)

ID:300443 發(fā)表于 2019-8-5 19:17 | 顯示全部樓層
代碼可以發(fā)來學(xué)習(xí)下嗎
回復(fù)

使用道具 舉報(bào)

ID:591230 發(fā)表于 2019-10-29 21:58 | 顯示全部樓層
想買成品可以嗎
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表