资源描述
电磁组智能车briefintroduction2013Dec.11thFreescale Smart Car电磁组智能车brief introduction2013Fr1catalog电磁磁组小小车运行原理运行原理控制方法控制方法硬件介绍硬件介绍编译环境catalog电磁组小车运行原理控制方法硬件介绍编译环境2一、一、电磁磁组小小车运行原理运行原理1.车模通过感应由赛道中心导线产生的交变磁场进行路径检测 一、电磁组小车运行原理1.车模通过感应由赛道中心导线产生的交32.要让小车自己沿着赛道跑就要让小车能通过传感器的信号自动的识别当前所处的位置,以及距离赛道中心的大概距离。我们通过制作传感器来采集模拟信号,然后传给单片机,然后编程来实现小车位置的判别以及控制小车采取相应动作。2.要让小车自己沿着赛道跑就要让小车能通过传感器的信号自动的42、控制方法、控制方法磁PID算法:速度PID算法:PID控制算法:测量关心的变量,与期望值相比较,用这个误差纠正调节为了控制舵机打角控制系统的响应。主要用了偏差控制:采集、计算偏差,修正偏差,以使控制量趋近于目标值。为了控制电机速度的恒定2、控制方法磁PID算法:速度PID算法:PID控制算法:测5系统框图系统框图系统框图6三、硬件介绍三、硬件介绍1.电磁传感器(即电感)2.光电编码器三、硬件介绍1.电磁传感器(即电感)2.光电编码器73.电机4.舵机3.电机4.舵机85.车模6.主控芯片电路板5.车模6.主控芯片电路板91、16位单片机所用编译软件:CodeWarrior四、编译环境1、16位单片机所用编译软件:CodeWarrior四、编译102、32位单片机所用编译软件:IAR2、32位单片机所用编译软件:IAR11HelloTomorrow!ProjectsPrograms/*/*!*brief Kinetis Identify*return None*This is primarly a reporting function that displays information*about the specific CPU to the default terminal including:*-Kinetis family*-package*-die revision*-P-flash size*-Ram size*/|void cpu_identify(void)|/*Determine the Kinetis family*/|switch(SIM_SDID&SIM_SDID_FAMID(0 x7)SIM_SDID_FAMID_SHIFT)|case 0 x0:|printf(nK10-);|break;|case 0 x1:|printf(nK20-);|break;|case 0 x2:|printf(nK30-);|break;|case 0 x3:|printf(nK40-);|break;|case 0 x4:|printf(nK60-);|break;|case 0 x5:|printf(nK70-);|break;|case 0 x6:|printf(nK50-);|break;|case 0 x7:|printf(nK53-);|break;|default:|printf(nUnrecognized Kinetis family device.n);|break;|/*/Volume serial number is 706C-C11EEXTI.H#ifndef _EXTI_H_#define _EXTI_H_typedef enum exti_cfg zero_down =0 x08u,/低电平触发,内部下拉 rising_down =0 x09u,/上升沿触发,内部下拉 falling_down =0 x0Au,/下降沿触发,内部下拉 either_down =0 x0Bu,/跳变沿触发,内部下拉 one_down =0 x0Cu,/高电平触发,内部下拉 /用最高位标志上拉和下拉 zero_up =0 x88u,/低电平触发,内部上拉 rising_up =0 x89u,/上升沿触发,内部上拉 falling_up =0 x8Au,/下降沿触发,内部上拉 either_up =0 x8Bu,/跳变沿触发,内部上拉 one_up =0 x8Cu /高电平触发,内部上拉+-exti_cfg;void exti_init(PORTx,uint8 n,exti_cfg);#endif|if(MC_SRSH&MC_SRSH_SW_MASK)|printf(Software Resetn);|if(MC_SRSH&MC_SRSH_LOCKUP_MASK)|printf(Core Lockup Event|Resetn);|if(MC_SRSH&MC_SRSH_JTAG_MASK)|printf(JTAG Resetn);|if(MC_SRSL&MC_SRSL_POR_MASK)|printf(Power-on Resetn);|if(MC_SRSL&MC_SRSL_PIN_MASK)|printf(External Pin Resetn);|if(MC_SRSL&MC_SRSL_COP_MASK)|printf(Watchdog(COP)|Resetn);|if(MC_SRSL&MC_SRSL_LOC_MASK)|printf(Loss of Clock Resetn);|if(MC_SRSL&MC_SRSL_LVD_MASK)|printf(Low-voltage Detect|Resetn);|if(MC_SRSL&MC_SRSL_WAKEUP_MASK)|printf(LLWU Resetn);|/*/function prototypesvoid sysinit(void);void trace_clk_init(void);void fb_clk_init(void);void enable_abort_button(void);/*/-Headers:/*SRSH Bit Fields*/#define MC_SRSH_JTAG_MASK 0 x1u#define MC_SRSH_JTAG_SHIFT 0#define MC_SRSH_LOCKUP_MASK 0 x2u#define MC_SRSH_LOCKUP_SHIFT 1#define MC_SRSH_SW_MASK 0 x4u#define MC_SRSH_SW_SHIFT 2/*SRSL Bit Fields*/#define MC_SRSL_WAKEUP_MASK 0 x1u#define MC_SRSL_WAKEUP_SHIFT 0#define MC_SRSL_LVD_MASK 0 x2u#define MC_SRSL_LVD_SHIFT 1#define MC_SRSL_LOC_MASK 0 x4u#define MC_SRSL_LOC_SHIFT 2#define MC_SRSL_COP_MASK 0 x20u#define MC_SRSL_COP_SHIFT 5#define MC_SRSL_PIN_MASK 0 x40u#define MC_SRSL_PIN_SHIFT 6#define MC_SRSL_POR_MASK 0 x80u#define MC_SRSL_POR_SHIFT 7/*PMPROT Bit Fields*/#define MC_PMPROT_AVLLS1_MASK 0 x1u#define MC_PMPROT_AVLLS1_SHIFT 0#define MC_PMPROT_AVLLS2_MASK 0 x2u#define MC_PMPROT_AVLLS2_SHIFT 1#define MC_PMPROT_AVLLS3_MASK 0 x4u#define MC_PMPROT_AVLLS3_SHIFT 2#define MC_PMPROT_ALLS_MASK 0 x10u#define MC_PMPROT_ALLS_SHIFT 4#define MC_PMPROT_AVLP_MASK 0 x20u#define MC_PMPROT_AVLP_SHIFT 5Hello Tomorrow!ProjectsProgram12ThanksThanks13
展开阅读全文