`
基于飞思卡尔单片机自动循迹小车控制的设计
25
基于飞思卡尔单片机自动循迹小车控制的设计
附录1电路原理图
`
26
基于飞思卡尔单片机自动循迹小车控制的设计 附录2 PCB图 2424681012141618246810121416987654321321311357911131517135791113152121211223218217221411646332311615111222212126261302914132260592827121132134341121517265658572625109187856552423875453222165321655251201943211221343504918172122222148471615411111146451413141332144431211212111231876532424110910944039872187121221563837656521274321836354343221134332121123132112221243213221212113234112111122121212 ` 27
`
基于飞思卡尔单片机自动循迹小车控制的设计
附录3 元件清单
Comment Designator Footprint Quantity 100nF C1, C2, C3, C6, C7, C12 C0805 6 100nF C4, C5 C0805 2 Cap Pol1 C8, C9 CAPPR2-5x6.8 2 Cap C10, C11 CAPR2.54-5.1x3.2 2 100uF CD1, CD2, CD3, CD4 C2.5x6.3 4 W/P-LCC-2 D1, D2 P-LCC-2 2 保险丝座 F1 保险丝座 1 小拨动开关 K1, K2 小拨动开关 2 拨动开关 K3 拨动开关 1 bomakaiguan M1 BOMAKAIGUAN 1 Header 2 P1, P5 HDR1X2 2 Header 8X2 P2 HDR2X8 1 Header 9X2 P3, P6 HDR2X9 2 Header 3 P4, P19, P20 HDR1X3 3 Header 9 P7 HDR1X9 1 Header 3X2 P8 HDR2X3 1 Header 7X2 P9 HDR2X7 1 Header 4X2 P10, P14, P17 HDR2X4 3 Header 4 P11, P12, P13, P16 HDR1X4 4 7.2V电源插座 P15, P18 7.2V电源插座 2 R1, R2, R5, R6, R7, R8, 10kR/1% R9, R10, R11, R12, R13, R0805 12 R14 1kR/1% R3, R4 R0805 2 4.7kR/1% R15, R16 R0805 2 Button_2Pin S1, S2, S3, S4 Button_2Pin 4 LM2940 U1, U4 LM2940 2 LM1117-3.3 U2 SOT223 1 change1 K60 U3 PCBComponent_1 - duplicate 1 28
基于飞思卡尔单片机自动循迹小车控制的设计
附录5 部分程序源代码
/***********************舵机PD调节***********************/
FTM_PWM_Duty(FTM1,servo,(uint32)SteeringPIDCalc(&STEERING)); gpio_turn(test);
sprintf(c,\NG.setpulse); LCD_clear(); LCD_set_XY(1,1); LCD_write_str(c); LCD_set_XY(1,2);
sprintf(c,\ LCD_write_str(c); LCD_set_XY(1,3); sprintf(c,\ LCD_write_str(c); EnableInterrupts; } } }
/*******测速中断计算PID***************/ void pit0_handler() {
PIT_Flag_Clear(PIT0);
Left_Motor.backpulse=(short)(back*DMA_count_get(DMA_CH0)); Right_Motor.backpulse=(short)(back*DMA_count_get(DMA_CH1)); left_count=MotorPIDCalc(&Left_Motor); right_count=MotorPIDCalc(&Right_Motor); if(left_count>=0) {
FTM_PWM_Duty(FTM0,FTM_CH1,0); FTM_PWM_Duty(FTM0,FTM_CH2,left_count); } else {
`
29