Hanna
Sourcecode Batteriemanagementsystem |
Initialisiert den ADC-Baustein AD7997 und liest Daten aus und berechnet die korrekten Werte. Mehr ...
#include <stdio.h>
#include <stdint.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdbool.h>
#include "twi_master_driver.h"
#include "temp_mcp9843.h"
#include "ds1388_rtc.h"
#include "ad7997.h"
#include "general.h"
#include "bms_mosfet.h"
#include "BMS-Basic.h"
gehe zum Quellcode dieser Datei
Funktionen | |
void | AD7997_current_get_data (void) |
Ermittelt die Stromstärke in den Batteriestromkreisen. Mehr ... | |
int | AD7997_current_vorzeichen (uint8_t sensor_nummer) |
Ermittelt die Stromrichtung der abgefragten Batterie. Mehr ... | |
void | AD7997_init (void) |
TWI (I2C) und ADC 1/2 werden initialisiert. Mehr ... | |
void | AD7997_voltage_get_data (void) |
Ermittelt die Spannungen der Batterien. Mehr ... | |
ISR (TWIC_TWIM_vect) | |
void | leerlauf_voltage_get_data (void) |
Variablen | |
uint8_t | bat_nummer2channel [8] |
int16_t | current [8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } |
TWI_Master_t | twiAD7997 |
float | voltage [8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } |
Initialisiert den ADC-Baustein AD7997 und liest Daten aus und berechnet die korrekten Werte.
$Revision: 465 $ $Date: 2016-04-02 12:42:42 +0200 (Sat, 02 Apr 2016) $
Definiert in Datei ad7997.c.
void AD7997_current_get_data | ( | void | ) |
Ermittelt die Stromstärke in den Batteriestromkreisen.
Die TS1101 Bausteine geben die am Shunt-Widerstand gemessene Spannung um den Faktor 100 verstärkt als analoges Signal aus, das über den ADC2 gemessen wird.
Der ADC misst die Spannung in Bezug zu einer Referenzspannung und gibt einen 10bit digitalen Wert aus.
\[ U_I = \frac{ U_{REF} }{ 1024 } * n_U * \frac{ 1 }{ 100 } \]
\[ I = \frac{ U_I }{ 0,015\, \Omega } * 1000 \frac{ mA }{ A } \]
Definiert in Zeile 128 der Datei ad7997.c.
int AD7997_current_vorzeichen | ( | uint8_t | sensor_nummer | ) |
Ermittelt die Stromrichtung der abgefragten Batterie.
sensor_nummer | Nummer des Sensors bzw. der abgefragten Batterie. |
Die Strommesssensoren TS1101 geben die Stromrichtung über ein 0/1 Signal an. HIGH beim Entladen (negatives Vorzeichen), LOW beim Laden (positives Vorzeichen)
Definiert in Zeile 168 der Datei ad7997.c.
void AD7997_init | ( | void | ) |
TWI (I2C) und ADC 1/2 werden initialisiert.
Der TWI-Bus auf Port C wird initialisiert.
Die Strommessung erfolgt über den ADC2 AD7997 für jeden Batteriestromkreis einzeln.
Die Stromstärke wird über einen Widerstand in ein analoges Spannungssignal umgewandelt und am ADC gemessen. Bei einer Stromstärke von 2A werden 3V als Messsignal weitergeleitet, bei 100mA sind es 150 mV.
Der ADC2 wird auf Mode2 konfiguriert (Datenblatt AD7997 S. 29). Alle acht Messeingänge sind aktiviert. Die Messeingänge werden seriell abgefragt (halbautomatisch), bei jeder Abfrage wird um einen Messkanal weitergeschaltet.
Zusätzlich übermittelt der TS1101 auch die Stromrichtung über ein 0/1 Signal. HIGH beim Entladen (negatives Vorzeichen), LOW beim Laden (positives Vorzeichen). Die acht Signale werden über den Port A gemessen.
Die Spannungsmessung erfolgt über den ADC1 AD7997 für jeden Batteriestromkreis einzeln.
Die Ausgangsspannungen der einzelnen Batterien werden über einen Spannungsteiler reduziert und an das Niveau der Referenzspannung angepasst.
Umrechnungsfaktor: \( \frac{ R_1 + R_2 }{ R_2 }\)
Der ADC1 wird auf Mode2 konfiguriert (Datenblatt AD7997 S. 29). Alle acht Messeingänge sind aktiviert. Die Messeingänge werden seriell abgefragt (halbautomatisch), bei jeder Abfrage wird um einen Messkanal weitergeschaltet.
Definiert in Zeile 75 der Datei ad7997.c.
void AD7997_voltage_get_data | ( | void | ) |
Ermittelt die Spannungen der Batterien.
Die Batteriespannung wird über einen Spannungsteiler \( \frac{ R_2 }{ R_1 + R_2 }\) auf ein für die Referenzspannung geeignetes Maß reduziert. Die reduzierte Spannung wird als analoges Signal über den ADC1 gemessen.
Der ADC misst die Spannung in Bezug zu einer Referenzspannung und gibt einen 10bit digitalen Wert aus.
\[ U_{Bat} = \frac{ U_{REF} }{ 1024 } * n_U * \frac{ R_1 + R_2 }{ R_2 } \]
Definiert in Zeile 211 der Datei ad7997.c.