版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、電子工藝實習報告學院:專業(yè):班級:學號:姓名:北京郵電大學實習報告實習名稱電子工藝實習學院學生姓名班級學號實習時間7.9-7.20實習地點主樓522實 習 內(nèi) 容7.9 :領(lǐng)取實驗器材,確定分組,老師講解電烙鐵以及吸錫器的使用。7.10 :教三315學習理論課,下午繼續(xù)練習點焊。7.11 :練習點焊,驗收點焊實驗。7.12-7.13 :發(fā)光二極管的焊接以及調(diào)試代碼控制LED顯示情況,LED顯示以后進行驗收。7.16-7.18 :小車組裝,包裝,以及編程控制小車的平衡以及前進。7.19 :實驗驗收,下午撰寫實驗報告。7.20 :提交實驗報告。學生 實習 總結(jié)(附頁,不少于 200(字)請見下面附
2、頁實習成績評定遵照實習大綱并根據(jù)以下三方面按五級分制(優(yōu)秀、良好、中等、及格、不及格) 綜合評定成績:1、思想品德、實習態(tài)度、實習紀律等2、技術(shù)業(yè)務(wù)考核、筆試、口試、頭際操作等3、實習報告、分析問題、解決問題的能力實習評語:實習成績:指導教師簽名:實習單位公章年月日附頁:學生實習總結(jié)一.實習任務(wù)要求1、練習焊接技術(shù),焊接并實現(xiàn)簡單的發(fā)光二極管交替閃爍電路。2、練習編程技能,組裝并焊接智能平衡小車,使其能平穩(wěn)行走數(shù)米,設(shè)計小車外觀。二設(shè)計思路1、發(fā)光二極管交替閃爍電路焊接技術(shù)練習完畢后,開始焊接LED燈。根據(jù)之前的經(jīng)驗,先焊接外圍的LED二極管,焊接完成之后再焊接內(nèi)側(cè)的,這樣的焊接目的是保證焊接
3、的LED矩陣是平整的而不是凹凸不平。交替電路的實現(xiàn):研究老師給的代碼可以知道控制輸出字符形狀是由每一列8個LED二極管的亮和滅來控制,每一列8個燈的亮滅由兩位16進制數(shù)來控制,將16進制轉(zhuǎn)化為4位二進 制,其中” 1”代表二極管的亮,“0 ”代表二極管的滅。2、智能平衡小車智能平衡車用STM32F103RC作為單片機核心板,通過 usb連接至電腦然后燒錄程序來調(diào)控 小車的運動狀態(tài)。智能平衡小車平衡的實現(xiàn)采用PD算法。通過對傳感器傳送回來的數(shù)據(jù)進行修正,將起伏劇烈的角度變化修正為平滑的變化趨勢。直走、轉(zhuǎn)彎等狀態(tài)的實現(xiàn)使用 PID算法及計時器。通過控制車輪的角度、角速度以及電機的轉(zhuǎn)速來控制小車的狀
4、態(tài),當小車處于平衡時電機緩慢轉(zhuǎn)動;當小車向前傾斜時,電機加速向前加速轉(zhuǎn)動,且轉(zhuǎn)動的速度歲傾斜程度的加大而加大;小車向后傾斜時,電機加速向后轉(zhuǎn)動,控制車輪向后轉(zhuǎn)動,轉(zhuǎn)動速度也隨傾斜角度增大而增 大。小車外殼設(shè)計為簡易的卡紙包裝,再保證小車外觀整潔的同時也避免了因為包裝而讓小車的 質(zhì)量增加太多從而影響了小車各種狀態(tài)下的加速度等物理值,減少了調(diào)試中的困難。三、具體實現(xiàn)過程1、發(fā)光二極管交替閃爍電路1.1 二極管交替閃爍電路的的焊接與組裝按照先易后難的順序來焊接,先將電阻焊接在雙面板上,然后焊接芯片,最后焊接LED二極管。1.2 交替電路的實現(xiàn)。先設(shè)計出要LED矩陣要顯示的內(nèi)容,畫出大致的草稿圖,根據(jù)
5、LED矩陣的排列規(guī)律修改出相應的控制代碼。2、智能平衡小車的設(shè)計與實現(xiàn)2.1、小車的組裝根據(jù)教程將小車各部件組裝好。2.2、功能實現(xiàn)小車由一節(jié) 4.2v 直流式電源供電工作。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 值的大小控制小車是否達到平衡,當 Ctrl 值達到 0
6、 時,說明小車達到平衡,當 Ctrl值不為0時分Ctrl0 和Ctrl0時此時小車向后傾斜,但是會有一個向后 的加速度以此來達到平衡;當 Ctrl 0 )dir = 1; / backwardelsedir = 0 ; / forwardPWM = abs( (in t)ctrl ) + MOTO_THRESHOLD ;/ if (PWM 700 ) PWM = 700;-g_moto_ctrl.right_pwm = PWM ;if ( dir = 0 )left_forward( PWM); right_forward( PWM);elseleft_backward( PWM ); rig
7、ht_backward( PWM );四、本人工作1、發(fā)光二極管的焊接以及顯示:單面板上的點焊練習以及實驗驗收,焊接二極管矩陣以及芯片。參與修改字符顯示代 碼的修改。2、智能平衡小車:參與小車的組裝,搭建小車外殼,小車平穩(wěn)直立代碼的調(diào)試,小車直行代碼的調(diào)試。五、實現(xiàn)功能及測試數(shù)據(jù)1、實現(xiàn)功能(1)發(fā)光二極管陣列發(fā)光二極管會顯示“ I LOVE U ”這些字母依次從右向左流動顯示。(2 )智能小車開始小車實現(xiàn)平衡的功能,經(jīng)過調(diào)試后實現(xiàn)向前走的功能。2、調(diào)試(1)發(fā)光二極管陣列此項任務(wù)主要是對前幾天點焊練習的一種考察,焊接過程由于二極管與二極管之間的間距很緊密因此焊接難度有點大,因此焊接過程從外向
8、內(nèi)焊接,焊接完成后燒錄 程序,觀察時候每一個 LED二極管都亮,之后可以看到“ BUPT字樣的顯示,之后 自行修改代碼,使其顯示自己預期的字符。但是注意每次燒錄完成顯示一段時間后 記得對核心板斷電否則板子很容易燒壞。(2 )智能小車在進行智能小車的測試時,我們分為兩步:第一步:實現(xiàn)小車的平衡。將程序燒錄到開發(fā)板后,給小車接通電源,小車能保持平衡狀態(tài),而且在沒外力干擾以及地面平整度不是特別陡峭的情況下,這個狀態(tài)可以維持較長時間。 第二步:直行的實現(xiàn)在測試小車的直走功能時,剛開始測試時,小車直行不到20cm就倒下去了,經(jīng)調(diào)試發(fā)現(xiàn)有可能是小車的重心偏向于小車前方所導致的,因此我們在小車的后方加了一個
9、用卡紙制作的后蓋,重新測試,發(fā)現(xiàn)小車可穩(wěn)定的直行,當小車出現(xiàn)向一 邊倒的趨勢時,它會向這個方向加速一小段距離后自動維持平衡后再行走。最后我們設(shè)定小車狀態(tài)的維持時間,初始時,小車保持平衡10s,之后平衡7s左右時小車會向前行走一小段距離。六、遇到的問題及解決辦法1焊接過程中,有幾個二極管周圍的焊接口被滴落下的融化的錫絲堵住。解決辦法:利用吸錫器將堵住的焊接口疏通,并且更換電烙鐵的烙鐵頭,更換尖嘴頭,雖然尖嘴頭導熱效果不太好,但是可以有效避免融化的錫絲滴落到未焊接的接口上。2. 焊接完成后,燒錄程序后有兩個二極管不亮。解決辦法:首先檢查二極管正負極是否焊接有誤,發(fā)現(xiàn)焊接沒有錯誤;進一步觀察是否焊接
10、的二極管有誤漏焊的現(xiàn)象,如果有重新焊接。3. 小車尖頂外殼重心難以控制,直立行走距離較短,且不平穩(wěn)。解決辦法:在小車上加個后蓋,再次調(diào)整參數(shù),得以平穩(wěn)行進。4 .小車不平衡解決方法:修改 PwMt,每次以小幅度增加或減少的改變,直至小車平衡。5. 小車可以平衡,但是前進過程無法平衡。 解決方法:在 common.h 文件中加一個剎車程序,從而小車在前傾的時候有個類似的 剎車控制程序來重新調(diào)控其再次保持平衡。七、實驗心得本次實驗開始階段連續(xù)幾天的焊接著實讓大家對這次實習失去了太多期待,但其實每天的焊接過程中都是在不斷進步的過程。第一天焊接出的成品真的是連自己都不好意思去看, 第三天焊接二極管的過
11、程其實很考驗人的耐心和細心,一不小心就容易把其他焊接口堵住, 或者焊接二極管的高度沒能達到預期目標, 因此這個階段需要充分的耐心與細心。組裝下車過程是一個團隊合作工作, 需要兩個人協(xié)同配合才能保證小車組裝的速度和準確性。小車調(diào)試的過程是最困難的過程, 不僅需要每天去看程序, 改代碼, 調(diào)參數(shù), 還要多和其他人交流, 每個人在實驗過程中遇到的問題各種各樣,有時候會出現(xiàn)各種莫名其妙的bug ,這個時候單靠小組內(nèi)兩個人來解決可能不夠, 和其他人交流可能起到事半功倍的效果, 就比如在調(diào)試 小車前進的過程中一開始調(diào)試了兩天每次都因為某一個方向的加速度偏大或偏小導致小車 一前進就磕頭, 陷入無限磕頭的模式
12、。經(jīng)過和其他人討論,加了一個剎車程序,從而實現(xiàn)了 前進過程中還保持平衡的目的。 總體來說, 這次實驗雖然對代碼的要求不高, 但是也很考察 c 語言的功底, 有些代碼的修改很需要一定的 c 基礎(chǔ),這次實習是對各種能力的一個小考察, 一個小項目就給我們帶來那么多困難,很難想象以后的研究生生涯會是遇到怎么樣的挑戰(zhàn)。 這次實習也告訴我, 實驗考察的事多方面素質(zhì), 各方面有欠缺都不行, 以后的學習中需要更 加努力學習編程,看懂代碼,理解實驗要義,才能做出好的項目成果。八、部分代碼源程序81、發(fā)光二極管交替閃爍電路#include?spi.h #include?dot_matrix.h uint8_t?g
13、_sys_mode?=?0?; uint8_t?g_dot_start?=?0?; uint16_t?g_dot_cnt?=?0?; uint8_t?g_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,0x01,0x7F,0x80,0x80
14、,0x80,0x7F,0x01,0x00,0xBF,0 x00,0xBF,0,0,0;8.2 、智能平衡小車#include #include stm32f1xx_hal.h#include tim.h#include spi.h#include main.h #include moto_ctrl.h#include dot_matrix.h#include uart_osc.h#include common.h #include esp8266.h#include mpu9250.h#include moto_ctrl.h extern mpu9250_t g_mpu9250 ;extern
15、 moto_ctrl_t g_moto_ctrl ;uint32_t g_SysMode = 2 ;uint32_t ReadUserButton0( void )static uint8_t btn0_down = 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_Dela
16、y( 50 );elsebtn0_down = 0; btn0_up = 1 ;return 0 ;uint32_t ReadUserButton1( void )static uint8_t btn1_down = 0 ;static uint8_t btn1_up = 1 ;if ( HAL_GPIO_ReadPin( USER_PB1_GPIO_Port, USER_PB1_Pin) = GPIO_PIN_RESET) if ( btn1_down = 1 & btn1_up = 1 ) btn1_up = 0 ; return 1 ;elsebtn1_down = 1 ;HAL_Del
17、ay( 50 );elsebtn1_down = 0; btn1_up = 1 ;return 0 ;/ index 0 : all , 14 : LED14/ mode 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
18、_Pin, GPIO_PIN_SET );else if ( mode = 1 )HAL_GPIO_WritePin( LED1_GPIO_Port , LED1_Pin, 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( LED
19、1_GPIO_Port , LED1_Pin, GPIO_PIN_RESET );else if ( mode = 2 )HAL_GPIO_TogglePin( LED1_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 =
20、 2 )HAL_GPIO_TogglePin( LED2_GPIO_Port , LED2_Pin ); break;default :break;void SleepSystem( 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(
21、void )/?-?uint8_t data0 , data1;/ pin 3,2,1 - IR 4,3,5/ pin 5,3 - IR 2,1data0 = GPIOC-IDR & 0x0E; data1 = GPIOB-IDR & 0x28;g_moto_ctrl.ir_sensor = (data1 2 ) g_SysMode = 0 ;SetWorkMode( g_SysMode );switch ( g_SysMode )case 1 : / dot matrix show_dot_matrix(); break;case 2 :Uart_OSC_ShowWave( g_mpu925
22、0.angle_x , g_mpu9250.gyro_scale_y g_mpu9250.Angle_Complement_1st, g_moto_ctrl.ir_sensor ) ;/Uart_OSC_ShowWave( g_moto_ctrl.right_pwm , g_moto_ctrl.left_pwmg_mpu9250.Angle_Complement_1st ) ;/Uart_OSC_ShowWave( g_mpu9250.angle_x , g_mpu9250.gyro_scale_yg_mpu9250.Angle_Kalman , g_mpu9250.Angle_Complem
23、ent_1st ) ;break;void SystemTimer1msCallback(int ctrl, float bala ) static uint32_t i = 0 ; if ( i = 99 ) i = 0 ; else i + ; Get_IR_Sensor();MPU9250_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
24、_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 );else if ( g_mpu9250.angle_x 0 )dir = 1; / backwardelsedir = 0 ; / forwardPWM = abs( (int)ctrl ) + MOTO_THRESHOLD ;/ if (PWM 700 ) PWM = 700;-g_moto_ctrl.r
25、ight_pwm = PWM ;if ( dir = 0 ) left_forward( PWM); right_forward( PWM);else left_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_G
26、PIO_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(uint16_t value)HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_4); HAL_GPIO_WritePin(MT1_A_GPIO_Port, MT1_A_Pin, GPIO_PIN_R
27、ESET); HAL_GPIO_WritePin(MT1_B_GPIO_Port, MT1_B_Pin, GPIO_PIN_SET); TIM_SetCompare4(TIM8, value);HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_4);void left_backward(uint16_t value)HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_3); HAL_GPIO_WritePin(MT2_B_GPIO_Port, MT2_B_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(MT2_A_GPIO_Port, MT2_A_Pin, GPIO_PIN_RESET); TIM_SetCompare3(TIM8, value);HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_3);void left_forward(uint16_t value)HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_3)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度采礦設(shè)備維修保養(yǎng)與升級合同3篇
- 2024年自動化冷凍庫租賃
- 橋梁工程實習報告范文5篇
- 高中學生歷史學習調(diào)查報告
- 老舊小區(qū)改造項目可行性研究報告
- 2025年度租賃合同變更合同模板:租賃合同修改協(xié)議3篇
- 2024版林木買賣協(xié)議書
- 2025年度藝術(shù)大賽參賽者作品保密合同3篇
- 湖北理工學院《電磁場與微波技術(shù)》2023-2024學年第一學期期末試卷
- 洛陽職業(yè)技術(shù)學院《土木工程試驗》2023-2024學年第一學期期末試卷
- 2024-2025學年人教版九年級數(shù)學上學期復習:圓的綜合解答題 壓軸題型專項訓練(30道題)
- 高中學生交通安全課件
- 高速收費站文明服務(wù)培訓
- 2024年基金應知應會考試試題
- 2024員工質(zhì)量意識培訓內(nèi)容大全
- 上海市徐匯區(qū)南洋模范中學2025屆物理高二第一學期期末檢測試題含解析
- 2024年教師資格考試初級中學學科知識與教學能力數(shù)學試題及解答參考
- 小學三年級上冊數(shù)學豎式計算題大全
- 物 理2024-2025學年蘇科版物理八年級上學期 期末綜合測試卷
- 2024新能源光伏電站運行規(guī)程
- 專題08 向量的運算(上海中考特色題型)30題(解析版)
評論
0/150
提交評論