• In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs April 2025.
    Thema: "Plastik (Kunststoff)"

    Nur noch bis zum 30.04.2025 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

DIY DSLR Wasserwaage mit MEMS Accelerometer

MasterFX

Themenersteller
Ich habe mich am WE mal daran gemacht eine digitale Wasserwaage für meine Kamera zu bauen. Es gab ja schon mehrere Ansätze wie DIESE aber das ist mir dann doch zu groß, zu teuer und zu :ugly:

Da ich gerade noch einen Freescale MMA8452Q (12 Bit) Beschleunigungssensor rumliegen hatte, habe ich gleich zum Lötkolben gegriffen.

Bauteile
Der Beschleunigungssensor hat eine Auflösung von 1024 counts/g. Das sollte für diesen Einsatzzweck normalerweise ausreichen.
Preislich tut es sich kaum was, egal ob man nur den 12 Bit (MMA8452Q) oder den mit 14-Bit (MMA8451Q) nimmt. Beide kosten weniger als 2€.
ACHTUNG: Der MMA8450Q arbeitet nur mit 1.8V Versorgungsspannung, der MMA845xQ hingegen mit 1,95-3,6V!
Als Anzeige habe ich mir einfach 5 LEDs im 0603 Gehäuse genommen, weil ich die noch rumliegen habe. Die mittlere LED ist grün die anderen rot.
Auch die Widerstände und Keramikkondensatoren (100nF und 4.7µF) sind 0603.
Tja und dann eben noch den Atmega48/88 da ich davon ebenfalls noch genug rumliegen habe.

Die Stromaufnahme liegt im "ON"-Betrieb bei ~2.2mA. Mit einer CR2032 reicht es also etwa für 90 Stunden Dauerbetrieb.

Da ich gerade keine Lust hatte eine Platine zu entwickeln und ätzen zu lassen, habe ich das ganze mal als "Doppel-Dead-Bug" auf ein kleines Stückchen Lochrasterplatine aufgebaut. Das Ergebnis sieht dann so aus

wasserwaage.jpg


Die Drähte, die nach Rechts weg gehen, sind für die ISP-Schnittstelle und Stromversorgung.
Nachdem ich das ganze dann aufgebaut habe, habe ich mir dann auch mal den Schaltplan aufgezeichnet :lol:, vielleicht lasse ich ja doch mal eine Platine dafür ätzen und dann habe ich das schonmal.
wasserwaage_schematic.png


Ja ich weiß, ich habe nicht alle GNDs und VCCs des Atmegas verbunden, aber glaubt mir bei der Art von Aufbau versucht man zu sparen wo es nur geht :D
Da zu jedem Zeitpunkt nur eine LED an ist, braucht man auch nur einen Vorwiderstand.

Dass das ganze auch tatsächlich funktioniert kann man in diesem Video sehen: http://www.youtube.com/watch?v=fadT2ODVMbc

Sicherlich ist das ganze noch verbesserungswürdig, aber für den ersten kurzen Test recht annehmbar.
Zugegebenermaßen dürfte diese Art von Freiluftverdrahung nicht jedermanns Sache sein, vorallem nicht das Löten des Beschleunigungssensors mit 0.5mm Pitch, aber mir machts halt Spaß.

Der Quellcode ist nicht sonderlich komplex, da man für diese recht grobe (5-Stellige) Auflösung keine Winkelfunktionen oder so braucht. Da nimmt man einfach direkt den RAW-Wert der X-Achse und schaltet je nach Wertebereich eine andere LED an. Den "grünen" Bereich habe ich bewusst etwas enger gewählt, denn um den geht es ja schließlich. Der grüne Bereich dürfte mit dem 12-Bit Sensor etwa bei Bereich ±0,1° liegen (kann ja mal jemand ausrechnen).

Man könnte natürlich auch einen kleineren AVR nehmen, der Code ist bisher nur 670 Bytes groß. Nur genug Beinchen für die LEDs sollte man haben.

Wie man sieht bilde ich noch nicht mal den Mittelwert, denn bei der Samplerate und aktivem Low Noise Modus auch so sind die Rohdaten recht rauscharm.
Code:
#include <avr/io.h>
#include <util/delay.h>

//i2c Master lib von Peter Fleury
#include "i2cmaster.h"

// I2C-Adresse vom MMA8452Q bereits geshiftet für 7 Bit
#define MMA8452_ADDR 0x38


void i2c_write_reg(uint8_t addr, uint8_t reg, uint8_t val){
	
	i2c_start(addr+I2C_WRITE);
	i2c_write(reg);
	i2c_write(val); // Low Noise
	i2c_stop();

}

uint8_t i2c_read_reg(uint8_t addr, uint8_t reg){
	uint8_t val;

	i2c_start(addr+I2C_WRITE);
	
	i2c_write(reg);	//Status register
	i2c_start(addr+I2C_READ);	//Register 1
	
	val = i2c_readNak();
	
	i2c_stop();
	return val;
}

void MMA8452_Act_Stby(uint8_t active_bit){
	uint8_t val;
	
	val = i2c_read_reg(MMA8452_ADDR, 0x2A);

	if(active_bit)
		val |= 0x01;
	else
		val &= ~0x01;
	
	i2c_write_reg(MMA8452_ADDR, 0x2A,val);

	
}

int main(void)
{
	int16_t x;  //wir brauchen nur die x-Achse
	/* LED Ports auf Ausgang Setzen*/
	DDRB = (1<<PB2) | (1<<PB1) | (1<<PB0) ;
	DDRD = (1<<PD7) | (1<<PD6);
	i2c_init();
	
	/* Beschleunigungssensor in Standby */
	MMA8452_Act_Stby(0);

	/* ODR = 12.5 Hz + Low-Noise */
	i2c_write_reg(MMA8452_ADDR, 0x2A, 0x2C);
	/* High Resolution Mode */
	i2c_write_reg(MMA8452_ADDR, 0x2B, 0x02);

	/* Beschleunigungssensor aktivieren*/
	MMA8452_Act_Stby(1);

	while(1){
		
		
		i2c_start(MMA8452_ADDR+I2C_WRITE);
		i2c_write( 0x01);	//Register 1 => X-Achse
		i2c_start(MMA8452_ADDR+I2C_READ);
		
		
		x = (i2c_readAck()<<8);	//MSB lesen
		x |= i2c_readNak();		//LSB lesen
		x >>= 6; //auf 12 Bit shiften, Vorzeichen bleibt erhalten

		i2c_stop();
		
		/* Updaterate ~200 Hz */
		_delay_ms(5);

		/* alle LEDs aus */
		PORTB &= ~0x07;
		PORTD &= ~((1<<PD6) | (1<<PD7));
		
		/* Je nach Bereich LED einschalten */
		if(x <= -3 && x > -10)
			PORTB |= (1<<PB1);
		if(x <= -10)
			PORTB |= (1<<PB2);
		if(x < 3 && x > -3)
			PORTB |= (1<<PB0); 
		if(x >= 3 && x < 10)
			PORTD |= (1<<PB7);
		if(x >=10)
			PORTD |= (1<<PB6);

    }
}


Todo
  • Taster für Ein/Aus/Kalibrierung fehlt noch
  • Auto-Off bei Nicht-Benutzung
  • Passendes Gehäuse für Blitzschuh welches auch eine CR2032 fasst (ggf. auch CR1620)
  • "Richtiges" PCB (vielleicht, falls Interesse besteht)
 
Zuletzt bearbeitet:
das ist mir wirklich ein wenig zu filigran. grobmotoriker wie ich nehmen eine 1-euro-plastikwasserwaage und sägen und feilen alles weg was überflüssig ist. :D
 
Wenn du nen fertigen "Bausatz" verkaufst hast bei mir nen Abnehmer gefunden. (In meinem Fall müsste der AVR aber programmiert sein)
 
Gelötet bekomme ICH das niemals, aber super cool isses schon! :top:

Stand letztens davor mir eine zu kaufen, aber für das Geld hätte ich dann auch eine richtig gute Analoge bekommen und da brauchts keine Batterie für *G*

Falls es eine finale Version in irgendeiner weise zu erwerben gibt wär ich da dabei :) :top:
 
Ja ich muss mal schauen, wenn ich ein passendes Gehäuse finde sollte das machbar sein. Ich habe da mal eben etwas rumgespielt... Der Atmega müsste mit MLF-32 Bauform verwendet werden. Die CR2032 befindet sich auf der Unterseite, der Rest auf der Oberseite. Die vorderen LEDs wären dann abgewinkelte 0603.
Maße so wie auf dem Bild sind 30x35mm. Also wer ein schickes Gehäuse findet nur her damit.
 
Gehäuse ....

Eventuell würde sich sowas eignen.

hab hier mal nachgemessen und es sind nur 25mmx25mm aber ich weis das es das für Sony auch größer gibt (waren die alte).

hätte halt den großen Vorteil das mans auf den Blitzschuh stecken kann.

Wobei natürlich auch die Frage ist ob mans auf den Blitzschuh stecken muss ...
 
Klar auf den Blitzschuh sollte es schon. Das "Gehäuse"/Blitzschuhadapter was du vorschlägst hat halt den Nachteil, dass es eben oben einen Blitzschuh hat (da will ich ja die Kreuz-Wasserwaage hin haben).
Zudem ist es relativ teuer für ein "Gehäuse".

Einen Blitzschuh hat man sich jedoch eigentlich für jedes Gehäuse recht schnell gebaut, siehe z.B. hier: http://www.doc-diy.net/photo/smatrig/#enclosure

Man braucht eigentlich nur eine ~18x18mm Kunststoffplatte und kann diese dann mit einer Schraube oder Kleber und Abstandshalter quasi an jedes Gehäuse anbringen.
Nach einem Gehäuse mit Blitzfuß zu suchen macht daher eigentlich keinen Sinn, zumal es für sowas eigentlich keine "Leergehäuse" gibt.

Wenn das so wäre hätte ich mir schon lange einen Funkauslöser für Blitze gebaut (was ich jedoch wohl dennoch machen werde. Wird ein Drop-In Replacement für PT-04 und dann auf 2.4 GHz Basis aber das kann noch etwas dauern, obwohl der Prototyp schon läuft. Das ist aber ein anderes Thema)
 
Zuletzt bearbeitet:
(Amazon Partnerlink des Forums)
Einen Blitzschuh hat man sich jedoch eigentlich für jedes Gehäuse recht schnell gebaut, siehe z.B. hier: http://www.doc-diy.net/photo/smatrig/#enclosure

Man braucht eigentlich nur eine ~18x18mm Kunststoffplatte und kann diese dann mit einer Schraube oder Kleber und Abstandshalter quasi an jedes Gehäuse anbringen.

Mit dem klitzekleinen Unterschied, daß Du hier auch noch 1. eine gewisse Präzision haben willst und Du 2. auch an Hochformataufnahmen denken solltest. Die käuflichen Aufsteck-Wasserwaagen haben deshalb meist zwei Schuhe.

@ rotfl_de:
Bei DX gibt es eine zweilibellige Aufsteck-WW für schlappe 2,99 USD. Für Fotozwecke ist Deine Bastelei mit nur einer Libelle nicht so wirklich tauglich.

@ TO:
Dein Gerät arbeitet auch nur in einer Achse, wenn ich es richtig sehe?

Sehr schick fände ich übrigens eine digitale Rundlibelle. Bei den "analogen" stört mich massiv, daß man sie nur senkrecht von oben ablesen kann.
 
Mit dem klitzekleinen Unterschied, daß Du hier auch noch 1. eine gewisse Präzision haben willst
Naja, wenn man eine Kunststoffplatte mit der richtigen Dicke hast kann man die kaum schief zusammenkleben/schrauben, da man ja nicht die Dicke anpasst sondern nur die Außenmaße. Zudem kommt ja auch noch eine Kalibrierfunktion mit rein.
und Du 2. auch an Hochformataufnahmen denken solltest. Die käuflichen Aufsteck-Wasserwaagen haben deshalb meist zwei Schuhe.
brauche ich nicht, denn
Dein Gerät arbeitet auch nur in einer Achse, wenn ich es richtig sehe?
inzwischen ist schon eine Hochkant-Erkennung drin, sodass es automatisch dann die Z-Achse als Messachse nimmt, wenn man die Kamera kippt. Ebenso wäre noch die Y-Achse denkbar wenn man nach unten fotografiert.

Sehr schick fände ich übrigens eine digitale Rundlibelle. Bei den "analogen" stört mich massiv, daß man sie nur senkrecht von oben ablesen kann.
Du meinst ein Kreuz so wie ich es beim ersten PCB-Entwurf vorgesehen habe, nur dass man dieses auch von Vorne ablesen kann?
Ich kann natürlich wie beim Kaiser ein weiteres externes Anzeigemodul vorsehen was man dann dort ranstecken kann.
 
Zuletzt bearbeitet:
uhm ... habt ihr überlegt via Rapid Prototyping ein Gehäuse zu entwerfen? Womöglich gibts ein Fablab bei euch in der nähe mit einer "Mendl"
 
WERBUNG
Zurück
Oben Unten