Armins AVR-Buch - Beschleunigungssensor_auswerten

⇑Beschleunigungssensor_auswerten


(armin77, 22.01.2013, 00:08:48)

Im Strippenstrolch Forum kam die Frage auf wie man die Neigung
eines Tisches ermitteln kann.
Ich machte mich auf die Suche nach einem Beschleunigungssensor
den man möglichst einfach auswerten kann.
Ich wurde bei Pollin fündig.
Da gibt es ein Modul mit dem Beschleunigungssensor ADXL330
und eingebautem Spannungsregler.

Bild adx_001.jpg


Bild adx_002.jpg


Man braucht nur eine Spannung von 6 bis 24V DC anlegen und
bekommt die Beschleunigung der x,y,z Achse als Analogwert ausgegeben.

Da keine dynamiche Beschleunigung stattfindet mißt der Sensor
die Erdbeschleunigung.
Also die Neigung.

Die Spannung beträgt wenn der Sensor in der Waage steht ca. 1,7V und
verändert sich um ca. 0,3V wenn man ihn um 90° kippt.


Bild Sensor3.jpg


Habe den Sensor an meinen AVR angeschlossen.
Hier das einfache Programm zum Anzeigen der Analogwerte.
Als Reference für die Analogwerte nehme ich 2,56V.
So spare ich mir das Verstärken der Analogwerte mit einem OP.


$regfile = "m8def.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32
Dim X As Word
Dim Y As Word
Dim Z As Word

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20 * 4
Cls
Cursor Off
Config Adc = Single , Prescaler = Auto , Reference = Internal

Do
X = Getadc(0)
Waitms 20
Y = Getadc(1)
Waitms 20
Z = Getadc(2)
Locate 1 , 1
Lcd "X=" ; X
Locate 2 , 1
Lcd "y=" ; Y
Locate 3 , 1
Lcd "z=" ; Z
Waitms 200
Loop
End


Hier die Schaltskizze:

Die Ausgänge des Sensors werden jeweils an einen Digital-Analog-Wandler Eingang
des ATMega8 angeschlossen

Bild Sensor2.jpg


Hier noch ein Bild vom Aufbau:

Bild Sensor1.jpg