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
Volumendaten Messsystem
16.11.2020, 12:02
Beitrag #1
Volumendaten Messsystem
Hallo zusammen,

ich hoffe mir kann jemand bei meinem Problem helfen. Derzeit möchte ich ein Volumen Messsystem bauen mithilfe eines ELEGO MEGA 2560 Controllers und HC-SR04 Ultrasonic Sensoren.
Ich möchte mithilfe der Sensoren die Daten Länge, Breite und Höhe eines Paketes bestimmen. Dafür habe ich bereits einen Code geschrieben aber leider funktioniert dieser nicht wie erwartet. So lange nur ein Sensor angesprochen wird funktioniert alles Problemlos der zweite Sensor gibt mir einen Messfehler (abweichung 1 cm was aber nicht schlimm ist) zurück. Sobald alle 3 Sensoren angesprochen werden sollen blockiert das System und es wird nur die gesamt Länge zurückgegeben.
Der Code sieht wie folgt aus:
Code:
int triggerPinLaenge = 2;
int echoPinLaenge = 3;
int triggerPinBreite = 4;
int echoPinBreite = 5;
int triggerPinHoehe = 6;
int echoPinHoehe = 7;


long messungLaenge = 0;
int ergebnisLaenge = 0;
long messungBreite = 0;
int ergebnisBreite = 0;
long messungHoehe = 0;
int ergebnisHoehe = 0;

int gesamtLaenge = 35.5;
int gesamtBreite = 25;
int gesamtHoehe = 30;

int zwErgebnisL = 0;
int zwErgebnisB = 0;
int zwErgebnisH = 0;


void setup() {
Serial.begin(9600);
pinMode(triggerPinLaenge, OUTPUT);
pinMode(echoPinLaenge, INPUT);
pinMode(triggerPinBreite, OUTPUT);
pinMode(echoPinBreite, INPUT);
pinMode(triggerPinHoehe, OUTPUT);
pinMode(echoPinHoehe, INPUT);

}

void loop() {

digitalWrite(triggerPinLaenge, LOW);
delayMicroseconds(2);
digitalWrite(triggerPinLaenge, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPinLaenge, LOW);

delay(2);

digitalWrite(triggerPinBreite, LOW);
//delayMicroseconds(2);
digitalWrite(triggerPinBreite, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPinBreite, LOW);

delay(2);

digitalWrite(triggerPinHoehe, LOW);
digitalWrite(triggerPinHoehe, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPinHoehe, LOW);


messungLaenge =  pulseIn(echoPinLaenge, HIGH);
  zwErgebnisL = (messungLaenge/2)/29;
  ergebnisLaenge = (gesamtLaenge - zwErgebnisL);
    // ergebnis = (messung/2)/29;
    
messungBreite = pulseIn(echoPinBreite, HIGH);
   zwErgebnisB = (messungBreite/2)/29;
   ergebnisBreite = (gesamtBreite - zwErgebnisB);

  messungHoehe = pulseIn(echoPinHoehe, HIGH);
   zwErgebnisH = (messungHoehe/2)/29;
   ergebnisHoehe = (gesamtHoehe - zwErgebnisH);
  
Serial.print("Länge = ");
Serial.print(ergebnisLaenge);
Serial.print("  ");
Serial.print("cm ");

Serial.print("Breite = ");
Serial.print(ergebnisBreite);
Serial.print(" ");
Serial.print("cm ");

Serial.print("Höhe = ");
Serial.print(ergebnisHoehe);
Serial.print(" ");
Serial.print("cm ");

   delay(2000);


}

Leider kann ich meinen Fehler hier nicht erkennen und hoffe sehr mir kann jemand von euch helfen. Im späteren Verlauf des Projektes möchte ich die Messung durch Betätigung eines Buttons starten leider habe ich hierfür auch noch keine Idee, also falls jemand bereits hierfür eine Idee haben sollte wäre ich sehr dankbar.

Vielen dank im voraus Smile.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 12:39
Beitrag #2
RE: Volumendaten Messsystem
Das Problem welches du lösen musst, ist der zeitliche Abstand zwischen den Messungen. Der muss groß genug sein, damit sich deine Messungen nicht gegeneinander beeinflussen. Da solltest du Werte von >1 Sek. wählen.
Hier solltest du durch Testen die besten Werte ermitteln.

Den Start der Messung kannst du durch eine Tasterabfrage in der Loop erreichen. Beispiele dazu findest du auch in der IDE. Diese Info schreibst du in eine Variable, die wiederum in der Loop abgefragt wird und nach der Messung zurück gesetzt wird.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 12:41
Beitrag #3
RE: Volumendaten Messsystem
Hast Du mal die Wartezeit zwischen den Teilmessungen erhöht?
Bei den kurzen Pausen beeinflussen sich die Schallsignale gegenseitig.
Also ruhig mal auf 1 Sekunde setzen und wenn es dann funktioniert schrittweise verkürzen, bis die Fehler zunehmen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 12:52
Beitrag #4
RE: Volumendaten Messsystem
Vielen Dank für eure Antworten Smile.
Die Wartezeit definier ich mit dem "delay" befehl oder? Dachte nämlich 2 sek. zwischen den einzelnen Messungen sollte ausreichen aber scheinbar ist das doch zu wenig Tongue

Ich versuche die Zeiten mal zu erhöhen.

Kann ich die die abfrage in der Loop auch durch einen Startbefehl im Touchscreen realisieren oder muss dies ein Mechanischer Knopf sein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 13:04
Beitrag #5
RE: Volumendaten Messsystem
Habe es gerade ausprobiert mit dem delay. Leider klappt das nur wenn ich z.B die Länge und die Breite messen möchte sobald der dritte Sensor mit einbezogen wird blockiert es und es zeigt mir für alle Messungen nur 0 an. Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 13:40
Beitrag #6
RE: Volumendaten Messsystem
(16.11.2020 12:52)Laika10 schrieb:  Vielen Dank für eure Antworten Smile.
Die Wartezeit definier ich mit dem "delay" befehl oder? Dachte nämlich 2 sek. zwischen den einzelnen Messungen sollte ausreichen
delay(2) sind 2 Millisekunden!

Außerdem bringt es nichts, die Messung mit pulseIn erst nach allen Pulsen zu machen.

Triggerimpuls --> Messen --> Warten --> nächster Triggerimpuls --> ....

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 13:43 (Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2020 13:44 von nbk83.)
Beitrag #7
RE: Volumendaten Messsystem
(16.11.2020 12:52)Laika10 schrieb:  Vielen Dank für eure Antworten Smile.
Die Wartezeit definier ich mit dem "delay" befehl oder? Dachte nämlich 2 sek. zwischen den einzelnen Messungen sollte ausreichen aber scheinbar ist das doch zu wenig Tongue

Ich versuche die Zeiten mal zu erhöhen.

Kann ich die die abfrage in der Loop auch durch einen Startbefehl im Touchscreen realisieren oder muss dies ein Mechanischer Knopf sein?

Moin Laika,
die Zahl im delay()-Befehl wird in Millisekunden angegeben. Mach mal aus der 2 eine 1000, um die Zeit zwischen den Messungen auf eine Sekunde zu erhöhen.
Gruß Jan

EDIT: Tommy war schneller und umfangreicher...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2020, 13:54
Beitrag #8
RE: Volumendaten Messsystem
Hi ihr zwei,

vielen Dank für eure Nachrichten. Die Messung direkt nach den Pulsen zu machen macht auf jeden fall sinn Big Grin. Die delays sind nun auch auf 1000 ms also auf insgesamt 1 sek.

Nun müsste ich nur noch die Messung durch einen Startimpuls am Touchscreen starten lassen und danach beenden die nächste Messung soll dann erst wieder mit dem Startknopf starten. Smile

Ihr habt mir mega geholfen vieeelen Dank.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Lineares Messsystem zur Positionsbestimmung mithilfe eines Hallsensors Philipp_ 3 3.131 05.04.2017 16:29
Letzter Beitrag: ardu_arne

Gehe zu:


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