电子工艺工作实习_第1页
电子工艺工作实习_第2页
电子工艺工作实习_第3页
电子工艺工作实习_第4页
电子工艺工作实习_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子工艺实习报告学院:专业:班级:学号:姓名:北京邮电大学实习报告实习名称学生姓名

电子工艺实习 学院班 级 学号实习时间 7.9-7.20

实习地点

主楼522:领取实验器材,确定分组,老师讲解电烙铁以及吸锡器的使用。315:练习点焊,验收点焊实验。实7.12-7.13:发光二极管的焊接以及调试代码控制LED显示情况,LED显示以后进行验习收。内7.16-7.18:小车组装,包装,以及编程控制小车的平衡以及前进。容:实验验收,下午撰写实验报告。:提交实验报告。学生实习总结(附页,不少于2000字)实习成绩评定

请见下面附页遵照实习大纲并根据以下三方面按五级分制(优秀、良好、中等、及格、不及格)综合评定成绩:1、思想品德、实习态度、实习纪律等2、技术业务考核、笔试、口试、实际操作等3、实习报告、分析问题、解决问题的能力实习评语:实习成绩:指导教师签名: 实习单位公章年 月 日附页:学生实习总结一.实习任务要求1、练习焊接技术,焊接并实现简单的发光二极管交替闪烁电路。2、练习编程技能,组装并焊接智能平衡小车,使其能平稳行走数米,设计小车外观。二设计思路1、发光二极管交替闪烁电路焊接技术练习完毕后,开始焊接LED灯。根据之前的经验,先焊接外围的LED二极管,焊接完成之后再焊接内侧的,这样的焊接目的是保证焊接的LED矩阵是平整的而不是凹凸不平。交替电路的实现:研究老师给的代码可以知道控制输出字符形状是由每一列8个LED二极管的亮和灭来控制,每一列8个灯的亮灭由两位16进制数来控制,将16进制转化为4位二进制,其中”1”代表二极管的亮,“0”代表二极管的灭。2、智能平衡小车智能平衡车用STM32F103RC作为单片机核心板,通过usb连接至电脑然后烧录程序来调控小车的运动状态。智能平衡小车平衡的实现采用PD算法。通过对传感器传送回来的数据进行修正,将起伏剧烈的角度变化修正为平滑的变化趋势。直走、转弯等状态的实现使用PID算法及计时器。通过控制车轮的角度、角速度以及电机的转速来控制小车的状态,当小车处于平衡时电机缓慢转动;当小车向前倾斜时,电机加速向前加速转动,且转动的速度岁倾斜程度的加大而加大;小车向后倾斜时,电机加速向后转动,控制车轮向后转动,转动速度也随倾斜角度增大而增大。小车外壳设计为简易的卡纸包装,再保证小车外观整洁的同时也避免了因为包装而让小车的质量增加太多从而影响了小车各种状态下的加速度等物理值,减少了调试中的困难。三、具体实现过程1、发光二极管交替闪烁电路二极管交替闪烁电路的的焊接与组装按照先易后难的顺序来焊接,先将电阻焊接在双面板上,然后焊接芯片,最后焊接LED二极管。交替电路的实现。LEDLED制代码。2、智能平衡小车的设计与实现、小车的组装根据教程将小车各部件组装好。、功能实现动力控制小车由一节4.2v直流式电源供电工作。小车平衡的控制:floatKP=5.;floatKI=0;floatKD=constint16_tMOTO_THRESHOLD=600;//PWM=ctrl=g_mpu9250.Angle_Complement_1st*KP+angle_diff*KI+g_mpu9250.gyro_scale_y*KDCtrlCtrl0Ctrl0Ctrl>0和Ctrl<0;当Ctrl>0Ctrl<0时,此时小车向前倾斜,会有一个向前的加速度来达到平衡。运行状态的控制:小车使用直流电机实现其直立行走及平衡,车轮需进行前后两个方向的行进以此来达到我们想要的状态。算法主要思路通过代码可知当某一电机的PWM值与设定的前进和后退的pwm值不同时,这个电机的转动状态就会发生变化,电机控制的车轮就会发生相应的运动,因此设计恰当的状态以实现小车能平衡向前运动。计时器:在主函数中加入计时器控制电机工作的状态;具体代码floatKP=5.55;floatKI=0;floatKD=0.5;constint16_tMOTO_THRESHOLD=600;//PWM=18KHzstaticfloatangle_D=0;staticfloatangle_D_last=0floatctrl;floatangle_diff=0int16_tdir;int16_tPWM;angle_diff+=g_mpu9250.Angle_Complement_1st;ctrl=(g_mpu9250.Angle_Complement_1st-pwm)*+angle_diff*KI+(g_mpu9250.gyro_scale_y)*KD;if(ctrl>0){dir=1; //backward}else{dir=0;//forward}PWM=abs((int)ctrl)+MOTO_THRESHOLD;//if(PWM>700)PWM=700;-g_moto_ctrl.right_pwm=PWM;if(dir==0){left_forward(PWM);right_forward(}else{}}

left_backward(PWM);right_backward(PWM)四、本人工作1、发光二极管的焊接以及显示:单面板上的点焊练习以及实验验收,焊接二极管矩阵以及芯片。参与修改字符显示代码的修改。2、智能平衡小车:参与小车的组装,搭建小车外壳,小车平稳直立代码的调试,小车直行代码的调试。五、实现功能及测试数据1、实现功能发光二极管阵列发光二极管会显示“ILOVEU”这些字母依次从右向左流动显示。智能小车开始小车实现平衡的功能,经过调试后实现向前走的功能。2、调试发光二极管阵列程序,观察时候每一个LED记得对核心板断电否则板子很容易烧坏。智能小车在进行智能小车的测试时,我们分为两步:第一步:实现小车的平衡。将程序烧录到开发板后,给小车接通电源,小车能保持平衡状态,而且在没外力干扰以及地面平整度不是特别陡峭的情况下,这个状态可以维持较长时间。第二步:直行的实现在测试小车的直走功能时,刚开始测试时,小车直行不到20cm就倒下去了,边倒的趋势时,它会向这个方向加速一小段距离后自动维持平衡后再行走。最后我们设定小车状态的维持时间,初始时,小车保持平衡10s,之后平衡7s左右时小车会向前行走一小段距离。六、遇到的问题及解决办法焊接过程中,有几个二极管周围的焊接口被滴落下的融化的锡丝堵住。虽然尖嘴头导热效果不太好,但是可以有效避免融化的锡丝滴落到未焊接的接口上。焊接完成后,烧录程序后有两个二极管不亮。解决办法:首先检查二极管正负极是否焊接有误,发现焊接没有错误;进一步观察是否焊接的二极管有误漏焊的现象,如果有重新焊接。解决办法:在小车上加个后盖,再次调整参数,得以平稳行进。4.小车不平衡解决方法:修改PWM值,每次以小幅度增加或减少的改变,直至小车平衡。5.小车可以平衡,但是前进过程无法平衡。解决方法:在common.h刹车控制程序来重新调控其再次保持平衡。七、实验心得本次实验开始阶段连续几天的焊接着实让大家对这次实习失去了太多期待bug,这个时候单cc加努力学习编程,看懂代码,理解实验要义,才能做出好的项目成果。八、部分代码源程序、发光二极管交替闪烁电路#include"spi.h"#include"dot_matrix.h"uint8_tg_sys_mode=0;uint8_tg_dot_start=0;uint16_tg_dot_cnt=0;uint8_tg_ShowData[51] =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};、智能平衡小车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"externmpu9250_tg_mpu9250;externmoto_ctrl_tg_moto_ctrl;uint32_tg_SysMode=2;uint32_tReadUserButton0(void){staticuint8_tbtn0_down=0staticuint8_tbtn0_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;return1;}else{btn0_down=1;HAL_Delay(50);}}else{btn0_down=0;btn0_up=1;}return0;}uint32_tReadUserButton1(void){staticuint8_tbtn1_down=0staticuint8_tbtn1_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;return1;}else{btn1_down=1;HAL_Delay(50);}}else{btn1_down=0;btn1_up=1;}return0;}//index0:all,1~4:LED1~4//mode0:off,1:on,2:togglevoidLEDCtrl(uint32_tindex,uint32_tmode){switch(index){case0:if(mode==0){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SETHAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET}elseif(mode==1){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESETHAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);}break;case1:if(mode==0){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);}elseif(mode==1){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);}elseif(mode==2){HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);}break;case2:if(mode==0){HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET);}elseif(mode==1){HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);}elseif(mode==2){HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);}break;default:break;}}voidSleepSystem(void){//MX_GPIO_DeInit();HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFE);}voidStopSystem(void){HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);}voidGet_IR_Sensor(void)//?-?£{uint8_tdata0,data1;data0=GPIOC->IDR&0x0E;//pin3,2,1->IR4,3,5data1=GPIOB->IDR&0x28;//pin5,3->IR2,1g_moto_ctrl.ir_sensor=(data1<<2)|data0;}voidIR_Sensor_Init(void){GPIO_InitTypeDefGPIO_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);/*ConfigureGPIOpins:PBPinPBPin*/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);}voidSetWorkMode(uint32_tmode){switch(mode){case0: //balanceLEDCtrl(1,0);LEDCtrl(2,1);HAL_TIM_PWM_MspInit(&htim8);HAL_TIM_Base_Start_IT(&htim6);IR_Sensor_Init();break;case1: //dotLEDCtrl(1,1);LEDCtrl(2,0);HAL_TIM_Base_Stop_IT(&htim6);Motor_Stop();HAL_TIM_PWM_MspDeInit(&htim8);dot_matrix_init();break;case2: //showoscLEDCtrl(1,1);LEDCtrl(2,1);Motor_Stop();HAL_TIM_PWM_MspDeInit(&htim8);IR_Sensor_Init();HAL_TIM_Base_Start_IT(&htim6);break;}}void UserTask(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){case1: //dotshow_dot_matrix();break;case2: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;}}voidSystemTimer1msCallback(intctrl,floatbala){staticuint32_ti=0;if(i>=99)i=0;elsei++;Get_IR_Sensor();MPU9250_Get_Accel_Gyro_Temp();MPU9250_Data_Process();if(ctrl==0){Moto_Balance_PID_Ctrl(0+8.5-bala);}elseif(ctrl==1){Moto_Balance_PID_Ctrl(0);}elseMoto_Balance_PID_Ctrl(-6.5);switch(g_SysMode){case0: //banlancecarif(i==99)LEDCtrl(2,2);break;case2:if(g_mpu9250.angle_x>0)LEDCtrl(2,1);elseif(g_mpu9250.angle_x<0)LEDCtrl(2,0);break;}}Ctrl.motoc的部分代码floatKP=5.55;floatKI=0;floatKD=0.5;constint16_tMOTO_THRESHOLD=600;//PWM=18KHzstaticfloatangle_D=0;staticfloatangle_D_last=0floatctrl;floatangle_diff=0int16_tdir;int16_tPWM;angle_diff+=g_mpu9250.Angle_Complement_1st;ctrl=(g_mpu9250.Angle_Complement_1st-pwm)*+angle_diff*KI+(g_mpu9250.gyro_scale_y)*KD;if(ctrl>0){dir=1; //backward}else{dir=0;//forward}PWM=abs((int)ctrl)+MOTO_THRESHOLD;//if(PWM>700)PWM=700;-g_moto_ctrl.right_pwm=PWM;if(dir==0){}else{}}

left_forward(PWM);right_forward(left_backward(PWM);right_backward(PWM)voidMoto_Ctrl_Init(void){memset(&g_moto_ctrl,0,sizeof(moto_ctrl_t));}voidright_backward(uint16_tvalue){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);}voidright_forward(uint16_tvalue){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,}voidleft_backward(uint16_tvalue){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,}voidleft_forward(uint16_tvalue){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,}voidMotor_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);}赠送以下资料实习评语(单位意见及教师评价)实习单位鉴定的内容一般包括:1、出勤情况;2、遵章守纪情况;3、学习态度;4、在何实习单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论