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

正文內(nèi)容

基于微控制器k60的光電智能車(chē)控制軟件設(shè)計(jì)論文-閱讀頁(yè)

2025-07-25 14:00本頁(yè)面
  

【正文】 _AA_P_INT)。 nD = (int)mult_r(nD, CAR_AA_D_INT)。 if(nSpeed MOTOR_SPEED_SET_MAX) nSpeed = MOTOR_SPEED_SET_MAX。 nLeft = nSpeed + g_nLeftMotorOutSpeed g_nMotorLeftRightDiff。 g_nLeftMotorOut = nLeft 6。 if(g_nLeftMotorOut MOTOR_OUT_MAX) g_nLeftMotorOut = MOTOR_OUT_MAX。 if(g_nRightMotorOut MOTOR_OUT_MAX) g_nRightMotorOut = MOTOR_OUT_MAX。 MotorSpeedOut()。其中速度采用了左右電機(jī)速度的平均值 進(jìn)行計(jì)算。 該函數(shù)的輸入為g_nLeftMotorSpeedCount , g_nRightMotorSpeedCount 。 由于速度控制子程序是每 100 毫秒才調(diào)用一次。函數(shù) CalculateMotorSpeedOut() 是每 5 毫秒被調(diào)用一次,所以程序是將速度控制的變化量平均到 20 次進(jìn)行更新。 如下是車(chē)模速度控制子程序: void MotorSpeedAdjustCal(void) { int nLeftSpeed, nRightSpeed。 int nSpeed。 nRightSpeed = (int)g_nRightMotorSpeedCount。 nDeltaValue = g_nMotorSpeedSet nSpeed。 nI = mult_r(nDeltaValue, MOTOR_SPEED_I_INT)。 g_nMotorOutSpeedKeep = nI。 if(g_nMotorOutSpeedKeep MOTOR_OUT_MAX) g_nMotorOutSpeedKeep = MOTOR_OUT_MAX。 } void CalculateMotorOutSpeed(void) { int nValue。 nValue = nValue * (g_nCarMotionCount + 1) / (CAR_MOTION_PERIOD 1) + g_nMotorOutSpeedOld。 } 車(chē)模方向 P 控制 車(chē)模方向控制是通過(guò)比較車(chē)模兩個(gè)電感檢波電壓進(jìn)行的。 下面的算法中,采用了比例控制算法。這個(gè)數(shù)值在 至 之間。 CMA_P_MAX 可以通過(guò)實(shí)驗(yàn)逐步確定一個(gè)合適的取值。 long lnDelta。 lnDelta = g_nCarMagicRightAverage g_nCarMagicLeftAverage。 if(nSigma == 0) return。 g_nMotorLeftRightDiff = nP。直立控制是基礎(chǔ),它的調(diào)整速度非??欤俣群头较蚩刂葡鄬?duì)調(diào)整速度慢。它們假定直立控制會(huì)始終保持車(chē)模不跌倒,直立控制會(huì)自動(dòng)調(diào)節(jié)車(chē)模的傾角以適應(yīng)車(chē)模的加速、減速和轉(zhuǎn)彎的需要。在此同時(shí),車(chē)模直立控制會(huì)迅速進(jìn)行調(diào)整,使得車(chē)模往前傾斜,車(chē)模開(kāi)始加速。此 時(shí)車(chē)模直立控制算法也會(huì)相應(yīng)調(diào)整車(chē)模出于直立狀態(tài),車(chē)模恒速運(yùn)行。直立控制算法會(huì)自動(dòng)調(diào)整車(chē)模往后傾斜,使得車(chē)模減速。西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 20 頁(yè) 第 4 章 軟件系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn) 軟件運(yùn)行需要配置單片機(jī)各個(gè)模塊寄存器數(shù)值,使單片機(jī)各個(gè)模塊正常工作。當(dāng)初始化完畢后,進(jìn)入 跑車(chē)程序:對(duì)傳感器輸入信號(hào)進(jìn)行采樣,當(dāng)完成一次采樣后將采樣值映射成車(chē)相對(duì)于跑道的位置,根據(jù)當(dāng)前與過(guò)去位置決定舵機(jī)轉(zhuǎn)角和電機(jī)速度,通過(guò)改變 PWM 模塊內(nèi)部寄存器數(shù)值可以得到不同占空比的方波信號(hào),實(shí)現(xiàn)對(duì)舵機(jī)和電機(jī)的調(diào)節(jié)。初始化的工作包括有兩部分,一部分是對(duì)于單片機(jī)各個(gè)應(yīng)用到的模塊進(jìn)行初始化。第二部分是應(yīng)用程序初始化,是對(duì)于車(chē)??刂瞥绦蛑? 應(yīng)用到的變量值進(jìn)行初 始化。該程序通過(guò)讀取加速度計(jì)的數(shù)值判斷車(chē)模是否處于直立狀態(tài)。 程序在主循環(huán)中不停發(fā)送監(jiān)控?cái)?shù)據(jù),在通過(guò)串口發(fā)送到上位機(jī)進(jìn)行監(jiān)控。跌倒判斷可以通過(guò)車(chē)模傾角是否超過(guò)一定范圍進(jìn)行確定,或者通過(guò)安裝在車(chē)模前后防撞支架上的微動(dòng)開(kāi)關(guān)來(lái)判斷。包括車(chē)模直立控制、速度控制以及方向控制。 車(chē)模的直立控制、速度控制以及方向控制都是在中斷程序中 完成。 中斷程序框架如圖所示。中斷服務(wù)程序的任務(wù) 被均勻分配在 04 的中斷片段中。 將任務(wù)分配到不同的中斷片段中,一方面防止這些任務(wù)累積執(zhí)行時(shí)間超過(guò) 1 毫秒,擾亂一毫秒中斷的時(shí)序,同時(shí)也考慮到這些任務(wù)之間的時(shí)間先后順序。累積電機(jī)轉(zhuǎn)動(dòng)角度。由于 AD 轉(zhuǎn)換啟動(dòng)到完成需要一定時(shí)間。 ( 3)讀取 AD 轉(zhuǎn)換值。讀取完畢之后,便進(jìn)行車(chē)模直立控制過(guò)程。 ( 4)車(chē)模速度控制:在這個(gè)時(shí)間片段中,又進(jìn)行 019 計(jì)數(shù)。因此,速度調(diào)節(jié)的周期為 100 毫秒。 ( 5)車(chē)模方向控制:根據(jù)前面讀取的 CCD 圖像檢測(cè) 數(shù)值,計(jì)算偏差數(shù)值。 前面給出的算法程序存在很多參數(shù),雖然從理論上可以對(duì)這些參數(shù)進(jìn)行優(yōu)化計(jì)算。實(shí)際優(yōu)化參數(shù)需要通過(guò)一定的工程步驟最終確定,這個(gè)過(guò)程稱(chēng)為參數(shù)整定。開(kāi)發(fā)制作相應(yīng)的輔助調(diào)試工作,不僅可以大大加快調(diào)試的進(jìn)度,同時(shí)也會(huì)鍛煉解決工程問(wèn)題的能力。 ( 1)電機(jī) PWM 輸出調(diào)試:程序給出兩個(gè)電機(jī)固定的 PWM 輸出。在此過(guò)程中,測(cè)試車(chē)模電機(jī)死區(qū)補(bǔ)償電壓數(shù)值:MOTOR_OUT_DEAD_VAL。保持車(chē)模直立靜止。 ( 3)測(cè)試車(chē)模直立判斷程序和跌倒判 斷程序 : 此時(shí)禁止車(chē)模直立控制環(huán)節(jié),通過(guò)讀取加速度計(jì)的數(shù)值,判斷車(chē)模是否直立或者跌倒。車(chē)模跌倒判斷車(chē)模的傾角大于 45 度。此時(shí)由于沒(méi)有速度控制,車(chē)模可能會(huì)朝一個(gè)方向加速行駛。盡量控制車(chē)模靜止。然后再給定一個(gè)設(shè)定速度,車(chē)??梢苑€(wěn)定的前行或者后退。將車(chē)模西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 23 頁(yè) 放在跑道上,車(chē)模可以穩(wěn)定在跑道上運(yùn)行。 賽車(chē)調(diào)試上述算法參數(shù)的獲取必須通過(guò)實(shí)際的測(cè)量,賽道信息的獲取我們通過(guò)用串口傳送數(shù)據(jù)。 西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 24 頁(yè) 結(jié)束語(yǔ) 畢業(yè)設(shè)計(jì)過(guò)程中,我們?cè)诶桌蠋煹闹笇?dǎo)下,完成了對(duì) CCD 傳感器, 陀螺儀以及加速度傳感器的理解與運(yùn)用,使得我們對(duì)飛思卡爾智能車(chē)的軟件設(shè)計(jì)有了一個(gè)比較可靠 的硬件原理基礎(chǔ)。 通過(guò)對(duì)智能車(chē)模的行走特點(diǎn)理解,我們對(duì)其進(jìn)行了車(chē)模直立控制,車(chē)模速度控制和車(chē)模方向控制,在完善控制原理的基礎(chǔ)上對(duì)車(chē)模直立行走進(jìn)行了有針對(duì)性的程序設(shè)計(jì)工作,并且對(duì)其中的控制參數(shù)進(jìn)行了檢測(cè)與改進(jìn),經(jīng)過(guò)我們不懈的努力,最終完成了車(chē)模直立行走的任務(wù)。 同時(shí)對(duì)老師找來(lái)的上級(jí)的學(xué)長(zhǎng)帶來(lái)的指導(dǎo)與溝通表示衷心感謝,也可以說(shuō)沒(méi)有雷老師跟學(xué)長(zhǎng)的指導(dǎo)與溝通這個(gè)畢業(yè)設(shè)計(jì)是不可能如此順利的完成的,也同樣感謝院里的各位老師給我們這個(gè)機(jī)會(huì)讓我們?cè)谂R近畢業(yè)時(shí)又有了一次提高, 還要感謝為我提供硬件支持的梁同學(xué),讓我有了硬件平臺(tái)的展示。 西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 26 頁(yè) 參考文獻(xiàn) [1]潘永湘 楊延西 趙躍 .過(guò)程控制與自動(dòng)化儀表 .第二版 .北京 ﹒ 機(jī)械工業(yè)出版社。 //SDIN gpio_init (PORTC , 3, GPO,HIGH)。 } /*********************************************************************** * 函數(shù)名稱(chēng): StartIntegration * 功能說(shuō)明: CCD啟動(dòng)程序 * 函數(shù)返回:無(wú) *********************************************************************** void StartIntegration(void) { unsigned char i。 /* SI = 1 */ SamplingDelay()。 /* CLK = 1 */ SamplingDelay()。 /* SI = 0 */ SamplingDelay()。 /* CLK = 0 */ for(i=0。 i++) { SamplingDelay()。 CLK_SetVal()。 SamplingDelay()。 /* CLK = 0 */ 西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 28 頁(yè) } SamplingDelay()。 CLK_SetVal()。 SamplingDelay()。 /* CLK = 0 */ } /*********************************************************************** * 函數(shù)名稱(chēng): StartIntegration * 功能說(shuō)明: CCD啟動(dòng)程序 * 函數(shù)返回: 無(wú) *ImageData = ad_once(ADC1, AD6a, ADC_8bit)。 extern u8 AtemP 。 /* SI = 1 */ SamplingDelay()。 /* CLK = 1 */ SamplingDelay()。 /* SI = 0 */ SamplingDelay()。 i 50。 //200ns } //Sampling Pixel 1 *ImageData = ad_once(ADC1, AD6a, ADC_8bit)。 CLK_ClrVal()。 i127。 西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 29 頁(yè) SamplingDelay()。 /* CLK = 1 */ SamplingDelay()。 //Sampling Pixel 2~128 *ImageData = ad_once(ADC1, AD6a, ADC_8bit)。 CLK_ClrVal()。 SamplingDelay()。 /* CLK = 1 */ SamplingDelay()。 CLK_ClrVal()。 /* 128個(gè)像素點(diǎn)的平均 AD值 */ u8 PixelAverageValue。 /* 設(shè)定目標(biāo)平均電壓值, 實(shí)際電壓的 10倍 */ s16 TargetPixelAverageVoltage = 30。 /* 設(shè)定目標(biāo)平均電壓值允許的偏差,實(shí)際電壓的 10倍 */ s16 TargetPixelAverageVoltageAllowError = 2。 void CalculateIntegrationTime(void) { /* 計(jì)算 128個(gè)像素點(diǎn)的平均 AD值 */ 西安文理學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 第 30 頁(yè) PixelAverageValue = PixelAverage(128,Pixel)。 PixelAverageVoltageError = TargetPixelAverageVoltage PixelAverageVoltage。 if(PixelAverageVoltageError TargetPixelAverageVoltageAllowError) IntegrationTime++。 if(IntegrationTime = 20) IntegrationTime = 20。 unsigned int sum = 0。 ilen。 } return ((unsigned char)(sum/len))。 temp = hex 4。039。 } else { uart_putchar(UART0,temp 10 + 39。)。 0x0F。039。 } else { uart_putchar(UART0,temp 10 + 39。)。 unsigned char crc = 0。*39。 uart_putchar(UART0,39。)。D39。 SendHex(0)。 SendHex(0)。 for(i=0。 i++) { SendHex(*ImageData++)。 uart_putchar(UART0,39
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1