電子工藝標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)實(shí)習(xí)_第1頁(yè)
電子工藝標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)實(shí)習(xí)_第2頁(yè)
電子工藝標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)實(shí)習(xí)_第3頁(yè)
電子工藝標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)實(shí)習(xí)_第4頁(yè)
電子工藝標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)實(shí)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、電子工藝實(shí)習(xí)報(bào)告學(xué)院: 專業(yè): 班級(jí): 學(xué)號(hào): 姓名:北京郵電大學(xué)實(shí)習(xí)報(bào)告實(shí)習(xí)名稱電子工藝實(shí)習(xí)學(xué)生姓名學(xué)號(hào)實(shí)習(xí)時(shí)間7.9-7.20實(shí)習(xí)地點(diǎn)主樓522實(shí)習(xí)內(nèi)容學(xué)生實(shí)習(xí)總結(jié)(附頁(yè),不少于 200(字)請(qǐng)見(jiàn)下面附頁(yè)7.9 :領(lǐng)取實(shí)驗(yàn)器材,確定分組,老師講解電烙鐵以及吸錫器的使用。7.10 :教三315學(xué)習(xí)理論課,下午繼續(xù)練習(xí)點(diǎn)焊。7.11 :練習(xí)點(diǎn)焊,驗(yàn)收點(diǎn)焊實(shí)驗(yàn)。7.12-7.13 :發(fā)光二極管的焊接以及調(diào)試代碼控制LED顯示情況,LED顯示以后進(jìn)行驗(yàn)收。7.16-7.18 :小車組裝,包裝,以及編程控制小車的平衡以及前進(jìn)。7.19 :實(shí)驗(yàn)驗(yàn)收,下午撰寫(xiě)實(shí)驗(yàn)報(bào)告。7.20 :提交實(shí)驗(yàn)報(bào)告。實(shí) 習(xí)

2、成 績(jī) 評(píng) 定遵照實(shí)習(xí)大綱并根據(jù)以下三方面按五級(jí)分制(優(yōu)秀、良好、中等、及格、不及格) 綜合評(píng)定成績(jī):1、思想品德、實(shí)習(xí)態(tài)度、實(shí)習(xí)紀(jì)律等2、技術(shù)業(yè)務(wù)考核、筆試、口試、實(shí)際操作等3、實(shí)習(xí)報(bào)告、分析問(wèn)題、解決問(wèn)題的能力實(shí)習(xí)評(píng)語(yǔ):實(shí)習(xí)成績(jī):指導(dǎo)教師簽名:實(shí)習(xí)單位公章附頁(yè):學(xué)生實(shí)習(xí)總結(jié).實(shí)習(xí)任務(wù)要求1、練習(xí)焊接技術(shù),焊接并實(shí)現(xiàn)簡(jiǎn)單的發(fā)光二極管交替閃爍電路。2、練習(xí)編程技能,組裝并焊接智能平衡小車,使其能平穩(wěn)行走數(shù)米,設(shè)計(jì)小車外觀。設(shè)計(jì)思路1、發(fā)光二極管交替閃爍電路焊接技術(shù)練習(xí)完畢后,開(kāi)始焊接 LED燈。根據(jù)之前的經(jīng)驗(yàn),先焊接外圍的LED二極管,焊接完成之后再焊接內(nèi)側(cè)的,這樣的焊接目的是保證焊接的LED

3、矩陣是平整的而不是凹凸不平。8個(gè)LED二極管交替電路的實(shí)現(xiàn):研究老師給的代碼可以知道控制輸出字符形狀是由每一列 的亮和滅來(lái)控制,每一列8個(gè)燈的亮滅由兩位16進(jìn)制數(shù)來(lái)控制,將16進(jìn)制轉(zhuǎn)化為4位二進(jìn)制,其中” 1”代表二極管的亮,“0 ”代表二極管的滅。2、智能平衡小車智能平衡車用STM32F103RC作為單片機(jī)核心板,通過(guò)usb連接至電腦然后燒錄程序來(lái)調(diào)控 小車的運(yùn)動(dòng)狀態(tài)。智能平衡小車平衡的實(shí)現(xiàn)采用PD算法。通過(guò)對(duì)傳感器傳送回來(lái)的數(shù)據(jù)進(jìn)行修正,將起伏劇烈的角度變化修正為平滑的變化趨勢(shì)。直走、轉(zhuǎn)彎等狀態(tài)的實(shí)現(xiàn)使用 PID算法及計(jì)時(shí)器。通過(guò)控制車輪的角度、角速度以及電機(jī)的轉(zhuǎn)速來(lái)控制小車的狀態(tài),當(dāng)小車

4、處于平衡時(shí)電機(jī)緩慢 轉(zhuǎn)動(dòng);當(dāng)小車向前傾斜時(shí),電機(jī)加速向前加速轉(zhuǎn)動(dòng), 且轉(zhuǎn)動(dòng)的速度歲傾斜程度的加大而加大;小車向后傾斜時(shí),電機(jī)加速向后轉(zhuǎn)動(dòng),控制車輪向后轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)速度也隨傾斜角度增大而增 大。小車外殼設(shè)計(jì)為簡(jiǎn)易的卡紙包裝,再保證小車外觀整潔的同時(shí)也避免了因?yàn)榘b而讓小車的 質(zhì)量增加太多從而影響了小車各種狀態(tài)下的加速度等物理值,減少了調(diào)試中的困難、具體實(shí)現(xiàn)過(guò)程1、發(fā)光二極管交替閃爍電路二極管交替閃爍電路的的焊接與組裝按照先易后難的順序來(lái)焊接,先將電阻焊接在雙面板上,然后焊接芯片,最后焊接LED二極管。1.2交替電路的實(shí)現(xiàn)。先設(shè)計(jì)出要LED矩陣要顯示的內(nèi)容,畫(huà)出大致的草稿圖,根據(jù)LED矩陣的排列規(guī)律

5、修改出相應(yīng)的控制代碼。2、智能平衡小車的設(shè)計(jì)與實(shí)現(xiàn)2.1、小車的組裝根據(jù)教程將小車各部件組裝好。2.2、功能實(shí)現(xiàn)2.2.1 動(dòng)力控制小車由一節(jié) 4.2v 直流式電源供電工作。2.2.2 小車平衡的控制:float KP = 5.;float KI = 0 ;float KD = 0.5;const int16_t MOTO_THRESHOLD = 600 ; / PWM = 18KHzctrl = g_mpu9250.Angle_Complement_1st * KP+ angle_diff * KI+ g_mpu9250.gyro_scale_y * KDCtrl 值的大小控制小車是否達(dá)到平

6、衡,當(dāng) Ctrl 值達(dá)到 0 時(shí),說(shuō)明小車達(dá)到平衡,當(dāng) Ctrl值不為0時(shí)分Ctrl>0 和Ctrl<0 ;當(dāng)Ctrl>0時(shí)此時(shí)小車向后傾斜,但是會(huì)有一個(gè)向后 的加速度以此來(lái)達(dá)到平衡;當(dāng) Ctrl<0 時(shí),此時(shí)小車向前傾斜,會(huì)有一個(gè)向前的加速度來(lái)達(dá) 到平衡。a) 運(yùn)行狀態(tài)的控制: 小車使用直流電機(jī)實(shí)現(xiàn)其直立行走及平衡,車輪需進(jìn)行前后兩個(gè)方向的行進(jìn)以此來(lái) 達(dá)到我們想要的狀態(tài)。算法主要思路通過(guò)代碼可知當(dāng)某一電機(jī)的 PWMl與設(shè)定的前進(jìn)和后退的 pwm值不同時(shí),這 個(gè)電機(jī)的轉(zhuǎn)動(dòng)狀態(tài)就會(huì)發(fā)生變化,電機(jī)控制的車輪就會(huì)發(fā)生相應(yīng)的運(yùn)動(dòng),因 此設(shè)計(jì)恰當(dāng)?shù)臓顟B(tài)以實(shí)現(xiàn)小車能平衡向前運(yùn)動(dòng)。計(jì)

7、時(shí)器:在主函數(shù)中加入計(jì)時(shí)器控制電機(jī)工作的狀態(tài);具體代碼float KP = 5.55 ;float KI = 0 ;float KD = 0.5;const int16_t MOTO_THRESHOLD = 600 ; / PWM = 18KHzstatic float angle_D = 0 ; static float angle_D_last = 0 ;float ctrl ;float angle_diff = 0 ; int16_t dir ;int16_t PWM ;angle_diff += g_mpu9250.Angle_Complement_1st ;ctrl = (g_mp

8、u9250.Angle_Complement_1st-pwm ) * KP + angle_diff * KI+ (g_mpu9250.gyro_scale_y ) * KD ;if ( ctrl > 0 )dir = 1; / backward elsedir = 0 ; / forwardPWM = abs( (int)ctrl ) + MOTO_THRESHOLD ;/ if (PWM > 700 ) PWM = 700; - g_moto_ctrl.right_pwm = PWM ;if ( dir = 0 ) left_forward( PWM); right_forwa

9、rd( PWM); elseleft_backward( PWM );nght_backward( PWM );四、本人工作1發(fā)光二極管的焊接以及顯示單面板上的點(diǎn)焊練習(xí)以及實(shí)驗(yàn)驗(yàn)收,焊接二極管矩陣以及芯片。參與修改字符顯示代 碼的修改。2、智能平衡小車:參與小車的組裝,搭建小車外殼,小車平穩(wěn)直立代碼的調(diào)試,小車直行代碼的調(diào)試。五、實(shí)現(xiàn)功能及測(cè)試數(shù)據(jù)1、實(shí)現(xiàn)功能(1)發(fā)光二極管陣列發(fā)光二極管會(huì)顯示“ I LOVE U ”這些字母依次從右向左流動(dòng)顯示。(2 )智能小車開(kāi)始小車實(shí)現(xiàn)平衡的功能,經(jīng)過(guò)調(diào)試后實(shí)現(xiàn)向前走的功能。2、調(diào)試(1)發(fā)光二極管陣列此項(xiàng)任務(wù)主要是對(duì)前幾天點(diǎn)焊練習(xí)的一種考察,焊接過(guò)程由

10、于二極管與二極管之間的間距很緊密因此焊接難度有點(diǎn)大,因此焊接過(guò)程從外向內(nèi)焊接,焊接完成后燒錄 程序,觀察時(shí)候每一個(gè) LED二極管都亮,之后可以看到“ BUPT字樣的顯示,之后 自行修改代碼,使其顯示自己預(yù)期的字符。但是注意每次燒錄完成顯示一段時(shí)間后 記得對(duì)核心板斷電否則板子很容易燒壞。(2 )智能小車在進(jìn)行智能小車的測(cè)試時(shí),我們分為兩步: 第一步:實(shí)現(xiàn)小車的平衡。將程序燒錄到開(kāi)發(fā)板后,給小車接通電源,小車能保持平衡狀態(tài),而且在沒(méi)外 力干擾以及地面平整度不是特別陡峭的情況下,這個(gè)狀態(tài)可以維持較長(zhǎng)時(shí)間。 第二步:直行的實(shí)現(xiàn)在測(cè)試小車的直走功能時(shí),剛開(kāi)始測(cè)試時(shí),小車直行不到20cm就倒下去了,經(jīng)調(diào)試

11、發(fā)現(xiàn)有可能是小車的重心偏向于小車前方所導(dǎo)致的,因此我們?cè)谛≤嚨暮蠓郊恿艘粋€(gè)用卡紙制作的后蓋,重新測(cè)試,發(fā)現(xiàn)小車可穩(wěn)定的直行,當(dāng)小車出現(xiàn)向一 邊倒的趨勢(shì)時(shí),它會(huì)向這個(gè)方向加速一小段距離后自動(dòng)維持平衡后再行走。最后我們?cè)O(shè)定小車狀態(tài)的維持時(shí)間,初始時(shí),小車保持平衡10s,之后平衡7s左右時(shí)小車會(huì)向前行走一小段距離。八、遇到的問(wèn)題及解決辦法1. 焊接過(guò)程中,有幾個(gè)二極管周圍的焊接口被滴落下的融化的錫絲堵住。解決辦法:利用吸錫器將堵住的焊接口疏通,并且更換電烙鐵的烙鐵頭,更換尖嘴頭,雖然尖嘴頭導(dǎo)熱效果不太好,但是可以有效避免融化的錫絲滴落到未焊接的接口上。2. 焊接完成后,燒錄程序后有兩個(gè)二極管不亮。解

12、決辦法:首先檢查二極管正負(fù)極是否焊接有誤,發(fā)現(xiàn)焊接沒(méi)有錯(cuò)誤;進(jìn)一步觀察是 否焊接的二極管有誤漏焊的現(xiàn)象,如果有重新焊接。3. 小車尖頂外殼重心難以控制,直立行走距離較短,且不平穩(wěn)。解決辦法:在小車上加個(gè)后蓋,再次調(diào)整參數(shù),得以平穩(wěn)行進(jìn)。4 .小車不平衡解決方法:修改 PwMt,每次以小幅度增加或減少的改變,直至小車平衡。5.小車可以平衡,但是前進(jìn)過(guò)程無(wú)法平衡。解決方法:在 common.h文件中加一個(gè)剎車程序,從而小車在前傾的時(shí)候有個(gè)類似的 剎車控制程序來(lái)重新調(diào)控其再次保持平衡。七、實(shí)驗(yàn)心得本次實(shí)驗(yàn)開(kāi)始階段連續(xù)幾天的焊接著實(shí)讓大家對(duì)這次實(shí)習(xí)失去了太多期待,但其實(shí)每天的焊接過(guò)程中都是在不斷進(jìn)步的

13、過(guò)程。第一天焊接出的成品真的是連自己都不好意思去看, 第三天焊接二極管的過(guò)程其實(shí)很考驗(yàn)人的耐心和細(xì)心,一不小心就容易把其他焊接口堵住, 或者焊接二極管的高度沒(méi)能達(dá)到預(yù)期目標(biāo),因此這個(gè)階段需要充分的耐心與細(xì)心。組裝下車過(guò)程是一個(gè)團(tuán)隊(duì)合作工作, 需要兩個(gè)人協(xié)同配合才能保證小車組裝的速度和準(zhǔn)確性。小車調(diào)試的過(guò)程是最困難的過(guò)程, 不僅需要每天去看程序, 改代碼,調(diào)參數(shù),還要多和其他人交流, 每個(gè)人在實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題各種各樣,有時(shí)候會(huì)出現(xiàn)各種莫名其妙的bug,這個(gè)時(shí)候單靠小組內(nèi)兩個(gè)人來(lái)解決可能不夠,和其他人交流可能起到事半功倍的效果,就比如在調(diào)試小車前進(jìn)的過(guò)程中一開(kāi)始調(diào)試了兩天每次都因?yàn)槟骋粋€(gè)方向的

14、加速度偏大或偏小導(dǎo)致小車 一前進(jìn)就磕頭,陷入無(wú)限磕頭的模式。經(jīng)過(guò)和其他人討論,加了一個(gè)剎車程序,從而實(shí)現(xiàn)了 前進(jìn)過(guò)程中還保持平衡的目的??傮w來(lái)說(shuō),這次實(shí)驗(yàn)雖然對(duì)代碼的要求不高,但是也很考察c語(yǔ)言的功底,有些代碼的修改很需要一定的 c基礎(chǔ),這次實(shí)習(xí)是對(duì)各種能力的一個(gè)小考察, 一個(gè)小項(xiàng)目就給我們帶來(lái)那么多困難,很難想象以后的研究生生涯會(huì)是遇到怎么樣的挑戰(zhàn)。 這次實(shí)習(xí)也告訴我,實(shí)驗(yàn)考察的事多方面素質(zhì),各方面有欠缺都不行,以后的學(xué)習(xí)中需要更 加努力學(xué)習(xí)編程,看懂代碼,理解實(shí)驗(yàn)要義,才能做出好的項(xiàng)目成果。八、部分代碼源程序8 1、發(fā)光二極管交替閃爍電路#include#includeuint8_tuin

15、t8_t uint16_t"spi.h""dot_matrix.h" g_sys_mode g_dot_start g_dot_cntuint8_tg_ShowData 51 = 0x81,0xFF,0xFF,0x81,0x00,0x00,0x81,0xFF,0xFF,0x81,0x80,0x80,0x80,0x40,0 x00,0x7E,0x81,0x81,0x81,0x7E,0x00,0x01,0x3F,0x40,0x80,0x40,0x3F,0x01,0x00,0x81,0 xFF,0x99,0x99,0x99,0x42,0x00,0x00,0x0

16、1,0x7F,0x80,0x80,0x80,0x7F,0x01,0x00,0xBF,0 x00,0xBF,0,0,0;8.2 、智能平衡小車8.2.1 加了剎車程序后的 common.c 代碼:#include <string.h>#include "stm32f1xx_hal.h" #include "tim.h" #include "spi.h"#include "main.h" #include "moto_ctrl.h" #include "dot_matrix.h

17、" #include "uart_osc.h"#include "common.h" #include "esp8266.h"#include "mpu9250.h"#include "moto_ctrl.h" extern mpu9250_t g_mpu9250 ; extern moto_ctrl_t g_moto_ctrl ; uint32_t g_SysMode = 2 ;uint32_t ReadUserButton0( void )static uint8_t btn0_d

18、own = 0 ;static uint8_t btn0_up = 1 ;if ( HAL_GPIO_ReadPin( USER_PB0_GPIO_Port, USER_PB0_Pin) = GPIO_PIN_RESET) if ( btn0_down = 1 && btn0_up = 1 ) btn0_up = 0 ;return 1 ;elsebtn0_down = 1 ;HAL_Delay( 50 ); elsebtn0_down = 0; btn0_up = 1 ;return 0 ;uint32_t ReadUserButton1( void ) HAL_GPIO_R

19、eadPin( USER_PB1_GPIO_Port, USER_PB1_Pin) = GPIO_PIN_RESET)static uint8_t btn1_down = 0 ; static uint8_t btn1_up = 1 ; if (if ( btn1_down = 1 && btn1_up = 1 ) btn1_up = 0 ;return 1 ;elsebtn1_down = 1 ;HAL_Delay( 50 ); elsebtn1_down = 0; btn1_up = 1 ;return 0 ;/ index 0 : all , 14 : LED14/ mo

20、de 0 : off , 1 : on , 2 : togglevoid LEDCtrl( uint32_t index , uint32_t mode )switch( index )case 0 :if ( mode = 0 )HAL_GPIO_WritePin( LED1_GPIO_Port , LED1_Pin, GPIO_PIN_SET );HAL_GPIO_WritePin( LED2_GPIO_Port , LED2_Pin, GPIO_PIN_SET );else if ( mode = 1 )HAL_GPIO_WritePin( LED1_GPIO_Port , LED1_P

21、in, GPIO_PIN_RESET );HAL_GPIO_WritePin( LED2_GPIO_Port , LED2_Pin, GPIO_PIN_RESET); break;case 1 :if ( mode = 0 )HAL_GPIO_WritePin( LED1_GPIO_Port , LED1_Pin, GPIO_PIN_SET );else if ( mode = 1 )HAL_GPIO_WritePin( LED1_GPIO_Port , LED1_Pin, GPIO_PIN_RESET );else if ( mode = 2 )HAL_GPIO_TogglePin( LED

22、1_GPIO_Port , LED1_Pin );break;case 2 :if ( mode = 0 ) HAL_GPIO_WritePin( LED2_GPIO_Port , LED2_Pin, GPIO_PIN_SET ); else if ( mode = 1 ) HAL_GPIO_WritePin( LED2_GPIO_Port , LED2_Pin, GPIO_PIN_RESET ); else if ( mode = 2 ) HAL_GPIO_TogglePin( LED2_GPIO_Port , LED2_Pin ); break;default : break;void S

23、leepSystem( void ) / MX_GPIO_DeInit();HAL_PWR_EnterSLEEPMode( PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFE ); void StopSystem( void )HAL_PWR_EnterSTOPMode( PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI ); void Get_IR_Sensor( void )/?-?/ pin 3,2,1 -> IR 4,3,5/ pin 5,3 -> IR 2,1 uint8_t data0 , da

24、ta1; data0 = GPIOC->IDR & 0x0E; data1 = GPIOB->IDR & 0x28;g_moto_ctrl.ir_sensor = (data1<<2 ) | data0 ; void IR_Sensor_Init( void )GPIO_InitTypeDef GPIO_InitStruct;HAL_SPI_MspDeInit( &hspi3 );HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3|GPIO_PIN_5, GPIO_PIN_RESET);HAL_GPIO_WritePin(GP

25、IOC, IR_3_Pin|IR_4_Pin|IR_5_Pin, GPIO_PIN_RESET);HAL_GPIO_DeInit(GPIOC, IR_3_Pin|IR_4_Pin|IR_5_Pin);/*Configure GPIO pins : PBPin PBPin */ GPIO_InitStruct.Pin = IR_1_Pin|IR_2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);G

26、PIO_InitStruct.Pin = IR_3_Pin|IR_4_Pin|IR_5_Pin;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);void SetWorkMode( uint32_t mode) switch ( mode ) case 0 : / balance control LEDCtrl( 1 , 0 ); LEDCtrl( 2 , 1 );HAL_TIM_PWM_MspInit(&am

27、p;htim8);HAL_TIM_Base_Start_IT(&htim6);IR_Sensor_Init();break;case 1 : / dot matrixLEDCtrl( 1 , 1 );LEDCtrl( 2 , 0 );HAL_TIM_Base_Stop_IT(&htim6);Motor_Stop();HAL_TIM_PWM_MspDeInit(&htim8); dot_matrix_init();break ;case 2 : / show osc waveLEDCtrl( 1 , 1 );LEDCtrl( 2 , 1 );Motor_Stop();HA

28、L_TIM_PWM_MspDeInit(&htim8);IR_Sensor_Init();HAL_TIM_Base_Start_IT(&htim6); break ;voidUserTask( void )if ( ReadUserButton0() = 1 )LEDCtrl( 0 , 0 );HAL_TIM_Base_Stop_IT(&htim6);HAL_TIM_PWM_MspDeInit(&htim8);HAL_PWR_EnterSTANDBYMode();if ( ReadUserButton1() = 1 ) g_SysMode+;if ( g_Sys

29、Mode > 2 ) g_SysMode = 0 ; SetWorkMode( g_SysMode );switch ( g_SysMode )case 1 : / dot matrixshow_dot_matrix(); break;case 2 :Uart_OSC_ShowWave( g_mpu9250.angle_x g_mpu9250.Angle_Complement_1st, g_moto_ctrl.ir_sensor ) ; / Uart_OSC_ShowWave( g_moto_ctrl.right_pwm g_mpu9250.Angle_Complement_1st )

30、;g_mpu9250.gyro_scale_yg_moto_ctrl.left_pwm/ Uart_OSC_ShowWave( g_mpu9250.angle_x g_mpu9250.Angle_Kalman , g_mpu9250.Angle_Complement_1st ) ;break;g_mpu9250.gyro_scale_yvoid SystemTimer1msCallback(int ctrl, float bala ) static uint32_t i = 0 ;if ( i >= 99 ) i = 0 ; else i + ;Get_IR_Sensor();MPU92

31、50_Get_Accel_Gyro_Temp();MPU9250_Data_Process();if(ctrl=0)Moto_Balance_PID_Ctrl(0+8.5-bala);else if(ctrl=1)Moto_Balance_PID_Ctrl(0); elseMoto_Balance_PID_Ctrl(-6.5);switch ( g_SysMode )case 0 : / banlance carif ( i = 99 ) LEDCtrl( 2 , 2 );break;case 2 :if ( g_mpu9250.angle_x > 0 ) LEDCtrl( 2 , 1

32、);else if ( g_mpu9250.angle_x < 0 ) LEDCtrl( 2 , 0 ); break ;8.2.2、修改過(guò)的 Ctrl.moto .c 的部分代碼float KP = 5.55 ;float KI = 0 ;float KD = 0.5;const int16_t MOTO_THRESHOLD = 600 ; / PWM = 18KHzstatic float angle_D = 0 ; static float angle_D_last = 0 ;float ctrl ;float angle_diff = 0 ; int16_t dir ;int16

33、_t PWM ;angle_diff += g_mpu9250.Angle_Complement_1st ;ctrl = (g_mpu9250.Angle_Complement_1st-pwm ) * KP + angle_diff * KI+ (g_mpu9250.gyro_scale_y ) * KD ;if ( ctrl > 0 )dir = 1; / backward else dir = 0 ; / forwardPWM = abs( (int)ctrl ) + MOTO_THRESHOLD ;/ if (PWM > 700 ) PWM = 700; g_moto_ctr

34、l.right_pwm = PWM ;if ( dir = 0 ) left_forward( PWM); right_forward( PWM); elseleft_backward( PWM ); right_backward( PWM ) ;void Moto_Ctrl_Init( void )memset( &g_moto_ctrl , 0 , sizeof( moto_ctrl_t ) ); void right_backward(uint16_t value) HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_4);HAL_GPIO_WritePin(MT1_A_GPIO_Port, MT1_A_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(MT1_B_GPIO_Port, MT1_B_Pin, GPIO_PIN_RESET);TIM_SetCompare4(TIM8, value);HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_4);void right_forward(uint1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論