projekte:hardware_tricks:batterie_messungen:rc_glied_messung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekte:hardware_tricks:batterie_messungen:rc_glied_messung [2018-07-23 20:47] – [Formeln] gamecompiler | projekte:hardware_tricks:batterie_messungen:rc_glied_messung [2022-11-17 22:34] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== RC-Glied Batterie Spannungs Messung ====== |
| - | Noch nicht fertig. | + | Wichtig zu wissen, das ganze geht nur wegen der Vernachlässigung von Vc1! |
| + | Diese Methode ist relativ ungenau, bietet aber einen groben Überblick ob eine Batterie fast leer ist. | ||
| ===== Formeln ===== | ===== Formeln ===== | ||
| - | {{: | + | {{: |
| ===== Schaltplan ===== | ===== Schaltplan ===== | ||
| + | |||
| + | Die 3.3V Spannungsquelle soll die " | ||
| + | Im Falle eines 5V Arduinos 5V. Diese Spannungsquelle ist die Betriebsspannung des CPUs. | ||
| {{: | {{: | ||
| - | ===== Links ===== | + | ===== Code - Arduino===== |
| + | |||
| + | <file c sketch.ino> | ||
| + | #include < | ||
| + | |||
| + | void setup() { | ||
| + | // put your setup code here, to run once: | ||
| + | Serial.begin(115200); | ||
| + | } | ||
| + | const int rcpin = 2; | ||
| + | const float vih_voltage = 2.85; | ||
| + | const float capacity = 100 * pow(10, -9); | ||
| + | const float resistor = 100000; | ||
| + | const int dischargeDelay = 200; | ||
| - | Externe Links werden automatisch erkannt: http://www.hackerspace-bremen.de oder einfach www.hackerspace-bremen.de. | + | float meassureVoltage(){ |
| - | Verweise können auch hinter eigenen Begriffen versteckt werden: [[http://www.hackerspace-bremen.de|hier ist dein Hackerspace]]. | + | |
| - | E-Mail Adressen werden in spitze Klammern gesetzt: < | + | |
| + | digitalWrite(rcpin, | ||
| + | delay(dischargeDelay); | ||
| + | long startMicros = micros(); //Startzeit festlegen | ||
| + | pinMode(2, INPUT); //Pin auf Input legen um zu detektieren wann Pin High | ||
| + | while(!digitalRead(rcpin)){ //Warte solange Pin nicht High | ||
| - | Interne Links werden in doppelten eckigen Klammern gesetzt: | + | } |
| - | [[pagename]] | + | long endMicros = micros(); //Neue Zeit speichern |
| + | long finalMicros = endMicros - startMicros; | ||
| + | // | ||
| - | Ein Link kann auch hinter einem Begriff oder einer Beschreibung versteckt werden: | + | //Berechnen der Spannung |
| - | [[pagename|Beschreibung für einen Link]]. | + | float vbat = (vih_voltage * capacity * resistor) / |
| + | return vbat; | ||
| + | } | ||
| - | ===== Listen ===== | ||
| - | * Dies ist ein Eintrag einer unsortierten Liste | + | void loop() { |
| - | * Ein zweiter Eintrag | + | |
| - | | + | } |
| - | * Noch ein Eintrag | + | </ |
| - | | + | ===== Code - Java RaspberryPi ===== |
| - | - Ein zweiter Eintrag | + | <file java RC_meassure.java> |
| - | - Unterschiedliche Ebenen einer Liste durch Hinzufügen von weiteren zwei Leerzeichen | + | package rc_meassure; |
| - | - Noch ein Eintrag | + | |
| - | ===== Tabellen ===== | + | import com.pi4j.io.gpio.GpioController; |
| + | import com.pi4j.io.gpio.GpioFactory; | ||
| + | import com.pi4j.io.gpio.GpioPinDigitalInput; | ||
| + | import com.pi4j.io.gpio.GpioPinDigitalOutput; | ||
| + | import com.pi4j.io.gpio.Pin; | ||
| + | import com.pi4j.io.gpio.PinState; | ||
| + | import com.pi4j.io.gpio.RaspiPin; | ||
| + | import static java.lang.Math.pow; | ||
| + | import java.util.concurrent.TimeUnit; | ||
| - | ^ hervorgehoben | + | /** |
| - | | Zeile 1 Spalte 1 | Zeile 1 Spalte 2| Zeile 1 Spalte 3 | | + | * |
| - | | Zeile 2 Spalte 1 | doppelte Spaltenbreite (beachte den doppelten senkrechten Strich) || | + | * In einer echten Java Anwendung würde man das nicht so machen, das dient wirklich nur als Beispiel. |
| - | | Zeile 3 Spalte 1 | Zeile 2 Spalte 2 | Zeile 2 Spalte 3 | | + | */ |
| - | | Zeile 4 Spalte 1 | Zeile 3 Spalte 2 | Zeile 4 Spalte 3 | | + | public class RC_meassure { |
| - | ^ Tabelle mit Ausrichtung | + | /** |
| - | | Rechts| | + | * @param args the command line arguments |
| - | |Links | + | */ |
| - | | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | | + | |
| + | static final int r = 100000; | ||
| + | static final float c = (float) (100 * pow(10, -9)); | ||
| + | /** | ||
| + | | ||
| + | * http:// | ||
| + | */ | ||
| + | static final float vih = (float) 2.976473; | ||
| + | public static void main(String[] args) throws InterruptedException { | ||
| + | | ||
| + | gpio.unexportAll(); | ||
| + | final GpioPinDigitalOutput outPin = gpio.provisionDigitalOutputPin(rcPin); | ||
| + | outPin.setShutdownOptions(true, | ||
| + | outPin.low(); | ||
| + | |||
| + | TimeUnit.SECONDS.sleep(1); | ||
| + | // | ||
| + | gpio.unprovisionPin(outPin); | ||
| + | |||
| + | long startTime = System.nanoTime(); | ||
| + | final GpioPinDigitalInput inPin = gpio.provisionDigitalInputPin(rcPin); | ||
| + | |||
| + | while(inPin.isLow()){ //warte | ||
| + | |||
| + | } | ||
| + | long estimatedTime = System.nanoTime() - startTime; | ||
| + | gpio.unprovisionPin(inPin); | ||
| + | System.out.println(estimatedTime); | ||
| + | System.out.println(" | ||
| + | } | ||
| + | static float meassureRCVoltage(long t, float r, float c, float vih_voltage){ | ||
| + | float vbat = (vih_voltage * c * r) /((float)(t * pow(10, -9))); | ||
| + | return vbat; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
projekte/hardware_tricks/batterie_messungen/rc_glied_messung.1532371653.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
