飞思卡尔智能车电磁组程序员成长之路(未完待续)

合集下载

《智能车制作 “飞思卡尔杯”从入门到精通》教材部分章节节选

《智能车制作 “飞思卡尔杯”从入门到精通》教材部分章节节选

图 3-7 前置 置卧式
16 6
图 3-8 后置卧式
优点:安 安装原车模 模舵机布置方 方式、改动 动量小,重心 心低; 缺点:响 响应速度慢 慢、两边拉杆 杆长度不一 一样、转向不 不对称。 2).扣式
图 3-9 扣式 扣
优点:重 重心低、响 响应速度快、 、转向平顺 顺对称; 缺点:安 安装过程复 复杂、不利于 于后续维护 护调整。 3).卧式
图 3-14匀速圆 圆周运动
转向舵机因 因型号固定 定在供电电 压确定时其 其输出力矩 矩是固定的, ,我们知道 道力矩等于 于 力与 与力臂的乘积 积,即 M=F F*L。舵机 的输出力矩 矩与摆臂长度关系如下 下: 舵机转矩 矩=舵机摆臂 臂作用力*摆臂长度 摆 18 8
假设舵机 机输出力矩 矩是恒定的 ,其输出轴 轴的旋转角 角速度也是恒 恒定的,舵 舵机摆臂端 端 部的 的瞬时线速度 度随舵机摆 摆臂长度增 加而增大。摆臂的瞬 瞬时线速度大 大会导致转 转向系统灵 灵 敏度 度提高,这是 是我们最希 希望得到的。 。 同时,我 我们知道在 在转向时舵机 机摆臂的力 力传递搭到 到横拉杆,横 横拉杆的作 作用力大于 于 轮胎 胎阻力时才开 开始转向,小于或者 等于轮胎阻 阻力时不转 转向。开始转 转向后,横 横拉杆作用 力越 越大轮胎转的 的越快,也 也就是说转向 向响应速度 度越快。 而舵机力 力矩是恒定 定的,舵机摆 摆臂作用力 力与摆臂长 长度是成反比 比的,此长 长彼消。舵 舵 机摆 摆杆不能太长 长也不能太 太短,太短, 响应慢,太长,拉不 不动,响应 应也慢。 最合适的 的舵机摆臂 臂长度值, 可以通过转 转向系统四 四杆机构仿真 真结合实际 际测试来获 获 取。实际测试可 可以选用不 不同长度的舵 舵机摆臂装 装车后测试转 转向灵敏度 度。 获取最佳舵 舵机摆臂长 长度后,可 以对摆臂的 的外形做优 优化以达到减 减重、美观 观的效果。 图 3 3-15 为优化 化后的舵机摆 摆臂,选用 用 1mm 不锈钢板线切 切割成型。 不锈钢板有 有良好的刚 刚 度、韧性,为了 了减重将摆 摆臂中部切除 除一块。

飞思卡尔智能车新手入门解决方案

飞思卡尔智能车新手入门解决方案

目录目录 (1前言 (3一、基于飞思卡尔芯片的智能循迹车 (11、智能循迹车简介 (12、摄像头组方案 (1(1CMOS模拟摄像头 (2(2CMOS数字摄像头 (33、光电组方案 (4(1红外传感器 (4(2激光传感器 (64、电磁组方案 (10(1工型电感传感器 (10(2色环电感传感器 (10(3硬件设计 (105、道路识别策略 (11(1摄像头信号采集 (12(2红外传感器信号采集 (13(3电磁传感器信号采集 (136、电机驱动 (147、速度检测 (168、调试策略 (17(1速度调试(以摄像头组为例子 (17(2综合调试 (18二、入门级别智能车方案——基于STC89C52单片机智能小车 (191、简介 (192、方案 (19(1基于红外传感器循迹方案 (19(2基于激光传感器循迹方案 (203、利用中断调制PWM占空比驱动直流电机 (23 (1直流电机的实物图片 (23(2直流电机的介绍 (23(3直流电机的驱动 (234、利于中断调制PWM占空比驱动舵机摇头 (24 1、舵机的原理及其应用 (24(1舵机的实物图片: (24(2舵机的介绍 (25(3舵机的工作原理 (255、数码管显示 (251、数码管原理 (256、LED流水灯控制 (27LED灯参考电路图 (277、液晶显示 (28(11602液晶显示 (28a主要技术参数 (28b信号接脚 (29c基本操作时序 (29d电路图接法 (29(212864液晶显示 (30a主要技术参数 (30b信号接脚 (30c基本操作时序 (30d电路图接法 (318、ADC0804 (319、DAC0832 (3210、I2C总线 (3411、矩阵控制 (3512、蜂鸣器控制 (36前言智能化是21世纪机电一体化技术发展的一个重要发展方向。

人工智能在机电一体化及自动控制领域日益得到重视,现阶段在机电一体化及自动化专业教学方式上,部分院校较重视实践而轻理论,部分院校较重视理论而轻实践,但有一个共同点就是:通过一些相关技能竞赛能够有效地提高学生的综合能力,在比赛过程中充分锻炼了参赛者理论知识和实操能力;如:飞思卡尔智能汽车竞赛,电子设计竞赛,机械创新设计竞赛,瑞萨竞赛等。

学做智能车_挑战飞思卡尔之智能车制作 共65页

学做智能车_挑战飞思卡尔之智能车制作 共65页
学做智能车 挑战飞思卡尔
--邹玉龙
根据车模检测路径方案不同分为
• 光电组 • 摄像头组 • 电磁组
•光电组
车模通过采集赛道上少数孤立点反射亮 度进行路经检测的属于光电组。
Hale Waihona Puke •摄像头组车模通过采集赛道图像(一维、二维) 或者连续扫描赛道反射点的方式进行进行 路经检测的属于摄像头组
•电磁组
车模通过感应由赛道中心电线产生的交 变磁场进行路经检测的属于电磁组
第六届比赛现场视频
调试工具
• 串口 • 蓝牙 • 无线 • 液晶 • 薄码开关 • 键盘 • 上位机 • 其它……
拨码开关
蓝牙模块
无线模块
液晶模块
液晶显示
上位机和下位机
• 上位机是指人可以直接发出操控命令的计
算机,一般是PC,屏幕上显示各种信号变 化(液压,水位,温度等)。下位机是直 接控制设备获取设备状况的计算机,一般 是PLC/单片机之类的。
转角与脉宽
转角与脉宽
直流电机
直流电机模型
电机驱动
编码器
• 旋转编码器 • 光电编码器
• 旋转编码器是一种采用光电等方法将轴的
机械转角转换为数字信号输出的精密传感
器,分为增量式旋转编码器和绝对式旋转 编码器。
• 光电式编码器的工作原理如下:随转轴一
起转动的脉冲码盘上有均匀刻制的光栅,
• 电磁车视频
车模运动控制
• 运行速度控制
– 控制对象:运行电机 – 控制方法:线性调压、PWM驱动
• 转向控制
– 控制对象:舵机(R/C Servo) – 控制方法:PWM脉宽 → 舵盘角位
系统初始化
系统参数 手动调节
处理数字摄像头 采集数据

飞思卡尔智能车总结标准(2篇)

飞思卡尔智能车总结标准(2篇)

飞思卡尔智能车总结标准脚踏实地艰苦风斗我有幸能够参加____年全国点学生飞思____智能车竞赛,在这次竞赛中我们学到了很多,有专业方面的知识,比如单片机,各类传感器,不同芯片间的通信等等,也学会了一些书本上没有的东西,比如团队合作,如何网上购买到好的元器件,如何布局pcb板上各个元器件的位置等。

为了这次比赛,学校提前好久就开始准备了。

只是我们的课程比较多,平时去实验室的机会不是很多,为此我们也很伤脑筋。

终于等到寒假了,我们几个全身心的投入到这次比赛的准备中。

每天早上起来买点早餐就直奔实验室,白天动手做下硬件,晚上回到宿舍在就看下理论,联系编程。

这样的日子我们一点都没有感觉到累,每天都希望自己会学到更懂得东西,好似饿了许久的动物,得到了食物一般。

每天感觉都那么充实,想想大学里前两年学到的东西还没有那个寒假学到的东西多。

寒假里我们把历届的技术报告都看了看,这期间学到不少东西,尤其是对各类元器件的认识及使用。

真是受益匪浅。

接下来就是一些以前失败的经验,希望能有所参考。

比赛前在不注重实际赛道和自己练习赛道的区别,赛道一变,以前调试的结果都将无效。

所以,谨记一点,一定要吧硬件做好,比赛前一定好好利用好试车时间,多注意自己的赛道和比赛的赛道的区别,注意摩擦程度,光线的亮暗,空气的潮湿程度等。

其次是传感器的____,这次我们选用的是激光做传感器。

这个传感器相比其它传感器有很多优点,比光电的射的远,而且稳定性高,但是激光的很贵,所以提前一定要看好电路图,____一定要够稳固,不然后期传感器坏起来就头疼了。

我们以前有好多关键时刻传感器出问题失败的例子,不胜枚举,经验惨痛。

如果____不好,系统不够稳定,导致在比赛失败,而且平时调试浪费了好多宝贵的调试时间。

这一点,谨记,硬件固定一定要牢固。

其次是装配,各个模块间的连接线固定不牢靠。

使得导线接触不良,导致小车参赛时好几次冲出跑道(其中一个传感器的输入信号接触不良造成的)。

第五届飞思卡尔智能车电磁组程序

第五届飞思卡尔智能车电磁组程序

第五届飞思卡尔智能车电磁组获奖程序MC9S12XS128单片机、用前置线圈检测磁感线、用无线蓝牙采集数据、干簧管检测起跑线磁铁。

#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#include <stdio.h>/****************************************************************************** ******一·全局变量声明模块******************************************************************************* ******/typedef unsigned char INT8U;typedef unsigned int INT16U;typedef int INT32;typedef struct {INT8U d; //存放这一次AD转换的值}DATA;/****************************************************全局变量声明区*****************************************************/DA TA data[6]={0}; //全局变量数组,存放赛道AD转换最终结果INT8U a[6][8]={0}; //全局变量用来存放赛道AD转换中间结果INT8U cross0,cross1; //记录十字叉线#define LED PORTA_PA7#define LED_CS PORTA_PA0byte START ;INT16U dianji0;//用来存放上次电机转速PWM,来判断是否减速#define duojmax 9200 //向左转向最大值#define duojmid 8400 //打在中间#define duojmin 7600 //向右转向最小值#define duojcs 8000;#define dianjmax 1200#define dianjmin 10#define dianjmid 600static INT8U look=0,look1=0;int road_change[100]={0}; //判断赛道情况数组int roat_change0;int *r_change0; //指向数组最后一位int *r_change1; //指向数组倒数第二位int sum_front=0,sum_back=0; //分别存储数组前后两部分的和INT16U waittime=0;INT8U choise; //读拨码开关数值/******************************速度测量参数定时********************************/#define PIT0TIME 800 //定时0初值:设定为4MS 测一次速度,采一次AD值#define PIT1TIME 1390 //定时1初值:设定为7ms定时基值/*******************************脉冲记数变量*******************************/ static INT16U PulseCnt;//最终的脉冲数/******************************电机PID变量*********************************/float speed_return_m ;struct {int error0;int error1;int error2;int speed;int chage;float q0,q1,q2,Kp,Kd,Ki;}static SpeedPid;/********************************速度变量设定*******************************/ INT8U speedmax ; //直道加速INT8U speedmin ; //急转弯刹车INT8U speedmid ; //弯道内部限速INT8U speedaveg ; //INT8U breaktime ; //刹车时间////////////////////////////////////////////////////////////////////////////#define speederror_min 2 //允许的最小误差static int NowSpeed;static int speed_control; //存储pid输出值static int speed_return;/*******************************舵机PID参数******************************/struct{int error0;int error1;int error2;int chage;float Kp,Kd,Ki;}PositionPid;int change;static INT16U angle_left [52]={8550,8562,8574,8586,8598,8610,8622,8634,8646,8658,8670,8682,8694,8706,8718,8730,8 742,8754,8766,8778,8790,8802,8814,8826,8838,8850,8862,8874,8886,8898,8910,8922,8934,894 6,8958,8970,8982,8994,9006,9018,9030,9042,9054,9066,9078,9090,9102,9114,9126,9138,9150,9 150};static INT16U angle_right[52]={8250,8238,8226,8214,8202,8190,8178,8166,8154,8142,8130,8118,8106,8094,8 082,8070,8058,8046,8034,8022,8010,7998,7986,7974,7962,7950,7938,7926,7914,7902,7890,787 8,7866,7854,7842,7830,7818,7806,7794,7782,7770,7758,7746,7734,7722,7710,7698,7686,7674,7 662,7650,7650};static INT16U *angle_l=angle_left ,*angle_r=angle_right;static INT16U angle_control=duojmid; //舵机PWM最终控制量static INT16U angle_control0=duojmid;static INT16U angle_control1=duojmid;static INT16U break_pwm=0;INT16U angle_return;/****************************lcd液晶显示变量定义**************************/#define LCD_DATA PORTB#define LCD_RS PORTA_PA4 //PA6#define LCD_RW PORTA_PA5 //PA7#define LCD_E PORTA_PA6 //PA7INT8U start[]={"WELCOME TO LZJTU"};INT8U date[]={"2011-3-15 TUS"};INT8U time[]={"00:00:00"};INT16U Counter=0;INT8U Counter0=0,select=0,min=0;INT8U Counter1=0;INT8U LCD_choice;/**************************标志变量区*************************************/INT8U stop_flag=0;INT8U start_flag=0;INT8U backflag=0;INT8U AD_start ;INT8U zhijwan=0 ;INT8U shizi=0;/****************************************************************************** ******二·初始化函数模块******************************************************************************* ******//**************************************************************1. 芯片初始化--------MCUInit()**************************************************************/void MCUInit(void){//////////////////////////////////////////////////////////////////////////////////////////// ********总线周期计算方法******** //// fBUS=fPLL/2 //// fvoc=2*foscclk*(synr+1)/(refdv+1) //// PLL=2*16M*(219+1)/(69+1)=96Mhz /////////////////////////////////////////////////////////////////////////////////////////////////CLKSEL=0X00;PLLCTL_PLLON=1; //锁相环控制SYNR = 0X40|0X05;REFDV =0X80|0X01;POSTDIV=0X00;while( CRGFLG_LOCK != 1); //等待锁相环时钟稳定,稳定后系统总线频率为24MHz CLKSEL_PLLSEL = 0x01; //选定锁相环时钟PLLCTL=0xf1; //锁相环控制//时钟合成fpllclk=2*foscclk*(synr+1)/(refdv+1)//synr=2;refdv=1;外部时钟foscclk=16mb//fpllclk=48mb 总线时钟24mb// CRGFLG=0x40; //时钟复位控制// CRGINT=0x00 ; //时钟复位中断使能// CLKSEL =0xc0; //时钟选择//COPCTL =0x00;// ARMCOP =0x00; //看门狗复位// RTICTL =0x00; //实时中断}/**************************************************************2. AD转换初始化--------ADCInit()**************************************************************/void ADCInit(void){A TD0CTL1=0x00;A TD0CTL2=0x40; //0100,0000,自动清除使能控制位,忽略外部触发//转换结束允许中断,中断禁止A TD0CTL3=0xA4; //0100,0100,转换序列长度为4;FIFO模式,冻结模式下继续转换A TD0CTL4=0x05; //00001000,8位精度,PRS=5,ATDCLOCK=BusClock(24mb)/(5+1)*2,约为2MHz,采样周期位4倍AD周期A TD0DIEN=0x00; //输入使能禁止}/**************************************************************3. PWM初始化--------PWMInit()**************************************************************/void PWMInit(void) //PWM初始化{//总线频率24mb//1. 选择时钟:PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLKPWME=0x00; //PWM通道关闭PWMPRCLK=0x01; //00010011时钟源A=BusClockA/2=48M/2=24MB;//低位clockA:01,45;高位clockB:23,67 时钟源B=48/1=48MBPWMSCLA =2; //ClockSA=ClockA/2/2=24MB/4=6MBPWMSCLB =2; //ClockSB=ClockB/2/2=12MBHzPWMCLK =0xFF; //通道均级联,均用SA,SB ,且都为6MB//2. 选择极性:PWMPOLPWMPOL =0xff; //电机正反转寄存器(PWMPOL)起始输出为高电平//3. 选择对齐方式:PWMCAEPWMCAE=0x00; //输出左对齐//4.PWMCTL PWM控制寄存器PWMCTL=0xF0; //01,23,45,67通道都级连,输出风别由1,3,5,7口控制//5. 使能PWM通道; PWME//6. 对占空比和周期编程//周期计算公式:输出周期=通道时钟周期*(PWMPERX+1)//占空比:=(PWMPERYX+1)/(PWMPERX+1)//开始时刻应使舵机打直,电机不转//1.通道45用来控制舵机PWMPWMPER45=60000-1; //PWM01=6MB/(60000)=100HzPWME_PWME5 =0; //舵机PWM通道开//2.通道23用来控制电机PWM1,通道01用来作为电机PWM2PWMPER23=1200-1;//电机正转PWM周期初始化。

2024年飞思卡尔直立车经验总结范文(2篇)

2024年飞思卡尔直立车经验总结范文(2篇)

2024年飞思卡尔直立车经验总结范文引言随着科技的不断进步和人们生活水平的提高,交通工具也在不断创新和发展。

直立车作为一种新型的个人出行工具,已经逐渐走进人们的生活。

作为飞思卡尔公司的员工,我有幸参与了2024年飞思卡尔直立车的研发和试用,并且在实际使用中积累了一些经验和体会。

本文将针对我个人的使用经验,对2024年飞思卡尔直立车进行总结。

一、产品介绍2024年飞思卡尔直立车是一种个人出行工具,采用电动动力系统,配备直立式车架和平衡系统。

该车拥有轻巧便携的特点,使用者可以通过折叠和展开车架来方便地携带。

另外,该车配备了智能平衡系统,可以感知使用者的重心变化,实现自动平衡。

除此之外,该车还采用了悬浮式轮胎和磁悬浮技术,提供了平稳、舒适的骑行体验。

二、使用体验1. 稳定性2024年飞思卡尔直立车的平衡系统非常稳定,能够准确感知使用者的动作,并根据重心的变化自动调整车身的平衡。

在骑行过程中,我几乎感受不到晃动和颠簸,给人一种非常舒适的感觉。

此外,悬浮式轮胎和磁悬浮技术的运用使得车辆在不平坦路面上也具有很好的稳定性。

2. 操控性飞思卡尔直立车的操控性非常灵活,可以通过微调身体重心来控制车辆的前进、停止和转弯。

在我使用的过程中,我发现掌握操控的技巧后,可以非常准确地控制车辆的移动和方向变化。

同时,悬浮式轮胎的设计也为车辆的操控提供了更好的反应速度和转弯性能。

3. 便携性2024年飞思卡尔直立车在便携性方面也做得非常出色。

车架采用了可折叠设计,可以方便地收起来放入背包或行李箱中。

我曾经携带该车外出旅行,在旅途中非常方便地进行出行。

此外,车辆的轻巧和可折叠的设计也为用户提供了更多的场景和用途选择。

4. 安全性飞思卡尔直立车在安全性方面也有很好的保证。

首先,平衡系统的稳定性确保了车辆在骑行过程中的安全性。

其次,车辆配备了电子刹车系统和灵敏的感应器,在使用过程中能够快速响应用户的操作,提供安全的停车和刹车效果。

最后,车辆还配备了前后防护装置和智能警示系统,提高了车辆在复杂交通环境中的安全性。

飞思卡尔智能车入门资料大全概要

飞思卡尔智能车入门资料大全概要
计算机控制技术、单片机技术、C语言、 传感器与检测技术、电机与拖动、模数电 及电路基础、自动控制理论、机械设计基 础等学科
1.2.2 动手能力和创新能力 常见电源电路和驱动电路设计 新的一些寻迹算法的提出等
二、硬件系统设计与实现
1)电源部分 2)电机驱动部分 3)舵机部分 4)图像采集部分 5)测速部分
1k
OUT1 CC P1 OUT2 33n VS S VS S D1 D2 47uF 47u VS S C3 0.1u GND GND C1 GND
GND 6 5 4 3 2 1 GND VC C PWM7 PWM5 D2 D1
20 DNC 4 V+ 5 V+ 16 V+ 18 D1 13 D2
R2 VC C
正确放电:
由于镍镉电池具有记忆效应,对电池的不完全放电将会人 为的降低电池的电容量; 从放电曲线可以看出,随着电池电量的减少,其电压也会 逐渐降低,当电压降低到某个阈值后继续放电,电池电压 将很快的跌落。这个阈值就是电池的放电下限电压。厂家 给出了放电下限电压为6V。因此,在使用时,建议在动力 车的电源设计中加入电池保护电路,当电池电压低于6V时 切断电路,用来保护电池。如果没有保护电路,要注意, 电池接通时人不要离开。因为当电池电压降到接近6V时, 电池已经给不出多少电流,已经没有能力驱动电机了,此 时一定要及时断开电路,到了给电池充电的时候了。
舵机控制方法
三线连接方式 红线:电源线+6V 蓝线:地线 黑线:PWM控制信号
2.2.2驱动芯片BTS7960/7970组成的电路
大功率驱动芯片BTS7970特性如下: 输入电压:6v---24v 输出电流: 最大可达60A 内阻:16毫欧 控制线电压: 5v PWM控制频率:25K

第五届飞思卡尔智能汽车竞赛电磁组设计参考方案

第五届飞思卡尔智能汽车竞赛电磁组设计参考方案

第五届全国大学生智能汽车竞赛20KHz 电源参考设计方案(竞赛秘书处技术组版本1.0)第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。

根据比赛技术要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz交表电流产生的磁场来导引小车沿着道路行驶。

在平时调试和比赛过程中需要能够满足比赛技术要求的20KHz的交流电源驱动赛道中心线下的线圈。

本文档给出了电源设计参考方案,参赛队伍可以根据这些参考设计方案自行设计制作所使用电源。

一、 电源技术指标要求:根据《竞赛比赛细则》附件三关于电磁组赛道说明,20KHz电源技术要求如下:1、驱动赛道中心线下铺设的0.1-0.3mm直径的漆包线;2、频率范围:20K±2K;3、电流范围:50-150mA;下图是赛道起跑区示意图,在中心线铺设有漆包线。

图1 竞赛跑道起跑区示意图首先分析赛道铺设铜线的电抗,从而得到电源输出的电压范围。

我们按照普通的练习赛道总长度50,使用直径为0.2mm漆包线。

在30摄氏度下,铜线的电阻率大约为 0.0185欧姆平方毫米/米。

计算可以得到中心线的电阻大约为29.4欧姆。

按照导线电感量计算机公式:42ln0.75()lL l nHd⎛⎞=×−⎜⎟⎝⎠。

其中l, d的单位均为cm。

可以计算出直径为0.2mm,长度50米的铜线电感量为131微亨。

对应20KHz下,感抗约为16.5欧姆。

可以看出,线圈的电感量小于其电阻值。

由于导线的电感量与铺设的形状有关系,上述计算所得到的电感量不是准确数值。

另外,我们可以在输出时串接电容来抵消电感的感抗。

所以估算电源电压输出范围的时候,我们不再特别考虑线圈的电感对于电流的影响。

为了方便设计,我们设计电源输出电压波形为对称方波。

由于线圈电感的影响,线圈中的电流为上升、下降沿缓变的方波波形。

如下图所示图2 线圈驱动电压与电流示意图对于电阻为29.4欧姆的赛道导线,流过100mA的电流,电压峰值应该大于3V。

飞思卡尔技术报告个人小结(共5篇)

飞思卡尔技术报告个人小结(共5篇)

飞思卡尔技术报告个人小结(共5篇)第一篇:飞思卡尔技术报告个人小结读技术报告个人小结最近这段时间读了一些关于智能车的技术报告,现在我最大的感觉就是对智能车有了新的较为全面的一些了解,当然这也只是对智能车构造有了一些认识,不再像以前只是知道智能车的存在。

在读技术报告的过程中,我有了自己的收获,同时也了解到了现在自身存在的问题。

首先我想将自己所读技术报告中的一些关键技术做一个简单的总结。

电磁组一.智能车机械结构调整与优化关于智能车前轮定位的调整有以下几个参数。

主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。

不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时主销后倾回正作用大,低速时主销内倾的回正作用大。

前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。

前轮在滚动时,其惯性力自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少.关于舵机的安装可以使用站立式。

系统执行一个周期所用的时间为5ms左右,舵机作出响应需要十多毫秒的时间,提高系统反应速度唯一的时间瓶颈是舵机的响应时间。

因此,不断优化舵机控制策略是令智能车平稳高速行驶的有效方法。

在模型车制做过程中,赛车的转向是通过舵机带动左右横拉杆来实现的。

转向舵机的转动速度和功率是一定,要想加快转向机构响应的速度,唯一的办法就是优化舵机的安装位置和其力矩延长杆的长度。

由于功率是速度与力矩乘积的函数,过分追求速度,必然要损失力矩,力矩太小也会造成转向迟钝,因此设计时就要综合考虑转向机构响应速度与舵机力矩之间的关系,通过优化得到一个最佳的转向效果。

经过最后的实际的参数设计计算,最后得出一套可以稳定、高效工作的参数及机构。

为了达到较远前瞻,必须把电感架到较远的位置,会引起车重心特别靠前,后轮正压力不足导致甩尾。

为了使重心后移,可以通过调整传感器支架的搭建方式,使得保证结构稳定的前提下尽量减轻重量。

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发开题报告

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发开题报告

飞思卡尔智能车大奖赛(电磁组2)软件控制系统设计与开发1、背景介绍全国大学生“飞思卡尔”杯智能汽车竞赛组委会提供一系列标准的汽车模型、直流电机和可充电式电池,参赛队伍要依靠符合大赛要求的元器件,制作能够自主循迹的智能车,在规定的跑道上自主循迹行驶。

其设计内容涵盖了控制、模式识别、程序算法、传感技术、汽车电子、电子电路、计算机、机械、能源等多个学科的知识[1]。

实际上,作为全球首屈一指的嵌入式电子解决方案供应商,飞思卡尔半导体从1994年起便与国内大学在技术培训应用研究方面的合作,目前汽车及标准电子产品分部已在清华、复旦大学、深圳大学、电子科技大学及同济大学建立了嵌入式处理器开发应用研究中心(简称MAC),自2000年又逐步在北航,浙江大学等学校建立了教学实验中心(简称MTC)。

大量的大学生,通过参加竞赛,为飞思卡尔先进的产品及开发工具获得专业培训,取得实际操作经验,为自身公司的发展起到重大的作用。

2000年智能车比赛首先由韩国汉阳大学承办开展起来,每年全韩国大约有100余支大学生队伍报名并准予参赛。

随着赛事的逐年开展,不仅有助于大学生自主创新能力的提高,对于高校相关学科领域学术水平的提升也有一定帮助,最终将有助于汽车企业的自主创新,得到企业的认可。

这项赛事在韩国的成功可以证明这一点。

同时,飞思卡尔公司开始协办国大学生"飞思卡尔"杯智能汽车竞赛。

首先,竞赛在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛。

每届比赛根据参赛队伍和队员情况,分别设立线性CCD组、摄像头组、电磁组、创意组等多个赛题组别。

全国大学生智能汽车竞赛一般在每年的10月份公布次年竞赛的项目和组织方式,并开始接受报名,次年的3月份进行相关技术培训,7月份进行分赛区竞赛,8月份进行全国总决赛。

飞思卡尔全国大学生竞赛,至今已举办10届,正是因为有如此优点于一身,得到了众多高校和大学生的欢迎,也逐渐得到了企业界的极大关注[2]。

飞思卡尔智能车从零开始

飞思卡尔智能车从零开始

一开始我们买了TRT5000这种光电管,我测试过这种光电管的敏感距离很近,有才1~2cm,而且只能直射。所以我们考虑把它用在检测起跑和十字路口。看了华南理工光电报告,他们用的是架起来的光电管,很想学他们,所以我和队友刘久研究他们用哪种信号的,刚开始久定位错了,因为看到报告说他们用的是840nm的发射管,接收管套上黑皮套,久以为是遥控用的发射和接收管哪种类似,久淘宝买原件弄,久这样找资料,焊电路,调试,最后发现光电接收管有两种电平型和脉冲型,一般的遥控用的三只脚的接收一体化的光电管是脉冲型的,在刚碰到黑线,电平会改变ms级的时间,接着就不变了,而且发现它的接收管出奇的灵敏。弄了好像也差不多一个个月吧,才确定我们弄错了,我的博客有篇文章是介绍红外的,可以参考下
9XS128和DG128不同的不多,但AD的寄存器是完全不同,9X128多了个PIT24位的定时,芯片注明总线频率不要超过40MHZ但我们这边摄像头一直超到80MHZ和64MHZ,到现在都没事。
2。回到学校才2月20多号,大家都回到学校,我在寒假也看了下PID算法,回来大家交流下都烦糊涂(其实PID最好不要看的那么认真,等车能跑了,再认真研究算法也不迟的),大家继续看资料,算法也好,逛论坛也好……声明下,当时热情高涨的很啊。是盼着车模和主板芯片快点到啊。可能是学校第一次参加这个比赛,经费迟迟不批,系列负责老师说跟校领导催了,我们也看得见,但就是不批钱,结果等到3月中旬了,基本其他学校都在月初拿到芯片和车模了,我们到中旬了连个屁也摸不着,一直等,没实践,把热情都磨没了……到3月月底就觉得没戏了,也没心情看资料,其实到中旬以后就没什么希望和热情了(1因为把智能车想得太高深~2。车模迟迟不到,以为学校不批了)
对于赛道;刚开始官方网说只能用KT板(看优酷帖的赛道有检测用的黑线)~以为白色KT板和黑线是什么高级的东东,用800多买回来才知道TMD这些东西值个鸟钱,其实检测的用黑线久就是黑色电工胶~五金店几块钱多的是~但主要要买2.54cm的。对于KT板,就是我们吃饭用的白色饭盒的材料吧!没认真研究过,不过材料感觉差不多,TMD太赚我们的钱了。车模没到前,可以买些电工胶在宿舍的走道帖,先做个探测头,探测头网上买容易也不贵,模拟检测嘛!车做好后,我试过在宿舍的地板能跑。

第五飞思卡尔智能车电磁组获奖程序

第五飞思卡尔智能车电磁组获奖程序

第五届飞思卡尔智能车电磁组获奖程序————————————————————————————————作者:————————————————————————————————日期:#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#include <stdio.h>#include <MC9S12XS128.h>#include <stdlib.h>#include <math.h>#pragma LINK_INFO DERIVATIVE "mc9s12xs128"#define K 1#define N 3unsigned int i=0,j=0,m=0,n=0;unsigned char str[]={'0'};signed int b=0,c=0,d=0,e=0,f=0,g=0,spe=0,r=0,l,x3,y,z,x1,x2,x4; int time;int zd=0,flag;int pp;///////////////////////////////////////// 电机PID 定义/////////////////////////////////////int SetPoint=0; //设定目标期望值int FeedBack=0;float KKp=1.5; //比例常数float KKi=0;float KKd=0.6; //微分常数signed int EE0=0; //当前误差signed int EE1=0; //Error[-1]signed int EE2=0; //Error[-2]signed int EError0=0,EError1=0;signed int iiIncpid=0;int sp=0;////////////////////////////////// 舵机PID 定义//////////////////////////////float Kp=3; //比例常数float Ki=1;float Kd=4.2; //微分常数signed int E0=0 ; //当前误差signed int E1=0; //Error[-1]signed int E2=0; //Error[-2]signed int Error0=0,Error1=0;signed int iIncpid=0;////////////////////////////////////////////////////////////////////////////// 电机PID/////////////////////////////////////////////////////////////////////////unsigned int Getspeed(int cch1,int cch2 ){EE0=cch1-cch2; //增量计算EError0=EE0-EE1;EError1=EE1-EE2;iiIncpid=(int)(KKi*EError0+KKp*EE0+KKd*(EError0-EError1));EE1=EE0;EE2=EE1; //存储误差,用于下次计算sp+=iiIncpid;if(sp>210)sp=210;if(sp<0)sp=0;return sp;}void sudu(int SetPoint){pp=Getspeed(SetPoint,FeedBack);PWMDTY2=pp;}//////////////////////////////////////////////////////////////// 舵机PID////////////////////////////////////////////////////////////////////int Pcrtl(int ch1,int ch2 ){E0=ch1-0; //增量计算Error0=E0-E1;Error1=E1-E2;iIncpid=(int)(Ki*Error0+Kp*E0+Kd*(Error0-Error1));E1=E0;E2=E1; //存储误差,用于下次计算return iIncpid;}///////////////////////////////////////void shache(int sha,int tim){PWMDTY3=sha;time=tim;PITCE_PCE1=1;PITINTE_PINTE1=1; //启用中断通道0zd=0;}////////////////////////////////////////void vIOPortInit(void){DDRA=0X00; //PROTB 键盘输出PORTA=0X00;DDRB=0xff;DDRJ=0xFF; //PROTBPTJ=0X80;}void delayms(int ms) //40MHz--1ms {int ii,jj;if (ms<1) ms=1;for(ii=0;ii<ms;ii++)for(jj=0;jj<0xff;jj++);}//////////////////////////////////void SetBusCLK_64M(void){CLKSEL=0X00; //PLL系统脱离PLLCTL_PLLON=1; //打开PLLSYNR =0xc0 | 0x07;REFDV=0xc0 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;_asm(nop); //BUS CLOCK=64M_asm(nop);while(!(CRGFLG_LOCK==1)); //当锁相环稳定时,使用它;CLKSEL_PLLSEL =1; //PLL系统进行;}void ECT_Init(void) /*ECT初始化,使用输入捕捉功能*/{TIOS =0x00; //设为输入捕捉TSCR1=0x80; //定时器使能TSCR2=0x07;TIE=0b00000010; //开中断TCTL4=0b00001000; //0 ,1触发电平://TCTL3=0b10101010;}///////////////////////void PWMInit(void){PWME=0x00; //禁止PWM输出PWMPOL=0xff;PWMCLK=0x08;PWMCTL=0x10;PWMSCLB=80;PWMCAE=0x00; //左对齐PWMPRCLK=0x44; //PWM时钟CLOCKA,PWMPER01=40000;PWMPER3=250;PWMPER2=255;PWMDTY2=0;PWMDTY3=31;PWMDTY01=4675;PWME=0x0f; /*使能01,23通道*/}//////////////////////////void SCI(void){SCI1BDH=0X01;SCI1BDL=0XA0;SCI1CR1=0X00;SCI1CR2=0X08;}void shacheV(int ch3){PWMDTY3=ch3;while(FeedBack>30);PWMDTY3=30;zd=0;}void TERMIO_PutChar(unsigned char ch){while(!(SCI1SR1&0x80)) ; //非空时,继续等待SCI1DRL=ch;}unsigned char TERMIO_GetChar(void){while(!(SCI1SR1&0x80)) ; //非空时,继续等待return SCI1DRL;}void un(unsigned char ch){while(!(SCI1SR1&0X40)){}SCI1DRL=ch;}/////////////////////////////void ADInit(void){ATD0CTL1=0x00;ATD0CTL2=0X40; /* 使能AD,清除标志*/ATD0CTL3=0XB0; /* 队列长度为6,依次存入结果寄存器,继续转换*/ ATD0CTL4=0X05; /* 8位精度,总线频率32分频*/ATD0CTL5=0X30; /* ,多通道,连续,从AD0开始转换*/ATD0DIEN=0x00; //禁止数字输入}////////////////////////////////void PACN_init(void){PACTL_PAEN=0;TSCR1=0X80; //快速清除flag:PAOVF PAIFTSCR2=0X03;PACNT=0;PACTL_PAEN=1; //启动脉冲累加器APACTL_PAMOD=0; //事件计数方式PACTL_PEDGE=1; //PT7引脚上的出现上升沿时脉冲累加器计数器加1 TSCR1_TEN =1;}void Pit0_Init(void)PITCFLMT_PITE=0; //禁用PITPITCE_PCE0=1; //启用定时器通道0PITMUX_PMUX0=0; //ch0连接到微定时器PITMTLD0=0X0F ; //微时基0等于255个时钟周期PITLD0=0XFFFF; //超时期间= (PITMTLD + 1) * (PITLD + 1) / fBUS//时间计算//举例,16 MHz 总线计时器, 最大超时时间等于://15 * 65536 * /64000000 = 0.01536s.PITINTE_PINTE0=1; //启用中断通道0PITCFLMT_PITE=1; //启用PIT}void Pit1_Init(void){PITCFLMT_PITE=0; //禁用PIT//PITCE_PCE1=1; //启用定时器通道0PITMUX_PMUX1=0; //ch0 连接到微定时器0PITMTLD1=0X0F ; //微时基0等于255个时钟周期PITLD1=0XFFFF; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.//时间计算//For example, for a 16 MHz bus clock, the maximum time-out period equals://15 * 65536 * /64000000 = 0.01536s.//PITINTE_PINTE1=1; //启用中断通道0PITCFLMT_PITE=1; //启用PIT///////////////////////////////////// void bustor(int x[],int n){int i,j,m,k;for(i=1;i<=n-1;i++){k=1;for(j=1;j<=n-i;j++)if(x[j]>x[j+1]){m=x[j];x[j]=x[j+1];x[j+1]=m;k=0;}if(k==1)break;}}///////////////////////////void kongzhi(void){vIOPortInit() ;SetBusCLK_64M() ;ADInit() ;SCI();PORTB=0X00;PACN_init();Pit0_Init();Pit1_Init();for(;;){ECT_Init();while(!ATD0STAT0_SCF); /*等待当前队列转换完成*/b=ATD0DR0L;c=ATD0DR1L;d=ATD0DR2L;e=ATD0DR3L;f=ATD0DR4L;g=ATD0DR5L;//printf("x1=%d x2=%d FeedBack=%d EE0=%d iiIncpid=%d sp=%d b=%d c=%d ",x1,x2,FeedBack,EE0,iiIncpid,sp,b,c) ;if(b>0x10&&c>0x10){x1=b-210;x2=c-210;if(d<e)x1=-x1;if(f<g)x2=-x2;y=Pcrtl(x1,x2);if(y>560)y=560;if(y<-450)PWMDTY01=4675-y;//printf("x1=%d x2=%d",x1,x2); if(x2>80||x2<-80) //大弯道{if(zd==1&&FeedBack>78){sudu(65);if(d>e){PORTB=0XF0;shacheV(8);}else{PORTB=0X0F;shacheV(52);}}}else //直道{if(x1>50||x1<-50){x4++;if(x4<60)sudu(60);elsesudu(60);}else{zd=1;sudu(100);PWMDTY3=30;x4=0;}}}elsesudu(65);}}void main(void) {/* put your own code here */EnableInterrupts;kongzhi();for(;;) {_FEED_COP(); /* feeds the dog */} /* 进入死循环r *//* please make sure that you never leave main */ }///////////////////////////////////#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 9 T1CaptureInterrupt(void){ TFLG1=0b00000010;i++;PORTB=0xff-i;un(i);if(i>0x0c){PTJ=0X00;}}#pragma CODE_SEG DEFAULT//////////////////////////////////////////////////////////////////////////#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 66 PIT0_ISR(void){PITTF_PTF0=1; //CLER FLAGFeedBack=PACNT;PACNT=0;}//////////////////////////////////#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 67 PIT1_ISR(void){PITTF_PTF1=1; //CLER FLAGr++;if(r==time){ r=0;zd=0;PORTB=0XFF;PWMDTY3=30;PITCE_PCE1=0;PITINTE_PINTE1=0; //禁用中断通道0 }}。

智能车制作全过程43

智能车制作全过程43

智能车制作全过程43假如我写得好,请顶我一下,我将再接再厉!(本人在专门久往常做的一辆用来竞赛的智能车--获得华北一等奖,全国二等奖,有许多可改进地点.)下面我们来赶忙开始我们的智能车之旅:第一,一个系统中,传感器至关重要."不管你的CPU的速度如何的快,通信机制如何的优越,系统的精度永久无法超越传感器的精度" .是的,在那个系统中,传感器的精度,其准确性就显得至关重要.假如你问我传感器的电路,呵呵,我早就和大伙儿分享了,在我发表的日志中,有一篇<<基于反射式距离传感器>>的文章就详细的说明了传感器的硬件电路以及能够采取的信号采样方式.传感器安装成一排,如上面排列.(确实是个一字排列,没有什么专门)接下来,看看我们如何处理传感器得到的信息:大伙儿看到了.结构专门简单,我们差不多搞定了传感器通路.下面我们来看看多机的操纵方面的问题:事实上,不管是廉价依旧比较贵的舵机,差不多上一样的用法.舵机的特点确实是不同的占空比方波就对应着舵机的不同转角.因此不同的舵机有不同的频率要求.比如我用的那个舵机:方波频率50HZ.如何改变占空比?那个不确实是PWM模块的功能嘛.PWM 模块能够输出任意占空比的方波.只要你操纵其中的占空比寄存器,就能够直截了当操纵舵机的转角.你只要将传感器的状态和那个占空比对应上,不就OK了?就这么简单,做到那个地点,你就能够让你的车在跑道上跑了!接下来,我们的工作是让智能车更加完善:速度要稳固.在当前的系统结构中,要使一个系统更稳固更可靠,闭环系统是一个选择.(假如你不明白什么是闭环系统,能够参照我的文章里面的一篇"基于单片机的PID电机调速"),既然是一个闭环系统,速度传感器是必不可少的,用什么样的传感器做为速度反馈呢:认真看,和后轮之间有一条皮带的那个貌似电机的东西,确实是我的速度传感器,它的学名叫"旋转编码器".那个器件的特点确实是:每转一圈,就会从输出端输出一定的脉冲,比如我那个旋转编码器是500线的,确实是转一圈输出500个脉冲.因此,我只要在单位时刻内计数输出端输出的脉冲数,我就能够运算出车辆的速度.明显,那个速度能够用来作为PID速度调剂的反馈.现在有了反馈,我们需要的是调剂智能车驱动电机的速度了,如何来调速,就成了必须解决的问题了.我用的是驱动芯片MC33886. 事实上,那个芯片确实是一个功率放大的模块.我们明白,单片机输出的PWM信号依旧TTL信号,是不能直截了当用来驱动电机的.非要通过功率模块的放大不可.那个道理事实上专门简单,就像上次我给大伙儿画的哪个电子琴电路的放大电路一样:看上面的那个三极管,确实是将TTL电路的电流放大,才能够来驱动蜂鸣器.事实上那个地点的那个MC33886确实是如此的一个作用.而且我们自己也完全能够用三极管自己搭建一个如此的功率放大电路,因此,驱动能力确信不如那个地点的那个MC33886(如我们用三极管就搭建了超过MC33886的电路,摩托罗拉就可不能卖几十块钱一个了.呵呵.)明白了那个MC33886的工作原理,就好说了,一句话,通过PWM来调剂电机的速度.当方波中高电平占的比例大,电机的平均电压确信高,转速确信快.也确实是说,PWM的占空比越大,电机转速越高.看,就这么简单,那个智能车就做好了.接下来,我们就把我们明白的PID知识放到舵机和直流驱动电机的操纵中去.就能够达到一个比较好的操纵成效.假如要达到更高的水平,确信机械方面的改造也少不了.因此,这不属于本文的讨论范畴.呵呵.智能车制作全过程(飞思卡尔---舵机篇发表于 2020/11/28 10:00:55感谢大伙儿的支持!假如我写得好,请顶我一下!智能车的制作中,看体会来说,舵机的操纵是个关键.相比驱动电机的调速,舵机的操纵关于智能车的整体速度来说要重要的多.PID算法是个经典的算法,一定要将舵机的PID调好,如此来说即使不进行驱动电机的调速(匀速),也能跑出一个专门好的成绩.机械方面:从我们的测试上来看,舵机的力矩比较大,完全足以驱动前轮的转向.因此舵机的相应速度就成了关键.如何增加舵机的响应速度呢?更换舵机的电路?不行,组委会不承诺.一个专门有效的方法是更换舵机连接件的长度.我们来看看示意图:从上图我们能看到,当舵机转动时,左右轮子就发生偏转.专门明显,连接件长度增加,就会使舵机转动更小的转角而达到同样的成效.舵机的特点是转动一定的角度需要一定的时刻.不如说(只是比喻,没有数据),舵机转动10度需要2ms,那么要使轮子转动同样的角度,增长连接件后就只需要转动5度,那么时刻是1ms,就能反应更快了.据体会,那个舵机的连接件还有必要修改.大约增长0.5倍~2倍.在今年中,有人使用了两个舵机分别操纵两个轮子.方法专门好.但今年不承诺使用了.接下来确实是软件上面的问题了.那个地点的软件问题不单单是软件上的问题,因为我们要牵涉到传感器的布局问题.事实上,没有人说自己的传感器布局是最好的,然而确信有最适合你的算法的.比如说,常规的传感器布局是如以下图:那个地点看起来说到了传感器,我们只是略微的一提.上图只是个示意图,意思确实是在中心的地点传感器比较的密集,在两边的地点传感器比较的稀疏.如此做是有好处的,大伙儿看车辆在行驶到转弯处的情形:相信看到那个地点,大伙儿应该是一目了然了,在转弯的时候,车是偏离跑道的,因此两边比较稀疏依旧比较科学的,关于那个,我们将在传感器中在认真讨论。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

飞思卡尔智能车电磁组程序员成长之路1.飞思卡尔智能车小车入门智能汽车电磁组简介:第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。

根据比赛技术要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz 交变电流产生的磁场来导引小车沿着道路行驶。

在平时调试和比赛过程中需要能够满足比赛技术要求的 20KHz 的交流电源驱动赛道中心线下的线圈。

同时参赛选手需要自行设计合适的电磁传感器来检测赛道信息完成智能寻迹功能。

智能车制作是一个涵盖电子、电气、机械、控制等多个领域和学科的科技创新活动。

简单点来说可以将其分为硬件电路(包括电源、MUC 控制部分、电机驱动、传感器)、机械、算法三方面的设计。

电磁组在机械方面可以参照光电组的设计方案,这里不再赘述。

本设计指导只讲述20KHZ 电源、电磁传感器设计方案以及部分算法。

智能车对单片机模块需求:飞思卡尔单片机资源:智能车涉及到IO模块,中断模块,PWM模块,DMA模块,AD模块等。

在车模调试中还有必须的模块。

如SCI模块、定时器模块,SPI模块等。

其中还涉及到一些算法和数据的存储和搬移。

一个好程序框架对智能车的制作过程中会达到事半功倍的效果。

但是就智能车这样系统来说,如果完全专门移植一个操作系统或者写一个程序的bootload,感觉有一些本末倒置,如果有成熟的,可以借用的,那样会比较好。

2.电磁传感器的使用20KHz电源参考设计方案:电源技术指标要求:根据官网关于电磁组赛道说明,20KHz电源技术要求如下:1.驱动赛道中心线下铺设的0.1-0.3mm 直径的漆包线;2.频率围:20K±2K;3.电流围:50-150mA;图 2.1 是赛道起跑区示意图,在中心线铺设有漆包线。

首先分析赛道铺设铜线的电抗,从而得到电源输出的电压围。

我们按照普通的练习赛道总长度 50m,使用直径 0.2mm 漆包线。

在30 摄氏度下,铜线的电阻率大约为 0.0185 欧姆平方毫米/米。

计算可以得到中心线的电阻大约为 29.4 欧姆。

按照导线电感量计算机公式:其中 l, d 的单位均为 cm。

可以计算出直径为 0.2mm,长度 50 米的铜线电感量为131 微亨。

对应 20KHz 下,感抗约为 16.5 欧姆。

图2.1 竞赛跑道起跑区示意图可以看出,线圈的电感量小于其电阻值。

由于导线的电感量与铺设的形状有关系,上述计算所得到的电感量不是准确数值。

另外,我们可以在输出时串接电容来抵消电感的感抗。

所以估算电源电压输出围的时候,我们不再特别考虑线圈的电感对于电流的影响。

为了方便设计,我们设计电源输出电压波形为对称方波。

由于线圈电感的影响,线圈中的电流为上升、下降沿缓变的方波波形。

如图 2.2 所示:对于电阻为 29.4 欧姆的赛道导线,流过 100mA 的电流,电压峰值应该大于 3V。

考虑到赛道长度有可能进一步增加、漆包线的直径减少等原因,设计电源输出电压的峰值为 6V。

在输出电流为150mA 的时候,电源输出功率大约为 0.9W。

电源组成:电源电路包括振荡电路、功率输出电路、恒流控制电路以及电源等组成。

如图 2.3 所示。

图2.3各分部功能可以采用不同的电路实现。

下面分别给出官网电流源各模块的参考设计方案。

图2.3电源组成框图振荡电路产生中心频率为 20KHz 的对称方波信号。

为了满足功率输出电路的需要,输出极性相反的信号,可以使用普通的 555 时基电路产生振荡信号,也可以使用简易的单片机产生振荡信号。

为了方便调试,信号频率能够在一定围进行调整。

555 多谐振荡器原理请大家参考数电课本,实际外围电路电路参数需要自己设定,不一定要和官方给的一样。

1815 相当于一个反向器,为闭环回路提供信号源。

555 电路较为简单,如果想更精确的产生 20KHz 当然也可以用单片机来产生所需信号,同时还可以外部连接显示接口显示当前的输出频率、输出电流的大小。

功率输出电路由于输出驱动信号电压、电流、频率较大,需要一定输出功率驱动跑道线圈,因此最后需要功率输出电路。

可以采用分立大功率晶体管搭建输出电路,也可以使用的电机驱动桥电路集成模块。

选择时需要注意电路的频率响应应该大 20KHz,输出功率大于2W。

在制作时需要注意电路的散热。

图 2.5-2.7 分别给出了三种不同的功率输出电路,大家可以作为参考。

图2.5 基于分立元器件的功率输出电路在图 2.7 电路中,IR2153 一方面部集成了类似于555 的时基振荡电路以及 VMOS管驱动电路。

●恒流控制恒流电路控制输出电流在 100mA 左右稳定,不随着电源的变化而发生波动。

上述功率输出模块可以为负载--即赛道漆包线环路提供足够的功率,但不能控制输出电流的大小(输出电压已确定,频率确定),所以需要设计一个恒流控制电路,来调节功率输出模块电流的大小。

根据比赛规则的要求,恒流输出控制不需要特别的精确。

一般要求不高的情况下可以使用限流电阻控制电流的稳定。

所示:图2.8 利用晶体管进行恒流控制晶体管可使用大功率双极性晶体管,也可以使用功率 MOS 管。

从电流设定稳定性和恒流特性来看,使用功率双极性晶体管更好。

电源部分提供电路中所需要的各种低压稳压电源。

保证信号振荡电路和恒流控制电路的稳定性。

可以使用一般稳压集成电路实现。

●参考设计电路实际电路图的说明:设计 PCB 时最好给 C2233 音频功率管留足散热片的空间,它和 L298 一样是电路中主要的发热器件。

555 震荡电路的参数也不一定要和上图一样,可以根据公式计算出电阻的大小,只要便于调节的参数均可。

电源调试输出电流调试:调节恒流设定电位器,使得输出电流在 100mA 左右。

外部负载电阻在 10 和 100 欧姆的时候,都应该在 50-150mA 之。

(注意:所接负载电阻必须要是大功率的,而且要充分考虑到它的散热性,千万不能直接接上一般的直插式电阻就去测电流,会爆掉的!水泥电阻如果有较大阻值的话可以考虑用它作为恒流源负载)实际调试时候可以空载下 图2.9 参考设计电路 震荡电路功率放大恒流控制 频 率 设 定 恒流设定 电表入点 恒流输出将电流表串入功率管集电极测量,效果是一样的。

输出频率调试:可使用示波器或者具有频率测量的万用表测量输出电压的频率。

外接 10 欧姆的负载进行测量负载上电压的频率。

调节频率设定电位器使得电源频率输出在2±2kHz。

调试完毕后,使得电源在接入跑道线圈之下连续工作 1 个小时,电源输出的电流、频率都不会漂移出要求的围,则所设计的电源满足要求。

注意事项功率管散热:在外部负载比较小的时候,电路中功率输出晶体管、恒流控制晶体管上的功耗比较大。

特别是在整个电路的电源电压较高(比如+12V)的时候,需要对于功耗比较大的晶体管进行合理的散热,以提高电源的工作热稳定性。

串接谐振电容:当赛道比较长的时候,赛道线圈的电感较大,可以在赛道线圈连接过串联电容抵消赛道线圈的感抗。

具体电容的大小可以根据实际测量赛道的电感进行匹配。

电磁组传感器及模路径检测设计参考方案:设计原理:电磁组比赛竞赛车模需要能够通过自动识别赛道中心线位置处由通有100mA交变电流的导线所产生的电磁场进行路径检测。

除此之外在赛道的起跑线处还有永磁铁标志起跑线的位置。

1、导线周围的电磁场根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。

智能汽车竞赛使用路径导航的交流电流频率为 20kHz,产生的电磁波属于甚低频(VLF)电磁波。

甚低频频率围处于工频和低频电磁破中间,为 3kHz~30kHz,波长为 100km~10km。

如图 2.10 所示:图2.10 电流周围的电磁场示意图导线周围的电场和磁场,按照一定规律分布。

通过检测相应的电磁场的强度和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。

由于赛道导航电线和小车尺寸 l 远远小于电磁波的波长λ,电磁场辐射能量很小(如果天线的长度 l 远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。

为此,我们将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。

由毕奥-萨伐尔定律知:通有稳恒电流 I 长度 L 的直导线周围会产生磁场,距离导线距离为 r 处 P 点的磁感应强度为:)有此得:图2.11 无限长导线周围的磁场强度磁场检测方法:我们有很多测量磁场的方法,磁场传感器利用了物质与磁场之间的各种物理效应:磁电效应(电磁感应、霍尔效应、磁致电阻效应)、磁机械效应、磁光效应、核磁共振、超导体与电子自旋量子力学效应。

下面列出了一些测量原理以及相应的传感器:1.电磁感应磁场测量方法:电磁线磁场传感器,磁通门磁场传感器,磁阻抗磁场传感器。

2.霍尔效应磁场测量方法:半导体霍尔传感器、磁敏二极管,磁敏三极管。

3.各向异性电阻效应(AMR)磁场测量方法。

4.载流子自旋相互作用磁场测量方法:自旋阀巨磁效应磁敏电阻、自旋阀三极管磁场传感器、隧道磁致电阻效应磁敏电阻。

5.超导量子干涉(SQUID)磁场测量方法:SQUID 薄膜磁敏元件。

6.光泵磁场测量方法:光泵磁场传感器。

7.质子磁进动磁场测量方法。

8.光导纤维磁场测量方法。

以上各种磁场测量方法所依据的原理各不相同,测量的磁场精度和围相差也很大。

我们需要选择适合车模竞赛的检测方法,除了检测磁场的精度之外,还需要对于检测磁场的传感器的频率响应、尺寸、价格、功耗以及实现的难易程度进行考虑。

在下面所介绍的检测方法中,我们选取最为传统的电磁感应线圈的方案。

它具有原理简单、价格便宜、体积小(相对小)、频率响应快、电路实现简单等特点,适应于初学者快速实现路经检测的方案。

通电导线周围的磁场是一个矢量场,场的分布如图 8.12 所示。

如果在通电直导线两边的周围竖直放置两个轴线相互垂直并位于与导线相垂直平面的线圈,则可以感应磁场向量的两个垂直分量,进而可以获得磁场的强度和方向。

图 2.12 导线周围的感应电磁场导线中的电流按一定规律变化时,导线周围的磁场也将发生变化,则线圈中将感应出一定的电动势。

根据法拉第定律,线圈磁场传感器的部感应电压 E 与磁场 B (t) 、电磁线圈的圈数 N 、截面积 A 的关系有:感应电动势的方向可以用楞次定律来确定。

由于本设计中导线过的电流频率较低,为20kHz,且线圈较小,令线圈中心到导线的距离为 r,认为小围磁场分布是均匀的。

再根据图 3 所示的导线周围磁场分布规律,则线圈中感应电动势可近似为:(2)即线圈中感应电动势的大小正比于电流的变化率,反比于线圈中心到导线的距离。

其中常量 K 为与线圈摆放方法、线圈面积和一些物理常量有关的一个量,具体的感应电动势常量须实际测定来确定。

相关文档
最新文档