欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    电子工艺标准规范标准实习.doc

    • 资源ID:2545848       资源大小:106.02KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子工艺标准规范标准实习.doc

    ,.电子工艺实习报告学院: 专业: 班级: 学号: 姓名: 北京邮电大学实习报告实习名称电子工艺实习学 院学生姓名班 级学 号实习时间7.9-7.20实习地点主楼522实习内容7.9:领取实验器材,确定分组,老师讲解电烙铁以及吸锡器的使用。7.10:教三315学习理论课,下午继续练习点焊。7.11:练习点焊,验收点焊实验。7.12-7.13:发光二极管的焊接以及调试代码控制LED显示情况,LED显示以后进行验收。7.16-7.18:小车组装,包装,以及编程控制小车的平衡以及前进。7.19:实验验收,下午撰写实验报告。7.20:提交实验报告。学生实习总结(附页,不少于2000字)请见下面附页实习成绩评定遵照实习大纲并根据以下三方面按五级分制(优秀、良好、中等、及格、不及格)综合评定成绩:1、思想品德、实习态度、实习纪律等2、技术业务考核、笔试、口试、实际操作等3、实习报告、分析问题、解决问题的能力实习评语:实习成绩:指导教师签名: 实习单位公章年 月 日附页:学生实习总结一实习任务要求1、练习焊接技术,焊接并实现简单的发光二极管交替闪烁电路。2、练习编程技能,组装并焊接智能平衡小车,使其能平稳行走数米,设计小车外观。二设计思路1、发光二极管交替闪烁电路焊接技术练习完毕后,开始焊接LED灯。根据之前的经验,先焊接外围的LED二极管,焊接完成之后再焊接内侧的,这样的焊接目的是保证焊接的LED矩阵是平整的而不是凹凸不平。交替电路的实现:研究老师给的代码可以知道控制输出字符形状是由每一列8个LED二极管的亮和灭来控制,每一列8个灯的亮灭由两位16进制数来控制,将16进制转化为4位二进制,其中”1”代表二极管的亮,“0”代表二极管的灭。2、智能平衡小车智能平衡车用STM32F103RC 作为单片机核心板,通过usb连接至电脑然后烧录程序来调控小车的运动状态。智能平衡小车平衡的实现采用PD算法。通过对传感器传送回来的数据进行修正,将起伏剧烈的角度变化修正为平滑的变化趋势。直走、转弯等状态的实现使用PID算法及计时器。通过控制车轮的角度、角速度以及电机的转速来控制小车的状态,当小车处于平衡时电机缓慢转动;当小车向前倾斜时,电机加速向前加速转动,且转动的速度岁倾斜程度的加大而加大;小车向后倾斜时,电机加速向后转动,控制车轮向后转动,转动速度也随倾斜角度增大而增大。小车外壳设计为简易的卡纸包装,再保证小车外观整洁的同时也避免了因为包装而让小车的质量增加太多从而影响了小车各种状态下的加速度等物理值,减少了调试中的困难。三、具体实现过程1、发光二极管交替闪烁电路1.1二极管交替闪烁电路的的焊接与组装按照先易后难的顺序来焊接,先将电阻焊接在双面板上,然后焊接芯片,最后焊接LED二极管。1.2交替电路的实现。先设计出要LED矩阵要显示的内容,画出大致的草稿图,根据LED矩阵的排列规律修改出相应的控制代码。2、智能平衡小车的设计与实现2.1、小车的组装根据教程将小车各部件组装好。2.2、功能实现2.2.1动力控制 小车由一节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 * KD Ctrl值的大小控制小车是否达到平衡,当Ctrl值达到0时,说明小车达到平衡,当Ctrl值不为0时分Ctrl>0 和Ctrl<0;当Ctrl>0时此时小车向后倾斜,但是会有一个向后的加速度以此来达到平衡;当Ctrl<0时,此时小车向前倾斜,会有一个向前的加速度来达到平衡。a) 运行状态的控制: 小车使用直流电机实现其直立行走及平衡,车轮需进行前后两个方向的行进以此来达到我们想要的状态。l 算法主要思路通过代码可知当某一电机的PWM值与设定的前进和后退的pwm值不同时,这个电机的转动状态就会发生变化,电机控制的车轮就会发生相应的运动,因此设计恰当的状态以实现小车能平衡向前运动。 计时器:在主函数中加入计时器控制电机工作的状态;l 具体代码 float KP = 5.55 ; float KI = 0 ; float KD = 0.5; const int16_t MOTO_THRESHOLD = 600 ; / PWM = 18KHz static 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_mpu9250.Angle_Complement_1st-pwm ) * KP + angle_diff * KI + (g_mpu9250.gyro_scale_y ) * KD ;if ( ctrl > 0 ) dir = 1; / backwardelsedir = 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_forward( PWM);elseleft_backward( PWM );right_backward( PWM ) ; 四、本人工作1、发光二极管的焊接以及显示:单面板上的点焊练习以及实验验收,焊接二极管矩阵以及芯片。参与修改字符显示代码的修改。2、智能平衡小车:参与小车的组装,搭建小车外壳,小车平稳直立代码的调试,小车直行代码的调试。五、实现功能及测试数据1、实现功能(1)发光二极管阵列发光二极管会显示“I LOVE U”这些字母依次从右向左流动显示。(2)智能小车开始小车实现平衡的功能,经过调试后实现向前走的功能。2、调试(1)发光二极管阵列此项任务主要是对前几天点焊练习的一种考察,焊接过程由于二极管与二极管之间的间距很紧密因此焊接难度有点大,因此焊接过程从外向内焊接,焊接完成后烧录程序,观察时候每一个LED二极管都亮,之后可以看到“BUPT”字样的显示,之后自行修改代码,使其显示自己预期的字符。但是注意每次烧录完成显示一段时间后记得对核心板断电否则板子很容易烧坏。(2)智能小车在进行智能小车的测试时,我们分为两步:第一步:实现小车的平衡。 将程序烧录到开发板后,给小车接通电源,小车能保持平衡状态,而且在没外力干扰以及地面平整度不是特别陡峭的情况下,这个状态可以维持较长时间。第二步:直行的实现 在测试小车的直走功能时,刚开始测试时,小车直行不到20cm就倒下去了,经调试发现有可能是小车的重心偏向于小车前方所导致的,因此我们在小车的后方加了一个用卡纸制作的后盖,重新测试,发现小车可稳定的直行,当小车出现向一边倒的趋势时,它会向这个方向加速一小段距离后自动维持平衡后再行走。 最后我们设定小车状态的维持时间,初始时,小车保持平衡10s,之后平衡7s左右时小车会向前行走一小段距离。六、遇到的问题及解决办法1. 焊接过程中,有几个二极管周围的焊接口被滴落下的融化的锡丝堵住。解决办法:利用吸锡器将堵住的焊接口疏通,并且更换电烙铁的烙铁头,更换尖嘴头,虽然尖嘴头导热效果不太好,但是可以有效避免融化的锡丝滴落到未焊接的接口上。2. 焊接完成后,烧录程序后有两个二极管不亮。解决办法:首先检查二极管正负极是否焊接有误,发现焊接没有错误;进一步观察是否焊接的二极管有误漏焊的现象,如果有重新焊接 。3. 小车尖顶外壳重心难以控制,直立行走距离较短,且不平稳。解决办法:在小车上加个后盖,再次调整参数,得以平稳行进。4小车不平衡解决方法:修改PWM值,每次以小幅度增加或减少的改变,直至小车平衡。5.小车可以平衡,但是前进过程无法平衡。解决方法:在common.h文件中加一个刹车程序,从而小车在前倾的时候有个类似的刹车控制程序来重新调控其再次保持平衡。七、 实验心得 本次实验开始阶段连续几天的焊接着实让大家对这次实习失去了太多期待,但其实每天的焊接过程中都是在不断进步的过程。第一天焊接出的成品真的是连自己都不好意思去看,第三天焊接二极管的过程其实很考验人的耐心和细心,一不小心就容易把其他焊接口堵住,或者焊接二极管的高度没能达到预期目标,因此这个阶段需要充分的耐心与细心。组装下车过程是一个团队合作工作,需要两个人协同配合才能保证小车组装的速度和准确性。小车调试的过程是最困难的过程,不仅需要每天去看程序,改代码,调参数,还要多和其他人交流,每个人在实验过程中遇到的问题各种各样,有时候会出现各种莫名其妙的bug ,这个时候单靠小组内两个人来解决可能不够,和其他人交流可能起到事半功倍的效果,就比如在调试小车前进的过程中一开始调试了两天每次都因为某一个方向的加速度偏大或偏小导致小车一前进就磕头,陷入无限磕头的模式。经过和其他人讨论,加了一个刹车程序,从而实现了前进过程中还保持平衡的目的。总体来说,这次实验虽然对代码的要求不高,但是也很考察c语言的功底,有些代码的修改很需要一定的c基础,这次实习是对各种能力的一个小考察,一个小项目就给我们带来那么多困难,很难想象以后的研究生生涯会是遇到怎么样的挑战。这次实习也告诉我,实验考察的事多方面素质,各方面有欠缺都不行,以后的学习中需要更加努力学习编程,看懂代码,理解实验要义,才能做出好的项目成果。八、部分代码源程序81、发光二极管交替闪烁电路#include"spi.h"#include"dot_matrix.h"uint8_tg_sys_mode=0;uint8_tg_dot_start=0;uint16_tg_dot_cnt=0;uint8_tg_ShowData51=0x81,0xFF,0xFF,0x81,0x00,0x00,0x81,0xFF,0xFF,0x81,0x80,0x80,0x80,0x40,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00,0x01,0x3F,0x40,0x80,0x40,0x3F,0x01,0x00,0x81,0xFF,0x99,0x99,0x99,0x42,0x00,0x00,0x01,0x7F,0x80,0x80,0x80,0x7F,0x01,0x00,0xBF,0x00,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"#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_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_Delay( 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_Delay( 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_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( LED1_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 = 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( void )/?-? uint8_t data0 , data1; data0 = GPIOC->IDR & 0x0E; / pin 3,2,1 -> IR 4,3,5 data1 = GPIOB->IDR & 0x28; / pin 5,3 -> IR 2,1g_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(GPIOC, 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); GPIO_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 controlLEDCtrl( 1 , 0 );LEDCtrl( 2 , 1 );HAL_TIM_PWM_MspInit(&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();HAL_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_SysMode > 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.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_pwm , g_mpu9250.Angle_Complement_1st ) ;/Uart_OSC_ShowWave( g_mpu9250.angle_x , g_mpu9250.gyro_scale_y , g_mpu9250.Angle_Kalman , g_mpu9250.Angle_Complement_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);else Moto_Balance_PID_Ctrl(-6.5);switch ( g_SysMode ) case 0 : / banlance car if ( i = 99 ) LEDCtrl( 2 , 2 ); break;case 2 : if ( g_mpu9250.angle_x > 0 ) LEDCtrl( 2 , 1 ); else if ( g_mpu9250.angle_x < 0) LEDCtrl( 2 , 0 ); break ;8.2.2、修改过的Ctrl.moto .c的部分代码float KP = 5.55 ; float KI = 0 ; float KD = 0.5; const int16_t MOTO_THRESHOLD = 600 ; / PWM = 18KHz static 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_mpu9250.Angle_Complement_1st-pwm ) * KP + angle_diff * KI + (g_mpu9250.gyro_scale_y ) * KD ;if ( ctrl > 0 ) dir = 1; / backwardelsedir = 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_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(uint16_t value)HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_4);HAL_GPIO_WritePin(MT1_A_GPIO_Port, MT1_A_Pin, GPIO_PIN_RESET);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);HAL_GPIO_WritePin(MT2_B_GPIO_Port, MT2_B_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(MT2_A_GPIO_Port, MT2_A_Pin, GPIO_PIN_SET);TIM_SetCompare3(TIM8, value);HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_3);void Motor_Stop(void)HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_3);HAL_TIM_PWM_Stop(&htim8, TIM_CHANNEL_4);HAL_GPIO_WritePin(MT1_A_GPIO_Port, MT2_A_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(MT1_B_GPIO_Port, MT2_B_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(MT2_A_GPIO_Port, MT2_A_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(MT2_B_GPIO_Port, MT2_B_Pin, GPIO_PIN_RESET);

    注意事项

    本文(电子工艺标准规范标准实习.doc)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开