Einsteiger braucht Hilfe !!

Hallo zusammen,

ich bin Einsteiger und soll für ein Studienarbeit eine Alarmanlage mit arduino + ADXL3xx sensor zusammenbasteln
Um es sich besser vorstellen zu können erklär ich kurz was es letzten Endes sein soll.
Also ich habe ein Arduino Mega board gekauft mir ein ADXL335 sensor gekauft . Ich muss die werte von meinem Sensor ablesen und kalibrieren so dass ich danach Werte bestimmen kann , was als Anfangswerte von x, y , z Achsen gelten .

  1. Mein problem ist dass es jedes mal andere werte ausgelesen werden und als ich versucht es zu kalibrieren ging nichts mehr !!. Auf dem Datenblatt stehen andere werte als das was ich bekomme ... !
    2 .Nach dem ich mein sensor aus dem Arduino board getrennt habe , kam das unerwartete und zwar ... mein arduino board bzw auf dem Serial monitor werden von nirgendwo werte abgelesen und gezeigt !!
    kann mir jemand vllt helfen was ich vllt machen kann um die werte abzulesen ?
    oder habe ich vllt den falschen ADXL3xx gekauft ?
    oder ist mein Arduino board ein fake ist ?

Da ich mein deutsch nicht so perfekt ist , bitte ich Sie um Verständnis ,. Ich hoffe , ich konnte einigermaßen erklären was mein problem ist !
Danke im voraus :blush:

Kannst du vielleicht mal erklären, wie du den Sensor angeschlossen hast und dein Programm hier posten, dann kann man besser sehen, wo du einen Fehler hast.

Hallo,

ich versuch Dein Problem mal zu erklären. Du hast einen Beschleunigssensor und keinen Positionssensor. Der ADXL335 gibt in Ruhelage, egal wie er sich gerade im Raum befindet, immer die gleichen Werte für seine Achsen aus. Erst wenn man ihn bewegt ändern sich seine Werte für die Achsen die sich im Raum bewegen. Wenn man ihn wieder ruhig hält, hat man wieder konstante Werte.

Zur Veranschaulichung gibts ein schönes Video.
Arduino Tutorial: Kapitel 3.3.1: "Der Beschleunigungssensor

Und wenn Du den Sensor einfach vom Arduino trennst, läuft das Programm auf dem Arduino trotzdem weiter. Dann fängt der µC an seinen empfindlichen Eingängen irgendwelche "Störungen" aus der Luft ein und wertet sie aus. Was man dann als Datenmüll sieht. Das ist ein normales verhalten.

Doc_Arduino nicht ganz. Ein Beschleunigungssensor mißt Beschleunigungen, aber auch die Erdbeschleunigung mit dem die Erde die Dinge anzieht. Darum mißt Du immer eine Beschleunigung von 1g Richtung unten. Wenn Du nun den Sensor nicht immer in die gleiche Lage gibst hast Du verschiedene Werte.

Analoge Eingänge ohne Signal geben zufällige Werte aus

Grüße Uwe

Hallo,

naja, die Erdbeschleunigung kann man erstmal als Konstante ansehen. Deswegen habe ich das erstmal weggelassen. Ich wollte vielmehr darauf hinaus, der er nur sich änderte Werte sieht wenn er das Ding bewegt. Sonst ist "Ruhe" im Karton. :wink:

Ist auch-wenn man die Ergebnisse filtert.
Das Ding ist unglaublich empfindlich, wenn ne Fliege nen halben Meter daneben landet, reagiert er schon. Kann man z.B. auf den Tisch legen, mal durch die Bude laufen (nein, hier wackelt nix, alles Beton), und hinterher ablesen, wieviele Schritte es waren.

Hallo,

konnte jemand zufällig mit dem Sensor die Erdbebenausläufer beobachten die vor einer Woche von der tschechischen Seite noch bis zu uns reichten? Mein Haus wackelte auch Mittags ganz kurz. :astonished:

DOC_Arduino :
Also das was du gesagt hast , stimmt schon ... also ich habe einen Beschleunigungssensor . Der ADXL335 gibt in Ruhelage, erstmal willkürliche werte aus , also ob er irgendwas misst . Wenn ich mein board bewege z.b x-richtung dann ändert sich was ...aber komm er nie wieder auf dem Startwert !
Ich habe mein arduino board von meinem USB anschluss getrennt und die sensoren auch getrennt , und habe mein programm wieder hochgeladen . Normaleweise sollte ich eine fehler meldung angezeigt werden z.b dass es kein Sensoren ausgelesen konnten , weil es ja kein sensoren gibt ... aber es passiert folgendes ... es wird normal hochgeladen und bei Starten von den Seriellen Monitor werden werte ausgelesen . also von nichts !

const int groundpin = 18;             // analog input pin 4 -- ground
const int powerpin = 19;              // analog input pin 5 -- voltage
const int xpin = A0;                  // x-axis of the accelerometer
const int ypin = A1;                  // y-axis
const int zpin = A2;                  // z-axis (only on 3-axis models)

void setup()
{
  Serial.begin(9600);
  pinMode(groundpin, OUTPUT);
  pinMode(powerpin, OUTPUT);
  digitalWrite(groundpin, LOW); 
  digitalWrite(powerpin, HIGH);
}

void loop()
{
  Serial.print(analogRead(xpin));
  Serial.print("\t");
  Serial.print(analogRead(ypin));
  Serial.print("\t");
  Serial.print(analogRead(zpin));
  Serial.println();
  delay(100);
}

hi,

oje, groundpin, powerpin.
schließe den sensor an 5V und GND an.

gruß stefan

Hallo,

da muß ich Eisbär recht geben. Die Signalpins von einem µC darf man nicht zur Spannungsversorgung verwenden. Das lese ich zum erstenmal das jemand sowas macht. Die gleiche gemeinsame Masse aller ist ganz wichtig. Und die 5V auch. Es gibt am Arduino eine "Power" Kontaktreihe. Darauf sind 5V und GND beschriftet.

Normaleweise sollte ich eine fehler meldung angezeigt werden z.b dass es kein Sensoren ausgelesen konnten , weil es ja kein sensoren gibt

Fehlermeldungen, die du nicht selbst programmierst, gibt es nicht.
Und ob was angeschlossen ist oder nicht, kannst du nicht so einfach erkennen.
( Ausser: Wenn es sich ändert, ist vermutlich nichts angeschlossen )

Eisebaer :
Also es hat sich nichts geändert ... also ob es 3,3 V oder 5 V ist , sieht immer so aus wie am anfang :frowning: !

Hallo,

hast Du schon einmal eine passende fertige Library für den Sensor probiert?
zum Bsp. die hier: GitHub - Seeed-Studio/Accelerometer_ADXL335: Seeed 3-Axis Analog Accelerometer library
So wie ich das verstehe bentötigt der beide Spannungen. Also 3,3 und 5V. Bitte genau die Beschreibung lesen.

NICHT FALSCH VERSTEHEN !!!

bitte nicht 3,3V und 5V parallel anschließen!

Eisebaer :
Natürlich nicht :open_mouth: !
Doc_Arduino :
Also ich habe noch nie so ein fertige Library probiert !
Würde aber gern wissen , für was ist dies nötig ?

Also wie ich gesehen habe , sind die Programme nicht mehr über Arduino IDE geschrieben sondern Visual Studio also C ++ programmiert !! oder

Eisebaer:
NICHT FALSCH VERSTEHEN !!!

bitte nicht 3,3V und 5V parallel anschließen!

Oh Mist, da habe ich das falsch gelesen. Darf nicht passieren. Sorry!

Ohne Funktion oder Library kann man kein Device vernünftig ansprechen und nutzen. Bei dem Sensor vielleicht nicht notwendig, wenn man nur die Analogwerte einlesen möchte.

Maromann:
Also wie ich gesehen habe , sind die Programme nicht mehr über Arduino IDE geschrieben sondern Visual Studio also C ++ programmiert !! oder

In der Arduino IDE wird auch in C/C++ geschrieben. Andere IDEs sind zwar wesentlich komfortabler, da in der Arduino Software sehr viele Standard Sachen fehlen, aber dabei geht es nur um die Bedienung, bzw. die Oberfläche. Der Code der dabei entsteht ist gleich und läuft überall.

Du musst Libraries nur in den libraries Ordern der Arduino Installation entpacken. Dann sollte sie bei den Beispielen auftauchen. Da ist dann i.d.R. etwa dabei das lauffähig ist und man sieht was man machen muss.

Doc_Arduino:
Hallo,

naja, die Erdbeschleunigung kann man erstmal als Konstante ansehen. Deswegen habe ich das erstmal weggelassen. Ich wollte vielmehr darauf hinaus, der er nur sich änderte Werte sieht wenn er das Ding bewegt. Sonst ist "Ruhe" im Karton. :wink:

Ja. die Erdbeschleunigung ist eine Konstante aber sie teilt sich Vektoriell auf die drei Achsen, je nach lage auf.

Ansonsten die Versorgungsspannung des Sensors muß Stabil sein und noch mehr die Referenzspannung. Ist diese nicht konstant dann sind die messungen eine konstanten spannung auch nicht konstant. Schließe 10µF Kondensatoren zwischen Masse und den analogen Eingängen. Wie schon gesagt mußt Du den Sensor über die Versorgungsspannungspin versorgen und nicht über Arduino-Außgänge.

Grüße Uwe

uwefed :
Also ich habe nicht ganz verstanden was du gemeint hast ..... also du meinst , ich soll ein 10 uF kondensator zwischen GND und den Analogen eingängen , bis jetzt hab ich verstanden .... aber wie kann mein Sensor über die Versorgungsspannungspin versorgen und nicht über Arduino-Außgänge machen ??

hi,

einfach den 5V-pin des arduino an VCC des sensors.
den GND-pin des arduino an gnd des sensors.
und die drei restlichen des sensors an drei analogpins des arduino.

gruß stefan