Χρησιμοποιώντας FSR

Μέθοδος ανάγνωσης αναλογικής τάσης

Ο ευκολότερος τρόπος για να μετρήσετε μια αντίσταση του αισθητήρα είναι να συνδέσετε το ένα άκρο στην τάση και το άλλο σε μία  pull-down  αντίσταση στη γείωση. Στη συνέχεια, το σημείο μεταξύ της σταθερής αντιστάσεως παλινδρόμησης και της μεταβλητής αντιστάσεως FSR συνδέεται με την αναλογική είσοδο του Arduino (όπως φαίνεται παρακάτω).
 
δύναμη ___ flex_fsrpulldowndia.png
δύναμη ___ flex_fsrpulldownsch.gif

Για αυτό το παράδειγμα έχουμε 5V παροχή, αλλά σημειώστε ότι μπορείτε να το χρησιμοποιήσετε με τροφοδοσία 3.3v εξίσου εύκολα. Σε αυτή τη διαμόρφωση η αναλογική ένδειξη τάσης κυμαίνεται από 0V (γείωση) έως περίπου 5V (ή περίπου ίδια με την τάση τροφοδοσίας).

Ο τρόπος με τον οποίο λειτουργεί αυτό είναι ότι καθώς η αντίσταση του FSR μειώνεται, η συνολική αντίσταση του FSR και της pull-down αντίστασης μειώνεται από περίπου 100Kohm σε 10Kohm. Αυτό σημαίνει ότι αυξάνεται το ρεύμα που διέρχεται και από τις δύο αντιστάσεις,   γεγονός που με τη σειρά του προκαλεί αύξηση της τάσης κατά μήκος της σταθερής αντίστασης 10Κ.

1 Kg=1lb/2,2046

1 lb = 453,59237 g

Μάζα (lb) Δύναμη (N) Αντίσταση FSR (FSR + R) ohm
 
Τρέχουσα μέσω FSR + R Τάση σε R
Καμμία Καμμία 'Απειρη 'Απειρη 0 mA 0V
0,04 lb 0,2 Ν 30 Kohm 40 Kohm 0,13 mA 1.3 V
0,22 lb 1 Ν 6 Kohm 16 Kohm 0,31 mA 3.1 V
2,2 lb 10 Ν 1 Kohm 11 Kohm 0,45 mA 4,5 V
22 lb 100 Ν 250 ohm
 
10.25 Kohm 0,49 mA 4.9 V


 

Αυτός ο πίνακας δείχνει την κατά προσέγγιση αναλογική τάση που βασίζεται στη δύναμη / αντίσταση του αισθητήρα με 5V παροχή και αντίσταση pulldown 10Κ.

Σημειώστε ότι η μέθοδος μας παίρνει τη κάπως γραμμική αντίσταση, αλλά δεν παρέχει γραμμική τάση! Αυτό συμβαίνει επειδή η εξίσωση τάσης είναι:

Vo = Vcc (R / (R + FSR))

Δηλαδή, η τάση είναι ανάλογη προς το  αντίστροφο  της αντίστασης FSR.
 

Απλή επίδειξη χρήσης

Συνδέστε το FSR όπως στο παραπάνω παράδειγμα, αλλά αυτή τη φορά προσθέστε ένα LED στο pin 11.
 
δύναμη ___ flex_FSRandLED.png
δύναμη ___ flex_FSRledsch.gif

Το πρόγραμμα που ακολουθεί θα λάβει την αναλογική ένδειξη τάσης και θα τη χρησιμοποιήσει για να καθορίσει πόσο φωτεινό είναι το κόκκινο LED. Όσο περισσότερο πιέζετε το FSR, τόσο πιο φωτεινό θα είναι το LED! Θυμηθείτε ότι η λυχνία LED πρέπει να συνδεθεί σε μια PWM ακίδα για να λειτουργήσει αυτό, εμείς χρησιμοποιούμε τον ακροδέκτη 11.

 

  1. / * FSR δοκιμή σκίτσο.
  2. Συνδέστε το ένα άκρο του FSR σε 5V, το άλλο άκρο στο Analog 0.
  3. Στη συνέχεια, συνδέστε το ένα άκρο μιας αντιστάσεως 10K από το Analog 0 στη γείωση
  4. Συνδέστε το LED από τον ακροδέκτη 11 μέσω μιας αντίστασης στη γείωση
  5. Για περισσότερες πληροφορίες, επισκεφτείτε τη διεύθυνση www.ladyada.net/learn/sensors/fsr.html * /
  6. int fsrAnalogPin = 0 ; // Η FSR είναι συνδεδεμένη στο αναλογικό 0
  7. int LED pin = 11 ; // συνδέστε το Κόκκινο LED με τον ακροδέκτη 11 (ακίδα PWM)
  8. int fsrReading ; // την αναλογική ανάγνωση από τον διαχωριστή αντιστάσεων FSR
  9. int LEDbrightness ;
  10. void setup(void) { 
  11. Serial .begin ( 9600 ); // Θα στείλουμε πληροφορίες σφαλμάτων μέσω της σειριακής οθόνης
  12. pinMode ( LEDpin , OUTPUT );
  13. }
  14. void loop(void) {

    fsrReading = analogRead(fsrAnalogPin);

    Serial.print("Analog reading = ");

    Serial.println(fsrReading);

  15. // θα πρέπει να αλλάξουμε το εύρος από την αναλογική ανάγνωση (0-1023) μέχρι το εύρος
  16. // που χρησιμοποιείται από το analogWrite (0-255) με χάρτη!
  17. LEDbrightness = map ( fsrReading , 0 , 1023 , 0 , 255 );
  18. // Η φωτεινή ένδειξη LED γίνεται πιο φωτεινή όσο ισχυρότερα πατάτε
  19. analogWrite ( LEDpin , LEDbrightness );
  20. delay( 100 );
  21. }
 

Απλός κώδικας για αναλογικές μετρήσεις FSR

Παράδειγμα κώδικα για τη μέτρηση του FSR σε μια αναλογική ακίδα.
 
δύναμη ___ flex_fsrpulldowndia.png
δύναμη ___ flex_fsrpulldownsch.gif
δύναμη ___ flex_simpletestout.gif
Αυτός ο κώδικας δεν κάνει κανέναν υπολογισμό, απλά εκτυπώνει αυτό που ερμηνεύει ως το μέγεθος της πίεσης με ποιοτικό τρόπο. Για τα περισσότερα έργα, αυτό είναι λίγο πολύ ότι χρειάζεται!

 

       /*   FSR απλό πρόγραμμα δοκιμής.

      Συνδέστε το ένα άκρο του FSR στην παροχή ρεύματος, το   άλλο άκρο στο Analog 0.

Στη συνέχεια, συνδέστε το ένα άκρο μιας αντιστάσεως 10K από το Analog 0 στη γείωση */

int fsrPin = 0 ; // Τα FSR και 10K pulldown είναι συνδεδεμένα στο a0

int fsrReading ; //  αναλογική ανάγνωση από τον διαχωριστή αντιστάσεων FSR

 

void setup(void) {

// Θα στείλουμε πληροφορίες σφαλμάτων μέσω της σειριακής οθόνης

Serial.begin(9600);

}

void loop(void) {

fsrReading = analogRead(fsrPin);

Serial.print("Analog reading = ");

Serial.print(fsrReading);

if (fsrReading < 10) {

Serial.println(" - No pressure");

} else if (fsrReading < 200) {

Serial.println(" - Light touch");

} else if (fsrReading < 500) {

Serial.println(" - Light squeeze");

} else if (fsrReading < 800) {

Serial.println(" - Medium squeeze");

} else {

Serial.println(" - Big squeeze");

}

delay(1000);

}

 

Λεπτομερής κώδικας για αναλογικές μετρήσεις FSR

Αυτό το έργο Arduino που υποθέτει ότι έχετε το FSR ενσύρματο όπως παρακάτω, με μια 10KΩ pull-down αντίσταση και ο αισθητήρας διαβάζεται στο Analog 0 pin. Θα μετρήσει την κατά προσέγγιση δύναμη Newton που μετράται από το FSR. Αυτό μπορεί να είναι αρκετά χρήσιμο για τη βαθμονόμηση των δυνάμεων που πιστεύετε ότι θα αντιμετωπίσει το FSR.
 
δύναμη ___ flex_fsrpulldowndia.png
δύναμη ___ flex_fsrpulldownsch.gif
δύναμη ___ flex_fsrtester.gif
 

/*  FSR 

Συνδέστε το ένα άκρο του FSR στην παροχή ρεύματος, το άλλο άκρο στο Analog 0.

Στη συνέχεια, συνδέστε το ένα άκρο μιας αντιστάσης 10K από το Analog 0 στη γείωση   */

int fsrPin = 0 ; // Τα FSR και 10K pulldown είναι συνδεδεμένα στο a0

int fsrReading ; // την αναλογική ανάγνωση από τον διαχωριστή αντιστάσεων FSR

int fsrVoltage ; // η αναλογική ένδειξη μετατρέπεται σε τάση

unsigned long fsrResistance ; // Η τάση που μετατράπηκε σε αντίσταση, μπορεί να είναι πολύ μεγάλη, ώστε να κάνει "μακρύ

unsigned long fsrConductance ;

long fsrForce ; // η αντίσταση μετατράπηκε σε δύναμη

void setup ( void ) {

Serial . begin ( 9600 ); // Θα στείλουμε πληροφορίες σφαλμάτων μέσω της σειριακής οθόνης

}}

void loop ( void ) {

fsrReading = analogRead ( fsrPin );

Serial . print ( "Αναλογική ανάγνωση =" );

Serial . println ( fsrReading );

// αναλογική ένδειξη τάσης κυμαίνεται από περίπου 0 έως 1023 που αντιστοιχεί σε 0V έως 5V (= 5000mV)

fsrVoltage = map ( fsrReading , 0 , 1023 , 0 , 5000 ).

Serial . print ( "ανάγνωση τάσης σε mV =" );

Serial . println ( fsrVoltage );

if ( fsrVoltage == 0 ) {

Serial . println ( "Χωρίς πίεση" );

} else {

// Η τάση = Vcc * R / (R + FSR) όπου R = 10K και Vcc = 5V

// FSR = ((Vcc - V) * R) / V!

fsrResistance = 5000 - fsrVoltage ; // fsrVoltage είναι σε millivolts έτσι 5V = 5000mV

fsrResistance * = 10000 ; // 10K αντίσταση

fsrResistance / = fsrVoltage ;

Serial .print ( "αντίσταση FSR σε ohms =" );

Serial . println ( fsrResistance );

fsrConductance = 1000000 ; // μετράμε σε micromh

fsrConductance / = fsrResistance ;

Serial . print ( "Conductance in microMhos:" ).

Serial . println ( fsrConductance );

force___flex_resistanceforce.jpg

// Χρησιμοποιήστε τα δύο γραφήματα οδηγών FSR για να προσεγγίσετε τη δύναμη

αν ( fsrConductance <= 1000 ) {

fsrForce = fsrConductance / 80 ;

Serial . print ( "Δύναμη σε Newton:" );

Serial . println ( fsrForce );

} else {

fsrForce = fsrConductance - 1000 ;

fsrForce / = 30 ;

Serial . print ( "Δύναμη σε Newton:" );

Serial . println ( fsrForce );

}}

}}

Serial . println ( "--------------------" );

delay( 1000 );

}}