P+F接近开关答:启动发动机并运转到正常温度,然后使发动机以2500rpm的转速2min以上,并保持该转速,此时用万用表直流电压档,测量传感器信号输出端与搭铁之间的信号电压,读数应在0.1~0.9V范围内不断变化,信号电压在0.45V上下不断变化的次数,10s内应不少于8次,否则氧传感器工作不正常。
(P+F 电感式传感器 NBN12-18GM50-E0-M1)
12 mm,非齐平,更远的工作距离,温度范围扩大
-40 ... +85 °C,密封性增强,防护等级
IP68 / IP69K,E1 型式批准
开关功能 : 常开 (NO) 输出类型 : NPN 额定工作距离 : 12 mm 安装 : 非齐平 输出极性 : DC 确保操作距离 : 0 ... 9,72 mm 驱动器件 : 软钢,如 1.0037、SR235JR(之前为 St37-2)
36 mm x 36 mm x 1 mm 衰减系数 rAl : 0,5 衰减系数 rCu : 0,45 衰减系数 r304 : 0,7 衰减系数 rBrass : 0,5 输出类型 : 3 线 工作电压 : 7 ... 30 V 开关频率 : 0 ... 1200 Hz 迟滞 : 典型值为 5% 反极性保护 : 反极性保护 短路保护 : 脉冲式 电压降 : ≤ 2 V 工作电流 : 0 ... 200 mA 断态电流 : 0 ... 0,5 mA 类型 4 µA 在 25 °C 时 空载电流 : ≤ 10 mA 可用前的时间延迟 : ≤ 100 ms 开关状态指示灯 : 黄色 LED MTTFd : 1484 a 任务时间 (TM) : 20 a 诊断覆盖率 (DC) : 0 % 符合标准 : UL 认证 : cULus 认证,一般用途,2 类电源 CCC 认证 : 额定电压 ≤ 36 V 时,产品不需要 CCC 认证/标记 E1 型式批准 : 10R-04 环境温度 : -40 ... 85 °C (-40 ... 185 °F) 存储温度 : -40 ... 85 °C (-40 ... 185 °F) 连接类型 : 电缆 PUR , 2 m 线芯横截面积 : 0,34 mm2 外壳材料 : 黄铜,镀镍 感应面 : PBT 防护等级 : IP68 / IP69K 质量 : 90 g 供货范围 : 供货范围包含 2 颗自锁螺母
聊城接近开关雪佛兰乐风不启动故障修复乐风不启动故障修复。雪佛兰乐风有时能启动,有时不能启动,现在是彻底不启动,没高压火,不喷油。测进气压力传感器电压,4.97v正常,测点火线圈插头,没12v电源。点火线圈四个集成在一起,插头定义如图:
原厂接近开关方案二:选择宏晶科技的STC12C5A60S2增强型51单片机。STC12C5A60S2抗干扰能力强、消耗功率极低,和传统的51单片机运行速度相比较,它的运行加快了10倍,而且它们两者之间的指令代码具有无缝的兼容性。内部集成MAX810专用复位电路,一旦接上电源便可以实现自动复位。但内部的资源相对较少,运算速度不足以满足自平衡系统快速、复杂的数据运算和融合,内部存储空间小,性价比低。考虑到系统的复杂度、自平衡车身内置的高精度姿态传感器数据融合和编码器数据处理的复杂计算任务,需要与传感器进行IIC通讯,通过ADC采集电池电压、转向电位器数据并输出多路灵活可控的PWM信号。结合以上所述方案,选择方案一,即用STM32F103C8T6作为本系统的主控芯片较为合适。
P+F接近开关启动发动机并运转到正常温度,然后使发动机以2500rpm的转速2min以上,并保持该转速,此时用万用表直流电压档,测量传感器信号输出端与搭铁之间的信号电压,读数应在0.1~0.9V范围内不断变化,信号电压在0.45V上下不断变化的次数,10s内应不少于8次,否则氧传感器工作不正常。
聊城接近开关但这种情况并非如此,当电流通过材料时,材料将加热,随着材料温度的变化,其电阻也会变化。对于大多数电阻器,此影响相对较小;对于某些电阻器,此影响可能非常大。如果这种影响很明显,那么我们可以利用它来发挥我们的优势。使用电阻作为温度传感器,通过在电阻上放置一个已知值的电压,并测定流经它的电流,我们可以计算电阻器的阻值,这应该是给我们有关电阻温度的信息,电阻连接到的材料的温度。
原厂接近开关答:①拆下车速传感器连接插头,用万用表电阻档检查传感器两根引线的电阻值,应符合标准要求。②转动变速器的输出轴,用汽车示波器检测车速传感器两引线间的信号电压波形,呈交流电的波形,且波形的幅值与频率随输出轴转速的加快而增大,这表明传感器性能良好。
陶瓷压力传感器基于压阻效应,压力直接作用在陶瓷膜片的表面,使膜片产生微小的形变,厚膜电阻印刷在陶瓷膜片的背面,连接成一个惠斯通电桥,由于压敏电阻的压阻效应,使电桥产生一个与压力成正比的高度线性、与激励电压也成正比的电压信号,标准的信号根据压力量程的不同标定为2.0/3.0/3.3mV/V等,可以和应变式传感器相兼容。
压电效应:当某些电介质在特定方向上受到外力变形时,其内部会发生极化,正电荷和负电荷将出现在它们两个相对的表面上。除去外力后,又恢复到不带电状态。这种现象称为正压电效应。 当施加力量的方向改变时,电荷的极性也会改变。相反,当在它们的极化方向上施加电场时,这些电介质也会变形,当移除电场时,电介质的变形消失。这种现象称为逆压电效应,基于介电压电效应开发的传感器类型称为M5156-000002-010BG压力传感器。
答:打开点火开关,用万用表电压档测量水温传感器信号输出端THW与搭铁端E2之间的信号电压,应与估计发动机温度对应的信号电压相同。将温度计贴紧放置在水箱旁,起动发动机(冷车)后检测不同水温下的信号电压,应符合规定要求。
5.5 OLED显示程序设计中使用的是6线的SPI串行通信的OLED显示屏,它的分辨率为128*64,能显示汉字、图片、字符等多样化的信息。如下程序所示,首先在主函数里初始化OLED_Init()子程序,然后打开OLED的显示函数。可以看到,当前模式下OLED第一行显示的内容为当前小车所使用的是内置的DMP滤波算法,速度处于普通模式下。第二行则显示的是左编码器测量电机转轴的实时速度信息,第三行显示的是右编码器测量电机转轴的实时速度信息,非常的直观明了,有助于驾驶人实时动态的了解车子运行速度以控制在安全速度以内。第五行则是显示当前电池的电压值,让人们时刻知道电池电量以确保电池不会过放而造成不必要的经济损失。第六行显示的信息对于调试来说是非常使用的,它显示的是当前车身的倾角信息,给后期的测试带来极大的便利。核心代码如下:u8 OLED_GRAM[128][8];void OLED_Refresh_Gram(void){u8 i,n;for(i=0;i<8;i++){OLED_WR_Byte (0xb0+i,OLED_CMD); //ÉèÖÃÒ³µØÖ·£¨0~7£©OLED_WR_Byte (0x00,OLED_CMD); //ÉèÖÃÏÔʾλÖáªÁе͵ØÖ·OLED_WR_Byte (0x10,OLED_CMD); //ÉèÖÃÏÔʾλÖáªÁиߵØÖ·for(n=0;n<128;n++)OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);}}void OLED_WR_Byte(u8 dat,u8 cmd){u8 i;if(cmd)OLED_RS_Set();elseOLED_RS_Clr();for(i=0;i<8;i++){OLED_SCLK_Clr();if(dat&0x80)OLED_SDIN_Set();elseOLED_SDIN_Clr();OLED_SCLK_Set();dat<<=1;}OLED_RS_Set();}void OLED_Set_Pos(unsigned char x, unsigned char y) 1{OLED_WR_Byte(0xb0+y,OLED_CMD);OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);}void OLED_Display_On(void){OLED_WR_Byte(0X8D,OLED_CMD); //SET DCDCÃüÁîOLED_WR_Byte(0X14,OLED_CMD); //DCDC ONOLED_WR_Byte(0XAF,OLED_CMD); //DISPLAY ON}void OLED_Display_Off(void){OLED_WR_Byte(0X8D,OLED_CMD); //SET DCDCÃüÁîOLED_WR_Byte(0X10,OLED_CMD); //DCDC OFFOLED_WR_Byte(0XAE,OLED_CMD); //DISPLAY OFF}void OLED_Clear(void){u8 i,n;for(i=0;i<8;i++)for(n=0;n<128;n++)OLED_GRAM[n][i]=0X00;OLED_Refresh_Gram();//¸üÐÂÏÔʾ}void OLED_DrawPoint(u8 x,u8 y,u8 t){u8 pos,bx,temp=0;if(x>127||y>63)return;pos=7-y/8;bx=y%8;temp=1<<(7-bx);if(t)OLED_GRAM[x][pos]|=temp;else OLED_GRAM[x][pos]&=~temp;}void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode){u8 temp,t,t1;u8 y0=y;chr=chr-’ ';for(t=0;t<size;t++){if(size==12)temp=oled_asc2_1206[chr][t];else temp=oled_asc2_1608[chr][t];for(t1=0;t1<8;t1++){if(temp&0x80)OLED_DrawPoint(x,y,mode);else OLED_DrawPoint(x,y,!mode);temp<<=1;y++;if((y-y0)==size){y=y0;x++;break;}}}}//m^nº¯Êýu32 oled_pow(u8 m,u8 n){u32 result=1;while(n–)result*=m;return result;}void OLED_ShowNumber(u8 x,u8 y,u32 num,u8 len,u8 size){u8 t,temp;u8 enshow=0;for(t=0;t<len;t++){temp=(num/oled_pow(10,len-t-1));if(enshow0&&t<(len-1)){if(temp0){OLED_ShowChar(x+(size/2)*t,y,’ ',size,1);continue;}else enshow=1; } OLED_ShowChar(x+(size/2)*t,y,temp+'0',size,1); }123}void OLED_ShowString(u8 x,u8 y,const u8 *p){#define MAX_CHAR_POSX 122#define MAX_CHAR_POSY 58while(p!=’0’){if(x>MAX_CHAR_POSX){x=0;y+=16;}if(y>MAX_CHAR_POSY){y=x=0;OLED_Clear();}OLED_ShowChar(x,y,p,12,1);x+=8;p++;}}void OLED_ShowCHinese(u8 x,u8 y,u8 no){u8 t,adder=0;OLED_Set_Pos(x,y);for(t=0;t<16;t++){OLED_WR_Byte(Myzk[2no][t],OLED_DATA);adder+=1;}OLED_Set_Pos(x,y+1);for(t=0;t<16;t++){OLED_WR_Byte(Myzk[2no+1][t],OLED_DATA);adder+=1;}}void OLED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);1GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOC, &GPIO_InitStructure);PWR_BackupAccessCmd(ENABLE);RCC_LSEConfig(RCC_LSE_OFF);BKP_TamperPinCmd(DISABLE);PWR_BackupAccessCmd(DISABLE);OLED_RST_Clr();delay_ms(100);OLED_RST_Set(); OLED_WR_Byte(0xAE,OLED_CMD); OLED_WR_Byte(0xD5,OLED_CMD); OLED_WR_Byte(80,OLED_CMD); OLED_WR_Byte(0xA8,OLED_CMD); OLED_WR_Byte(0X3F,OLED_CMD); OLED_WR_Byte(0xD3,OLED_CMD); OLED_WR_Byte(0X00,OLED_CMD); OLED_WR_Byte(0x40,OLED_CMD); OLED_WR_Byte(0x8D,OLED_CMD); OLED_WR_Byte(0x14,OLED_CMD); OLED_WR_Byte(0x20,OLED_CMD); OLED_WR_Byte(0x02,OLED_CMD); OLED_WR_Byte(0xA1,OLED_CMD); OLED_WR_Byte(0xC0,OLED_CMD); OLED_WR_Byte(0xDA,OLED_CMD); OLED_WR_Byte(0x12,OLED_CMD); OLED_WR_Byte(0x81,OLED_CMD);OLED_WR_Byte(0xEF,OLED_CMD); OLED_WR_Byte(0xD9,OLED_CMD); OLED_WR_Byte(0xf1,OLED_CMD); OLED_WR_Byte(0xDB,OLED_CMD);OLED_WR_Byte(0x30,OLED_CMD); OLED_WR_Byte(0xA4,OLED_CMD); OLED_WR_Byte(0xA6,OLED_CMD); OLED_WR_Byte(0xAF,OLED_CMD); OLED_Clear();1234567891011121314151617181920212223242526272829303132333435363738}5.6 主板温度监测显示主板的温度监测,是笔者在纵观多种电机驱动设计方案后所设计出来的一种基于自然环境下的PCBA的保护。一般的PCB单层电路板多数采用铝基板,多层板则是采用FR-4材料的,他们都有一个正常工作的情况下耐温度值,超过了一定的温度,板子会发生变形、扭曲等状态。而功率场效应管也是一般耐最高温度值多数为150°C或者175°C,那么正常工作的时候肯定是不会到达这么高的温度的,但是当平衡车遇到坑洼,障碍物的时候,电机会几近处于堵转的状态,此时MOS管的输出电流会急剧上升,随之而来的是巨大的发热量。出于安全考虑,在散热片表贴安装多个温度传感器来实时检测MOS管的发热状态以确保行车的安全。int Read_Temperature(void){float Temp;Temp=(I2C_ReadOneByte(devAddr,MPU6050_RA_TEMP_OUT_H)<<8)+I2C_ReadOneByte(devAddr,MPU6050_RA_TEMP_OUT_L);if(Temp>32768) Temp-=65536;Temp=(36.53+Temp/340)*10;return (int)Temp;}5.7 高亮LED车灯闪烁设计高亮的车灯显示,在行进过程中这是必须的。既可以作为照明使用,也可以指示当前车子运行状态。如下程序所示,当MCU判断车身向左转弯的时候,随即以1/200ms的频率不断地闪烁左车灯,当车子向右转往的时候,右车灯也同样以1/200ms的闪烁频率不停地闪烁以表示车子当前为向右转状态。在直线行驶情况下,中间的车灯一直高亮显示,起装饰和照明作用。int turn(int encoder_left,int encoder_right,float gyro){static float Turn_Target=0,Turn,Turn_Convert=3,Turn_Count;float Turn_Bias,Turn_Bias_Integral,Turn_Amplitude=1800; if(Volt > 1.75 || Volt < 1.55) { if(++Turn_Count==1) Encoder_temp=myabs(encoder_left+encoder_right); Turn_Convert=2000/Encoder_temp; if(Turn_Convert<3)Turn_Convert=3; if(Turn_Convert>10)Turn_Convert=10; } else { Turn_Convert=3; Turn_Count=0; Encoder_temp=0; } if(Volt > 1.75) //×óת { Turn_Target-=Turn_Convert; LED3=1; LED6=1; if(led_delay == 1) { LED1=0; LED4=0; }else{ LED1=1; LED4=1; } } else if(Volt < 1.55) { Turn_Target+=Turn_Convert; LED1=1; LED4=1; if(led_delay == 1) { LED3=0; LED6=0; }else{ LED3=1; LED6=1; } } else { Turn_Target=0; LED2=0; LED5=0; LED1=1; LED4=1; LED3=1; LED6=1; }if(Turn_Target>Turn_Amplitude) Turn_Target=Turn_Amplitude; if(Turn_Target<-Turn_Amplitude) Turn_Target=-Turn_Amplitude; Turn_Bias=encoder_right-encoder_left; if(Turn_Off(Angle_Balance) == 0) { Turn_Bias_Integral+=Turn_Bias; Turn_Bias_Integral=Turn_Bias_Integral-Turn_Target; } if(Turn_Bias_Integral>1800) Turn_Bias_Integral=1800; if(Turn_Bias_Integral<-1800) Turn_Bias_Integral=-1800; Turn=Turn_Bias_Integral*0.5-gyro*0.5; return Turn; 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465}