Nieuws:

Nu in MSM 244 PRAKTIJK: Een kasteeltje uit Forex * Een diorama uit de mouw schudden: een tutorial door Evan Daes

Hoofdmenu

Trainduino: Rocrail & PIPO X9

Gestart door minitreintje, 20 augustus 2014, 22:01:44 PM

minitreintje

PietB,

Ik heb hier nog stickervellen liggen welke ik in de printer steek en dan bedruk met de layout vanuit EAGLE PCB.
Het probleem is echter dat het formaat van de stikkers soms niet beschikbaar is bij EAGLE printer setup. Als je wat speelt met wat afdrukken en formaten vind je wel eentje dat past :p

Dan verwijder je de sticker van het vel en leg je de bedrukte kant op tafel. Neem nu je PCB en centreer deze op de sticker.
Aangezien die sticker licht doorlatend is zie je de bedrukking erdoor ondanks hij omgedraaid is. Gewoon de PCB op de board afmetingen leggen die EAGLE heeft mee afgedrukt.

Aandrukken en de overschot van de sticker eraf knippen met een scherpe schaar zodat je geen randjes overhoud (kunnen loskomen anders!).

Een passer nemen en de gaatjes door de sticker maken, ik gebruik een passer omdat het makkelijker te hanteren is dan een naald. Bovendien heeft zowat student dat wel liggen :p

groeten Dylan
Märklin C-rail modulebaan met Arduino

PietB

En wat voor PCB gebruik je dan?

grt Piet.

minitreintje

Ik koop die op Ebay.com
http://www.ebay.com/itm/261381887796

Kosten 0,42 euro/stuk vroeger waren ze iets goedkoper... Maar ze blijven spotgoedkoop :)
PCB-GCODE in EAGLE laden, PCBZCorrect op de etch file los laten, proben met de CNC en frezen maar.
Op +- 30min. heb je een volledig printje.

groeten Dylan
Märklin C-rail modulebaan met Arduino

Geert

Mooi project. Ik volg het al enkele weken stilletjes, maar had nog niet gereageerd.

Zelf ook is met het idee gespeeld om tergmelders te maken per meldpunt voor C rails. Nu niet Wireless, maar gebruik makend van de digitale voeding. Een kleine µC in de beding van de C rail zal massa of stroom detecteren en terug zenden gesuperponeerd in de pauzes van het digitaal signaal, bleek moeilijk te organiseren zijn.

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

PietB

Ja dat CNC freesen daar zit de kneep, he?
Ik dacht al met die sticker er op is het moeilijk etsen.

grt Piet.

minitreintje

@Geert,

:o Dat is pas een uitdaging...

@Piet,

Dat frezen is inderdaad het 'etsen'. De sticker plakt op de component zijde.

Groeten Dylan
Märklin C-rail modulebaan met Arduino

Geert

Citaat van: minitreintje op 17 september 2014, 17:55:53 PM
@Geert,

:o Dat is pas een uitdaging...


Een uitdaging?

Het principe is eenvoudig. Gewoon het digitaal signaal meelezen en wachten tot de pauzes (die zijn er bij elk protocol). Dan een kleine belasting snel in en uitschakelen om een redelijk hoog frequent signaal, met wat info, te krijgen op het digitale signaal.  Dat dan aan de kant van de centrale er uit gefilterd wordt. (eigenlijk werkt de aanmelding van het Mfx protocol al zo, en het CV uitlezen van diverse protocols ook) Het probleem is om de verschillende terug melders te synkroniseren dat ze niet tegelijkertijd terug melden.  Dat kan via hun respectievelijke terug meld nummer, maar we zien wel, eerst andere hobby zaken oplossen.


Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

minitreintje

Het principe wel maar de uitwerking :P

groeten Dylan
Märklin C-rail modulebaan met Arduino

minitreintje

3. S88Wireless deel 3 + Intelligent Servo Decoder

3.1 S88Wireless upgrade

De S88Wireless heeft een lange testperiode ondergaan en de test is succesvol geslaagd! De terugmelding werkt perfect en snel.

Aangezien ik niet snel tevreden ben, heb ik de S88Wireless nogmaals verbeterd.
De NRF24L01+ heeft een IRQ-pin, deze wordt normaal aan een interrupt gehangen van de microcontroller.
Een interrupt (Nederlands: onderbreker) is een pin op de microcontroller die eens geactiveerd een bepaalde functie kan voorrang geven.
De microcontroller stopt dan even, voert de functie uit en gaat dan verder met zijn normaal programma.
Maar ik had helaas geen pin meer vrij om een interrupt te gebruiken, ik had nog wel 2 gewone digitale pins vrij.

Door in de loop() functie (het normale programma dat steeds herhaalt wordt) zo'n digitale pin uit te lezen met digitalReadFast() waar de IRQ-pin aanhangt,
is de functionaliteit vrij gelijk. De S88Wireless loopt hierdoor nog een stuk sneller en efficiënter doordat de microcontroller het draadloos gedeelte overslaat
als er geen data is die moet worden uitgelezen. Nu is de S88 data sneller bijgewerkt dan dat het CS1R de S88 bus kan pollen.

3.2 Intelligent Servo Decoder

Nieuw in ontwikkeling is de Intelligente Servo Decoder, een DCC decoder voor het aansturen van servomotoren.
Deze is vooral geschikt voor de goedkope SG90 servomotoren van Ebay. Deze servo decoder is geen gewone servo decoder zoals al op de markt is.
Heeft er iemand een servo decoder waarvan men zeker weet dat de wissel is omgezet op elk moment?
Neen! Zelfs Railcom+ kent dat niet, deze leest alleen maar de commando's uit die de Railcom+ decoder zendt naar de servo's.
Er is geen tweerichtingsverkeer mogelijk omdat servo's dat simpelweg niet ondersteunen.

Maar wat zijn we nu met die echte posities van de servo's als we ze niet naar onze centrale kunnen sturen?
Niks! Daarom heb ik er de Intelligente Servo Decoder ook voorzien van S88Wireless. Dus de decoder leest de stand van de wissels uit met hall sensoren,
dat zijn sensoren die reageren op een magnetisch veld. Verzamelt die data en stuurt deze door via dezelfde software als in de S88WirelessSlave draait.
Bij het programmeren bleek de microcontroller de opdrachten niet snel genoeg te kunnen verwerken, daarom heb ik de upgrade van S88Wireless uitgevonden.
Toen bleek dat zeer goed te werken en heb ik maar de S88Wireless zelf ook maar voorzien van een update.

Het enige verschil met de S88Wireless is dat er geen I/O pins over waren voor een DIP-switch te plaatsen om de adressen te kunnen instellen voor DCC en S88Wireless.
Voorlopig gebeurt dit door een 'learning button' waarbij de decoder in programmeermodus komt. Maar doordat ik opnieuw een tekort komt aan I/O pins wil ik dit realiseren met CV's.

Bovendien is er ook een Power Save Mode ingebouwd. Deze ontkoppelt de servo's zodra ze hun beweging hebben uitgevoerd en is jitteren ook verleden tijd bij mijn servo decoder.
Hierdoor ontvangen de servo's niet opnieuw de gevraagde positie en stopt het positioneren ook. Dat positioneren bij goedkope servo's is de oorzaak van de jitter.
De servo's onthouden wel dan hun laatste positie zolang ze onder spanning staan en passen die aan indien de servoarm zijn positie verliest.
Deze functie is ook beschikbaar bij de ESU Switchpilot Servo.

Als de decoder opstart na een stroomonderbreking zal hij de laatste positie van elke servo instellen zoals hij die heeft ontvangen van de centrale.
Zo wordt er voorkomen dat de servo's een onverwachte uitslag maken omdat ze meteen het servosignaal krijgen met de positie waar ze zich op bevinden.

En een laatste musthave functie is natuurlijk de 'kickback' functie, deze zet heel kort extra druk op de wissel wanneer deze zijn eindpositie bereikt.
De wisseltong zal dan zeker zijn eindpositie bereiken, deze functie is ook beschikbaar bij de OC32.



De realisatie van de Intelligente Servo Decoder zal voor zeer binnenkort zijn, momenteel ben ik nog de laatste hand aan het leggen (lees: debuggen) aan de Arduino sketch.
Volgende keer zeker foto's en filmpjes!


groeten Dylan
Märklin C-rail modulebaan met Arduino

minitreintje

3. S88Wireless deel 3 + Intelligent Servo Decoder

Ondertussen heb ik nog CV support van de NMRA DCC library in de code gestopt zodat ALLES instelbaar is via CV's.
Enkel schrijven is toegelaten, lezen/bevestigen geeft een foutmelding.

Ook heb ik nog een Watchdog timer meelopen nu welke kijkt of het programma nergens vastloopt. Loopt het vast, dan zal de Watchdog timer de microcontroller resetten.

Als laatste heb ik nog een functie geschreven welke de foute lezingen van de hallsensoren uitsluit omdat hallsensoren reageren op magnetische velden en motoren van loks, servo's, ...
produceren magnetische velden. Deze functie zit ook ingebakken in de S88Wireless SLAVE om valse meldingen te detecteren door o.a. vuil op het spoor.

3.3 Foto's & filmpje




Servo's, hall sensoren, DCC lees circuit met optocoupler, LED om allerlei zaken aan te geven
en een condensator om de servo power te backuppen.



S88Wireless BASE + de zender van de Intelligent Servo Decoder



De hall sensoren en een magneetje gekoppeld aan een servo arm om alles deftig te testen.



http://www.youtube.com/watch?v=BGdAf4qTFdk

Filmpje van de Intelligent Servo Decoder.
De kickback functie is hier wat overdreven om het zichtbaar te maken.


groeten Dylan
Märklin C-rail modulebaan met Arduino

Sattrickske

Je hebt het traag aansturen van de servo blijkbaar goed onder de knie, mooi zo!  Een mooie, vlotte en trage beweging van de servo arm, dat geeft een realistische overgang van de wissel.

minitreintje

4. Intelligent Servo Decoder V1.0

4.1 Eindelijk gereed!

Zoals eerder vermeld in dit topic was ik bezig met een DCC servo decoder dat ook terugmelding voorziet naar de centrale via de Trainduino S88-Wireless.
Na 8 maanden is hij eindelijk klaar: de Trainduino Intelligent Servo Decoder!

Deze decoder bezit de volgende functies:

  • Kan maximaal 4 servo's aansturen.
  • Volledig DCC compatibel.
  • Optische isolatie tussen DCC en de Intelligent Servo Decoder.
  • CV's lezen en schrijven op het programmeerspoor
  • Programmeerstand eenvoudig te activeren via DCC
  • Wisselstand bepalen a.d.h.v. de ingebouwde servo potmeter van elke wissel
  • Automatische calibratie van de potmeters van de servo's.
  • Geoptimaliseerd voor de Trainduino C-rail wisselaandrijving.
  • Anti-crash functie om te voorkomen dat de decoder blijft hangen.
  • Terugmelding van de wisselstanden door middel van 2.4Ghz radio modules (NRF24L01+) met error correction

4.2 C-rail servo wisselaandrijving

Het ontwikkelen van de Intelligent Servo Decoder was een heel gedoe, eerst en vooral hadden we natuurlijk de mislukte constructie van de servoaandrijving met hall sensoren. Daarna volgde nog wat problemen met de draadloze terugmelding. Maar goed alles is uiteindelijk nog opgelost geraakt en werkt nu bijna voortreffelijk :) Ik moet de PCB opnieuw tekenen want ik heb een grote fout gemaakt bij de ADC van de Arduino. De afstand tussen de ADC en de connector die naar de servo loopt is veel te lang waardoor er ruis op die pin komt. De analoge waarden fluctueren hierdoor en zijn dus onbruikbaar. Nu heb ik een draadje rechtstreeks naar de servo aangebracht waardoor ik de connector ontwijk en is het probleem gefikst :)

Omdat een goede aandrijving de helft is van een wisseldecoder heb ik zelf een aandrijving ontwikkeld die onder het ballastbed van een C-rail wissel kan worden geplaatst. Na enkele weken heb ik nu een volledig compatibele C-rail wisselaandrijving die werkt met een Chinese SG90 servo van Ebay. De bestanden voor deze aandrijving zullen beschikbaar zijn op Thingiverse. Ik heb nog steeds geen originele Märklin C-rail wisselaandrijving schroeven kunnen bemachtigen, ze zijn in bestelling en zullen geleverd worden pas midden september. Ik ben vrij zeker dat het ontwerp past daarom release ik de files al. Indien het niet zo zou zijn zal ik het wel horen hier.

4.3 Foto's




De bijna definitieve Intelligent Servo Decoder, de draden van de NR24L01+
moeten nog vervangen worden door afgeschermde/shielded meeraderige kabel




Onderkant



Zijkant, de bouten zijn nog steeds niet ingekort...


groeten Dylan
Märklin C-rail modulebaan met Arduino

dani

ik blijf met spanning en aandacht volgen....  goed bezig zo !
De kruik is te water gegaan...
De kruik is niet meer.

Sattrickske

Ben een tijdje weggeweest wegens tijdsgebrek (verbouwingen), en nu terug op het forum en als eerste zie ik jouw draadje terug.  En ik zie meteen een heleboel knap werk geleverd, een ingenieur in spe at work!  Knap gedaan, mag je echt fier op zijn!

minitreintje

Märklin C-rail modulebaan met Arduino