目录

一、引言

二、电路原理介绍

1、氛围灯熄灭原理

2、氛围灯点亮原理

3、可变占空比PWM信号调节氛围灯亮暗

三、AT89C51双定时器产生占空比可变的PWM信号

四、Proteus仿真动态视频记录

五、C51调试程序代码


一、引言

实际应用中往往需要来自控制器的MCU低压信号(+3.3V或+5V)来控制汽车常用电压(+12V)驱动某些功能的电路,特殊场合还需要可变占空比的PWM信号来控制电机转速或氛围灯的亮暗等驱动电路,这样不仅实现了弱电信号控制驱动电路的目的,同时弱电信号的MCU和驱动电路又是隔离的,互不干扰,保证MCU的正常工作不受驱动电路的影响。

二、电路原理介绍

1、氛围灯熄灭原理

当MCU的信号为低(本例接地)时,Q2(NPN)不导通,可以理解为断路,此时Q1(P-MOSFET)的Ugs≈0V,未实现导通的条件Ugs<0,MOS管不导通,所以氛围灯不亮。

2、氛围灯点亮原理

当MCU的信号为高(本例接+5V)时,Q2(NPN)导通,可以理解为短路,此时Q1(P-MOSFET)的Ugs ≈ - 6V,实现导通的条件Ugs<0,MOS管导通,所以氛围灯点亮。

3、可变占空比PWM信号调节氛围灯亮暗

以一定频率(本例PWM控制信号周期为10ms)的PWM信号代替图中的控制信号,理论上占空比和氛围灯的亮暗是成正比趋势的。占空比越大,氛围灯越亮,反之亦然。这样就可以实现控制PWM信号的占空比来调节氛围灯的亮暗变化,如果灯源是RGB三色的,那理论上就可以实现汽车氛围灯的无极变色以及呼吸变色等功能了,变色氛围灯在新能源汽车上已经变为很常见的配置,这一配置为新能源汽车增色不少,已经不再是豪华车的专属。

三、AT89C51双定时器产生占空比可变的PWM信号

这一块儿内容,请参阅我的另一篇文章,详细介绍了可变占空比的PWM信号的形成过程。链接如下:

(4条消息) Proteus仿真C51利用双定时器输出占空比可变的PWM_宝玉飞的博客-CSDN博客https://blog.csdn.net/tj_nonstoper/article/details/124391404?spm=1001.2014.3001.5501下面是带C51 MCU的电路原理图:

四、Proteus仿真动态视频记录

下面动态视频中发光二极管随着PWM信号占空比变化而变化,变化快慢以及平滑度,取决于占空比信号的变化快慢,完全受控;我们可以在中控大屏设置调节区域,通过CAN信号和氛围灯控制器通讯来实现对氛围灯的亮暗以及色调等的控制,甚至把氛围灯和空调温度的冷暖色调、音乐节奏等联系起来,给创意造型师留有很大的发挥空间。

五、C51调试程序代码

/* Main.c file generated by liyufei* UART AT89C51 Frequency 12MHz * PWM drives Atmosphere lamp of Automobile * Created:   Saturday April 24, 2022* Processor: AT89C51* Compiler:  Keil μVision5* Version:   v1.0*/#include <reg52.h>
#include <stdio.h>#define up 1
#define down 0 // 类型重定义,便于移植
typedef unsigned char uchar;
typedef unsigned int uint; uchar i, Count = 10;
uchar cnt_H = 1;  //PWM周期10ms(100Hz),cnt_H为高电平计数
uchar cnt_L = 9;  //PWM周期10ms(100Hz),cnt_H为高电平计数uchar half = up;sbit pulse = P3^4;/* main 主函数*/
void main()
{pulse = 1;TMOD  = 0x11; //Timer0 方式一16位,高电平定时;Timer1方式一16位定时,低电平定时;ET0   = 0;       ET1   = 0; TF0   = 0;TF1   = 0;   while(1){for(i = 0; i < Count; i++){TH0   = (uint)(65536-cnt_H*100)/256;TL0   = (uint)(65536-cnt_H*100)%256; TR0   = 1;while(!TF0); TR0   = 0;       pulse = ~pulse; TF0   = 0;    TH1   = (uint)(65536-cnt_L*100)/256;TL1   = (uint)(65536-cnt_L*100)%256;TR1   = 1;while(!TF1);TR1   = 0;        TF1   = 0; pulse = ~pulse; }if(i == Count){if(half == up){switch(cnt_H){case   1: cnt_H =  3; cnt_L =  97; break; case   3: cnt_H =  5; cnt_L =  95; break;        case   5: cnt_H = 10; cnt_L =  90; break; case  10: cnt_H = 15; cnt_L =  85; break; case  15: cnt_H = 20; cnt_L =  80; break; case  20: cnt_H = 25; cnt_L =  75; break; case  25: cnt_H = 30; cnt_L =  70; break; case  30: cnt_H = 35; cnt_L =  65; break; case  35: cnt_H = 40; cnt_L =  60; break; case  40: cnt_H = 45; cnt_L =  55; break; case  45: cnt_H = 50; cnt_L =  50; break;         case  50: cnt_H = 60; cnt_L =  40; break;case  60: cnt_H = 70; cnt_L =  30; break;case  70: cnt_H = 85; cnt_L =  15; break;case  85: cnt_H = 99; cnt_L =   1; half = down;break;   default: break;} }if(half == down){switch(cnt_H){case  99:  cnt_H =  85; cnt_L =  15; break;  case  85:  cnt_H =  70; cnt_L =  30; break; case  70:  cnt_H =  60; cnt_L =  40; break;  case  60:  cnt_H =  50; cnt_L =  50; break;  case  50:  cnt_H =  45; cnt_L =  55; break;    case  45:  cnt_H =  40; cnt_L =  60; break;  case  40:  cnt_H =  35; cnt_L =  75; break;        case  35:  cnt_H =  30; cnt_L =  70; break;case  30:  cnt_H =  25; cnt_L =  75; break;  case  25:  cnt_H =  20; cnt_L =  80; break;  case  20:  cnt_H =  15; cnt_L =  85; break; case  15:  cnt_H =  10; cnt_L =  90; break; case  10:  cnt_H =   5; cnt_L =  95; break;  case   5:  cnt_H =   3; cnt_L =  97; break; case   3:  cnt_H =   1; cnt_L =  99; half = up; break;  default:   break;    }}i = 0; }       }
}

Proteus仿真汽车氛围灯驱动电路及呼吸效果相关推荐

  1. 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制

    [Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...

  2. Proteus仿真运行流水灯程序

    文章目录 一.protues画出流水灯图架 1.项目工程的创建 2.画图 二.程序的实现 源代码 效果演示 三.小结 四.资料引用 一.protues画出流水灯图架 1.项目工程的创建 打开软件,点击 ...

  3. 3w最简单led灯电路图_一款简单实用的LED灯驱动电路

    LED照明集低功耗.长寿命等优点,正日益广受欢迎.随着价格的不断下降,LED已开始在家庭照明中得以应用.最近接触了几款市售的36头.60头LED灯,耗电仅3w左右,亮度相当于10w白炽灯,很省电. 可 ...

  4. Arduino与Proteus仿真实例-74LS378触发器驱动仿真

    74LS378触发器驱动仿真 74LS378 是一种单片.正沿触发.可注册触发器 IC,它利用 TTL 电路来实现 D 型触发器/锁存逻辑. 该 IC 还具有公共时钟使能而不是公共清除. 74LS37 ...

  5. Arduino与Proteus仿真实例-Nokia5110显示屏驱动仿真

    Nokia5110显示屏驱动仿真 Nokia5110使用飞利浦 PCD8544 液晶驱动器,显示屏大约只有 1.5" 直径,但由于带有背光而非常可读.该显示器由 84x48 单个像素组成,因 ...

  6. Arduino与Proteus仿真实例-74LS273触发器驱动仿真

    74LS273触发器驱动仿真 74LS273 是一个高速 8 位寄存器. 该寄存器由八个D型触发器组成,带有一个公共时钟和一个异步有效低主复位. 在前面的文章中,对74LS273做了详细的介绍,请参考 ...

  7. PIC16F877A与Proteus仿真-LCD1602并口驱动

    LCD1602并口驱动 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块.它是由字符型液晶显示屏(LCD).控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻.电容元件 ...

  8. LIN总线:汽车氛围灯控制

    高档车比如奔驰车,具有功能强大的氛围灯,采用单芯片聚合了MCU(据说是51内核).LED控制器.LIN收发器.电源管理等硬件,整体就只有指甲盖那么大,应该说是集成度非常高.背面是PWM可调式三色LED ...

  9. 2022-10-20 Linux自带LED灯驱动gpio-leds 心跳呼吸灯heartbeat、定时器timer的使用

    一.测试环境:Android 9 系统 二.驱动文件在\kernel\drivers\leds\leds-gpio.c 三.dts的官方配置文档 kernel\Documentation\device ...

最新文章

  1. Sass函数:Sass Maps的函数-map-has-key($map,$key)
  2. (Oracle学习笔记) Oracle体系结构
  3. wxWidgets:持久对象概述
  4. 【机器视觉】 dev_set_window_extents算子
  5. 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象
  6. cannot delete activity in SAP CRM WebClient UI
  7. 朴素Bayse新闻分类实践
  8. wordpress主题是php开发的吗,写给想学习wordpress主题开发的朋友们
  9. 天天早上慢跑一小时对身体好吗?
  10. vsoce-video
  11. 从零开始学习编程,会很难学吗?新手想快速掌握应该怎么学?
  12. 直播购物平台应开发的功能
  13. 深度相机原理(3) ---- 结构光
  14. wsl2设置静态IP
  15. 尚德机构退费难的问题
  16. 010 editor如何复制16进制
  17. #Ubuntu# #机械键盘# 功能键/多媒体键切换无效
  18. Reactive的使用(reactive 和 shallowReactive使用上区别)
  19. 如何在spring事务提交成功后再进行异步操作
  20. 模为60的BCD码计数器的设计与验证

热门文章

  1. 计算机打音乐野狼,野狼disco(hook部分)单轨调教用
  2. 计算机魔术教程,魔术教学法在《计算机编程》教学中的应用
  3. 树莓派Scim-pinyin输入法相关(安装,不能切换中文输入法)
  4. Linux sz和rz 命令安装
  5. Unity之OpenXR+XR Interaction Toolkit 安装和配置
  6. vue3系统入门和项目实战,创建vue3项目的步骤
  7. ajax datatype 文件,关于ajaxFileUpload中dataType的有关问题
  8. OpenJudge NOI 1.13 08:特殊日历计算
  9. MapboxMap之Expression(一)
  10. 怎么查看服务器的运行状况,管理运行状况设置和服务器运行状况