The following is for historical tracking only. The current mark three reg information was, well, on a hard disk that doesn't exist any more.
Hereis a image of the current prototyping operation.
Much has changed in the initial plans for a battery management system. After several unsuccessful incarnations, here is the current plan:
I) Main board 1) Voltage reference drive: A/D converter will drive 4 bit digital-to-analog converter. R/C net will provide last volt worth of accuracy. 2) Combination of a) and b) will be calibrated: a) Any time the system board temp changes more than 1 deg F b) Any time the delta from the last system board temp calibration and now has been more than 5 deg f c) Any time one of the probes is more than 10 deg f off of probe calibration temp, unless it would supercede a general alarm. Isolation transformer will place voltage on calibrate lines 3) Onboard computer system a) Pin assignments 0) system ready to bus 1) serial TX to bus 2) serial RX to bus 3) system ack to bus 4) serial RX to cal meter 5) output clock for D/A & select mode 6) output bit for D/A 7) output and clear low volt D/A (possibly requires tri-state line driver) 8) data return (bus) 9) select bit 0 10) select bit 1 11) select bit 2 12) select bit 3 13) select mode bit 14) reserved 15) reserved b) Bus Functionality: (used in other systems as well) 1) Whenever system ready bus goes low, machine must pay attention. All operations are stopped. (may be easier with polling). The machine simply listens for its address - if it receives it, if there is data in the outbound queue it sends that data. Inbound and outbound data is stored in the 'scratch pad' area of system memory. 2) Whatever system address is received, the system must brink ack line high. 3) No individual may bring the ack line high if it is already high. If this condition is detected, the sender simply waits for the line to go low. note: There is a potential race condition here in which two hosts check the line, find it low, send it high at exactly the same time. This is extremely unlikely, however. And a packet that had this done would fail CRC check. 4) Only the selected module can transmit. c) Voltage measuring algorhythm: 1) function set to one 2) unit select set to unit 3) output pulse - try just rough A/D until output changes state 4) once output has changed state, back off 1 on the A/D. 5) output PWM into the R/C until output again changes state 6) report finding to querying host. (note that unit only reports major and minor A/D settings, NOT voltage) d) Voltage calibrating algorhythm (mostly happens on the MSU (main system unit): 1) turn on each rough A/D converter 2) iterate over a full volt range using the R/C 3) Query onboard battery database. If cal matches any other recorded cal, update that cal's match counter and make a note in the cal activity journel recording the match, match sequence number, temp, and time. if no match is found, create a new record. Note that R/C software must use same driver subroutine, otherwise calibration is meaningless. e) Charge procedure 1) Determine the lowest cell. Charges can not be rotated through in less than 1 minute intervals. Counts of this being the lowest cell are maintained over hour, day, and week tables. If at any point a cell requires more than 10AH more than its companions to be charged, warning displays occur in cabin. 2) Open up the main to-charger contacts 3) Close the voltmeter contacts. Hardware imp _requires_ these to be closed prior to authorizing charge 3.1) Verify zero volts on aux charge bus 3.2) Close relays to lowest cell. 4) Check voltmeter voltage against recorded probe voltage. If more than 5/100ths of a volt off, halt everything and recalibrate. 5) If voltmeter voltage is over 15V, go to general alarm status. Shut down main charger, shut down aux chargers, display warning message on display, send email if linked to mother network. Permit main charger only to operate as override. Aux charger can not be restarted until the unit can pass a probe cal check against the voltmeter. Display relay pair that failed and voltage on LCD. 6) If voltmeter signal is not present, treat as #5, except different failure indication on LCD 7) If all is good, close the main charger bus relays. This _locks out_ all relay activity in hardware until they are opened. 4) Onboard relay protection subsystem 1) A serial shift register and BCD decoders decode the relay address. 2) (implimented at probe level) The relay coils are in series. A 24 volt signal drives them. This way if either relay is unplugged, or otherwise fails, its partner relay will fail open. 3) In order to close charge battery relay, all other charge battery relays must be open, and if feasable there must be no load detected on the coil voltage generator. In addition, the link to charger relay must be open and the voltmeter select relay and the voltmeter select hi range relay must be closed. 5) Onboard isolation failure Small fast-blow fuses to ground and +12 protect this subsystem from traction-pack isolation failure. 6) Additional function This board also provides 4 isolated +9V supplies for four seperate RS232 voltmeters II) Probe boards Pinout of connection to main board pin 1: - cal sig pin 2: + cal sig pin 3: Sys Gnd pin 4: Data return pin 5: Relay turn on pin 6: reserved pin 7: reserved pin 8: reserved A seperate line will be run from each main board to each probe board for the prototype. Later, consideration will be given to having each probe speak RS232 with ethernet-style collision detection and stall. The probe board will receive the calibration signal mentioned above. The probe will compare it with temp if it is a below-one-volt signal. Otherwise it will compare it with current battery voltage. The probe will send back the results of a comparator check between battery / temp sensor voltage and reference voltage Temp voltage will be aquired with a thermistor. A pot will permit ajusting this thermistor for a precise temp-voltage setting. (It's not neccesary that these be anything in particular, because the host computer will decode all this data - the basic stamps simply return the current data to the host computer.)