("peripheral attached" indicator for USB port)
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_in_use.jpg)
Για λόγους αυτοματισμού ή ασφάλειας στη χρήση ενός Η/Υ, είναι χρήσιμο να γνωρίζουμε ότι είναι συνδεδεμένο κάποιο περιφερειακό στη θύρα USB. Αναφέρομαι στην παραγωγή ενός λογικού ψηφιακού σήματος για ενεργοποίηση άλλου συστήματος, λ.χ. σε ένα αυτόματο σύστημα εκτυπώσεων, επανεκκίνηση του Η/Υ και του εκτυπωτή μόλις συνδεθεί ένα USB stick.
Η απλή σκέψη είναι να ανιχνεύσουμε το ρεύμα που θα καταναλώσει το περιφερειακό ή ακόμη και να χρησιμοποιήσουμε μηχανικούς διακόπτες ή οπτικά αισθητήρια που θα ενεργοποιηθούν με την βυσμάτωση του περιφερειακού. Το ορθότερο είναι να διαβάσουμε λίγα στοιχεία από την προδιαγραφή της θύρας USB και να βρούμε μια φθηνή λύση χωρίς να δημιουργήσουμε πρόβλημα στην κανονική λειτουργία του υπολογιστή. Παρακάτω αναφέρομαι στα USB ports 1.1 και 2.0.
Βύσματα, ακροδέκτες USB port:
![Εικόνα](http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/USB.svg/220px-USB.svg.png)
Παραπάνω φαίνονται οι αρχικοί τύποι αρσενικών βυσμάτων για καλώδιο, USB-A και USB-B (plugs).
Οι συνδέσεις των 4 ακροδεκτών αφορούν:
1: Vcc, τροφοδοσία, +5VDC, κόκκινο καλώδιο
2: D-, δεδομένα, άσπρο καλώδιο
3: D+, δεδομένα, πράσινο καλώδιο
4: GND, γείωση, επίπεδο αναφοράς τάσεων, 0V, μαύρο καλώδιο
Επιπλέον υπάρχει θωράκιση καλωδίου που συνδέεται στα μεταλλικά περιβλήματα των βυσμάτων.
Εσωτερική συνδεσμολογία από την πλευρά του Η/Υ ή HUB (USB host):
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_port_host.jpg)
Το πρωτόκολλο USB χρησιμοποιεί διαφορική σηματοδότηση στους ακροδέκτες D+ και D- για τη μετάδοση δεδομένων. Για την λογική κατάσταση "1" (high) το D+ γίνεται θετικότερο του D-, ενώ το λογικό "0" θέτει το D+ σε τάση χαμηλότερη του D-. Από την πλευρά του USB host (Η/Υ ή HUB) οι γραμμές δεδομένων τερματίζονται προς το GND μέσω αντιστάσεων 15ΚΩ, άρα σε κατάσταση ηρεμίας υπάρχει "pull down" σε λογικό "0".
Ρύθμιση ταχύτητας ροής δεδομένων από το περιφερειακό:
Στη θύρα USB μπορούμε να συνδέσουμε "αργά" ή "γρήγορα" περιφερειακά τα οποία εξ' ορισμού πρέπει να το δηλώσουν με τη βυσμάτωσή τους! Αυτό γίνεται με μια αντίσταση 1Κ5 συνδεδεμένη μεταξύ του D+ ή D- και της τάσης τροφοδοσίας τους (συνήθως γύρω στα 3V3) με αποτέλεσμα να ανεβάζουν το επίπεδο τάσης στον ένα ακροδέκτη με αυτό το ασθενές "pull up".
Το "γρήγορο" περιφερειακό έχει pull up στο D+ ενώ το "αργό" περιφερειακό έχει pull up στο D-:
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_port_fast.jpg)
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_port_slow.jpg)
Αν θεωρήσουμε αμελητέα την αντίσταση του καλωδίου, η "τάση ορισμού ταχύτητας" στον διαιρέτη λόγω pull up/down θα είναι:
Va=3.3Vx15ΚΩ/(15ΚΩ+1Κ5)=3V
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_dv.jpg)
Ενδειξη τοποθέτησης περιφερειακού στη θύρα USB
Σύμφωνα με τα παραπάνω, για να φτιάξουμε ένα ψηφιακό σήμα ένδειξης σύνδεσης περιφερειακού USB, αρκεί να ελέγχουμε ότι η τάση στο D+ ή το D- έχει υπερβεί ένα προκαθορισμένο όριο, λ.χ. 2V. Τι γίνεται όμως όταν μεταδίδονται δεδομένα στη θύρα USB; Τα line drivers του USB host και του περιφερειακού, εναλλάσσουν την τάση στους ακροδέκτες D+ και D- σε τάσεις μεταξύ 0.3V και 2.8V. Αν χρησιμοποιήσουμε τάση σύγκρισης σε αυτά τα επίπεδα, τότε η ένδειξή μας θα αναβοσβήνει ανάλογα με τα δεδομένα. Αυτό σε μερικές εφαρμογές είναι χρήσιμο γιατί δείχνει πότε μεταφέρονται δεδομένα από-προς το περιφερειακό αλλά δεν κάνει για τη αρχική σκέψη μας.
Τελικά επιλέγουμε μια τάση σύγκρισης γύρω στα 0.2V η οποία μας οδηγεί σε διπλό συγκριτή τάσης "rail to rail" με έξοδο ανοικτού συλλέκτη/drain όπως το LMC6772. Δεν μπορεί να χρησιμοποιηθεί κλασικός συγκριτής τάσης (λ.χ.LM319) γιατί με τροφοδοσία 5V μπορεί να διαχειριστεί σήματα μεταξύ 1V και 3V.
Το βασικό κύκλωμα του συγκριτή είναι:
![Εικόνα](http://acomelectronics.com/hlektronika/components/LMC6772_basic.jpg)
Για το τελικό κύκλωμα, θα ρυθμίσουμε την τάση σύγκρισης στα 0.2V επιλέγοντας τις R1=27ΚΩ και R2=1Κ1 (τροφοδοσία 5V).
Αρκεί ένας διαιρέτης και για τους δύο συγκριτές. Οι έξοδοι θα παραλληλιστούν και θα χρησιμοποιήσουμε μία κοινή Rext=10ΚΩ για να φτιάξουμε επίπεδα TTL ("1"=5V, "0"=0V) ή θα βάλουμε ένα ενδεικτικό κόκκινο LED σε σειρά με αντίσταση 2Κ7:
![Εικόνα](http://acomelectronics.com/hlektronika/USB/usb_attached.jpg)
Περισσότερες πληροφορίες:
- Wikipedia, USB
- T.I., LMC6772 datasheet
- T.I., LM319 datasheet