Arduino Dual Ultraschall-Füllstandsmesser mit integrierter Website

Arduino Dual Ultraschall-Füllstandsmesser mit integrierter Website: 3 Schritte

Mit diesem Projekt können Sie den Füllstand von 2 mit Flüssigkeit gefüllten Behältern überwachen. Die Level können auf einer Website angezeigt werden. Im folgenden Beispiel ist ein Sensor drahtgebunden und ein anderer Sensor drahtlos über XBee verbunden.

Auf der Website können Sie den minimalen und den maximalen Füllstand (für einen vollen und einen leeren Tank) konfigurieren, sodass der Füllstand in Prozent angezeigt werden kann. Auch die TCP / IP-Einstellungen können konfiguriert werden.

Dieses Projekt wurde am zweiten belgischen Arduino Jam Gent erstellt von:

- Jo3ri C (http://www.jo3ri.be/) Auf dieser Website finden Sie weitere Informationen zum enthaltenen Webserver
- Erik DC
- Wim DB

http://www.arduino-jam.org/

Zubehör:

Schritt 1: Hauptmodul

Das Hauptmodul besteht aus einer Aduino-Ethernet-Karte (oder einem Arduino mit Ethernet-Abschirmung).

Direkt angeschlossen ist der Ultraschallsensor URM37 von DFRobot (Ethernet-Kabel wird als Verlängerungskabel verwendet). Der URM37 wird im TTL-Modus verwendet, sodass nur 4 Drähte erforderlich sind (2 für Strom + 2 für Daten).

Auf der Hauptplatine befindet sich auch der XBee Explorer (http://www.sparkfun.com/products/9132), der die Konvertierung von 3,3 auf 5 V übernimmt und die Daten vom Funksensor empfängt.


Schritt 2: Der drahtlose XBee-Sensor

Da wir ein Barebone-Arduino (ATMEGA 328P-PU mit Bootloader) herumliegen hatten, verwenden wir dieses für den Fernbedienungssensor.

Xbees DIN und DOUT sind auf dem Arduino mit D0 und D1 verbunden, sodass die eingebaute serielle Schnittstelle verwendet werden kann.

Die Skizze, die darauf abläuft, ist sehr einfach. Sie liest den URM37 (verbunden mit Pin 2 und 3) aus und überträgt den Abstand in cm über die serielle Schnittstelle an den Xbee.


int URPWM1 = 2; // PWM-Ausgang 0-25000us, alle 50us entsprechen 1 cm
int URTRIG1 = 3; // PWM-Triggerpin

vorzeichenloser langer urmTimer = 0; // Timer zum Verwalten der Blitzfrequenz des Sensors

unsigned int Distance1 = 0;


void setup () {// Serielle Initialisierung
// Setzt die Baudrate auf 9600
PWM_Mode_Setup ();
PinMode (URTRIG1, OUTPUT);
Serial.begin (9600);
}

void loop () {
if (millis () - urmTimer> 1000) {
urmTimer = millis ();
PWM_Mode ();
}
}

void PWM_Mode_Setup () {
PinMode (URTRIG1, OUTPUT); // Ein niedriger Zug an Pin COMP / TRIG
digitalWrite (URTRIG1, HIGH); // Auf HIGH setzen
PinMode (URPWM1, INPUT); // Senden Befehl zum Aktivieren des PWM-Modus

}

void PWM_Mode () {// ein niedriger Pull am Pin COMP / TRIG, der eine Sensorablesung auslöst
digitalWrite (URTRIG1, LOW);
digitalWrite (URTRIG1, HIGH); // Das Lesen von Pin PWM gibt Impulse aus
vorzeichenloser Long DistanceMeasured1 = pulseIn (URPWM1, LOW);

if (DistanceMeasured1 <49000) {
digitalWrite (13, LOW);
Distance1 = DistanceMeasured1 / 50; // jeder 50us low level steht für 1cm
} else {
Abstand1 = 0;
digitalWrite (13, HIGH);
}


if ((Abstand1> 3) && (Abstand1 <400)) {
Serial.print (Distance1);
Serial.print ("-");
}
}

Schritt 3: Konfiguration

Auf der Website auf dem Arduino können Sie die TCP / IP-Daten sowie die minimalen / maximalen Füllstände Ihres Tanks konfigurieren.