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

正文內(nèi)容

基于單片機的兩輪自平衡車控制系統(tǒng)設(shè)計-資料下載頁

2025-06-26 17:20本頁面
  

【正文】 cvACK()。}同理,從IIC總線接收一個字節(jié)數(shù)據(jù)的函數(shù)如下所示。unsigned char I2C_RecvByte(){ unsigned i。 unsigned char dat = 0。 SDA = 1。 //拉高數(shù)據(jù)線,準備讀取數(shù)據(jù) for (i=0。 i8。 i++) //8位計數(shù) { dat = 1。 SCL = 1。 //拉高時鐘線 Delay5us()。 //延時 dat |= SDA。 //讀數(shù)據(jù) SCL = 0。 //拉低時鐘線 Delay5us()。 //延時 } return dat。}在設(shè)備之間通過IIC總線進行通訊時,在發(fā)出開始標志之后,主設(shè)備會發(fā)送一個7位的Slave地址,并且在地址后跟著一個第8位,該位為Read/Write(R/W)位,表示主設(shè)備是在接受從設(shè)備的數(shù)據(jù)還是在向從設(shè)備寫數(shù)據(jù)。數(shù)據(jù)傳輸流程如下圖所示。 IIC總線數(shù)據(jù)傳輸要寫MPU6050寄存器,首先由主設(shè)備產(chǎn)生開始信號(S),然后發(fā)送從設(shè)備地址位和一個寫數(shù)據(jù)位(0為寫,1為讀),MPU6050產(chǎn)生應(yīng)答信號后,主設(shè)備傳送寄存器地址(RA),接受到應(yīng)答后,開始傳送寄存器數(shù)據(jù),繼續(xù)等待應(yīng)答信號,寫入時序如下所示。主設(shè)備SAD+WRADATAP從設(shè)備ACKACKACK若要讀取MPU6050寄存器的值,首先由主設(shè)備產(chǎn)生開始信號(S),然后發(fā)送從設(shè)備地址和一個寫數(shù)據(jù)位,接到應(yīng)答后,發(fā)送寄存器地址,此時才能讀寄存器。需要再產(chǎn)生一個開始信號,發(fā)送從設(shè)備地址位和一個讀數(shù)據(jù)位后,接收應(yīng)答位與寄存器數(shù)據(jù)。最后以主設(shè)備產(chǎn)生拒絕應(yīng)答信號(NACK)和結(jié)束標志結(jié)束。讀出時序如下所示。主設(shè)備SAD+WRASAD+RNACKP從設(shè)備ACKACKACKDATA如上所述,向IIC設(shè)備寫入一個字節(jié)數(shù)據(jù)的函數(shù)如下:void Single_WriteI2C(unsigned char REG_Address,unsigned char REG_data){ I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress)。 //發(fā)送設(shè)備地址+寫信號 I2C_SendByte(REG_Address)。 //內(nèi)部寄存器地址 I2C_SendByte(REG_data)。 //寫入的內(nèi)部寄存器數(shù)據(jù) I2C_Stop()。 //發(fā)送停止信號}從IIC設(shè)備讀取寄存器數(shù)據(jù)函數(shù)如下:unsigned char Single_ReadI2C(unsigned char REG_Address){ unsigned char REG_data。 I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress)。 //發(fā)送設(shè)備地址+寫信號 I2C_SendByte(REG_Address)。 //發(fā)送存儲單元地址 I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress+1)。 //發(fā)送設(shè)備地址+讀信號 REG_data=I2C_RecvByte()。 //讀出寄存器數(shù)據(jù) I2C_SendACK(1)。 //發(fā)送非應(yīng)答信號 I2C_Stop()。 //停止信號 return REG_data。}至此,本小節(jié)詳細的敘述了普通IO口模擬IIC通信的方法與程序,使接下來所敘述的內(nèi)容(即配置MPU6050資源)的實現(xiàn)成為了可能。 MPU6050資源配置MPU6050功能強大,為了實現(xiàn)所需要的功能,在使用之前需要對其進行初始化,對各個相關(guān)的寄存器進行配置。配置相關(guān)寄存器需要通過IIC總線傳送配置指令。此次控制系統(tǒng)設(shè)計所需配置的寄存器有電源管理寄存器1(PWR_MGMT_1)、采樣率分頻寄存器(SMPRT_DIV)、配置寄存器(CONFIG)、陀螺儀配置寄存器(GYRO_CONFIG)、加速度計配置寄存器(ACCEL_CONFIG)。電源管理寄存器1(PWR_MGMT_1)說明:地址Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit06BDEVICE_RESETSLEEPCYCLETEMP_DISCLKSEL[2:0]1. DEVICE_RESET 置1后所有寄存器復(fù)位2. SLEEP 置1后進入睡眠模式3. CYCLE 置1后進入循環(huán)模式4. TEMP_DIS 置1后關(guān)閉溫度傳感器5. CLKSEL[2:0] 指定時鐘源CLKSEL時鐘源0內(nèi)置8MHz振蕩器1PLL with X axis gyroscope reference2PLL with Y axis gyroscope reference3PLL with Z axis gyroscope reference4PLL with external reference5PLL with external reference6保留7Stops the clock and keeps the timing generator in reset采樣率分頻寄存器(SMPRT_DIV)說明:地址Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit019SMPLRT_DIV[7:0]SMPLRT_DIV8位無符號值,通過該值將陀螺儀輸出分頻,得到采樣頻率采樣率計算公式 采樣率=陀螺儀的輸出率/(1+ SMPLRT_DIV)當數(shù)字低通濾波器沒有使能的時候,陀螺儀的輸出頻率為8KHz,反之為1KHz。配置寄存器(CONFIG)說明:地址Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit01AEXT_SYNC_SET[2:0]DLPF_CFG[2:0]1. EXT_SYNC_SET 3位無符號值,配置幀同步引腳的采樣2. DLPF_CFG 3位無符號值,配置數(shù)字低通濾波器DLPF_CFG加速度計(Fs=1KHz)陀螺儀帶寬(Hz)延時(ms)帶寬(Hz)延時(ms)Fs(KHz)0260025681184188129498134442142120151010165517保留保留8陀螺儀配置寄存器(GYRO_CONFIG)說明:地址Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit01BXG_STYG_STZG_STFS_SEL[1:0]1. XG_ST 置1時,陀螺儀X軸進行自我測試。2. YG_ST置1時,陀螺儀Y軸進行自我測試。3. ZG_ST置1時,陀螺儀Z軸進行自我測試。4. FS_SEL 2位無符號值。選擇陀螺儀的量程。FS_SEL量程0177。 250176。/S1177。 500176。/S2177。 1000176。/S3177。 2000176。/S加速度計配置寄存器(ACCEL_CONFIG)說明:地址Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit01CXA_STYA_STZA_STAFS_SEL[1:0]1. XA_ST 置1時,加速度計X軸進行自檢。2. YA_ST 置1時,加速度計Y軸進行自檢。3. ZA_ST 置1時,加速度計Z軸進行自檢。4. AFS_SEL 2位無符號值,選擇加速度計量程。AFS_SEL量程0177。 2g1177。 4g2177。 8g3177。 16g綜上所述,MPU6050初始化設(shè)置函數(shù)如下所示。void MPU6050Init(void){ Single_WriteI2C(PWR_MGMT_1, 0x00) 。 Single_WriteI2C(SMPLRT_DIV, 0x07) 。 Single_WriteI2C(CONFIG, 0x06) 。 Single_WriteI2C(GYRO_CONFIG, 0x18) 。 Single_WriteI2C(ACCEL_CONFIG, 0x01)。}至此,控制系統(tǒng)所用到的所有資源均已初始化完成。接下來便可開始編寫控制程序。 系統(tǒng)控制算法設(shè)計 PID算法PID控制主要由比例單元(P)、積分單元(I)、微分單元(D)組成。其輸入e(t)與輸出u(t)的關(guān)系為:ut=Kpet+1T10tetdt+TDdetdt其中Kp為比例系數(shù),T1為積分時間常數(shù),TD為微分時間常數(shù)。實際使用中,PID算法不必使用所有控制(比例控制、積分控制、微分控制),只要能滿足使用要求即可。常見的有PD控制和PI控制。在本控制系統(tǒng)中,速度控制使用了PI控制,角度控制使用了PD控制。相應(yīng)控制控制如下:速度控制輸出=車速*Kp+路程*Ki角度控制輸出=傾角*Kp+角速度*Kd其中,Kp為比例系數(shù),Kd為微分系數(shù),Ki為積分系數(shù)。 互補濾波算法 ,可以寫出相應(yīng)的互補濾波算法程序。具體程序見附錄。 角度控制與速度控制角度控制算法主要為了保證小車在垂直方向上的傾角限制在一定范圍內(nèi),保持小車的靜態(tài)平衡;速度控制算法主要是為了保證小車在水平方向上以給定的速度行駛,保持小車的動態(tài)平衡。角度控制與速度控制相互影響。角度控制與速度控制程序框圖如下所示。互補濾波獲取PD控制輸出值結(jié)束開始獲取各車輪的車速判斷電機轉(zhuǎn)向?qū)λ俣确e分獲取路程值疊加藍牙速度控制是否超出積分上限獲取PI控制輸出值取最大值結(jié)束開始獲取角度值與角速度值YN 角度控制與速度控制流程圖 輸出控制算法在完成速度控制與角度控制之后,需要將獲得的數(shù)據(jù)進行疊加,并且加入藍牙方向控制,以完成小車的左右轉(zhuǎn)。最后對所得數(shù)據(jù)進行判斷與轉(zhuǎn)換,以數(shù)據(jù)的正負控制電機的轉(zhuǎn)向,以數(shù)據(jù)的數(shù)值控制占空比,調(diào)節(jié)PWM輸出來控制轉(zhuǎn)速,完成左右電機的差分控制。由于小車輪胎與地面存在靜摩擦力,因此當占空比很小時,電機驅(qū)動電流很小,電機可以認為沒有發(fā)生轉(zhuǎn)動。所有需要根據(jù)實際情況加上死區(qū)常量用來克服這種情況下的靜摩擦力。輸出控制算法程序框圖如下所示。開始將速度控制、角度控制和藍牙方向控制進行疊加增加死區(qū)常量是否飽和控制電機轉(zhuǎn)向與轉(zhuǎn)速是否摔倒停止取最大值YYN6 總結(jié)與展望 總結(jié)本控制系統(tǒng)的設(shè)計主要研究了兩輪自平衡小車的設(shè)計與實現(xiàn)。通過設(shè)計相應(yīng)的硬件與軟件,完成了主要的設(shè)計目標,實現(xiàn)了兩輪自平衡小車的動態(tài)平衡與運動控制。系統(tǒng)的硬件系統(tǒng)以STC公司的STC12C5A60S2為控制核心,使用MPU6050檢測小車的車身姿態(tài),通過編碼器獲取小車當前轉(zhuǎn)速,實現(xiàn)對車速的閉環(huán)控制。通過TB6612FNG驅(qū)動電路對兩個電機實現(xiàn)差分控制,分別控制每個電機的轉(zhuǎn)向與轉(zhuǎn)速。通過藍牙獲得上位機發(fā)送的控制信號,實現(xiàn)人機交互。軟件系統(tǒng)設(shè)計中,根據(jù)單片機使用手冊設(shè)置各個寄存器;根據(jù)IIC總線協(xié)議編寫通信程序,并且根據(jù)芯片說明配置MPU6050芯片。使用互補濾波融合加速度計與陀螺儀數(shù)據(jù)并實現(xiàn)角度控制。使用PID算法計算角度控制與速度控制的最終輸出量。本設(shè)計最終實現(xiàn)了對兩輪自平衡小車的平衡控制與運動控制,使得小車在保持平衡的同時通過藍牙可實現(xiàn)人機交互。 展望 由于個人能力所限,本設(shè)計只是完成了兩輪自平衡小車的簡單模型,本人認為此設(shè)計還有以下方面可以繼續(xù)提高:1. 采用更先進、速度更快的控制器,如ARM,X86等。2. 使用更先進的數(shù)據(jù)融合算法,如卡爾曼濾波算法。3. 使用更先進的控制算法,如模糊控制,神經(jīng)網(wǎng)絡(luò)等。4. 使用大型驅(qū)動電機及車身,設(shè)計出像Segway那樣可代步的交通工具。參考文獻王建平,盧杉,武歡歡. TB6612簡介及其與單片機的直流電機控制系統(tǒng)設(shè)計. .LM2596S開關(guān)電壓調(diào)節(jié)器
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1