Μέθοδος ανάγνωσης αναλογικής τάσης
Ο ευκολότερος τρόπος για να μετρήσετε μια αντίσταση του αισθητήρα είναι να συνδέσετε το ένα άκρο στην τάση και το άλλο σε μία pull-down αντίσταση στη γείωση. Στη συνέχεια, το σημείο μεταξύ της σταθερής αντιστάσεως παλινδρόμησης και της μεταβλητής αντιστάσεως FSR συνδέεται με την αναλογική είσοδο του Arduino (όπως φαίνεται παρακάτω).Για αυτό το παράδειγμα έχουμε 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.Το πρόγραμμα που ακολουθεί θα λάβει την αναλογική ένδειξη τάσης και θα τη χρησιμοποιήσει για να καθορίσει πόσο φωτεινό είναι το κόκκινο LED. Όσο περισσότερο πιέζετε το FSR, τόσο πιο φωτεινό θα είναι το LED! Θυμηθείτε ότι η λυχνία LED πρέπει να συνδεθεί σε μια PWM ακίδα για να λειτουργήσει αυτό, εμείς χρησιμοποιούμε τον ακροδέκτη 11.
- / * FSR δοκιμή σκίτσο.
- Συνδέστε το ένα άκρο του FSR σε 5V, το άλλο άκρο στο Analog 0.
- Στη συνέχεια, συνδέστε το ένα άκρο μιας αντιστάσεως 10K από το Analog 0 στη γείωση
- Συνδέστε το LED από τον ακροδέκτη 11 μέσω μιας αντίστασης στη γείωση
- Για περισσότερες πληροφορίες, επισκεφτείτε τη διεύθυνση www.ladyada.net/learn/sensors/fsr.html * /
- int fsrAnalogPin = 0 ; // Η FSR είναι συνδεδεμένη στο αναλογικό 0
- int LED pin = 11 ; // συνδέστε το Κόκκινο LED με τον ακροδέκτη 11 (ακίδα PWM)
- int fsrReading ; // την αναλογική ανάγνωση από τον διαχωριστή αντιστάσεων FSR
- int LEDbrightness ;
- void setup(void) {
- Serial .begin ( 9600 ); // Θα στείλουμε πληροφορίες σφαλμάτων μέσω της σειριακής οθόνης
- pinMode ( LEDpin , OUTPUT );
- }
-
void
loop(void)
{
fsrReading = analogRead(fsrAnalogPin);
Serial.print("Analog reading = ");
Serial.println(fsrReading);
- // θα πρέπει να αλλάξουμε το εύρος από την αναλογική ανάγνωση (0-1023) μέχρι το εύρος
- // που χρησιμοποιείται από το analogWrite (0-255) με χάρτη!
- LEDbrightness = map ( fsrReading , 0 , 1023 , 0 , 255 );
- // Η φωτεινή ένδειξη LED γίνεται πιο φωτεινή όσο ισχυρότερα πατάτε
- analogWrite ( LEDpin , LEDbrightness );
- delay( 100 );
- }
Απλός κώδικας για αναλογικές μετρήσεις FSR
Παράδειγμα κώδικα για τη μέτρηση του FSR σε μια αναλογική ακίδα.
/* 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.
/* 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 );
// Χρησιμοποιήστε τα δύο γραφήματα οδηγών 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 );
}}