I figured it's own thread would be better than occasional comments inside other threads. Let's define terms. The BMS can have any number of "nodes", where each node monitors anywhere from 1 to 10 batteries, and is controlled by 1 dsPIC30F4011. I plan on only using a node to monitor 8 batteries, since the sample pack to be monitored is 48 100amp*hr thundersky batteries.
Let's say a node consists of 8 "subnodes". haha. Each subnode has an ATTINY25 that communicates via morse code with it's master, the dsPIC30F4011.
I breadboarded 1 node of the bms, where that node only had 1 subnode, just for testing:
It measures the battery voltage indirectly by sampling a 1.25v reference voltage. The attiny25 was powered by a variable voltage supply. I varied the voltage from 2.0v up to 4.5v, and watched how the morse code on the oscilloscope changed. To figure out what the power supply voltage was, you do this...
You get the ADC_VALUE by converting the morse code to it. Then, the battery voltage is:
x = 1.25/ADC_VALUE * 1024.
I wrote down the da's and dits.... Not knowing if it was working or not, I went to finding x above... It said 2.07v, while the voltage reference said 2.0v. I was pretty sad. Then I figured I would measure the voltage of the power supply with my new fluke 117 volt meter. It said 2.072v! hahaha. oh heck ya... Now to test the receiving half.