Πέμπτη 16 Ιουνίου 2016

Μέτρηση πίεσης με τον Arduino και τον αισθητήρα MPX5700DP

Οι αισθητήρες πίεσης μετρούν την πίεση σε σχέση με κάποια άλλη πίεση αναφοράς. Διακρίνονται σε τρεις κατηγορίες:
  • Αισθητήρες απόλυτης πίεσης (absolute pressure): μετρούν την πίεση στην είσοδό τους σε σχέση με το κενό.
  • Αισθητήρες πίεσης βαθμίδας (gauge pressure): μετρούν την πίεση στην είσοδό τους σε σχέση με την ατμοσφαιρική.
  • Αισθητήρες διαφορικής πίεσης (differential pressure): μετρούν τη διαφορά των πιέσεων στις δύο εισόδους τους.
Υπάρχουν σήμερα ολοκληρωμένα συστήματα μέτρησης πίεσης που εκτός από τον αισθητήρα (που συνήθως λειτουργεί με βάση το πιεζοηλεκτρικό φαινόμενο) περιλαμβάνουν και κυκλώματα ενίσχυσης του σήματος και αντιστάθμισης θερμοκρασίας, απλοποιώντας εξαιρετικά τη διασύνδεση με μικροϋπολογιστικά συστήματα. Για παράδειγμα ο αισθητήρας διαφορικής πίεσης MPX5700DP της Freescale (τώρα NXP) μπορεί να μετρήσει διαφορικές πιέσεις στην περιοχή 0 - 700 kPa δημιουργώντας αναλογικό σήμα στην έξοδό του που με τροφοδοσία 5V μπορεί να κυμαίνεται στην περιοχή 0,2 - 4,7V. Διαθέτει αντιστάθμιση θερμοκρασίας και έρχεται προρυθμισμένος από τον κατασκευαστή.

Ο αισθητήρας πίεσης MPX5700DP

Η τάση (σε V) στην έξοδό του μεταβάλλεται ανάλογα με την πίεση (σε kPa) στην εισοδό του σύμφωνα με τη σχέση: Vout = Vs*(0,0012858*P+0,04), όπου Vs είναι η τάση τροφοδοσίας.

Η σχέση τάσης εξόδου - πίεσης εισόδου για τον αισθητήρα MPX5700DP

Η σύνδεση του MPX5700DP σε κάποια διάταξη μέτρησης γίνεται με βάση το κυκλωματικό διάγραμμα του επόμενου σχήματος:

Συνδέσεις του MPX5700DP

Ενώ για τη σύνδεση στον Arduino και με τη χρήση ενός breadboard μπορεί να χρησιμοποιηθεί ως οδηγός το επόμενο σχήμα. Προσοχή: Ο ακροδέκτης 1 (έξοδος) είναι αυτός με την εγκοπή.

Σύνδεση του MPX5700DP στον Arduino

Για λόγους ευκρίνειας του σχήματος οι πυκνωτές απόζευξης τροφοδοσίας (των 100nF και 1μF) φαίνονται τοποθετημένοι σχετικά μακριά από τα αντίστοιχα "ποδαράκια" του αισθητήρα. Στην πραγματικότητα πρέπει να συνδεθούν όσο το δυνατό πλησιέστερα προς αυτά.
Το ακόλουθο sketch χρησιμεύει στη λήψη μετρήσεων διαφορικής πίεσης με το συνδεδεμένο στον Arduino MPX5700DP.

//Sketch #1 - Example for Pressure Sensor MPX5700DP

long time;

void setup ( void )
{
    Serial.begin( 115200 );
    Serial.println( "Time (ms)\tPressure(kPa)" );
}

void loop ( void )
{
    time = millis();
 
    //Διάβασε την τάση στην έξοδο του αισθητήρα
    int val = analogRead( 0 );

    //Η μεταβλητή fval ισούται με το πηλίκο (Vout/Vs)
    float fval = ( float ) val / 1024.0;

    //Μετατροπή τάσης σε πίεση
    float kpa = ( fval - 0.04 ) / 0.0012858;
 
    //Εκτύπωση δεδομένων στο σειριακό τερματικό
    Serial.print( time );
    Serial.print( "\t" );
    Serial.println( kpa );

    delay ( 100 );
}  

Στην είσοδο (1) του MPX5700DP συνδέσαμε τη φουσκωμένη πλαστική σακούλα ενός πιεσομέτρου και μετρήσαμε τις μεταβολές της πίεσης καθώς πιέζαμε τη σακούλα με το χέρι μας. Η άλλη είσοδος του αισθητήρα πίεσης έμεινε ανοιχτή στον ατμοσφαιρικό αέρα και συνεπώς ο διαφορικός αισθητήρας χρησιμοποιήθηκε ουσιαστικά ως αισθητήρας πίεσης βαθμίδας. Το λογισμικό Terminal χρησιμοποιήθηκε για τη λήψη των δεδομένων από τον Arduino (αν και εξίσου καλά μπορεί να χρησιμοποιηθεί και το ενσωματωμένο τερματικό στο IDE του Arduino).

Οι μετρήσεις που λάβαμε με τον Arduino

Τα πειραματικά δεδομένα μπορούν να μεταφερθούν στο Excel όπου μπορεί να σχεδιαστεί και το γράφημα της πίεσης σε σχέση με το χρόνο.

Γραφική παράσταση διαφορικής πίεσης σε συνάρτηση με το χρόνο

Εντελώς αντίστοιχα μπορούν να χρησιμοποιηθούν και άλλοι αισθητήρες, όπως ο αισθητήρας απόλυτης πίεσης MPX4250AP για τον οποίο ο κατασκευαστής δίνει τη σχέση μετατροπής πίεσης σε τάση που φαίνεται στο επόμενο σχήμα:

Η σχέση τάσης εξόδου - πίεσης εισόδου για τον αισθητήρα MPX4250AP


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου