C++Guns – RoboBlog blogging the bot

27.09.2011

Selbstbau Kapazitätsmessgerät

Filed under: Allgemein — Tags: — Thomas @ 21:09

Große Kapazitäten kann man sehr einfach mit einer Spannungsquelle, Multimeter, Widerstand und einer Stoppuhr bauen.
Man stellt die Spannungsquelle auf 10V, schliesst einen 100k Widerstand in Reihe und misst die Zeit, bis 6.3V erreicht werden.
6.3V sind 63% von 10V und entsprechen ein tau. Und des weiteren ist tau = R*C Die Kapazität ist also die gemessene Zeit geteilt durch den Widerstand.

Soweit die Theorie, nun die Praxis.
Als erstes muss der Widerstand vermessen werden. Wenn 100k drauf stehen, sind meist weniger drin. Bei mir waren es nur 90.0k
Dann misst man am besten nochmal die Spannung nach. Um die Zeit möglichst genau zu messen, muss man nur lange genug messen. Bei 100k und 1000µF dauert der Ladevorgang etwa 2 Minuten. Da fällt eine Sekunde Abweichung nicht mehr ins Gewicht.

Auf diese Weise konnte ich 3 gebrauchte 1000µF Kondensatoren auf ca. 1000µF, 1300µF und 1400µF bestimmen. Nun haben Elkos Tolleranzen von -20/+50%. Also stimmen die Messwerte :)

Ladekurve eines 12Jahre alten NIMH Akkus

Filed under: Allgemein — Tags: — Thomas @ 15:09

Was nutzt einem beim Zelten eine coole Maglite, wenn sie plötzlich dunkel wird. Also zu Hause die Akkus mal genauer untersucht und für jeden die Ladekurven erstellt. Es gibt aber nichts besonderes zu sehen :-P

Erstaunlich ist nur, das sie mit ihrem hohen Alter von über 12Jahren noch 59% ihrer ursprünglichen Kapazität haben. Immer schonendes Aufladen mit C/10 und niemals Tief oder Überladen ist das Geheimnis.

GP NIMH 1.2V 3500mAh Farbe: Grün/Gold

Na, ich zeig euch doch noch eine Ladekurve, bin ja nicht so ;)
ladekurve NIMH alt

13.09.2011

Laufstall

Filed under: Allgemein — Thomas @ 15:09

Hab für den kleinen mal ein Laufstell gebaut. Hoffentlich gefällt es ihm.
Hat etwa 9 Stunden gedauert zu bauen und kostete 17Eur an Material.

laufstall1

laufstall2

laufstall3

10.09.2011

Thermometer und BV?

Filed under: Allgemein — Thomas @ 11:09

Nachdem mein tolles digitales Thermometer so gut funktioniert, hätte ich gern die Messwerte auf dem PC. Nur wie?
Klar man kann ein neuen Sensor kaufen und PC Anbindungshardware und dergleichen. Aber das ist zu öde.
Warum nicht eine Kamera, welche die Zahlen erkennt?

Hier mal ein Foto. Das Rot der Zahlen ist doch recht deutlich zu sehen.
2011-09-10-122821

08.09.2011

Mein digitales Thermometer

Filed under: Allgemein — Tags: — Thomas @ 20:09

Ich habe schon seit Jahrzehnten ein digitales Thermometer als Bausatz vom Conrad hier rumliegen. Jetzt hat es endlich ein Gehäuse bekommen. Und nicht nur das. Sogar zwei umschaltbare Eingänge mit LED Anzeige. Platz gefunden hat auch noch eine alte C-Control 1. Auch von Conrad. Das Gehäuse war übrigens mal ein 24V DC Netzteil für eine Brandschutztür in der Frankenstein Kaserne in Eberstadt, welches zufällig um 2003 den Weg zu mir nach Hause gefunden hat ;)

Nun kann ich wieder sehen, wie kalt es morgens ist. Es geht ja so langsam auf den Winter zu.

termometer

termometer2

06.09.2011

example to change the base instance of a derived object

Filed under: Allgemein — Tags: , , — Thomas @ 15:09

Man hat ein Array von Objekten einer abgeleiteten Klasse.
Da new[] nur den Default Konstruktor aufruft, kann man keine schon existierende Instanz der Basisklasse mitgeben.
Folgender Code zeigt, wie man die Basisinstnaz nachträglich ändern kann.


// example to change the base instance of a derived object
#include < iostream >
using namespace std;

class rawData
{
public:
double x;
};

class extendedData : public rawData
{
public:
int a;
};

int main ()
{
rawData *knoten = new rawData[2];
knoten[0].x = 0;

extendedData *knotenext = new extendedData[2];
knotenext[0].x = 1;
knotenext[0].a = 10;

cout << knotenext[0].x << endl; cout << knotenext[0].a << endl; // do the magic rawData *base = &knotenext[0]; *base = knoten[0]; cout << knotenext[0].x << endl; cout << knotenext[0].a << endl; delete[] knoten; delete[] knotenext; return 0; }

Ausgabe:

1
10
0
10

Valgrind:

kater@mintux:~$ valgrind ./a.out --leak-check=full
==7218== Memcheck, a memory error detector.
==7218== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==7218== Using LibVEX rev 1854, a library for dynamic binary translation.
==7218== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==7218== Using valgrind-3.3.1-Debian, a dynamic binary instrumentation framework.
==7218== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==7218== For more details, rerun with: -v
==7218==
1
10
0
10
==7218==
==7218== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1)
==7218== malloc/free: in use at exit: 0 bytes in 0 blocks.
==7218== malloc/free: 2 allocs, 2 frees, 40 bytes allocated.
==7218== For counts of detected errors, rerun with: -v
==7218== All heap blocks were freed -- no leaks are possible.

Eigentlich hätte ich erwartet, dass man das alte Basisobjekt noch löschen muss. Aber anscheinend nicht :)

Powered by WordPress