INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ADS1115 zu lahm
18.06.2016, 17:26
Beitrag #1
ADS1115 zu lahm
Wen ich hier gucke, musste der ADS1115 860 Messungen / Sekunde hinkriegen.
http://shop.boxtec.ch/ads1115-bit-adc-ka...41671.html

Ich habe aber nur etwas mehr als 20.

Gut ich verwende 2 Kanäle, aber dann müssten es immer noch 430 sein.

Die Baud-Rate-Änderung hat nichts gebracht.
Mit 9600 ist es genau so langsam.

Zitat:void setup(void)
{
// Serial.begin(9600);
Serial.begin(115200);

ads.begin();
}

void loop(void)
{
int16_t adc0, adc1;

adc0 = ads.readADC_SingleEnded(0);
adc1 = ads.readADC_SingleEnded(1);

char ch;
while (Serial.available() > 0) {
ch = Serial.read();
if (ch == 'M') {
Serial.println(adc0);

}
if (ch == 'P') {
Serial.println(adc1);
}
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.06.2016, 13:30
Beitrag #2
RE: ADS1115 zu lahm
Hy,

was tust du da genau in der While schleife?
Du Prüfst ob du über die Serielle Schnittstelle ein P oder M bekommste, und wenn du das tust gibst du den wert für 0 oder 1 aus?

Pack doch mal in die gesamte loop schleife nur:

Serial.println(ads.readADC_SingleEnded(0));

rein und guck wie viele Messungen du dann am Seriellmonitor bekommste.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.06.2016, 18:56 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2016 22:02 von Mathias.)
Beitrag #3
RE: ADS1115 zu lahm
An der Kommunikation kann es nicht liegen.

Mit dem obigen Sketch bringe ich ca. 260 / 10 Sek.
Klammere ich aber readADC aus, dann sind es etwa 3'000.

Somit braucht der ADS1115 zu viel Zeit zum messen.

Code:
void loop(void)
{
  int16_t adc0, adc1;

//  adc0 = ads.readADC_SingleEnded(0);
//  adc1 = ads.readADC_SingleEnded(1);
adc0=123;
adc1=123;

  char ch;
  while (Serial.available() > 0) {
    ch = Serial.read();
    if (ch == 'M') {
      Serial.println(adc0);
      
    }
    if (ch == 'P') {
      Serial.println(adc1);
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.06.2016, 11:30
Beitrag #4
RE: ADS1115 zu lahm
Mhh... irgendwie vermute ich das es am Sketch selber liegt oder an der LIB die zur Verfügung gestellt wurden ist.

Versuch mal bitte folgenden Sketch

Code:
unsigned long time;

void setup(void)
{
// Serial.begin(9600);
Serial.begin(115200);
ads.begin();
int16_t adc0, adc1;
}

void loop(void)
{
time = micros();
adc1 = ads.readADC_SingleEnded(1);
Serial.println(micros()-time);
}

Dieser Sketch macht nix anderes als die aktuellen micros in time zu schreiben dann den ADC auszulesen und anschließend über Serial anzugeben wie lange er gebraucht hat für die Messung in Microsekunden..

Bitte ergebnis posten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2016, 17:20
Beitrag #5
RE: ADS1115 zu lahm
Ich bin ein bisschen weiter gekommen, es liegt zum Teil an der LIB.

Ich habe dies kopiert und ein wenig ausgemistet, jetzt sind es ca. 1'000 Messungen / Sek.

Die Hauptbremse war diese Delay:
Code:
#define ADS1115_CONVERSIONDELAY         (8)
......
delay(m_conversionDelay);

Diese habe ich auf 1 runtergesetzt.
Wen ich es ganz rausnehme, bekomme ich Fehlmesungen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.06.2016, 17:10
Beitrag #6
RE: ADS1115 zu lahm
PC-Seitig hatte ich auch noch einen Fehler, ich hatte versehentlich die Messdaten pro Messung 2 mal abgefragt.
Jetzt läuft es doppelt so schnell.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.06.2016, 20:47
Beitrag #7
RE: ADS1115 zu lahm
(22.06.2016 17:20)Mathias schrieb:  Ich bin ein bisschen weiter gekommen, es liegt zum Teil an der LIB.

Ich habe dies kopiert und ein wenig ausgemistet, jetzt sind es ca. 1'000 Messungen / Sek.

Die Hauptbremse war diese Delay:
Code:
#define ADS1115_CONVERSIONDELAY         (8)
......
delay(m_conversionDelay);

Diese habe ich auf 1 runtergesetzt.
Wen ich es ganz rausnehme, bekomme ich Fehlmesungen.

..also bei einem üblichen ADC kann man auch das EOC Bit auslesen und wenn das gesetzt ist den Wert auslesen...das mit dem delay ist eine Bastellösung..
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 21:05 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 21:06 von Mathias.)
Beitrag #8
RE: ADS1115 zu lahm
Ich konnte noch ein bidschen mehr Speed rauskitzeln, ich habe den I²C-Takt von 100KB/s auf 200 erhöht.
Mit 400KB/s kommen die Messwerte doppelt an, somit bringt dies nichts mehr.

Doppelt so schnell wird es aber nicht, denke der Overhead der Serial und Wire lib, braut auch noch recht Ressourcen.
Und auch das Programm auf dem PC braucht auch noch davon.

Ersetze ich
Code:
adc1 = ads.readADC_SingleEnded(1);
durch
Code:
adc1 = 123;
ist dies nur nur unmerklich schneller.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste