freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于飛思卡爾16位單片機(jī)電磁型智能小車的設(shè)計(jì)-預(yù)覽頁

2025-07-16 02:25 上一頁面

下一頁面
 

【正文】 空氣的阻尼力,單擺最終會停止在垂直平衡位置。 單擺在不同阻尼下的運(yùn)動情況總結(jié)單擺能夠穩(wěn)定在垂直位置的條件有兩個:(1) 受到與位移(角度)相反的恢復(fù)力;(2) 受到與運(yùn)動速度相反的阻尼力。存在一個阻尼臨界阻尼系數(shù),使得單擺最快穩(wěn)定在平衡位置。由此,能夠做的顯然只有第二種方式。顯然,如果k1 g,(g是重力加速度)那么回復(fù)力的方向便于位移方向相反了。只要保證在k1 g, k2 0 條件下,可以維持車模直立狀態(tài)。電機(jī)的運(yùn)動控制有三個作用:(1) 通過電機(jī)加速度控制實(shí)現(xiàn)車模直立穩(wěn)定。對于電機(jī)的電磁模型、動力學(xué)模型以及車模的動力學(xué)模型進(jìn)行分析和簡化,可以將電機(jī)運(yùn)動模型簡化成如下的一階慣性環(huán)節(jié)模型。其中,在加速階段,電機(jī)帶動車模后輪進(jìn)行加速運(yùn)動,加速度近似和施加在電機(jī)上的電壓成正比,加速階段的時間長度取決于時間常數(shù)T1,該常數(shù)由電機(jī)轉(zhuǎn)動慣量、減速齒輪箱、車模的轉(zhuǎn)動慣量決定;在恒速階段,電機(jī)帶動車模后輪進(jìn)行恒速運(yùn)行,運(yùn)行速度與施加在電機(jī)上的電壓成正比。通過傳統(tǒng)的PID 反饋控制,便可以精確控制電機(jī)的運(yùn)行速度,從而控制車模的運(yùn)行速度。對于電機(jī)速度 PID 所示。 電機(jī)差動控制利用電磁線偏差檢測信號分別與車模速度控制信號進(jìn)行加和減,形成左右輪差動控制電壓,使得車模左右輪運(yùn)行角速度不一致進(jìn)而控制車模方向。因此車模傾角以及傾角加速度的測量成為控制車模直立的關(guān)鍵。該系列的傳感器采用了半導(dǎo)體表面微機(jī)械加工和集成電路技術(shù),傳感器體積小,重量輕。通過集成的開關(guān)電容放大電路量測電容參數(shù)的變化,形成了與加速度成正比的電壓輸出。車模直立時,固定加速度器在Z 軸水平方向,此時輸出信號為零偏電壓信號。只需要加速度就可以獲得車模的傾角,再對此信號進(jìn)行微分便可以獲得傾角加速度。因此對于車模直立控制所需要的傾角信息需要通過另外一種器件獲得,那就是角速度傳感器陀螺儀。當(dāng)旋轉(zhuǎn)器件時會改變振動頻率從而反映出物體旋轉(zhuǎn)的角速度。車模的角度又是通過對角速度積分而得,這可進(jìn)一步平滑信號,從而使得角度信號更加穩(wěn)定。這個誤差會隨著時間延長逐步增加,最終導(dǎo)致電路飽和,無法形成正確的角度信號, 所示。由于加速度計(jì)獲得的角度信息不會存在積累誤差,所以最終將輸出角度θ中的積累誤差消除了。由于存在積分環(huán)節(jié),所以無論比例Tg多么小,最終輸出角度θ必然與加速度計(jì)測量的角度θg相等,只是這個調(diào)節(jié)過程會隨著Tg的減小而延長。 車模直立行走控制算法總圖將車模直立行走主要的控制算法集中起來,形成控制算法總框圖, 車模運(yùn)動控制總框圖 為了實(shí)現(xiàn)車模直立行走,需要采集如下信號:(1) 車模陀螺儀信號;(2) 車模加速度計(jì)信號(z 軸信號);(3) 車模電機(jī)轉(zhuǎn)速脈沖信號;(4) 車模電磁偏差信號(兩路)。直立控制是基礎(chǔ),它的調(diào)整速度非???,速度和方向控制相對調(diào)整速度慢。在此同時,車模直立控制會迅速進(jìn)行調(diào)整,使得車模往前傾斜,車模開始加速。直立控制算法會自動調(diào)整車模往后傾斜,使得車模減速。 b) 陀螺儀:一路,測量陀螺儀輸出電壓。(3) 定時器接口(2 路) a) 測量兩個電機(jī)轉(zhuǎn)速,需要兩個定時器脈沖輸入端口。 單片機(jī)最小系統(tǒng)單片機(jī)選擇MC9S12XS128。(2) 電機(jī)轉(zhuǎn)速脈沖接口 a) T0(PIN19):右側(cè)電機(jī)光電碼盤脈沖; b) T2(PIN22):左側(cè)電機(jī)光電碼盤脈沖。沒有使用的 IO 和模擬量口作狀態(tài)顯示、運(yùn)行設(shè)置以及輔助調(diào)試作用。放大倍數(shù)需要根據(jù)選取的傳感器輸出靈敏度設(shè)計(jì)。圖 、雙極性PWM因此每一路電機(jī)為了能夠?qū)崿F(xiàn)正反轉(zhuǎn),都需要兩個PWM 信號。圖 由于光電管器件直接輸出數(shù)字脈沖信號,因此可以直接將這些脈沖信號連接到單片機(jī)的計(jì)數(shù)器端口。可以通過這個關(guān)系判斷電機(jī)是否正反轉(zhuǎn)。通過實(shí)驗(yàn)驗(yàn)證這個方法可以有效判斷電機(jī)的轉(zhuǎn)動方向并進(jìn)行速度控制。 軟件功能與框架軟件的主要功能包括有:(1)車模運(yùn)行狀態(tài)檢測;(2)電機(jī)PWM 輸出;(3)車模運(yùn)行控制:直立控制、速度控制、方向控制;(4)車模運(yùn)行流程控制:程序初始化、車模啟動與結(jié)束;(5)系統(tǒng)界面:狀態(tài)顯示、上位機(jī)監(jiān)控、參數(shù)設(shè)定等??梢苑旁诔绦虻闹鞒绦蛑型瓿?。這部分的代碼由CodeWarrior 集成環(huán)境的ProcessorExpert 工具生成。如果一旦處于直立狀態(tài)則啟動車模直立控制、方向控制以及速度控制。一定車模跌倒,則停止車模運(yùn)行。通過全局標(biāo)志變量確定是否進(jìn)行這些閉環(huán)控制。因此每個中斷片段中的任務(wù)執(zhí)行的頻率為200Hz。累積電機(jī)速度,為后面車模速度控制提供平均數(shù);(2)啟動AD 轉(zhuǎn)換。這些值包括有陀螺儀、加速度計(jì)數(shù)值、電磁場檢測電壓值等。在其中第0 片段中,進(jìn)行速度PID 調(diào)節(jié)。然后計(jì)算電機(jī)差??刂齐妷簲?shù)值。正負(fù)號表示電機(jī)的正反轉(zhuǎn)。if(nLeftVol 0) {setReg(PWM_PWMVAL0, 0)。setReg(PWM_PWMVAL1, 0)。nRightVol = mult(nRightVol, nPeriod)。nRightVol = mult(nRightVol, nPeriod)。分別表示左右兩個電機(jī)輸出電壓。這個數(shù)值需要通過實(shí)驗(yàn)確定。 電機(jī)死區(qū)補(bǔ)償(2) 進(jìn)行輸出數(shù)值的飽和判斷,確保在調(diào)用MOTOR_SET 的時候,輸入?yún)⒘吭?x8000 至0x7fff 之間。nRightVal = g_nRightMotorOut。else if(nRightVal 0) nRightVal = MOTOR_OUT_DEAD_VAL。if(nRightVal MOTOR_OUT_MIN) nRightVal = MOTOR_OUT_MIN。}程序 電機(jī)速度輸出子程序這個子程序由車模直立控制子程序調(diào)用,每 5ms 調(diào)用一次。在車模保持直立靜止時,讀出兩個通道的數(shù)值,便是相應(yīng)的零偏值。同樣,后面的陀螺儀的讀出的數(shù)據(jù)也需要通過一個比例系數(shù)進(jìn)行歸一化。由于本函數(shù)調(diào)用的時間周期為 5ms。AD 配置的時候,將所有AD 通道的輸入數(shù)據(jù)都?xì)w一化到0至0x7ff0 之間。lnDeltaValue = lnDeltaValue (int)CV_ACCE_OFFSET。g_nCarGyroVal = (int)(g_nCarGyroVal CV_GYRO_ZERO)。lnDeltaValue = lnDeltaValue * CAR_ACCE_RATIO。具體確定的方式如下:首先將 CAR_AA_D_INT 置為0。這個過程需要反復(fù)調(diào)整,直到車??梢员容^穩(wěn)定的達(dá)到直立平衡。int nP, nD。nD = (int)mult_r(nD, CAR_AA_D_INT)。nLeft = nSpeed + g_nLeftMotorOutSpeed g_nMotorLeftRightDiff。if(g_nLeftMotorOut MOTOR_OUT_MAX) g_nLeftMotorOut = MOTOR_OUT_MAX。MotorSpeedOut()。該函數(shù)的輸入為 g_nLeftMotorSpeedCount,g_nRightMotorSpeedCount。函數(shù)CalculateMotorSpeedOut()是每5 毫秒被調(diào)用一次,所以程序是將速度控制的變化量平均到20 次進(jìn)行更新。int nSpeed。nDeltaValue = g_nMotorSpeedSet nSpeed。g_nMotorOutSpeedKeep = nI。}void CalculateMotorOutSpeed(void) {int nValue。}。首先計(jì)算兩個電感電壓差除以兩個電感電壓之和所得到的比例。車模方向控制子程序代碼如下程序 的:void CarMagneticAdjust(void) {int nP。nSigma = (g_nCarMagneticLeftAverage / 2) + (g_nCarMagneticRightAverage / 2)。}程序 車模方向控制子程序中斷服務(wù)程序void TI1_OnInterrupt(void){unsigned int nLeftMotorSpeed, nRightMotorSpeed。nLeftMotorSpeed, amp。g_nRightMotorSpeed = (int)nRightMotorSpeed。g_lnCarRightPosition += g_nRightMotorSpeed。} else if(g_nCarSpeedCount == 2) {CarVoltageGet()。MotorSpeedAdjust()。CalculateMotorOutSpeed()。} 中斷服務(wù)子程序 程序調(diào)試與參數(shù)整定前面給出的算法程序存在很多參數(shù),雖然從理論上可以對這些參數(shù)進(jìn)行優(yōu)化計(jì)算。測試電機(jī)轉(zhuǎn)速以及轉(zhuǎn)向是否符合設(shè)定的要求。讀取兩個傳感器AD 轉(zhuǎn)換值,記錄下來,作為后面程序中的零偏常量。車模跌倒判斷車模的傾角大于 45 度。盡量控制車模靜止。將車模放在電磁導(dǎo)引跑道上,車模可以穩(wěn)定在跑道上運(yùn)行。但是,為了保證車模直立車體穩(wěn)定性,需要將原有車模地盤與后輪支架固定在一起。圖 使用熱熔膠粘接后輪支架與底盤。速度傳感器是安裝在驅(qū)動電機(jī)輸出軸上的光電碼盤以及相配合的光電對管。圖 由于電機(jī)在運(yùn)行過程中發(fā)熱,而且振動大,碼盤的固定一定要使用熱穩(wěn)定性比較好復(fù)合膠水。由于車模是直立運(yùn)行,可以考慮如下的參考方案。一般建議將這塊帶有陀螺儀和加速度計(jì)的電路板固定在整個車模中間質(zhì)心的位置。為了避免車模運(yùn)行過程中傾倒,摔壞車模及其上的電路板,在車模機(jī)械設(shè)計(jì)的時候,需要考慮在車模前后安裝有防撞支架或者緩沖物,一旦車模傾倒或者失控,防撞支架可以保護(hù)車模機(jī)械的安全性。軟件部分的設(shè)計(jì)影響小車正常高速的穩(wěn)定運(yùn)行,主要包括單片機(jī)初始化模塊、車模運(yùn)行狀態(tài)檢測、電機(jī)輸出、車模運(yùn)行控制等。 由于時間的限制,仍有許多地方需要完善。if(nLeftVol 0) {setReg(PWM_PWMVAL0, 0)。setReg(PWM_PWMVAL1, 0)。nRightVol = mult(nRightVol, nPeriod)。nRightVol = mult(nRightVol, nPeriod)。nRightVal = g_nRightMotorOut。else if(nRightVal 0) nRightVal = MOTOR_OUT_DEAD_VAL。if(nRightVal MOTOR_OUT_MIN) nRightVal = MOTOR_OUT_MIN。 } (電機(jī)速度輸出)void CarVoltageGet(void) {long lnDeltaValue。g_nCarAcceVal = (int)lnDeltaValue。g_nCarGyroVal = mult_r(g_nCarGyroVal, CAR_GYRO_RATIO_INT)。g_lnCarAngleSigma += (g_nCarGyroVal + lnDeltaValue)。nP = g_nCarAngle。nSpeed = nD + nP。nRight = nSpeed + g_nRightMotorOutSpeed + g_nMotorLeftRightDiff。if(g_nLeftMotorOut MOTOR_OUT_MIN) g_nLeftMotorOut = MOTOR_OUT_MIN。} (車模直立控制)void MotorSpeedAdjustCal(void) {int nLeftSpeed, nRightSpeed。nRightSpeed = (int)g_nRightMotorSpeedCount。nI = mult_r(nDeltaValue, MOTOR_SPEED_I_INT)。if(g_nMotorOutSpeedKeep MOTOR_OUT_MAX)g_nMotorOutSpeedKeep = MOTOR_OUT_MAX。nValue = nValue * (g_nCarMotionCount + 1) /(CAR_MOTION_PERIOD 1) + g_nMotorOutSpeedOld。int nSigma。nP = (int)(lnDelta * CMA_P_MAX / nSigma) / 2。if(g_nCarSpeedCount = CAR_SPEED_PERIOD) {g_nCarSpeedCount = 0。ClearMotorSpeed()。if(!MOTOR_RIGHT_SPEED_POSITIVE)g_nRightMotorSpeed = g_nRightMotorSpeed。g_nRightMotorSpeedCount += g_nRightMotorSpeed。} else if(g_nCarSpeedCount == 3) {g_nCarMotionCount ++。g_nRightMotorSpeedCount = 0。g_nCarMagneticRightAverage = (int)CV_MAGNETRIGHT_VAL。北京:清華大學(xué)出版社,2004[2]楊國田,白焰北京:高等教育出版社,2001[4]閻石北京:北京理工大學(xué)出版社,2002[6]陶永華,尹怡欣,葛蘆生北京:清華大學(xué)出版社,2001[8]侯國屏,王坤,葉齊鑫Metrowerks Semiconductor, Inc.,2005[11] 朱衛(wèi)華. 一種微機(jī)與單片機(jī)無線串行通信的設(shè)計(jì)方法. [D] 南華大學(xué),2002 年
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1