Forum: Mikrocontroller und Digitale Elektronik MPL115A2 Start Conversion


von Yafes61 (Gast)


Lesenswert?

Hallo,

wie der Name im Betreff schon wiedergibt geht es um den Sensor MPL115A2.

Habe den Sensor mittels µC angesteuert mit selbst geschriebenen I2C 
Routinen.

Habe beispielsweise die internen Koeffizienten ausgelesen, mit Erfolg.

Nun zum Problem, leider bekomme ich keine bzw. nur Null-Werte aus der 
ADC Wandlung. Dafür rufe ich das ganze mit dem Befehl "0x12" für Start 
Conversion auf und nach mehr als 3ms lese ich das Register entsprechend 
aus, doch leider bekomme ich immer Nullen vom Sensor zurück. Habe alles 
nach Anleitung befolgt doch leider komme ich nicht an Daten ran.

Hat irgendwer den Sensor mal angesteuert? Gab es Probleme mit der 
Konvertierung? Stehe grad echt auf dem Schlauch, würde mich über jede 
Anregung sehr freuen.

bis denn

lg
Yafes

von Yafes61 (Gast)


Lesenswert?

hat denn keiner mit dem Sensor gearbeitet?!?

von Cyblord -. (cyblord)


Lesenswert?

Also ich arbeite mit dem MPL3115A2. Aber dein Problem kann ich leider 
nicht nachvollziehen.

Sieh dir halt mal deine I2C Kommunikation auf einem LA an. Wenn man 
alles nach Datenblatt macht, kommen auch die Daten wie erwartet raus. 
Mehr kann man ohne Code hier nicht dazu sagen.

von Yafes61 (Gast)



Lesenswert?

Endlich mal einer :-)

Ok, dann nun konkreter.

Die Routinen wie ich den Sensor auslese und die LA Bilder dazu sind nun 
komplett im Anhang.

Das einzige was mir auffällt ist, zu sehen im Bild 
"MPL115A2_ReadPressureTemp_CMD.jpg", dass nach dem letzten Byte ich ein 
NACK zurückbekomme. Normalerweise sollte der Befehl auch ohne 
Start-Repeat erfolgen laut Datenblatt, bekomme dann zwar im Befehl ein 
ACK statt NACK, aber die restlichen Befehle kommen dann nur noch mit 
NACK zurück, sodass ich nichts mehr aus dem Senosr auslesen kann!

Was mache ich falsch, ich vermute beim Komando für Start Conversion 
liegt der Fehler, evtl. sehe ich ihn nicht.

Freu mich auf eure Hilfe.

lg
Yafes

von Yafes61 (Gast)



Lesenswert?

Bei den Bildern ist was schief gelaufen, hier mal eine gezoomte Version 
der Bilder.

lg

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Habe im Moment keine Zeit, mir das bei dir anzusehen.

Anbei meine Implementierung, hier das Stück C-Code, mit dem sie
angesprochen wird:
1
    barometer_init();
2
3
    uint8_t params[8];
4
    barometer_read(4, 8, params);
5
6
    int a0_int = (params[0] << 8) + params[1];
7
    a0 = a0_int / 8.0;
8
    int b1_int = (params[2] << 8) + params[3];
9
    b1 = b1_int / 8192.0;
10
    int b2_int = (params[4] << 8) + params[5];
11
    b2 = b2_int / 16384.0;
12
    int c12_int = (params[6] << 8) + params[7];
13
    c12 = c12_int / (16384.0 * 1024.0);
14
15
    //...
16
17
18
time_t
19
barometer_timer(timer_arg_t p __attribute__((unused)))
20
{
21
  uint8_t results[4];
22
23
  barometer_read(0, 4, results);
24
  unsigned padc = (results[0] << 2) + (results[1] >> 6);
25
  unsigned tadc = (results[2] << 2) + (results[3] >> 6);
26
27
  double pcomp = a0 + (b1 + c12 * (double)tadc)
28
  * (double)padc + b2 * (double)tadc;
29
  double pressure = pcomp * ((115 - 50) / 1023.0) + 50;
30
31
  PRINTF("0000: %.1f hPa" NL, pressure * 10);
32
33
  return (time_t)0;
34
}

Vielleicht kannst du dir ja einen Reim drauf machen, ansonsten guck'
ich später nochmal rein.

von Yafes61 (Gast)


Lesenswert?

Danke für den Code.

Soweit überflogen siehts bei mir nicht anders aus :-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.