usb multiplexer als kvm

Stijnos

Golden Member

Oh dat zou kunnen, dit was een El cheapo van 10.-
Zal ook eens met mijn logitec proberen

Volgens mij heeft het toetsenbord er weinig invloed op. Die moet gewoon antwoorden als er wat gevraagd wordt (en wel op een tijdschaal zo snel dat jij het niet merkt!).

Oh wacht! Ik had in m'n STM32 code ergens vandaan:

turnoff_usb ();
sleep_ms(1500);
enable_usb ();

En dat resulteerde in een irritante wachttijd als je het ding inplugt. Ik heb nu de delay naar 200ms teruggebracht en dat werkt voor mij nog steeds prima. Ik laat het voorlopig zo. :-)

Dus zoiets kan natuurlijk ook in zo'n toetsenbord zitten.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Stijnos

Golden Member

ik heb inmiddels wat testjes gedaan.
Ik heb eerst eens gekeken door een usb host te implementeren op een stm32F4 discovery en dan de keyboard HID class afvangen de payload daarvan (een 8 tal bytes) via de uart te verzenden.
Dat gaat best makkelijk en goed. Hetzelfde voor de mouse HID class werkt dat goed.
Ik heb in dit testje nog niet de usb devices gemaakt om te kijken of die de ontvangen uart data weer kunnen vertalen naar een valide usb HID keyboard of muis bericht. Dat kost me nu even teveel tijd, maar ik zie het nog steeds als een mooie oplossing,

De usb multiplexer development kits waren echter makkelijker om dat concept even te testen. Met een logitech K120 keyboard kan ik na 550ms een toets ontvangen. Ook een logitech muis na 450ms. Toen getest door beide in een usb hub te stoppen, gezien de multiplexer uiteraard maar 1 usb lijn heeft.
Nou dat wordt hem niet want de enumeration via een usb hub duurde 3 tot 4 seconden!
Dus toen de muis en keyboard beide via een eigen multiplexer geprobeerd en dan heb ik als ik beide devices gelijktijdig met de pc verbind nagenoeg dezelfde tijden als mijn eerste testje.

Met dit concept maar eens een printje gaan maken.

Nu vroeg ik me af, loont het de moeite om echt de 90ohm transmissie lijntje te maken? Dat kan via jlcpcb, maar dan moet ik minstens een 4 laags print hebben volgens mij. Die heb ik nog nooit gemaakt en moet daarvoor denk ik eerst mijn eagle licentie even opkrikken, want ik kan nu enkel 2 laags meen ik.
Of zal het voor deze muis en keyboard geen fluit uitmaken als ik gewoon 2 nette lijntje op een 2 laags printje teken?

Voor HID gaat het weinig uitmaken, voor echt heel snelle USB communicatie wel...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Op 28 november 2021 23:55:57 schreef Stijnos:
Nu vroeg ik me af, loont het de moeite om echt de 90ohm transmissie lijntje te maken? Dat kan via jlcpcb, maar dan moet ik minstens een 4 laags print hebben volgens mij. Die heb ik nog nooit gemaakt en moet daarvoor denk ik eerst mijn eagle licentie even opkrikken, want ik kan nu enkel 2 laags meen ik.
Of zal het voor deze muis en keyboard geen fluit uitmaken als ik gewoon 2 nette lijntje op een 2 laags printje teken?

90 ohm op een tweelaags print kan best, maar je spoorbreedte wordt gigantisch.

Beter kun je de sporen gewoon kort houden, een paar cm geen 90 ohm werkt prima op USB 1.1.

Je kunt het uitproberen door een stukje USB-kabel te vervangen door losse draadjes. Hoeveel los draad voordat je problemen kijgt?

Stijnos

Golden Member

wat zouden jullie met de shielding doen?
Ik lees dat geadviseerd wordt de shield van de usb connector met weerstand en c aan de ground te hangen.

Gezien de 8 usb connectoren naar 8 pc's gaan (welliswaar bij elkaar in een rack) twijfel ik of ik deze JUIST allemaal aan elkaar moet hangen? of per pc een weerstand en condensator naar de gezamenlijke ground.
De ground van de 8 pc's heb ik maar aan elkaar gehangen, want om dat allemaal te isoleren wordt teveel van het goede.

Is het nog verstandig om tussen die gounds per pc een bead te leggen of voegt dat niet veel toe?

Stijnos

Golden Member

Zo even een update van het resultaat,
Het heeft wat voeten in aarde gehad, maar al met al was dit wel echt weer een leuk project.

Ik zal hier even het project beschrijven en het resultaat laten zien.

Goed ik was dus begonnen met 2 development kits te bestellen van de MAX4899.
Deze waren niet al te duur en gezien bij dit soort projectjes vaak nogal haast hebben en ik dus geen tijd heb om meerdere printen te laten maken, wil ik vaak vooral al zoveel mogelijk als concept werkend hebben.
Nou met wat geknutselde usb kabel verloopjes en de development kits en een xplained atmel bordje was mijn concept bevestigd dat dit wel een grote kans van slagen had.
http://www.stijnmaes.nl/CO/mux/thumb/exp.jpg

vanuit hier ben ik mijn pcb gaan designen. Uiteraard hoort hier een hele zoektocht aan de juiste componenten qua connectoren, leds en knopjes bij.
Het moet er natuurlijk wel allemaal gelikt en professioneel uitzien.
Gelukkig was voor dit ontwerp het componenten tekort niet zo'n issue. Ik had nog wat micro controllers liggen en de rest van de componenten was allemaal goed verkijgbaar.
Ik heb van de meeste componenten gelijk een goede #D librarie gemaakt in Eagle, omdat ik de 3d view in Eagle/Fusion toch wel erg handig vind, zeker als zaken mechanisch in een behuizing moeten passen.
Dit was de eerste keer dat ik een 4 laags pcb heb gemaakt, wellicht niet echt nodig voor deze toepassing, maar wilde het gewoon eens proberen om de 90 ohms usb lijnen te maken. Uiteindelijk stelde dit niet zo heel veel voor.

Uiteraard moest het geheel ook in een kastje komen. Daar waar ik vroeger nog een standaard behuizing zocht, maar altijd zat te klooien met hoe daar dan fatsoenlijke gaten in te krijgen en uberhaubt alles passend, heb ik sinds 1,5 jaar een 3d printer hiervoor aangeschaft.
Het voordeel daarmee is dat je met wat creativiteit in wat wel en niet printbaar is, je iets helemaal naar je wens kan ontwerpen. Mocht na het bestukken van de pcb blijken dat je eerste idee toch niet helemaal pas ( en dat was zo :) dan kun je het eenvoudig aanpassen en opnieuw printen.

het mooie in Eagle/Fusion tegenwoordig is dat je dus ook echt even je pcb vooraf al even kan passen in je eigen ontworpen behuizing

http://www.stijnmaes.nl/CO/mux/thumb/3d.jpg

na wat probeersels, was de behuizing dus al gereed.

http://www.stijnmaes.nl/CO/mux/thumb/3dprint.jpg

Ok vervolgens de pcb besteld. Ik heb gekozen om met een bestukkings variant 2 pcb's op elkaar te plaatsen om zo 2x een 1:8 mux te krijgen.
De pcb's zijn in 4 lagen toch wat prijziger en je moet er minimaal 5 bestellen, dus wilde hier toch gebruik van maken om het zo te combineren. Functioneel was bijna alles hetzelfde dus prima idee :)

Toen was het dus even een dikke week wachten voor we verder konden.

Eenmaal de pcb's binnen (dit keer eens een keertje paars, die had ik nog niet ;) )stencil framepje gemaakt van wat rest pcb's en pasta erop.

http://www.stijnmaes.nl/CO/mux/thumb/pasta.jpg

Alle componenten waren inmiddels ook binnen via mouser en farnell.
Ik bestuk handmatig, maar wel met ene vacuum pick en place tafel.
Om dit zo efficient mogelijk te doen, heb ik een pc tooltje geschreven in WPF waarbij ik mijn gexporteerde BOM en XY data kan laden samen met een gerenderde afbeelding van de pcb. Deze tool markeerd met rode bolletjes precies waar welk component moet komen.

http://www.stijnmaes.nl/CO/mux/thumb/pnptool.jpg

Hier de vacuum pick and place tafel
http://www.stijnmaes.nl/CO/mux/thumb/pnptable.jpg

nadat alles geplaatst is kunnen de pcb's in de vapor phase om ze even af te bakken

http://www.stijnmaes.nl/CO/mux/thumb/placed.jpg

http://www.stijnmaes.nl/CO/mux/thumb/vapor.jpg

hierna het THT spul erop gezet:

http://www.stijnmaes.nl/CO/mux/thumb/assembly.jpg

nu het moment van de waarheid, stekker erin en kijken wat er gebeurd.
POEF! rook...
shit...
De ESD TVS diode fikte er meteen uit. hmm had ik die dan verkeerd geplaatst? nouja, dat ding eraf gestookt en verder. Nu bleek er ook geen 3,3V uit te komen waar ik verwachtte maar 4,2V...
paniek, had ik nu toch weer wat stomme fouten gemaakt in mijn ontwerp?
Na wat onderzoek, meende ik dat mouser een verkeerd IC had geleverd voor de 3,3 regulator, maar na nieuwe hiervan besteld te hebben, bleek het probleem nog steeds hetzelfde...nog eens goed kijken en toen bleek dat ik een foutje in de pinning van de footprint had gemaakt... grrrr.
Wat betreft de TVS diodes, lijkt farneel hier toch echt een ander type te hebben geleverd, deze heeft op pin 2 en 4 de vcc en gnd precies andersom... handig.. even omgedraaid dus.
met die spannings regelaar kon ik niet zoveel gezien de SC70 package toch wel erg klein is om draadjes aan te solderen.
Ik heb gelukkig een 3 pins hedertje voorzien voor 5V - GND - 3,3V. Ergens in al die rommel bakken had ik nog een low drop 3,3 regulator printje liggen dat hier gelukkig oppaste.

Het grootste deel van de software, had ik al werkend op de evaluatie bordjes opstelling, maar hier en daar wat aangepast naar de 8 poorten en leds etc.

Helaas kreeg ik die software nu weer niet geflashed. Hij kreeg geen connectie met de micro.. Wat nu weer? geen idee waarom, maar ik bleek de isp connector aan de verkeerde pinnen van de atmega geroute te hebben... WHY??? gelukkig, was dit gunstig gelayout en kon ik het relatief eenvoudig en netjes op de juiste pinnen hangen. De TQFP32 behuizing leende zich hier goed voor.

http://www.stijnmaes.nl/CO/mux/thumb/dow.jpg

Nou hierna werkte alles eigenlijk goed gelukkig en kon alles samengevoegd worden, de 2 pcb's met de juiste studs op elkaar

http://www.stijnmaes.nl/CO/mux/thumb/sandwich.jpg

en in de behuizing ermee!

http://www.stijnmaes.nl/CO/mux/thumb/final.jpg

http://www.stijnmaes.nl/CO/mux/thumb/final2.jpg

ok.
Lessons learned:

* check die footprints!!!!
* 3d modeling van behuizingen is ook leuk
* I love Eagle vs Fusion360
* bij een 4 laags print met een complete layer ground, is het termische oppervlak zo groot dat je geen ground pin fatsoenlijk meer gesoldeerd krijgt

Jullie ook bedankt voor jullie input!

[Bericht gewijzigd door Stijnos op 13 januari 2022 00:45:00 (80%)]

fatbeard

Honourable Member

Mooi geworden!

* check die footprints!!!!

altijd, ALTIJD, maar dan ook echt ALTIJD controleren!!! (bin d'Aire-Dunndad) ;)

* bij een 4 laags print met een complete layer ground, is het termische oppervlak zo groot dat je geen ground pin fatsoenlijk meer gesoldeerd krijgt

Daar heb je thermals voor...
Maar als je die niet goed hebt ingesteld (of je bout is te licht) blijft het knudde.

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.
Stijnos

Golden Member

ja die maakt eagle volgens mij wel zelf by default, maar zeker als ze dan in 2 volle lagen koper zitten dan moeten ze wel wat grotere afstand tot het koper hebben.

PE9SMS

Golden Member

Netjes, goed bezig hoor. Ga je nog een redesign doen ivm die regulator en ISP connector of laat je het zo? Ja, thermal spokes kan je wel gebruiken met meerdere planes op een pin :)

This signature is intentionally left blank.
Stijnos

Golden Member

ik heb de fouten wel gelijk gecorrigeerd in het ontwerp, maar dit was een custom made project en voor 1 stuks te kostbaar om het over te doen. Daarbij kon ik de spannings regelaar netjes met dat groene printje oplossen. De TVS diodes hoefde ik enkel om te draaien. Alleen die isp lijntjes, maar dat is ook wel netjes gereworked.

bprosman

Golden Member

Wat voor 3D printer heb/gebruik je Stijn ?

De jongere generatie loopt veel te vaak zijn PIC achterna.