Gebruikershulpmiddelen

Site-hulpmiddelen


project:treinprutser

TreinPrutser

De TreinPrutser is een systeem om de Modelbaan met behulp van de computer te besturen.

Inleiding

Historie

Een heel aantal jaren geleden hebben enkele oud-vrijwilligers een systeem in elkaar gezet om de modelbaan te besturen. Dit systeem was gebaseerd op een 80C32 microcontroller, en zelf ontwikkelde randapparatuur die de wissels (en seinen) aanstuurde, en op elk baanvak de snelheid van de trein regelde.

Dit apparaat werd de TreinPrutser genoemd. Samen met de Wizznik (de wisselsturing) en de BlokPower modules werden respectievelijk de wissels en de baanvakken aangestuurd. Natuurlijk kon de TreinPrutser het niet alleen af. Via een seriele kabel werd de TreinPrutser op een “gewone” computer aangesloten, en daar kon men met de muis, of het toetsenbord wissels omzetten, en de treinsnelheid regelen.

Nu!

Op dit moment is er geen computergestuurd systeem voor de modelbaan. Hier wilde ik een verandering in maken. Omdat er bij de Robotica al ervaring is opgedaan met de Atmel AVR microcontrollers dacht ik deze te gaan gebruiken voor een nieuw TreinPrutser systeem. Versie 2.0.

Microcontrollers

Omdat microcontrollers tegenwoordig niet zo duur meer zijn als vroeger is het makkelijker om het hele systeem op te bouwen uit allemaal kleine modules met allemaal een microcontroller, en die met een soort van netwerk met elkaar te verbinden, dan een centrale computer te maken met allemaal enorme kabels naar stuur-elektronica onder de baan.

Het plan

Het TreinPrutser systeem bestaat uit een aantal besturingsmodules. Dit zijn de

  • BlokPrutser (met zijn BlokPower modules), die de snelheid regelt op de baanvakken, maar ook kan zien of er een trein (of sommige wagons) staat.
  • RelaisPrutser, die kan allerlei dingen schakelen, zoals wissels, seinen, verlichting
  • ServoPrutser, die kan een aantal servo's besturen (bekend van modelvliegtuigen en -auto's). Handig voor zelfgemaakte wissels of spoorbomen.

Deze modules zijn verbonden met, wat ik het PrutsNet heb genoemd. Op elke module kun je een kabel aansluiten die je op een NetwerkPrutser kan aansluiten. Als het aantal aansluitingen op een NetwerkPrutser op zijn, kun je deze weer op een andere NetwerkPrutser aansluiten, net zoals een boom, waarbij de besturingsmodules de bladeren zijn, de PrutsNet kabels de takken, en alle takken bij elkaar komen in NetwerkPrutsers.

En dan komt de meest “centrale” NetwerkPrutser, de stam van de boom, via een kabeltje aan een PC, waar je dan precies kan zien hoe de wissel staat, waar de treinen rijden, en je kan hier ook de boel bedienen.

Onderdelen

BlokPrutser

BlokPower

RelaisPrutser

ServoPrutser

NetwerkPrutser

PrutsNet

Het PrutsNet is een netwerk met een boom-topologie. Elke netwerkverbinding zit tussen een “master” en een “slave”. Een master zit dichter bij de stuur-PC en de slave zit dichter bij de modelbaan. Hieronder is een voorbeeldschema getekend (nou ja, getekend…) hoe het aangesloten kan zitten. Elke kabel zit tussen twee Prutsers, aan de bovenkant aan de master, en aan de onderkant aan de slave. Een NetwerkPrutser kan dus zowel een master zijn van bijvoorbeeld een BlokPrutser, maar ook een slave van waarschijnlijk de SuperPrutser.

                              [ PC ]
                                |
                         [ SuperPrutser ]
                             /      \
                            /        \
                           /          \
                 [ BlokPrutser ]  [ NetwerkPrutser ]
                                  /       |        \
                                 /        |         \
                                /         |          \
                [ RelaisPrutser ]  [ ServoPrutser ]  [ Blokprutser ]

Kabel

De bekabeling is gebaseerd op een 8-polige kabel. Deze kabel bevat de volgende signalen:

Pin Signaal Beschrijving
1 GND Ground (signaal en voeding)
2 ATTN Attention Request
3 SS Slave Select
4 MOSI Master Out - Slave In (Data naar slave)
5 MISO Master In - Slave Out (Data naar master)
6 SCK Serial Clock (voor MISO en MOSI data)
7 RESET Slave reset (o.a. voor ISP programmeren)
8 VCC 5V power (voeding voor controller)
ATTN

Voor de communicatie gebruiken we SPI, dit zit in de AVR controller ingebouwd. Omdat dit protocol gemaakt is om vanuit de master een slave aan te sturen, en niet andersom, moeten we de master wel vertellen dat een slave iets te melden heeft. Dit noemen we “Attention”, afgekort ATTN. Dit signaal wordt dus door de slave naar de master gestuurd.

SS

Het Slave Select-signaal, afgekort SS, is een standaard signaal van SPI. Hiermee geeft de master aan dat de slave moet opletten.

MOSI

Dit signaal is de data die van de master naar de slave gestuurd wordt. De naam “Master Out - Slave In” geeft dit al aan.

MISO

Hier wordt data teruggestuurd van de slave naar de master. “Master In - Slave Out” geeft hier ook al aan wat de bedoeling is.

SCK

Met de “Serial Clock” wordt de data van de MOSI en de MISO de controllers ingeschoven. De MOSI en MISO verbindingen zijn seriele verbindingen, dit betekent dat van een byte (8 bits) elke keer één bit wordt opgestuurd. De SCK geeft dus als een soort dirigent de maat aan waarbij dit gebeurt.

RESET

Hiermee wordt de Prutser (de slave dus) opnieuw opgestart.

VCC

Natuurlijk moeten de Prutser ergens hun energie vandaan krijgen. VCC is de 5 Volt voedingsspanning, die een controller mag gebruiken (hoeft niet, als die een eigen voedingsaansluiting heeft). Als een Prutser 12 Volt (of iets anders) nodig heeft, moet die zelf maar zorgen dat die er aan komt.

GND

Dit is de centrale aarde van alle signalen en de voedingsspanning VCC.

Protocol

Master naar Slave

Als een slave gestuurd moet worden, wordt een standaard SPI verbinding opgebouwd, waarbij de master de SS activeert, en met MOSI een commando-byte verstuurd. Afhankelijk van dit commando-byte wordt de rest van de communicatie afgehandeld door meer gegevens te verzenden (met MOSI), of gegevens te ontvangen (MISO). In sommige gevallen kan dit zelfs tegelijkertijd.

Slave naar Master

Als een slave iets wil vertellen aan de master, dan geeft die dat aan door de ATTN te activeren. De master weet dan dat de slave iets te vertellen heeft en start dan de verbinding, op de zelfde manier als hierboven beschreven. Het commando-byte zal dan iets als “Vertel Maar” betekenen of zo.

project/treinprutser.txt · Laatst gewijzigd: 07-09-2008 01:32 door alx