projekte:hardware_tricks:batterie_messungen:rc_glied_messung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
projekte:hardware_tricks:batterie_messungen:rc_glied_messung [2018-07-23 20:46] – angelegt gamecompiler | projekte:hardware_tricks:batterie_messungen:rc_glied_messung [2018-07-26 11:51] – gamecompiler | ||
---|---|---|---|
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) || | + | * @author jmetzler |
- | | 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.txt · Zuletzt geändert: 2022-11-17 22:34 von 127.0.0.1