ADC στο Arduino
![ADC στο Arduino](https://www.electronicwings.com/storage/PlatformSection/TopicContent/407/icon/ADC%20in%20Arduino.jpg)
Εισαγωγή στο ADC
- Όταν διασυνδέουμε αισθητήρες με τον μικροελεγκτή, η έξοδος του αισθητήρα πολλές φορές είναι αναλογικής φύσης. Αλλά ο μικροελεγκτής επεξεργάζεται ψηφιακά σήματα.
- Ως εκ τούτου, χρησιμοποιούμε ADC μεταξύ του αισθητήρα και του μικροελεγκτή. Μετατρέπει ένα αναλογικό σήμα σε ψηφιακό και το δίνει στον μικροελεγκτή.
- Υπάρχουν πολλές εφαρμογές του ADC όπως σε μια βιομετρική εφαρμογή, παρακολούθηση περιβάλλοντος, ανίχνευση διαρροής αερίου κ.λπ.
Το Arduino Uno διαθέτει 6 κανάλια ADC 0n-board που μπορούν να χρησιμοποιηθούν για την ανάγνωση αναλογικού σήματος στην περιοχή 0-5V.
Διαθέτει ADC 10-bit που σημαίνει ότι θα δώσει ψηφιακή τιμή στην περιοχή από 0 – 1023 (2^10). Αυτό ονομάζεται ανάλυση που υποδεικνύει τον αριθμό των διακριτών τιμών που μπορεί να παράγει στο εύρος των αναλογικών τιμών.
Υπολογισμός τιμής ψηφιακής εξόδου
Ανάλυση ADC = Vref / ((2^n) - 1)
Ψηφιακή έξοδος = Vin / Ανάλυση
Οπου,
Vref - Η τάση αναφοράς είναι η μέγιστη τιμή που μπορεί να μετατρέψει το ADC.
Για να κρατήσουμε τα πράγματα απλά, ας θεωρήσουμε ότι το Vref είναι 5V,
Για 0 Vin, ψηφιακή τιμή o/p = 0
Για 5 Vin, ψηφιακή τιμή o/p = 1023 (10-bit)
Για 2,5 Vin, ψηφιακή τιμή o/p = 512 (10-bit)
ADC Pins του Arduino Uno
Αναλογικές λειτουργίες για Arduino ADC
analogRead (pin)
Αυτή η λειτουργία χρησιμοποιείται για την ανάγνωση αναλογικής τιμής από καθορισμένη αναλογική ακίδα.
pin
- αριθμός αναλογικής ακίδας που θέλουμε να διαβάσουμε
returns
- ψηφιακή τιμή 0 – 1023
e.g. analogRead(A0) //read analog value at A0 channel
analogReference (type)
Αυτή η λειτουργία χρησιμοποιείται για τη διαμόρφωση της τάσης αναφοράς που χρησιμοποιείται για την αναλογική είσοδο.
Ας δούμε πώς να διαβάζετε τις αναλογικές τιμές χρησιμοποιώντας το Arduino
Ας γράψουμε ένα πρόγραμμα για την ανάγνωση ποικίλης αναλογικής τιμής που δημιουργείται χρησιμοποιώντας ποτενσιόμετρο που είναι συνδεδεμένο στο αναλογικό κανάλι A0. Εμφανίστε την ψηφιακή τιμή στη σειριακή οθόνη που πήραμε από το Arduino ADC.
Διασύνδεση ποτενσιόμετρου με Arduino Uno
Κωδικός Arduino για ανάγνωση αναλογικής τιμής
int sensorPin = A0; // input pin for the potentiometer
int digitalValue = 0;// variable to store the value coming from the sensor
void setup() {
Serial.begin(9600);
}
void loop() {
digitalValue = analogRead(sensorPin);// read the value from the analog channel
Serial.print("digital value = ");
Serial.println(digitalValue); //print digital value on serial monitor
delay(1000);
}
Έξοδος σε σειριακή οθόνη
Σημείωση: Εάν δεν είναι συνδεδεμένο τίποτα στο αναλογικό κανάλι εισόδου, τότε η συνάρτηση analogRead () επιστρέφει την θορυβώδη κυμαινόμενη τιμή.
Διαβάστε την Αναλογική τάση χρησιμοποιώντας το Arduino Uno
Καθώς το ADC παρέχει ψηφιακή έξοδο που είναι ανάλογη με την αναλογική τιμή. Για να γνωρίζουμε τι είναι η αναλογική τιμή εισόδου, πρέπει να μετατρέψουμε αυτήν την ψηφιακή τιμή πίσω σε αναλογική μέσω προγράμματος. Για να μετατρέψετε αυτήν την ψηφιακή τιμή σε αναλογική τάση εισόδου,
Aout = ψηφιακή τιμή * (Vref/2^n – 1)
π.χ. ψηφιακή τιμή = 512 και το ADC είναι 10-bit με 5V Vref. Όμως, θέλουμε να ξέρουμε ότι για ποια αναλογική τάση δίνει αντίστοιχη ψηφιακή τιμή. Τότε,
Aout = 512 * (5 V / 1023)
= 2,5 V
Κώδικας ανάγνωσης αναλογικής τάσης χρησιμοποιώντας Arduino
int sensorPin = A0; // select the input pin for the potentiometer
int digitalValue = 0; // variable to store the value coming from the sensor
float analogVoltage = 0.00;
void setup() {
Serial.begin(9600);
}
void loop() {
digitalValue = analogRead(sensorPin);// read the value from the analog channel
Serial.print("digital value = ");
Serial.print(digitalValue); //print digital value on serial monitor
//convert digital value to analog voltage
analogVoltage = (digitalValue * 5.00)/1023.00;
Serial.print(" analog voltage = ");
Serial.println(analogVoltage);
delay(1000);
}
Έξοδος σε σειριακό παράθυρο
Σχόλια
Δημοσίευση σχολίου