完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Hi已经看到了一些关于如何监控多电池Li Ion电池(标称3.2V每一个电池)的文章,他们一般讨论使用单个PIC和分压器,或多个PIC和某种内部通信回到主控制器。我的想法有点不同……我想。D为什么不可能使用MUX来控制ADC的VE和+VE输入,换句话说,不仅将正端子切换到模拟输入,而且还将接地端子切换到PIC。因此,我认为我将通过使用ARDUINO UNO构建简单电路来原型。一对CD405BE MUXS和一个包括三个4V电池串联的样本电池。我已经上传了一个基本图,显示了这个电路的突出部分。我将VE多路复用器连接到+5V,GND,其输出到ARDUINO GND,输入0, 1和2分别连接到电池1的负端,分别为3。但是,当我开始连接+VE MUX时,单元1的+VE被连接到输入0,但是当我将单元2的+VE连接到输入1时,我注意到各种LED在ARDUIO上都会出现。这不是我所期待的,所以我停止了实验。我的猜测是8V的输入超过了MUX可以切换和导致某种类型的崩溃。有人能确认这是发生了什么事吗?我知道控制引脚不应该施加超过5V的电压,但我(天真地?)认为MUX将能够切换更高的电压。我猜我错了,但是如果有人能更清楚地解释为什么我的设计失败了,我会很感激。假设我的方法不起作用,我最有可能的是使用每一个单元的PIC,而PIC的力量来自于细胞本身。让PIC读取电压是非常简单的,但我正在努力的是如何获得一个“链”的图片与主PIC通信,大概通过UART。如果有人能指出我的设计方法,我会非常感谢。迈克,干杯!
以上来自于百度翻译 以下为原文 Hi I've seen a few posts on how to monitor cells in a multi-cell Li-Ion battery (nominal 3.2V per cell) and they generally discuss the use of a single PIC and voltage dividers, or multiple PICs and some sort of inter-communication back to a 'master' controller. My idea was a bit different...I wondered why it would not be possible to use MUX's to control both the -ve and +ve inputs to the ADC, in other words, not only switch the positive terminals into the Analog input, but also switch the ground terminals into the PIC. So I thought I'd prototype by building a simple circuit using an Arduino Uno, a couple of CD4051BE MUXs and a sample battery comprising three 4V cells in series. I've uploaded a basic diagram showing the salient parts of this circuit. Well, it didn't work as I expected. I connected the -ve MUX with +5V, GND, its output to Arduino GND and inputs 0, 1 and 2 connected to the negative terminal of battery 1 thru 3 respectively. So far so good. However, when I began to connect the +ve MUX, +ve of cell 1 was connected to input 0, but when I connected the +ve of cell 2 to input 1 I noticed various LED's coming to life on the Arduino. This That was not what I was expecting, so I stopped my experiment. My guess is that the 8V input exceeds what the MUX can switch and causes some type of breakdown. Can someone confirm that this is what is happening please? I know that the control pins should not have voltages in excess of 5V applied to them, but I (naively?) thought that the MUX would be able to switch higher voltages. Guess I got that wrong but would appreciate it if someone can provide a clearer explanation of why my 'design' has failed. Assuming my approach is not going to work, I'll most likely look to using one PIC per cell, with power for the PIC coming from the cell itself. Getting the PIC to read the voltage is pretty straightforward, but what I'm struggling with is how to get a 'chain' of PICs to communicate with a master PIC, presumably via UART. If someone can point me at a design approach for this, I'd be very thankful. Cheers, Mike Attached Image(s) |
|
相关推荐
8个回答
|
|
最好使用一个用于工作的芯片(来自线性技术的东西),并把它连接到一个PIC来做后处理。对于一个真正的电池管理系统来说,你需要的不仅仅是一个8位的PIC。
以上来自于百度翻译 以下为原文 Better to use a chip designed for the job (something from Linear Tech) and connect that to a single PIC to do the post-processing. You will need more than an 8-bit PIC for a real battery management system. |
|
|
|
问题更可能是负电压施加到多路复用器上。查找允许输入电压范围的多路复用器数据表。
以上来自于百度翻译 以下为原文 The problem is more likely the NEGATIVE voltages being applied to the mux. Look up the mux data sheet for allowable input voltage range. |
|
|
|
您好,关于您的第一个想法:几乎每种类型的CMOS器件在每个引脚之间都有输入保护二极管,VDD正电源连接和VSS或VEE负功率连接。只要所有的I/O引脚在Vdd和VSS或VEE之间的电压下,电压就处于非导通方向,保护二极管连接到正电源和负电源。如果高于正电源电压施加到任何输入,则保护二极管将导通,并将电流倾倒I。NTO电源线。这是为了防止小尖峰和其他静电放电事件。如果以这种方式馈送的电流非常少,则效果是不可预测的,取决于电源和其他连接元件的特性。类似于VSS以下的电压,电源的负侧。器件的额定电源电压为20 V,因此可以使用。如果从电池的最高电压供电。这可能适用于3个电池链,而不是用于8个电池组件。模拟开关的VEE必须连接到电池堆的底部,模拟开关的VSS不能连接到VEE。为了切换每个单元的高侧和低侧,需要两个CD4051 BE器件,并且输出。从模拟开关中的一个必须连接到ARDUIO PIC的VSS。PIC必须由一个隔离的电源供电,浮动的W.R.T电池,ARDUNO的GND可能不直接或间接地连接到模拟开关的电池链或VEE的GND上。在模拟开关的输出与模拟输入之间的1000欧姆和10千欧之间,测量每个单元的高侧电压,以及在连接低侧的模拟开关的输出与PIC微控制器的VSS之间的值在100欧姆和1千欧之间的电阻器。模拟开关的VSS应该连接到微控制器的VSS,即使这是可能的,它也不是简单的,并且不能用CD4051开关用于8电池。像Microchip或SuthTeX HV2201可能是什么?不久前,这个论坛有另一个线程,关于如何用UART连接每个单元的PIC。迈西尔
以上来自于百度翻译 以下为原文 Hi, About your first idea: Almost every type of CMOS device have input protection diodes between every pin, and Vdd positive power connection and Vss or Vee negative power connection. As long as all I/O pins are at voltage between Vdd and Vss or Vee, voltage is in the non-conducting direction for protection diodes connecting to both positive and negative power supply. If voltage above positive power supply is applied to any input, protection diode will conduct, and dump current into the power supply line. This is intended to protect against small spikes and other ESD events. If more than very little current is fed this way, effects are unpredictable and depend on properties of the power supply and other connected components. Similar for voltage below Vss, the negative side of power supply to the device. CD4051BE have a rated power supply voltage of 20 V, so might be used if powered from the highest voltage of the battery. This might work for the 3 cell chain, but Not for a 8 cell assembly. Vee of the analog switches must be connected to bottom of the battery pile, Vss of the analog switches must Not be connected to Vee. To switch both high side and low side of each cell, Two CD4051BE devices would be needed, and output from one of the analog switches must be connected to Vss of the Arduino PIC. PIC must be powered by a isolated power supply floating w.r.t the battery, GND of the Arduino may Not be connected, directly or indirectly, to GND of the battery chain or Vee of the analog switches. I suggest resistor with value between 1000 Ohm and 10 kOhm between output of analog switch and analog input measuring high side voltage of each cell, and resistor with value between 100 Ohm and 1 kOhm between output of analog switch connecting the low side, and Vss of PIC microcontroller. Vss of analog switches shall be connected to Vss of microcontroller. Even if this is possible, it isn't simple, and cannot be used for 8 cell battery using CD4051 switches. Something like Microchip/Supertex HV2201 maybe? There have been another thread in this forum, not long ago, about how to connect one PIC per Cell by UART. Mysil |
|
|
|
谢谢你的解释。我想我现在知道为什么CD405BE是在我没想到的时候进行的。如果我理解正确,电流(大概是ARDUNO的奇数行为)是由于内部二极管,因为我给芯片供电(VDD)+5V,但在一些I/O引脚上有明显更高的电压(S)。在这个特定的原型情况下,我可以用12V来为MUX供电,这可能会消除这个问题,但是正如您正确地指出的,这不是8个电池的情况下,电压可能高达28伏的答案。我一直在研究的另一个方法是隔离电池单元连接器。通过微型/微型继电器和驱动继电器使用多路复用器。这将涉及16个继电器由2 MUX驱动。看不出为什么它不能工作,但比我真正想要的移动部件要多。UART的讨论中,我确实看到了通过UART传递菊花链接图片的引用,但是如果你指的是同一个帖子,我就没有足够的细节来了解这是怎么做的。我指的是伊恩的一篇文章。M写道:“每个PIC将由它正在监视的小区供电,数据可以通过NPN共同的基础电平移位器传送到链上,并通过PNP共同的基电平移位器来返回链,每个相邻单元之间的一个。在两个读数之间,PICS将处于睡眠状态,没有驱动器到水平移位器发射器,以最小化电池上的负载。“我注意到你也为这个话题做出了贡献,所以我猜这就是你所指的。我有一个快速寻找更多信息NPN基础级移位器,以及如何应用于所提出的设计,但不能有任何意义。也许我应该伊恩,迈克,干杯!
以上来自于百度翻译 以下为原文 Thanks for the explanation Mysil. I think I now know why the CD4051BE is conducting when I didn't expect it to. If I understand you correctly, the current flow (and presumably the odd behaviour of the Arduino) is due to the internal diodes because I am powering the chip (Vdd) with +5V but have significantly higher voltage(s) present on some of the I/O pins. In this particular prototype case, I could power the MUX with 12V and this would probably remove the problem, but as you correctly noted, this is not the answer for the 8 cell case where the voltage may be as high as 28V. Another approach I've been investigating is to isolate the battery cell connections through mini/micro relays and drive the relays using the MUX. This would involve 16 relays being driven by 2 MUXs. Can't see why it wouldn't work, but more moving parts than I really want. Re. the UART discussion, I did see a passing reference to daisy chaining PICs via UART but if you're referring to the same post, there was insufficient detail for me to see how this would be done. I'm referring to a post by Ian.M which states "Each PIC would be powered by the cell it is monitoring, and data could be communicated up the chain by NPN common base level shifters and back down the chain by PNP common base level shifters, one of each between adjacent cells. Inbetween readings the PICs would be in sleep with no drive to the level shifter emitters to minimise the load on the cells." I noticed you had also contributed to this topic, so am guessing this is what you were referring to? I had a quick look for more information on NPN base level shifters and how this applied to the proposed design, but couldn't make any sense of it. Perhaps I should ping Ian.M... Cheers, Mike |
|
|
|
是的,你发现线程正在考虑。链接是:HTTP://www. McCHIP.COM/FUMMS/FUNDSP/97891将信号转换成不同的电平可以用单个晶体管来完成,每个信号都有一些电阻器。它是相当基本的晶体管电子,也许是伊恩。M或PestChelpor可能会同情,AN。绘制一个电路图。迈西尔
以上来自于百度翻译 以下为原文 Yes, You have found the thread was thinking of. Link is: http://www.microchip.com/forums/FindPost/977281 Shifting a signal to a different level may be done with a single transistor, and some resistors for each signal. It is rather basic transistor electroncs, maybe Ian.M or PsTechPaul may take pity, and make a diagram showing a circuit. Mysil |
|
|
|
DyyEngic Car论坛上有关于电池包BMS的各种方法的几个线程,但是尤其是:HTTP://www. diyEnguliCAR.COM/FuMsS/PulthRead .PHP/BMS-DealNeS-82646HTMLU可以使用DG408 1:8多路复用器,它可以工作约40伏,具有5V逻辑CONT。罗勒使用单个MUX,您可以从8个抽头中选择,这将是3.2、6.4、9.6、…、25.6标称。你可以使用8:1分压器来获得PIC ADC范围内的电压,但是你基本上失去了3位分辨率,所以你的读数会有大约3.2/128=25 mV的误差。一个12位ADC将提供大约6毫伏,这可能是足够的。使用两个DG408多路复用器,您可以不同地读取每个单元,但是仍然存在共模电压的问题。这可以通过使用差分放大器或隔离放大器来解决。另一种方法是“飞行电容器”,其中MUX将电容器充电到选定单元的电压。然后关闭MUX,使电容器浮动,然后另一个多路复用器将电压施加到ADC,接地参考。您可以使用多个继电器的想法来读取电池,但是您可以用MOSFET光耦合器代替TLP175A等机电继电器。ON电阻约为50欧姆,驱动电流低至2毫安。他们可以购买每不到1美元。
以上来自于百度翻译 以下为原文 There are several threads on the DIYelectricCar forum about various methods for a battery pack BMS, but especially this: http://www.diyelectriccar.com/forums/showthread.php/bms-design-guidelines-82646.html You can use a DG408 1:8 multiplexer, which can operate up to about 40 volts, with 5V logic control. With a single MUX, you can select from 8 taps, which would be 3.2, 6.4, 9.6, ..., 25.6 nominal. You could use an 8:1 voltage divider to get voltages within the range of the PIC's ADC, but you essentially lose 3 bits of resolution, so your readings will have an error of about 3.2/128 = 25 mV. A 12 bit ADC would give about 6 mV, which may be sufficient. With two DG408 multiplexers you can read each cell differentially, but there is still the problem of common mode voltage. That can be solved by using a differential amplifier, or an isolation amplifier. Another method is a "flying capacitor", where the MUX charges a capacitor to the voltage of a selected cell. Then the MUX is turned off, leaving the capacitor floating, and then another MUX applies the voltage to the ADC with ground reference. You can use your idea of multiple relays to read the cells, but you can replace the electromechanical relays with MOSFET opto-couplers such as the TLP175A, which has an ON resistance of about 50 ohms, and drive current as low as 2 mA. They can be purchased for less than $1 each. |
|
|
|
这里是使用DG408的BMS的示意图。在这个设计中,我有一个想法,一个220 NF电容器将通过200K电阻器充电,PIC将使用计时器和比较器来确定电压。在3.2伏特时,需要大约44毫秒才能达到2.048伏特。对于25.6伏的封装电压的顶部,它将花费1/8的时间,或5.5毫秒。用一个500千赫的定时器时钟,你可以得到大约2500毫秒的5.5毫秒和20000个计数为44毫秒,给出最小分辨率25.6/2500=10 MV.Q1用于在每次读取之后放电电容器,并保持电压低于PIC的VDD。使用与TLP175A类似的TLP22实现:
以上来自于百度翻译 以下为原文 Here is a schematic for a BMS using a DG408. In this design, I had an idea where a 220 nF capacitor would be charged through a 200k resistor, and the PIC would use a timer and comparator to determine the voltage. At 3.2 volts, it would take about 44 mSec to reach 2.048 volts. For the top of pack voltage of 25.6 volts, it would take 1/8 that time, or 5.5 mSec. With a timer clock of 500 kHz, you would get about 2500 counts for 5.5 mSec and 20,000 counts for 44 mSec, giving a minimum resolution of 25.6/2500 = 10 mV. Q1 is used to discharge the capacitor after each reading, and to keep the voltage below the PIC's Vdd. Here is a schematic of a flying capacitor implementation using TLP222, which are similar to the TLP175A: |
|
|
|
非常感谢那些为我的问题提供答案/反馈的人。特别是MysIL和PcStCurpor的详细信息。谢谢你,我现在有了更多的了解为什么我原来的设计是行不通的,并有很多想法,如何真正做到这一点。我花了一段时间来找出在多个MCU的设计中,角色级移位器将如何发挥作用,但我现在明白,它们需要在多个MCU之间实现“有线”通信,其中每个MCU很可能在不同的电源电压下运行。这肯定是我的8个单元中的每一个都有自己的MCU来测量的情况。在这个阶段,我的首选方法是每个单元有一个专用MCU,而不是一个带有分压器的单MCU。我也认为使用继电器的想法是一个比较简单的方法,我可以进一步看,特别是现在已经提到了TLP175A。谢谢大家的帮助。迈克
以上来自于百度翻译 以下为原文 Many thanks to those who provided answers/feedback to my question. In particular Mysil and PStechPaul for your detailed information. Thanks to you I now have a bit more understanding of why my original design isn't going to work, and a lot of ideas for how to actually get this working. It took me a while to figure out what role level shifters would play in a design using multiple MCU's but I now understand they are needed to enable 'wired' communication between multiple MCUs where each MCU is likely to be running with a different power voltage. That would definitely be the case where each of my 8 cells has its own MCU for measurement. At this stage, my preferred approach is to have a dedicated MCU per cell, rather than a single MCU with voltage dividers. I also think the idea of using relays is a relatively simple approach that I might look at further, particularly now that the TLP175A has been mentioned. Thanks for all your help. Mike |
|
|
|
只有小组成员才能发言,加入小组>>
5184 浏览 9 评论
2005 浏览 8 评论
1932 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3179 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2230 浏览 5 评论
740浏览 1评论
626浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
512浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
638浏览 0评论
536浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 18:26 , Processed in 1.711240 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号