Advertisement

IINA219用于测量51单片机的电流。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
51单片机IINA219用于测量电流、电压和功率。该程序包含“LCD1602.h”和“INA219_DRV.h”头文件,以及“common.h”公共函数库。定义了TH0_VALUE为0x4B,TL0_VALUE为0xFF,表示每周期50ms。同时定义了BtnRefreshMode为P3^2,RefreshRate为0(0.8s)或1(0.5s),RefreshFlag用于控制刷新数据。 `RefreshData()`函数通过INA219获取总线电压、电流和功率,并进行相应的计算和显示。总线电压被转换为千分之一伏特,并显示在LCD屏幕上。电流的偏移量用于补偿无负荷时的电流影响,通过Excel进行曲线拟合来确定偏移量。电流值根据总线电压和偏移量进行调整,并在LCD屏幕上显示。功率的偏移量同样用于补偿无负荷时的功率影响,并通过Excel进行曲线拟合确定偏移量。功率值根据总线电压和偏移量进行调整,并在LCD屏幕上显示。 `main()`函数首先初始化INA219和LCD显示屏。然后配置定时器0工作在模式1(16位定时器),设置TH0和TL0的值为TH0_VALUE和TL0_VALUE,表示每50ms触发一次中断。程序在LCD屏幕上显示电压、电流和功率的测量结果。“R:0.8s”表示刷新频率为0.8秒。调用`RefreshData()`函数进行数据刷新。 全局中断使能启用,定时器中断使能启用,并启动定时器0计数器。程序进入主循环中:如果刷新标志位设置为1,则调用`RefreshData()`函数更新数据并重置刷新标志位;如果刷新模式按钮被按下,则延时一段时间后再次延时一段时间进行去抖动;如果刷新模式按钮再次被按下,则切换刷新频率(从 0.8s 切换到 0.5s 或反之)。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • IINA21951
    优质
    《IINA219电流测量与51单片机应用》是一本专注于讲解如何利用51系列单片机进行精确电流测量及其相关电路设计的应用技术书籍,适合电子工程专业学生及技术人员阅读。 以下是使用51单片机与INA219模块进行电流、电压及功率测量的代码示例: ```c #include LCD1602.h #include INA219_DRV.h #include common.h #define TH0_VALUE 0x4B // 定义定时器TH0初始值,对应50ms周期。 #define TL0_VALUE 0xFF sbit BtnRefreshMode = P3^2; // 刷新模式按钮引脚定义 bit RefreshRate = 0; // 刷新速率标志位:0表示慢速刷新(每秒1.25次),1表示快速刷新(每秒两次) bit RefreshFlag = 0; void RefreshData(void) { unsigned short BusVolt, Current, Power; unsigned short OffsetCurrent, OffsetPower; BusVolt = INA219_GetBusVolt(); // 获取母线电压 PrintChar(0, 0, (BusVolt / 10000) + 0); PrintChar(1, 0, ((BusVolt % 10000) / 1000) + 0); PrintChar(3, 0, ((BusVolt % 100) / 10) + 0); PrintChar(4, 0, (BusVolt % 10) + 0); OffsetCurrent = (BusVolt >> 9) + 2; // 在无负载情况下,测量不同电压条件下的电流统计数据并进行曲线拟合。 Current = INA219_GetCurrent(); if(Current > OffsetCurrent) Current -= OffsetCurrent; else Current = 0; PrintChar(10, 0, (Current / 1000) + 0); PrintChar(12, 0, ((Current % 100) / 10) + 0); PrintChar(13, 0, (Current % 10) + 0); OffsetPower = (((BusVolt >> 3) * OffsetCurrent)/125)+6; Power = INA219_GetPower(); if(Power > OffsetPower) Power -= OffsetPower; else Power = 0; PrintChar(0, 1, (Power / 10000) + 0); PrintChar(1, 1, ((Power % 10000) / 1000) + 0); PrintChar(3, 1, ((Power % 100) / 10) + 0); PrintChar(4, 1, (Power % 10) + 0); } int main(void){ INA219_Init(); // 初始化INA219模块 LCD_Init(); // 初始化LCD显示 TMOD &= 0xF0; TMOD |= 0x01; TH0 = TH0_VALUE; TL0 = TL0_VALUE; PrintChar(2, 0, .); PrintChar(6, 0, V); // 显示单位 PrintChar(11, 0, .); PrintChar(15, 0, A); PrintChar(2, 1, .); PrintChar(6, 1, W); RefreshData(); EA = 1; ET0 = 1; TR0 = 1; while (1) { if (RefreshFlag) { // 判断是否需要刷新显示 RefreshData(); RefreshFlag = 0; } if(BtnRefreshMode == 0){ Delay_us(5000); if(BtnRefreshMode == 1){ Delay_us(5000); if(BtnRefreshMode == 1) { // 按钮去抖 RefreshRate = !RefreshRate; if (RefreshRate) PrintChar(14, 1, 5); else PrintChar(14, 1, 8); } } } } return 0; // 程序不会到达这里,只是一个示例结束标记。 } void Timer0ISR(void) interrupt 1 using 2{ static unsigned char Counter = 0; TH0 = TH0_VALUE; TL0 = TL0_VALUE; if (Counter < (15 - RefreshRate * 6)) // 根据刷新速率调整定时器中断频率 Counter++; else { Counter = 0; RefreshFlag = 1; } } ``` 这段代码通过
  • 51
    优质
    本项目专注于利用51单片机进行电流和电压的精准测量技术研究及应用开发。通过介绍硬件电路设计、软件编程方法,旨在为电子爱好者提供实践参考。 基于AT89S51单片机的开发内容包括电路图、主要构成模块原理图以及代码和示例。
  • 51
    优质
    本项目专注于利用51单片机进行电流和电压的精确测量技术研究,涵盖硬件电路设计、传感器选型及软件编程实现,旨在提供实用的应用解决方案。 ### 51单片机电流电压测量 #### AT89S51单片机实验及实践系统板介绍 本段落档将详细介绍基于AT89S51单片机的实验与实践系统板的各项硬件资源模块,包括电路图、各模块原理及其功能。该系统板集成了多个硬件资源模块,这些模块既可以独立运行也可以相互协作,为不同层次的学习者和开发者提供了多样化的开发环境。 #### 硬件资源模块详解 **1. 继电器控制模块** - **描述**: 本系统板提供两路继电器控制功能。输入信号通过`RelayIn1`和`RelayIn2`端口来驱动两个独立的继电器。 - **工作原理**: 当未吸合时,COM1与“SHORT1”导通,“COM2”与“SHORT2”也导通;当吸合后,则分别切换为 COM1 与 “OPEN1”,以及“COM2”和“OPEN2”的连接。 - **应用场景**: 可用于开关量信号的控制,如远程设备开关等。 **2. 参考电压源模块** - **描述**: 利用TL431芯片实现参考电压调节功能。输出范围为0~2.5V。 - **特点**: 该模块可提供稳定、精确的参考电压给系统板上的其他组件或外部设备使用,通过`Var Vref Out`端口进行连接。 - **应用场景**: 如ADDA转换器中的参考电压设置。 **3. 可调三路模拟输出** - **描述**: 提供0~5V范围内可调节的模拟信号源。该模块具有三个独立通道,每个通道都有自己的调整旋钮(VR1, VR2, VR3)。 - **特点**: 通过`VR1`, `VR2`, 和 `VR3`端口输出三路不同的电压值。 - **应用场景**: 可用于传感器供电或模拟信号处理等。 **4. 电源模块** - **描述**: 提供系统板所需的+5V稳定直流电。输入方式有交流和USB两种:前者需通过适配器将7.5V以上(AC>5V)的电压转换为稳定的5V输出;后者则直接使用计算机提供的USB接口供电。 - **特点**: 设计了保护电路,防止因短路导致电源损坏。 - **应用场景**: 适用于所有需要稳定+5V直流电的应用场景。 **5. 程序下载模块** - **描述**: 此模块用于将程序代码上传至AT89S51或AT89S52芯片中。需配合ISP编程软件使用。 - **特点**: 是单片机开发过程中必不可少的组件,主要用于烧录和调试阶段。 **6. 电平转换器模块** - **描述**: 实现TTL与RS232之间信号格式的相互转换(即电平变换),通过`TXD`, `RXD`端口进行通信。 - **应用场景**: 方便单片机与其他设备之间的数据交换和通讯。 **7. 动态数码显示模块** - **描述**: 采用8位动态扫描方式驱动共阴极数码管。控制信号由“A~H”段码引脚输出,而“S1~S8”端口用于选择具体数字的显示位置。 - **应用场景**: 可以用来展示时间、计数器等。 **8. 四路静态数码显示模块** - **描述**: 每个LED数码管都有独立的数据输入端(D0-D7),实现真正的“即插即显”效果。 - **特点**: 简单直观,易于操作和理解。 - **应用场景**: 适用于简单的数字信息展示场景。 **9. 8x8点阵显示模块** - **描述**: 每个点阵由独立的行(DR1~DR8)与列(DC1~DC8)信号控制。通过组合点亮不同位置,可以形成各种字符或图形。 - **应用场景**: 可用于信息展示、游戏开发等领域。 **10. 八路LED指示模块** - **描述**: 该模块利用八颗独立的发光二极管作为状态显示灯。当输入为低电平时LED亮起;反之则熄灭,通过“L1~L8”端口控制。 - **特点**: 简洁实用,便于识别设备的工作状况或故障信息。 以上各硬件资源模块的设计充分考虑了用户在实际应用中的需求和便捷性。无论是教学还是科研开发工作,该系统板都具有很高的使用价值。
  • 51PDF文档
    优质
    本PDF文档深入讲解了使用51单片机进行电流和电压测量的方法和技术,包括硬件电路设计、程序编写及调试技巧等内容。适合电子爱好者与工程师学习参考。 51单片机电流电压测量PDF提供详细的电流和电压测量方法及相关电路设计的介绍,适用于学习和研究51单片机的应用开发。
  • 51
    优质
    本文章详细介绍了如何使用51单片机进行电压测量的方法和步骤,包括硬件连接、程序编写及调试技巧,旨在帮助初学者快速掌握相关技术。 基于MCS-51单片机的电压测量系统设计涉及利用该微控制器进行精确电压检测的技术方案。此项目旨在展示如何通过硬件电路与软件编程相结合的方式实现对不同范围内的电压信号的有效采集及处理,为电子工程领域提供了一种经济且高效的解决方案。
  • 使
    优质
    本项目旨在通过单片机技术实现对交流电流的有效监测与数据采集,适用于电力系统分析和设备监控。 4~20mA电流输出型变送器到接口的处理方法有哪些?常见的电流输出范围是0~20mA及4~20mA两种。当电流变送器输出最小电流或最大电流时,分别代表信号的最低值和最高值。
  • 51功率仿真.rar
    优质
    本资源为基于51单片机实现的直流电机功率测量仿真实验资料,适用于电子工程、自动化控制等相关领域的学习与研究。 在电子工程领域内,51单片机因其结构简单、资源丰富及易于学习的特点而广受欢迎,适用于初学者与专业工程师。本项目旨在探讨如何利用51单片机实现直流电机功率的测量与仿真。鉴于直流电机在工业自动化、机器人技术和各种机械设备中的广泛应用,对其功率进行准确测量对于优化设备性能和故障诊断至关重要。 了解51单片机的基本架构是必要的前提条件之一。该微控制器采用CISC(复杂指令集计算)架构,并配备8KB ROM用于存储程序代码以及256B RAM用作数据存储空间;此外还拥有多个I/O端口,能够连接传感器、显示器等外部设备。在本项目中,51单片机将作为核心处理器,负责执行数据采集、运算及显示任务。 测量电机功率的关键在于获取其电压和电流值。通过接入合适的电压与电流传感器来实时监控电机的工作状态是实现这一目标的重要手段;这些传感器通常输出模拟信号,而51单片机的ADC(模数转换器)模块可将此类信号转化为便于处理的数字形式。本项目中可能会使用霍尔效应电流传感器和分压电路分别测量电压与电流值,并通过ADC将其送入微控制器进行计算。 功率计算公式为P = U * I,其中P代表功率,U表示电压,I则指代电流。51单片机内部的处理器将根据上述公式执行相应的运算操作,并可通过LCD或LED显示器实时展示结果;同时为了提高测量精度,还需考虑瞬时值及电机功率因数等因素。 在设计阶段中,可借助Proteus或Keil uVision等仿真软件预先测试和验证硬件电路与控制程序。这有助于发现并修正潜在问题,在实际搭建之前节省时间和成本。通过模拟电机运行状态来观察功率测量结果是否符合预期是该步骤的重要内容之一。 实训及课程设计环节对于掌握51单片机以及直流电机功率测量至关重要,学生可通过实践深入理解硬件工作原理、编程技巧及相关技能;此外还将涉及项目管理与文档编写等能力的培养。通过参与本项目的学习者不仅能够提升个人技术能力,还能对电机控制有更深层次的理解。 基于51单片机的直流电机功率测量(仿真)涵盖了微控制器接口设计、软件开发、传感器应用、信号处理及系统模拟等多个关键知识点;这为学习者提供了全面掌握相关技能的机会,并有助于深入理解电机控制系统。
  • 51
    优质
    本项目设计了一款基于51单片机的电压测量仪器,能够精确测量并显示直流和交流电压值。系统采用数字化处理技术,具备操作简便、成本低廉且性能稳定的特点。 使用51单片机测量电压大小,并采用ADC0832芯片进行数据采集。测得的电压通过串口发送到上位机显示。该项目包含Keil工程文件和Proteus仿真文件,可以正常运行。
  • 51TLC2543
    优质
    本项目介绍如何使用51单片机与TLC2543芯片结合,实现高精度电压测量的技术方案及具体操作步骤。 使用51单片机测试电压,采用的是12位AD转换器TLC2543进行电压采集,并通过1602液晶屏显示数据。
  • 413.基51和交仿真.rar
    优质
    本资源为基于51单片机设计的直流与交流电压、电流测量仿真实验项目,适用于电子工程及自动化教学与实践。 该系统具有交流模式和直流模式两种工作方式,并可通过开关切换测量模式。电压与电流的测量结果将通过数码管显示。 在直流模式下,系统的测量范围为0至100伏特;而在交流模式下,则是0到70伏特。当检测到的电压超过50V或电流超出5A时,系统会触发蜂鸣器发出警报(可以通过修改程序来调整报警值)。 文档中包含了详细的程序代码、原理图、仿真结果及流程图,并列出了所需的所有器件清单等资料。