hallo,
Ik zoek een methode om seriele data te multiplexen. Ik heb een aantal ir ontvangers die een serieel signaal opvangen (one-way). De zenders zenden constant eenzelfde signaal uit en als deze langs de ontvanger komt word dit een aantal keer opgevangen. (Het is een tracking systeem voor treinen op een spoor.)
Bestaat er een component die deze signalen achter elkaar kan zetten zodat ik deze kan inlezen? Of moet ik zelf microcontrollers programmeren voor deze taak?
alvast bedankt,
Da Beast
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Je vraagstelling is onduidelijk. Inlezen in wat?
Jij moet je inlezen in de electronica. Dat kan bijvoorbeeld door op picbasic te beginnen of door een boek te kopen (Electronica for dummies?)
EricP
mét CE
Maar... als je zo'n signaal ontvangt... Dan is het toch al serieel? Wat moet er dan nog achter elkaar gezet worden?
Als je bedoelt dat elke zender een eigen ID uitstuurt en dat deze ontvangen worden door meerdere ontvangers (en je dus feitelijk een paar parallel systemen hebt)... Er zal vast geen component zijn wat dat protocol kent en het spul netjes op een hoop veegt.
Voor een bruikbaar antwoord zul je duidelijk moeten maken hoe het spul zendt en hoe het ontvangen wordt. (ofwel: veel mogelijkheden, ook veel onmogelijkheden...)
We hebben dus een spoor dat "vol" ligt met ir ontvangers en een trein met een uniek id dat via ir wordt verzonden. Deze trein wordt aangestuurd met radiofrequentie via de pc. Via de ir willen we de trein volgen op de pc. Op het spoor liggen een 60tal ir-ontvangers die we (voorlopig) elk apart moeten aanbieden aan de pc.
We zoeken dus een systeem om deze data dat ontvangen wordt door alle ir-ontvangers te bundelen en maar op 1 poort aan de pc aan te bieden.
Hij bedoelt dat beide signalen soms tegelijk uitgezonden worden. In dat geval wil je ze queue-en.
De ontvangers moeten wel ieder slechts 1 signaal ontvangen natuurlijk. Tegelijk op 1 IR sensor gaat hem niet worden denk ik.
Ik heb zon multiplexer gemaakt voor 2->1 COM poorten in C op een gewone PC. De eigenlijke logica is niet zo heel moeilijk en zou wel in een uC passen. Het idee wat ik gebruikte is dit:
- een antwoord komt altijd na een vraag
- tijd tussen vraag en antwoord is bekend (200mS)
- mux is in idle-mode op poorten 1 en 2 aan het wachten.
- Als 1 gaat zenden gaat hij in 1->3 mode en stuurt hij de data naar 3.
- Als dan poort 2 iets zend queued ie dat.
- Elke ontvangen byte van 3 wordt naar 1 gestuurd zolang in deze modus.
- Wanneer 1 en 3 nu weer meer als 200mS stil dan weer terug naar idle-modus
- wanneer idle eerste buffer van poort 2 legen dmv in mode 1->2 plaatsen.
Dit werkt in de praktijk top, zolang de criteria 1 en 2 gelden.
E: in jouw geval (one-way) is het nog iets simpeler. Je maakt meerdere soft-uarts en stuurt ze op 1 poort weer uit. Wel soort idle-delay inbouwen zodat pakketten niet doorelkaar lopen.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Dat kan niet.
Er is 60x keer te veel data om over 1 poort naar de PC aan te bieden.
En dan nog. Als de PC denkt dat er gewoon 1 IR ontvanger aan hangt, dan ziet ie ineens als de trein 1 langs snesor 5 rijdt: "hey trein 1". En even later rijdt ie lang s sensor 6: "hey, trein 1".
Dan weet je nog niks.
Idd, elke sensor moet een ID hebben of aan een aparte poort hangen. Dat laatste kan met een de-multiplexer als je de stand daarvan in de gaten houdt.
EricP
mét CE
Op 18 augustus 2011 16:53:49 schreef Da Beast:
We hebben dus een spoor dat "vol" ligt met ir ontvangers en een trein met een uniek id dat via ir wordt verzonden. Deze trein wordt aangestuurd met radiofrequentie via de pc. Via de ir willen we de trein volgen op de pc. Op het spoor liggen een 60tal ir-ontvangers die we (voorlopig) elk apart moeten aanbieden aan de pc.
Ja, leuk als je dat kan multiplexen, maar dan moet je dus wel een ID van de ontvanger meegeven. Wellicht had je dit zelf al verzonnen, maar in elk geval niet beschreven. (als je dat niet doet, dan weet je alleen *dat* er ergens een trein is, maar niet waar).
We zoeken dus een systeem om deze data dat ontvangen wordt door alle ir-ontvangers te bundelen en maar op 1 poort aan de pc aan te bieden.
Je zult toch uit moeten leggen hoe die communicatie in elkaar zit. 'Een systeem om het te bundelen' is managers-taal en dat werkt dus doorgaans niet...
Overigens had Baytech vroeger 'multiports'. Als het RS232 was en messages met een terminator had, dan kon die multiport er wel wat mee. Software moest het wel begrijpen, er kwam een poortnummertje voor (je moet tenslotte wel weten waar die data vandaan komt...)
aangezien er al vastgesteld is dat die software toch zoiets moet snappen, zal de bitrate aanpassen ook geen punt mogen zijn. Dan kun je prima meerdere 'streams' tegelijk naar die PC jassen - ze zullen niet alle 60 tegelijk beginnen te brullen (en als ze dat wel doen, wel, dan moet je de bitrate fors opvoeren
)
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Eenvoudig zal het niet zijn. Je kunt een vorm van TDM gebruiken, maar dan moet je wel bij elke sensor extra hardware maken, om de data in het juiste tijdslot te krijgen. (En bij de PC weer uit elkaar rafelen...)
sdk
PC9OGF
Je zou eens kunnen bekijken of het praktisch is om elke sensor aan een microcontroller te koppelen die het seriele signaal omzet in CAN. Dan kun je vervolgens alle sensors op de bus aansluiten en op de PC uitlezen met een CAN naar USB omzetter.