element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Transportation & Automotive
  • Technologies
  • More
Transportation & Automotive
Forum 基于CAN总线的温度检测设计
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Transportation & Automotive to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 0 replies
  • Subscribers 83 subscribers
  • Views 463 views
  • Users 0 members are here
Related

基于CAN总线的温度检测设计

apple_lol
apple_lol over 15 years ago

在对电子点火模块的测试中,为了模拟电子点火系统的真实工况,电子点火模块往往被置于高于常温的环境下进行电子点火实验,以获得最接近真实汽车运行工况的点火参数数据。由于电子点火模块自身的发热,其核心元件的温度成为影响电子模块性能的重要因素;另外,还要考虑环境温度是否达到模拟真实工况的要求等。

 

本文介绍了一种应用LM35温度传感器和PICMicro的温度检测节点的设计方案,用于检测在模拟汽车电子点火的过程中,电子点火模块的核心模块温度和环境温度,将阐明模块结构、工作原理及采样值量化的方法。

 

节点原理与结构

该温度检测节点由传感器电路、信号调理电路、单片机应用系统、CAN总线接口等构成。电路基本工作原理是:传感器电路将感应到的温度信号以电压的形式输出到信号调理电路,信号经过调理后输入到A/D采样电路,由ADC将数字量值送给单片机系统。单片机系统将监控实时温度,当温度超过警戒值和危险值时,单片机将主动发送警告信息到上位机,提醒操作人员检查。模块逻辑结构如图1所示。

 

image
图1温度检测节点逻辑结构

 

传感器电路采用温度传感器LM35,供电电压为15V直流,工作电流为120mA,功耗极低,在全温度范围工作时,电流变化很小,电压输出采用差动信号方式,由2、3引脚直接输出。LM35输出信号经过一个由RC组成的LP滤波器,滤除高频的噪声干扰。

 

本节点的核心MCU是PIC16F87x,是Microchip公司推出的低功耗8位单片机。PIC16F87x拥有精简指令集,执行速度为200ns。CAN控制器采用Microchip公司的MCP2510,总线驱动器采用PCA82C250,总线隔离电路采用光耦6N317,信号调理电路采用LF412。温度监测模块的硬件结构如图2所示。

 

image
图2温度监测模块硬件结构

 

信号调理电路主要完成对传感器信号放大和限幅的功能,将传感器电路输出的变化范围为2V左右的直流电压,调理为符合PICMicro的AD接口的电压范围,既不能超过AD采样的量程,又要有相当的信号精度。单片机通过A/D采样通道采集传感器的温度数据,并计算温度范围。

 

外围设备电路为PIC16F87x最小系统运行所需要的必要外设。PIC16F87x通过SPI总线与MCP2510进行数据交换,完成CAN总线数据包的发送和接收,其接口电路如图3所示。

 

image
图3PIC16F877与MCP2510的接口电路

 

其中,SCK为SPI总线时钟,PIC16F87x模块的SPI接口接MCP2510的SI、SO、SCK,RA4与RA1分别控制MCP2510的芯片复位和片选。INT接受MCP2510的中断请求。

系统软件设计

 

系统软件流程

为了避免因干扰而产生误动作,软件采取了一些冗余和容错处理,在A/D模块处理采样数据时,采用了软件滤波措施,以滤除电路中可能会出现的尖峰干扰。

 

方法为连续采样五次,通过比较判断,去掉其中的最大值和最小值,其余三次的值求和后取平均值,把平均值作为CPU用来划分温度范围的有效数据。数据包的解析和封装都遵循CAN的应用层协议,主程序流程如图4所示。

 

image
图4主程序流程

 


当CPU检测到温度出现异常,会根据温度异常范围向上位机发出温度异常警报,这是该节点CPU唯一主动向上位机发出的数据帧。该节点的温度相关数据存放在缓冲区,在没有收到上位机数据请求的时候,该缓冲区的数据会不断的被新的数据刷新,以保证该节点数据的实时性,中断流程如图5所示。

 

image
图5CAN接收中断流程

 

采样值的量化方法

 

采样值的准确量化是温控电路正常工作的关键,这里采用以下换算办法来进行量化。设经过信号调理后的电压为Ui,则-10V
Ui=-10V+ΔT•Kt=-10V+55℃×0.111V/℃=-3.895V。

 

Ui转换为数字量后,每个数字量对应电压值为19.531mV,用Ks表示。可以求得数字量变化和温度变化之间的对应关系:Kt/Ks=(0.111V/℃)/(19.531mV/数字量)=5.683数字量/℃。

 

其他温度对应的数字量也可以通过以上方法算出。

 

SPI接口通信

 

PIC16F87x通过SPI接口和MCP2510进行数据交换。

 

MCP2510设计可与许多微控制器的串行外设接口(SPI)直接相连。外部数据和命令通过SI引脚传送到器件中,而数据在SCK时钟信号的上升沿传送进去。

MCP2510在SCK下降沿通过SO引脚发送表1列出了所有操作的指令字节。

 

image
以PIC16F87x向MCP2510发送读指令为例,来说明SPI接口通信过程。

 

在读操作开始时,CS引脚将被置为低电平。随后读指令和8位地址码(A7~A0)将被依次送入MCP2510。在接收到读指令和地址码之后,MCP2510指定地址寄存器中的数据将被移出通过SO引脚进行发送。每一数据字节移出后,器件内部的地址指针将自动加一以指向下一地址。因此可以对下一个连续地址寄存器进行读操作。通过该方法可以顺序读取任意一个连续地址寄存器中的数据。通过拉高CS引脚电平可以结束读操作,如图6所示。

 

image
图6SPI接口通信时序

 

基于LM35开发的温控节点工作稳定性强、可靠性高、且具有体积小、灵敏度高、响应时间短、抗干扰能力强等特点。该节点成本低廉,器件均为常规元件,有较高的工程价值。本节点拥有CAN接口,既可以作为一个独立的检测系统,也可以作为分布式测试系统的一个关键部分。CAN的上层协议都可以在软件中实现,使得本节点接口灵活,不受上层协议的限制。

  • Sign in to reply
  • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube