USB-naar-serieel adapters: drivers, niveaus en valkuilen
Hoe USB-naar-serieel adapters werken, waarom drivers en nagemaakte chips belangrijk zijn, en hoe je oude DB9-apparatuur weer aan de praat krijgt.
Een USB-naar-serieel adapter is een kleine converter die een USB-poort omzet in een RS-232 seriële poort, zodat een computer zonder seriële poort toch kan communiceren met een routerconsole, een PLC, een labelprinter, een weegschaal of een stuk laboratoriumapparatuur. De adapter bevat een converterchip, en die chip is het hele verhaal: hij bepaalt welke driver de computer nodig heeft, welke signaalniveaus op de pinnen verschijnen, en of de adapter blijft werken na de volgende besturingssysteemupdate. Kies de verkeerde en je krijgt niets, wartaal, of beschadigde hardware aan de andere kant.
Wat zit er in de adapter
Een USB-naar-RS-232 adapter is drie dingen in één gegoten behuizing: een USB-interface, een seriële controllerchip en een level shifter die echte RS-232-spanningen produceert. De controllerchip presenteert zich aan de computer als een virtuele COM-poort. Het besturingssysteem laadt een driver voor die chip, en de driver zorgt ervoor dat de poort als een normale seriële poort verschijnt voor terminalsoftware.
Daarom is de driver belangrijker dan de kabel. De chip binnenin bepaalt de driver, en de driver bepaalt of de adapter werkt op jouw besturingssysteem. Adapters op goed ondersteunde chips installeren meestal vanuit het besturingssysteem zelf of vanuit een ondertekend driverpakket. Adapters op niet-gelicenseerde kopieën van die chips kunnen worden geblokkeerd door de driver van de echte maker, wat de klassieke storing is: de adapter werkte jarenlang, tot een driverupdate hem niet meer herkende.
Nagemaakte chips zijn een echt probleem in deze markt. Een converterchip die niet het echte onderdeel is, kan dezelfde identiteit rapporteren, waardoor de echte driver laadt, de mismatch detecteert en het apparaat weigert. Symptomen zijn een poort die verschijnt en verdwijnt, een apparaat dat een fout toont in het apparaatbeheer, of een poort die opent maar niets verzendt. De praktische oplossing is adapters kopen op chips met een gepubliceerde, onderhouden driver, en die driverinstaller bewaren bij de apparatuur die hij bedient.
RS-232, TTL en het verschil dat hardware beschadigt
RS-232 is niet hetzelfde als het seriële signaal op een microcontrollerbord. RS-232 gebruikt single-ended signalen waarbij een spanning tussen +3 V en +15 V een logische 0 (space) is en tussen -3 V en -15 V een logische 1 (mark). Een TTL- of CMOS-seriele poort, zoals op microcontrollerborden en veel embedded headers, gebruikt in plaats daarvan 3,3 V- of 5 V-logicaniveaus.
Ze direct verbinden kan de laagspanningszijde beschadigen. Een echte RS-232-uitgang zwaait naar plus- en minspanningen die een 3,3 V-ingang niet kan verdragen. Als de apparatuur TTL verwacht, gebruik dan een USB-naar-TTL-adapter of een level shifter, niet een USB-naar-RS-232-adapter. Als de apparatuur RS-232 verwacht, zal een USB-naar-TTL-adapter deze niet aansturen.
| Adaptertype | Uitgangsniveaus | Typisch gebruik |
|---|---|---|
| USB naar RS-232 | +3 V tot +15 V en -3 V tot -15 V | DB9- of DB25-apparatuur, consoles, modems, weegschalen |
| USB naar TTL | 3,3 V of 5 V logica | Microcontrollerborden, embedded headers |
| USB naar RS-422/485 | Differentieel | Lange afstanden, Modbus RTU, DMX512-lichtsturing |
De standaard staat RS-232 toe tot 15 m (50 ft) bij 19.200 baud; lagere baudsnelheden gaan verder. RS-422 en RS-485 zijn differentieel en gaan veel verder, tot 1200 m (4000 ft) bij lagere snelheden, daarom gebruikt industriële apparatuur ze vaak in plaats daarvan.
Connectoren en pinouts die je zult tegenkomen
De meeste USB-naar-serieel adapters eindigen in een mannelijke DE-9-connector, meestal DB9 genoemd. De pinout van de pc (DTE) ligt vast: pin 1 DCD, pin 2 RXD, pin 3 TXD, pin 4 DTR, pin 5 signaalground, pin 6 DSR, pin 7 RTS, pin 8 CTS, pin 9 RI. Oudere apparatuur gebruikt soms een DB25, waar de pinout anders is: pin 2 TXD, pin 3 RXD, pin 4 RTS, pin 5 CTS, pin 6 DSR, pin 7 signaalground, pin 8 DCD, pin 20 DTR, pin 22 RI. De volledige RS-232 seriële pinouts: DB9 en DB25 referentie bevat beide, en het is de moeite waard om te controleren voordat je een kabel maakt.
DTE betekent computer of terminal; DCE betekent modem. Een straight-through kabel verbindt DTE met DCE. Twee DTE’s hebben een null modem-kabel nodig, waarbij TXD en RXD kruisen, RTS en CTS kruisen, DTR kruist naar DSR en DCD, en signaalground recht doorloopt. Een gender changer verwisselt mannelijk en vrouwelijk zonder iets te kruisen, dus het maakt van een straight kabel geen null modem-kabel. Als twee computers of twee stukken terminalapparatuur niet met elkaar willen praten, behandelt de pagina null modem-kabels en adapters de bedrading en de kant-en-klare adapters.
Drivers, poorten en het besturingssysteem
Een USB-naar-RS-232 adapter verschijnt als een COM-poort op Windows en als een apparaat zoals /dev/ttyUSB0 of /dev/tty.usbserial op Linux en macOS. Het poortnummer kan veranderen wanneer de adapter wordt losgekoppeld en opnieuw aangesloten, of wanneer hij naar een andere USB-poort wordt verplaatst. Terminalsoftware die een vaste COM-poort opslaat, zal dan de poort niet kunnen openen, wat lijkt op een adapterfout maar het niet is.
Twee gewoontes voorkomen het meeste hiervan. Ten eerste, sluit de adapter elke keer aan op dezelfde USB-poort, zodat het poortnummer stabiel blijft. Ten tweede, noteer het poortnummer in de apparatuurdocumentatie. Op Linux kan een regel op basis van het serienummer van de adapter de apparaatnaam vastpinnen; niet elke adapter rapporteert een serienummer, dus controleer voordat je erop vertrouwt.
USB zelf is hier niet de beperking. Zelfs USB 1.1 Full Speed met 12 Mbps is veel sneller dan welke gangbare seriële baudsnelheid dan ook, en de USB-zijde van de adapter is niet wat de verbinding beperkt. De pagina USB 3.0, 3.1, 3.2 en USB4: snelheden en namen ontcijferd legt de snelheidslabels uit als je tussen adapters en hubs kiest, maar voor serieel werk is elke werkende USB-poort voldoende.
Oude apparatuur weer aan de praat krijgen
Werk de verbinding in volgorde af en verander één ding tegelijk.
- Controleer of de adapter wordt herkend. Kijk in het apparaatbeheer of het systeemlogboek naar een serieel apparaat en noteer de poortnaam.
- Controleer of de driver bij de chip past. Als de adapter niet wordt herkend, installeer dan de driver voor de chip erin, niet een generieke.
- Controleer het kabeltype. Straight-through voor DTE naar DCE, null modem voor DTE naar DTE.
- Controleer de seriële instellingen. Baudrate, databits, pariteit, stopbits en flow control moeten aan beide uiteinden overeenkomen. Flow control is de gebruikelijke boosdoener: hardware flow control (RTS/CTS) blijft hangen als de kabel die pinnen niet doorgeeft.
- Controleer de niveaus. RS-232-apparatuur heeft een RS-232-adapter nodig; TTL-headers hebben een TTL-adapter nodig.
Voor consolewerk keert een rollover-kabel alle acht pinnen van begin tot eind om en wordt gebruikt met een RJ45-naar-DB9-adapter op Cisco-achtige consolepoorten. Veel nieuwere apparaten hebben in plaats daarvan een USB-consolepoort, die helemaal geen adapter nodig heeft.
Wat er misgaat
Een driverupdate blokkeert de adapter. Nagemaakte chips worden geweigerd door de driver van de echte maker. De adapter is niet defect; de driver accepteert hem niet meer. Bewaar een goed werkende driverinstaller, of vervang de adapter door een op een chip met een onderhouden driver.
Een USB-naar-TTL-adapter wordt gebruikt op RS-232-apparatuur, of andersom. Het eerste geval geeft meestal geen communicatie; het tweede kan de laagspanningszijde beschadigen. Laat de adapter overeenkomen met de niveaus die de apparatuur verwacht.
De verkeerde kabel wordt gebruikt tussen twee DTE’s. Een straight-through kabel tussen twee computers of twee terminals werkt niet. Een null modem-kabel of adapter is nodig.
Het poortnummer verandert. De adapter is in orde, maar de terminalsoftware kijkt naar de oude poort. Selecteer de poort opnieuw, of pin de apparaatnaam vast.
Flow control is verkeerd ingesteld. Met hardware flow control geselecteerd en geen RTS/CTS-bedrading stokt de verbinding na de eerste tekens. Probeer geen flow control of software flow control om de verbinding te bewijzen, en stel het daarna correct in.
Er wordt verwacht dat een gender changer signalen kruist. Hij verwisselt alleen mannelijk en vrouwelijk. Hij maakt van een straight kabel geen null modem-kabel.
Er wordt verwacht dat de adapter de apparatuur van stroom voorziet. Een seriële poort is een datalink, geen voeding. Apparatuur die eigen stroom nodig heeft, heeft nog steeds eigen stroom nodig.
Lange kabelafstanden worden geprobeerd bij hoge baudsnelheden. RS-232 is beperkt tot 15 m (50 ft) bij 19.200 baud, en minder bij hogere snelheden. Gebruik voor lange afstanden RS-422 of RS-485.
Een USB-verlenging wordt toegevoegd zonder de voeding te controleren. Een niet-versterkte hub deelt de voeding van de hostpoort onder zijn apparaten. Als de adapter onbetrouwbaar is via een hub, sluit hem dan direct aan of gebruik een hub met eigen voeding.
Veelgestelde vragen
Waarom stopte mijn USB-naar-serieel adapter met werken na een driverupdate?
De adapter bevat waarschijnlijk een nagemaakte kopie van een converterchip. De driver van de echte maker detecteert de mismatch en weigert het apparaat. De adapter is niet defect, maar werkt niet met die driver. Vervang hem door een adapter op een chip met een onderhouden driver, of bewaar een goed werkende driverinstaller voor de apparatuur die hij bedient.
Wat is het verschil tussen een USB-naar-RS-232-adapter en een USB-naar-TTL-adapter?
RS-232 gebruikt single-ended signalen waarbij +3 V tot +15 V een logische 0 is en -3 V tot -15 V een logische 1. TTL gebruikt 3,3 V- of 5 V-logicaniveaus. Ze direct verbinden kan de laagspanningszijde beschadigen, dus laat de adapter overeenkomen met de apparatuur: RS-232 voor DB9- of DB25-poorten, TTL voor microcontrollerheaders.
Hoe verbind ik twee computers met USB-naar-serieel adapters?
Elke computer heeft zijn eigen adapter nodig, en de twee adapters worden verbonden met een null modem-kabel of een null modem-adapter. Een null modem-kabel kruist TXD en RXD, kruist RTS en CTS, en kruist DTR naar DSR en DCD, met signaalground recht door. Een straight-through kabel werkt niet tussen twee DTE's.
Hoe ver kan ik een USB-naar-serieel adapterkabel laten lopen?
De RS-232-zijde is beperkt tot 15 m (50 ft) bij 19.200 baud, en minder bij hogere baudsnelheden. De USB-zijde wordt beperkt door USB-kabelregels, niet door de adapter. Gebruik voor langere afstanden RS-422 of RS-485, die differentieel zijn en tot 1200 m (4000 ft) reiken bij lagere snelheden.
Waarom verandert mijn seriële poortnummer steeds?
Het poortnummer wordt toegewezen wanneer de adapter wordt aangesloten, en het kan veranderen als de adapter naar een andere USB-poort wordt verplaatst. Sluit de adapter elke keer aan op dezelfde USB-poort, of pin de apparaatnaam vast met het serienummer van de adapter waar het besturingssysteem dat ondersteunt. Niet elke adapter rapporteert een serienummer.
Lees verder
Null-modemkabels: bedrading, adapters en pinouts
Een null-modemkabel kruist TX en RX om twee computers direct te verbinden. Behandelt DB9- en DB25-pinouts, adapters versus kabels, gender changers en lusbacktests.
Parallelle printerkabels: IEEE 1284, DB25 en Centronics
IEEE 1284 parallelle printerkabels uitgelegd: DB25- en Centronics 36-connectors, kabellengtes, modi en wanneer een USB-naar-parallel-adapter werkt.
RS-232 Pinouts: DB9 en DB25 Uitgelegd
Complete RS-232 pinout referentie voor DB9 en DB25 connectoren: DTE- en DCE-pinopdrachten, spanningsniveaus, kabellimieten en de TTL-fout die boards beschadigt.