So, for the beginning I want to explain why I did it the way I did. I was flying my quad at night and crashed it in tall grass, after some time I found out that I lost my lipo baterry monitor and I still had few more fully charged batteries. So I went inside and take what I found laying around and made a quick voltmeter (that's why it looks like a piece of trash).
I found relays, arduino nano and few resistors to make voltage divider so I can read battery voltage. Just to mention, this device measures total voltage of 3 cells, not each separately, but same principle can be used for monitoring each cell , except that for first cell you don't need voltage divider because its max voltage already under 5V.
I decided to share this with you because if I was found in that situation then I'm not the only one, for sure. :)
Step 1: Parts
In the beginning I haven't planned to do this instructable so I took images of whole assembly later, I hope you'll get it, if not , feel free to ask in comments bellow, or in PM.
My cells were discharging at the same rate (+-0.1V max difference) so I could set min voltage limit 3x1S (min voltage) = 3x3.5V= 10.5V limit. For those who needs parts, you can find same here:
Arduino nano: http://www.banggood.com/ATmega328P-Arduino-Compati...
or even better, a transistor switch: http://www.banggood.com/ATmega328P-Nano-V3-Contro...
and resistors, one 10k , second 20k ohm. If you will calculate costs you can easily see that it's more expensive than ordinary lipo battery monitor, but I had this laying around so all it cost me was about an hour or two of my time.
Step 2: Connection Diagram
Everything was connected like shown in picture.
Step 3: Program and Measuring Principle
So, the question is, how to now exact voltage if you don't have any voltmeter (at least in my case). Answer, just connect the battery to your charger and read voltage on each cell. After that you scale your values on arduino so it shows real and precise values which you can use to set alarm conditions.
Program is relatively simple, program is calculating average from last 10 values which are stored in memory, on that way you get stable output, otherwise value was changed in tolerances +-0.2.
Step 4: Low Battery Test
Here is quick test to see what happens when battery drops bellow limit
I hope you enjoyed this little tutorial, feel free to look at my others, thanks! :D