USB -> serialTTL
USB -> serialTTL
Ahoj,
před lety jsem si zprovoznil malou robotickou ruku ovládanou 4mi servy.
Serva jsou řízena přes <Pololu Micro Serial Servo Controller SSC> (http://www.snailshop.cz/rizeni-serv/676 ... mbled.html).
Kontrolér krmím bajty z PC přímo přes RS-232 pomocí programu v pythonu. Všechno dobře fungule i po letech.
Ale teď bych potřeboval komunikovat i z notebooku přes USB. Našel jsem doma převodník USB->serialTTL podobný tomuto: (http://www.snailshop.cz/usb/706-usbttl- ... -port.html) , ale starší. Nemá CTS a RTS, což nevadí.
To mi ale nefunguje a potřeboval bych poradit.
USB stranu převodníku jsem zapojil podle barev na ucvaklém usb kabelu.
Tx převodníku jsem zapojil na <logic-level serial input> v kontroléru (je jinde než vstup pro RS-232 úrovně.)
Rx převodníku na <logic-level serial output> kontroléru. To by nemuselo být.
Zem je jasná.
Podle stránek výrobce čipu převodníku FTDI (https://www.ftdichip.com/Drivers/VCP.htm) , by se měl převodník objevit jako další COM port a aplikace by k němu měly přistupovat stejným způsobem. Ovladače už jsou obsaženy v linuxovém jádře nad 3.0.0-19, takže bych neměl nic instalovat.
Po připojení k PC se mi převodník objeví jako /dev/ttyUSB0, takže systém ho zná.
Program jsem ponechal stejný až na jméno portu.
Po zapnutí napájení serv i kontroléru se na kontroléru rozsvítí žlutá LED a čeká na komunikaci. Po pokusu o komunikaci z PC sebou cuknou serva, rozbliká se červená LED, žlutá svítí a to je vše.
Pravděpodobně chybný formát na vstupu. Kontrolér rozpozná baudrate automaticky, očekává formát 8N1. Posílám mu 8N1 na 2400Bd, na RS-232 to funguje bezchybně.
Provedl jsem ještě pokus se starším převodníkem RS-232->TTL, podobným tomuto: (https://papouch.com/vestavny-prevodnik-rs232-ttl-p2047/) , který jsem připojil stejným způsobem na TTL vstupy kontroléru a funguje to pěkně.
Nejsem odborník, zabývám se těmito věcmi jen občas pro zábavu.
Co jsem mohl zanedbat při komunikaci přes ten USB->serialTTL převodník?
Díky za radu.
před lety jsem si zprovoznil malou robotickou ruku ovládanou 4mi servy.
Serva jsou řízena přes <Pololu Micro Serial Servo Controller SSC> (http://www.snailshop.cz/rizeni-serv/676 ... mbled.html).
Kontrolér krmím bajty z PC přímo přes RS-232 pomocí programu v pythonu. Všechno dobře fungule i po letech.
Ale teď bych potřeboval komunikovat i z notebooku přes USB. Našel jsem doma převodník USB->serialTTL podobný tomuto: (http://www.snailshop.cz/usb/706-usbttl- ... -port.html) , ale starší. Nemá CTS a RTS, což nevadí.
To mi ale nefunguje a potřeboval bych poradit.
USB stranu převodníku jsem zapojil podle barev na ucvaklém usb kabelu.
Tx převodníku jsem zapojil na <logic-level serial input> v kontroléru (je jinde než vstup pro RS-232 úrovně.)
Rx převodníku na <logic-level serial output> kontroléru. To by nemuselo být.
Zem je jasná.
Podle stránek výrobce čipu převodníku FTDI (https://www.ftdichip.com/Drivers/VCP.htm) , by se měl převodník objevit jako další COM port a aplikace by k němu měly přistupovat stejným způsobem. Ovladače už jsou obsaženy v linuxovém jádře nad 3.0.0-19, takže bych neměl nic instalovat.
Po připojení k PC se mi převodník objeví jako /dev/ttyUSB0, takže systém ho zná.
Program jsem ponechal stejný až na jméno portu.
Po zapnutí napájení serv i kontroléru se na kontroléru rozsvítí žlutá LED a čeká na komunikaci. Po pokusu o komunikaci z PC sebou cuknou serva, rozbliká se červená LED, žlutá svítí a to je vše.
Pravděpodobně chybný formát na vstupu. Kontrolér rozpozná baudrate automaticky, očekává formát 8N1. Posílám mu 8N1 na 2400Bd, na RS-232 to funguje bezchybně.
Provedl jsem ještě pokus se starším převodníkem RS-232->TTL, podobným tomuto: (https://papouch.com/vestavny-prevodnik-rs232-ttl-p2047/) , který jsem připojil stejným způsobem na TTL vstupy kontroléru a funguje to pěkně.
Nejsem odborník, zabývám se těmito věcmi jen občas pro zábavu.
Co jsem mohl zanedbat při komunikaci přes ten USB->serialTTL převodník?
Díky za radu.
Re: USB -> serialTTL
Dle popisu, když to funguje s převodníkem RS232 - TLL, by to mělo fungovat i s převodníkem USB - serialTLL. Zkusil bych jestli je funkční ten převodník USB - serialTTL. Propojit na něm RX - TX a v nějakém terminálu zkusit posílat nějaké znaky, měly by se ihned přijímat. Pokud toto nebude fungovat, je problém v převodníku nebo ovladači.
Re: USB -> serialTTL
Zkusil jsem tu smyčku a číst z portu pomocí putty.MartinL píše: ↑26 zář 2020, 19:00 Dle popisu, když to funguje s převodníkem RS232 - TLL, by to mělo fungovat i s převodníkem USB - serialTLL. Zkusil bych jestli je funkční ten převodník USB - serialTTL. Propojit na něm RX - TX a v nějakém terminálu zkusit posílat nějaké znaky, měly by se ihned přijímat. Pokud toto nebude fungovat, je problém v převodníku nebo ovladači.
Přes převodník USB->TTL to nechodí, pomalu se načítá jen nějaký šum. Na rs-232 přes loopback konektor to jde dobře. Zkoušel jsem to na dvou strojích, je to stejné.
Asi to bude chtít vyzkoušet jiný převodník.
Re: USB -> serialTTL
Nepíšeš konkrétní označení čipu převodníku, tak můžeme jen hádat.
Nejsou ta data invertovaná?
Zkusil jsi i jiné Baudrate?
Nejsou ta data invertovaná?
Zkusil jsi i jiné Baudrate?
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Re: USB -> serialTTL
Na čipu je napsáno:
FTDI
1220-C
G0050411
FT232-RL
Podobný převodník je na odkazu v prvním příspěvku. Ten můj jsem koupil tamtéž pár let nazpět.
Baudrate jsem zkusil několik.
V návodu ke kontroléru píšou, že na TTL vstupu chce non-inverted signál.
A taky se tam píše, že na rs-232 vstup je možné přivést invertovaný vstup jakýchkoli úrovní.
Takže jsem tam připojil výstup z převodníku a nic se nedělo. Při pokusu o komunikaci na vstupu TTL úrovní alespoň serva cuknou a rozbliká se červená led.
FTDI
1220-C
G0050411
FT232-RL
Podobný převodník je na odkazu v prvním příspěvku. Ten můj jsem koupil tamtéž pár let nazpět.
Baudrate jsem zkusil několik.
V návodu ke kontroléru píšou, že na TTL vstupu chce non-inverted signál.
A taky se tam píše, že na rs-232 vstup je možné přivést invertovaný vstup jakýchkoli úrovní.
Takže jsem tam připojil výstup z převodníku a nic se nedělo. Při pokusu o komunikaci na vstupu TTL úrovní alespoň serva cuknou a rozbliká se červená led.
Re: USB -> serialTTL
Kdybych mezi Tx a zem zapojil LEDku (s odporem) měla by při konunikaci blikat, když jsou data non-inverted?
Re: USB -> serialTTL
Jenom tak pro zajímavost - Rx a Tx jsi zkoušel na chvilku prohodit?
Předtím jsi to provozoval z portu RS232 přímo, nebo z převodníku RS232 <-> TTL ???
Oni především požadují, aby klid bylo +5V, takže pokud připojíš ledku mezi Tx a GND (s odporem alespoň 1k), tak má většinu času svítit. To samé pro Rx a GND.
Předtím jsi to provozoval z portu RS232 přímo, nebo z převodníku RS232 <-> TTL ???
Oni především požadují, aby klid bylo +5V, takže pokud připojíš ledku mezi Tx a GND (s odporem alespoň 1k), tak má většinu času svítit. To samé pro Rx a GND.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Re: USB -> serialTTL
Tak jsem si pohrál s tou ledkou.
Nejdřív jsem si ověřil jak to vypadá, když to funguje. Vzal jsem převodník RS-232 na TTL a mezi Tx a GND jsem zapojil LEDku s odporem paralelně k servokontroléru. Ihned po otevření portu v programu se rozsvítila a při přenosu dat poblikávala. To by odpovídalo non-inverted výstupu z převodníku, kdy je idle stav a log1 +5V. To kontrolér na TTL vstupu vyžaduje a pak funguje.
Stejně jsem to zapojil u USB->serialTTL převodníku. Dioda se po ustavení spojení rozsvítila a při komunikaci poblikávala. Odezva od servokontroléru však byla stejná: škubnutí servy a rozblikání červené diody.
Z toho usuzuju, že převodník data posílá a nejsou invertovaná.
Každopádně parametry spojení jako Baudrate, parita, stopbity jsou dané definicí v programu, ten převodník by je nijak neměl měnit, ne?
Snad tedy ten ovladač? Až se dostanu k win10, tak to zkusím tam.
Nejdřív jsem si ověřil jak to vypadá, když to funguje. Vzal jsem převodník RS-232 na TTL a mezi Tx a GND jsem zapojil LEDku s odporem paralelně k servokontroléru. Ihned po otevření portu v programu se rozsvítila a při přenosu dat poblikávala. To by odpovídalo non-inverted výstupu z převodníku, kdy je idle stav a log1 +5V. To kontrolér na TTL vstupu vyžaduje a pak funguje.
Stejně jsem to zapojil u USB->serialTTL převodníku. Dioda se po ustavení spojení rozsvítila a při komunikaci poblikávala. Odezva od servokontroléru však byla stejná: škubnutí servy a rozblikání červené diody.
Z toho usuzuju, že převodník data posílá a nejsou invertovaná.
Každopádně parametry spojení jako Baudrate, parita, stopbity jsou dané definicí v programu, ten převodník by je nijak neměl měnit, ne?
Snad tedy ten ovladač? Až se dostanu k win10, tak to zkusím tam.
Re: USB -> serialTTL
Prohodit jsem to zkoušelfulda píše: ↑27 zář 2020, 20:37 Jenom tak pro zajímavost - Rx a Tx jsi zkoušel na chvilku prohodit?
Předtím jsi to provozoval z portu RS232 přímo, nebo z převodníku RS232 <-> TTL ???
Oni především požadují, aby klid bylo +5V, takže pokud připojíš ledku mezi Tx a GND (s odporem alespoň 1k), tak má většinu času svítit. To samé pro Rx a GND.
Obojí, přímo RS-232 na příslušný vstup, i RS-232->TTL na příslušný vstup
Re: USB -> serialTTL
Teď jsem ještě vyzkoušel proměřit napětí Tx proti GND na převodníku. Dokud nepřipojím servokontrolér, tak je 0V. Bez připojeného kontroléru tím pádem ani nesvítí LEDka mezi Tx a GND, i když do převodníku posílám data.
Jakmile připojím kontrolér, objeví se 1.83V a při komunikaci se naměří lehce nižší. Měřím to přímo na desce
Mezi Rx a zemí je 1.8V.
Jakmile připojím kontrolér, objeví se 1.83V a při komunikaci se naměří lehce nižší. Měřím to přímo na desce
Mezi Rx a zemí je 1.8V.