![]() ![]() I had the idea of putting a mosfet (should be a nfet, normaly closed one as far as I understood?!) on the ground, and a diode connected to each cell, letting the power flow only in one direction, so that the cells would not be "connected" unless the mosfer is powered by the arduino (I guess connecting it to a digital "high or low" pin would be ok?). Hey, thanks a lot for your detailed and quick answer! I really appreciate it!Īnd I am sorry for the late response, I had problems understanding what you wrote, due to my lack of knowledge about mosfets. So you can't sample faster than 1000 Hz per channel or you'll start transferring enough charge from channel to channel to screw the measurements up. You want full 10 bit accuracy so you want about 1000x higher sampling input equivalent "resistance" than this, so you need 100Meg equivalent sampling input resistance. So let's say each voltage divider is made with a 100k and a 1Meg resistor, so about 100k output impedance. Where Csamp is the internal ADC sampling cap, usually 5-10pF, and f is the sampling frequency per channel. But if you sample faster than a certain number of measurements per second, you'll still get errors due to the divider impedance.īasically the ADC acts kinda like a resistor connecting each cell channel input to the next, with a current transferred from each input to the next that acts sort of like a resistor with value: You can put a ~10nF cap on each pin to ground to make the Arduino insensitive to the divider impedance. More than about 10k, and you will start to see issues with the sampling capacitor of the ADC not charging. But you need to be careful about maintaining a low enough output impedance of each divider to drive the Arduino ADC. Big resistors obviously also help regardless of whether you switch them. That means that for a 5 cell system with 4.2V max, you need to divide each voltage by at least 6:1. So perhaps 3.5V is the right choice, nice round number that's smaller than 3.8V. So if you get a FET with Vth specified as being between 0.4 and 1.2V, say, then you need all the Ax values to end up below (5V - 1.2V) = 3.8V. You need each Ax pin to end up below Vcc (or whatever the GPIO output high voltage is) by more than the threshold voltage of the FET. If they're too high, then the FETs aren't actually turned on, because they're only turned on by the difference between the GPIO voltage and the measured divider voltage. This works ONLY IF the measured voltages at the Ax pins are expected to be low enough. When low, all the FETs are off and no current is drawn. When this GPIO is high, you get the divided output. All the NFET gates then get tied together and sent to a GPIO. So for instance for channel A4 you would disconnect R2 from pin A4, and then connect the NFET source to A4 and the drain to R2. ![]() Another way, slightly more "clever" but also with drawbacks, is to put a single "logic level" NFET between each ADC pin and each high side resistor. Then you use an open collector driver (which can be just an NFET) with a resistor on the output to pull down each PFET gate when you want to measure. You put a PFET with source connected to each cell positive, and a source-to-gate resistor in parallel with a ~8V zener diode. ![]() One way is to apply a high side switch to each divider. (to be clear none of these are "good" in terms of being a professional/production solution) Sure there are a couple of solutions here. Thanks a lot for reading, I am sorry, if i have fogotten something essentialĮDIT: I hope this is the right sub, sorry if not! I just now could not find a alternative online, that does not use a voltage divider.Īs far as I understand, the voltage devider was crappy calculated, with a much so low resistance, so the cells got sort of shorted out, or the resistance of the voltage divider added to the internal resistance, so that the cells discharged just though the voltage devider. Is there a clever way to read out the individual voltages of the cells, without discharging the cells? Or is it working in theory, but the resistors were calculated poorly? How ever, I just wanted to continue the project, but the first two cells were discharged to about 1.5 or 1 V, so beyond recharge. It worked, but I broke the display, so I had to wait for a new one to arrive and I did not take out the cells. I had help of a friend, who studies something electronic related and he gave me the hint to use a voltage divider, to pull down the voltage enough for the arduino to handle (I calculated it with about 4.5V, and adjusted the values in the code, to match the measured voltage). I checked the voltage of the individual cells after letting it rest for a while, and the voltages seemed to be fine. ![]() I started a Li-Ion 18650 battery-project for a diy-bluetooth speaker this summer, but only reacently got around to continue working on it. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |