Hanna
Sourcecode Kontrollplatine
Funktionen | Variablen
CP.c-Dateireferenz

Software für die Kontrollplatine aus dem Projekt Batman. Mehr ...

#include <avr/io.h>
#include <stdio.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include "usartx.h"
#include "usb/usb_cdc.h"
#include "usb/usb_stdio.h"
#include "CP.h"
#include "config_clock.h"
#include "adc.h"
Include-Abhängigkeitsdiagramm für CP.c:

gehe zum Quellcode dieser Datei

Funktionen

void init (void)
 Hier werden alle Initialisierungen vorgenommen.
 
 ISR (TCC0_OVF_vect)
 
void laufzeit_berechnen (void)
 Berechnung der Laufzeit. Mehr ...
 
int main (void)
 Main: Ablaufsteuerung.
 
void terminal_usart (void)
 Messwertübertragung auf ein Terminal. Mehr ...
 
void terminal_usb (void)
 Ausgabe der Messwerte auf einem Terminal über USB. Mehr ...
 
void timer_init (void)
 Timer als Zeitgeber. Mehr ...
 
void werte_berechnen (void)
 ADC wird ausgelesen und die Werte umgerechnet. Mehr ...
 

Variablen

char laufzeit [8]
 
uint32_t sekunden = 0
 

Ausführliche Beschreibung

Software für die Kontrollplatine aus dem Projekt Batman.

Author: Hanna Created: 31.03.2016

$Revision: 473 $
$Date: 2016-04-03 17:20:58 +0200 (Sun, 03 Apr 2016) $

Die Kontrollplatine arbeitet ohne Steuerung.
Diese Software dient nur der Messung der Spannungen und Ströme auf der Kontrollplatine.

Definiert in Datei CP.c.

Dokumentation der Funktionen

void laufzeit_berechnen ( void  )

Berechnung der Laufzeit.

Berechnung der Laufzeit, Umrechnung von Sekunden in die Form hh:mm:ss.

Definiert in Zeile 256 der Datei CP.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void terminal_usart ( void  )

Messwertübertragung auf ein Terminal.

Messwertübertragung auf ein Terminal. Die Daten werden geloggt und stehen dann in einem Excel-lesbaren csv-Format zur Verfügung.

Definiert in Zeile 190 der Datei CP.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void terminal_usb ( void  )

Ausgabe der Messwerte auf einem Terminal über USB.

Die Messwerte werden tabelarisch lesbar auf dem Terminal ausgegeben, um die Funktion überwachen zu können.

Zu beachten
Die USB Übertragung ist zu instabil und wird deshalb nicht für die Messwertspeicherung verwendet (ca. ein Übertragungsfehler bei 100 Zahlen).

Definiert in Zeile 161 der Datei CP.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void timer_init ( void  )

Timer als Zeitgeber.

Timer C0 wird auf einen Takt von 1s eingestellt.

  • Prescaler von 1024
  • Normal Mode
  • Priorität des Interrupts im Interrupt Enable-Register A
  • Timer-Topwert = F_CPU / Prescaler * Sekunden

Definiert in Zeile 213 der Datei CP.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void werte_berechnen ( void  )

ADC wird ausgelesen und die Werte umgerechnet.

Die ADC-Werte werden ausgelesen und unter Berücksichtigung der Werte für Messwiderstände, Spannungsteiler, Referenzspannung oder LSB-Wert berechnet.

Berechnungen

Spannungsteiler

  • Spannungsteiler Laden 1 + 2: \( R_1 = 200k\Omega;\:\: R_2 = 20k\Omega; \)
  • Umrechnungsfaktor Laden 1 + 2: \( \frac{ R_1 + R_2 }{ R_2 } = \frac{ 200K + 20K }{ 20K } = 12\)
  • Spannungsteiler Betrieb: \( R_1 = 100k\Omega;\:\: R_2 = 30k\Omega; \)
  • Umrechnungsfaktor Betrieb: \( \frac{ R_1 + R_2 }{ R_2 } = \frac{ 100K + 30K }{ 30K } = 4,333\)

Spannungsberechnung

  • Die Referenzspannung beträgt \( U_{REF} = \frac{ V_{cc} }{ 1,6 } = \frac{ 3,28 }{ 1,6 } = 2,05\) .
  • Die Referenzspannung wird durch die Auflösung 4096 geteilt.
  • Die eingelesenen Daten \( n_U\) werden um 200 Punkte reduziert (Offsetkorrektur lt. Manual) und mit diesem Wert multipliziert.

    \[ U = \frac{ U_{REF} }{ 4096 } * (n_U - 200) * \frac{ R_1 + R_2 }{ R_2 } \]


Stromberechnung

  • Die Referenzspannung beträgt \( U_{REF} = \frac{ V_{cc} }{ 1,6 } = \frac{ 3,28 }{ 1,6 } = 2,05\) .
  • Die Referenzspannung wird durch die Auflösung 4096 geteilt.
  • Die eingelesenen Daten \( n_U\) werden um 200 Punkte reduziert (Offsetkorrektur lt. Manual) und mit diesem Wert multipliziert.
  • Das Ergebnis wird durch 50 (Laden) oder 100 (Betrieb) geteilt, da der TS1101 die Spannung um den Faktor 50 oder 100 verstärkt ausgibt.
  • \( I = \frac{ U }{ R }\) => zur Ermittlung der Stromstärke muss noch durch \( R = 0,015\, \Omega \) geteilt werden.
  • Umrechnung in mA *1000

    \[ U_I = \frac{ U_{REF} }{ 4096 } * (n_U - 200) * \frac{ 1 }{ 100 } \]



    \[ I = \frac{ U_I }{ 0,015\, \Omega } * 1000 \frac{ mA }{ A } \]



Definiert in Zeile 94 der Datei CP.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird: