BeneluxSpoor.net forum
Vraag en antwoord => Elektronica en analoog => Topic gestart door: Dennis1984 op 22 May 2025, 16:33:59
-
Hallo,
Een jaar of tien geleden ben ik samen met iemand anders van dit forum bezig geweest met kleine (Zwitserse) seinen op schaal. Een techniek die we toen toepasten waren SMD leds, 0603, op een printplaat die in een geëtste behuizing ging. De printplaat kon je door het hout heen halen en onder de baan kon je er meteen je draden aan solderen. Uiteindelijk zelfs de LOKI (Zwitsers modelbouwtijdschrift) mee gehaald en het idee van een printplaat in je sein is sindsdien door veel andere partijen overgenomen.
Mijn idee was altijd al om ook een DCC-decoder te integreren in een sein. Terug naar het digitale concept waarbij je écht maar 2 draden hebt ;). Technisch was het helaas nog niet mogelijk.
De techniek heeft intussen niet stilgestaan. Seinen kunnen tegenwoordig prachtig 3D worden geprint. Elektronica is zo klein geworden dat zelfs de aansturing van een armsein met servo en decoder in een mastvoet past (Viessmann). En Schneider MBZ heeft recent nieuwe lichtseinen geïntroduceerd (https://schneider-mbz.de/collections/schneider-premium/H0+SBB+Lichtsignal) die je met een USB-C connector kunt inpluggen in een voet. Dat was eigenlijk de missende schakel. Helaas doen zij het zonder decoder.
Redenen genoeg dus nog eens een nieuwe poging te wagen. Zou dit conceptueel en technisch kunnen?
In de voet komt een printplaat. Hierop sluit je de twee DCC signaaldraden aan. Deze wordt met diodes en een LDO omgezet naar 5V. Op de printplaat zit ook een AVR processor (AVR128DA32). Onze forumgenoot AP3737 heeft een prachtige DCC bibliotheek (https://github.com/aikopras/AP_DCC_library/tree/main) gemaakt die hier uitstekend op draait.
Met een USB-C connector wordt het sein aangesloten. Over de USB-C stekker wordt het I2C protocol gebruikt. Is dat een risico? Ja. Theoretisch kan iemand natuurlijk de boel aan een stekker prikken de boel opblazen. Aan de andere kant gebruiken we 5V (en kunnen we dus veel pins gebruiken zoals ze ook in échte USB-C apparatuur gebruikt wordt) en liggen de aansluitingen niet echt open dat iemand denkt: hé, daar plug ik eens een oplader in.
Punt is dat er niet echt een alternatief is: USB-C is lekker klein en vooral ook heel goed en goedkoop verkrijgbaar waardoor het een goed haalbare oplossing wordt.
En dan het sein dus: daar zit ook een printplaat aan met 2 chips. Eén is een GPIO-chip met I2C. Hieraan worden weerstanden gehangen waardoor de decoder in de voet weet welk sein er precies in zit en zichzelf kan configureren. De andere is de PWM led driver, al naar gelang met 24 of 36 uitgangen. 24 voor een enkel sein. 36 voor als je een seinbrug met meerdere seinen wilt aansluiten. 24 lijkt veel, maar een Zwitsers L-sein met voor- en hulpsein kan zo in zijn eentje 14 of meer lampen hebben.
Plaatje zegt meer dan duizend woorden.
Concept:
(https://images.beneluxspoor.net/bnls_2025/DCCSignalDecoder-drawio-682f32e3df130.png) (https://images.beneluxspoor.net/bnls_2025/DCCSignalDecoder-drawio-682f32e3df130.png)
En alvast even snel in een uurtje PCB schetsen getekend in Kicad:
Decoderzijde (11x30mm):
(https://images.beneluxspoor.net/bnls_2025/DCC-SignalDecoder-682f32e3e379b.png) (https://images.beneluxspoor.net/bnls_2025/DCC-SignalDecoder-682f32e3e379b.png)
Seinzijde (8x20mm). Aan de zijde die je niet ziet komen soldeerpads waar de koperlakdraden op worden gesoldeerd:
(https://images.beneluxspoor.net/bnls_2025/Dcc-SignalSmall-682f32e433b98.png) (https://images.beneluxspoor.net/bnls_2025/Dcc-SignalSmall-682f32e433b98.png)
Hebben jullie nog goede tips? Dingen die ik over het hoofd zie? Ben benieuwd :).
Economisch kan het trouwens goed uit. Heb even een testje gedaan met de componenten bij JLCPCB en dan kost de voet ongeveer € 6,- per print (volledig geassembleerd bij 25 stuks) en ik verwacht dat het seinprintje nog iets goedkoper is.
Met vriendelijke groet,
Dennis
-
Leuk project om te volgen
-
zeer interesant.
Vraagje. Is dit dan voor H0 of alle schalen en voor welke seinstelsels is dit dan?
Richard
-
Hi Richard,
Theoretisch kun je dit voor alle seinen maken. In principe kun je ook kleinere schalen gebruiken, maar je voet door je bodemplaat wordt dan wel in verhouding heel groot.
Ik rij Zwitsers en het probleem daar is dat de seinen (het oude 'L' stelsel) enorm veel lampen hebben. Veel decoders, zoals bijvoorbeeld die Littfinski/LDT, kunnen daarom maar 2 Zwitserse seinen op een decoder aansluiten. Het wordt dan al snel een duur grapje.
Nu kun je theoretisch zelf een decoder maken met het principe wat ik hier heb met zonder problemen 72 LED-aansluitingen (en misschien doe ik dat ook nog wel eens), maar het is ook wel handig dat je direct de decoder geïntegreerd hebt in de seinvoet. Zo hoef je geen 13 draden te trekken, maar slechts 2.
Met vriendelijke groet,
Dennis
-
Ik denk dat Viessmann met artnr 4700 iets zeer vergelijkbaars op de markt heeft. Waarschijnlijk wel wat prijziger. Ik zo'n ding en ik ga die te zijner tijd in passen in mijn huidige baan.
grtz,
Gerard
-
Ik heb het idee dat je je eigen doel een beetje voorbij schiet. Ik snap waarom Schneider MBZ USB-C gebruikt. Zij solderen alle draden op zo'n connector en maken er 1 geheel van en voila je hebt een uitneembaar sein. Maar jij breekt 1 decoder nodeloos op in 2 delen, en dat is hartstikke duur. Als die andere print al 3€ kost dan zit je op 9€ per stuk en dat is veel geld, vind ik.
Ik heb zelf deze gemaakt. Want ook wilde een decoder in een sein hebben. Deze print is 1cm x 4cm, ik had bedacht dit ding in een buisje (PVC ofzo) te bouwen en op het buisje je sein te monteren. De draden van het sein zelf soldeer je op het printje. En dan zijn sein en decoder 1 geheel.
(https://raw.githubusercontent.com/bask185/Train-Science-DIY/refs/heads/master/PCB_RELEASES/singleLightDecoder/singleLightDecoder.png)
Het aansluiten doe ik met een 2 polige JST connector. Je steekt het sein met zijn voet van boven in de baan, je plugt aan de onderkant de 2 polige JST stekker er in en je bent klaar.
(https://images.beneluxspoor.net/bnls_2023/deleteme1-64e899a2009ae.png)
Deze kost €4 om te maken (30 stuks) maar dat komt hoofdzakelijk doordat er eigenlijk een verkeerde/dure/obsolete attiny85 van €1,80 er op zit. Een attiny1616 had ook volstaan en die zijn €0.70 dan was die €3 en die heeft menig IO pin.
Ik snap ook niet helemaal waarom je een I2C extender gebruikt, daar jou gekozen uProcessor meer dan genoeg pinnen ter beschikking heeft. Ik zou dan net als Schneider MBZ dan een print zonder elektronica maken en alleen de connector met soldeer pads maken.
Die avr van je kan al je leds aansturen die je wilt, zelfs met PWM. Vind ik zelf overkill maar voor een sein, maar ok.. als je het toch hebt. Ik zou dan eerder een enkele print maken, zonder USB aansluitingen, zonder I2C dingen en alleen paar transistortjes. JLC heeft die hele hele kleine dubbele NPN dingen in het assortiment zitten. Dan kan je aan 1 kant van je print de benodige 14-16 soldeer pads maken. Zo'n printje mag trouwens best lang zijn he, als die 8cm lang is, dan zal geen kwaad kunnen. Mij maakt het niet uit natuurlijk, maar je kan jouw fabricage kosten minstens door 2 delen. En je eind product met 2 een polige JST in 1.00 of 2.54mm is net zo makkelijk, right.
Want dit
en onder de baan kon je er meteen je draden aan solderen
no offense, dit is echt verschrikkelijk :-X. Niemand wilt onder zijn baan solderen . Dan krijg je geheid tin in je gezicht. Daar ben ik ook geweest (y)
Mvg,
Bas
-
Want ditno offense, dit is echt verschrikkelijk :-X. Niemand wilt onder zijn baan solderen . Dan krijg je geheid tin in je gezicht. Daar ben ik ook geweest (y)
Daarom bouwen verstandige en slimme mensen modules ;D ;)
-
Ik denk dat Viessmann met artnr 4700 iets zeer vergelijkbaars op de markt heeft. Waarschijnlijk wel wat prijziger. Ik zo'n ding en ik ga die te zijner tijd in passen in mijn huidige baan.
Ha Gerard, die 4700 heb ik ook maar dat is een armsein. Dit is een lichtsein.
Ik heb het idee dat je je eigen doel een beetje voorbij schiet. Ik snap waarom Schneider MBZ USB-C gebruikt. Zij solderen alle draden op zo'n connector en maken er 1 geheel van en voila je hebt een uitneembaar sein. Maar jij breekt 1 decoder nodeloos op in 2 delen, en dat is hartstikke duur. Als die andere print al 3€ kost dan zit je op 9€ per stuk en dat is veel geld, vind ik.
Mijn sein wordt dus ook uitneembaar. Aan het tweede printplaatje komt dus een 3D-geprint sein. In dat opzicht dus identiek.
Ik heb zelf deze gemaakt. Want ook wilde een decoder in een sein hebben. Deze print is 1cm x 4cm, ik had bedacht dit ding in een buisje (PVC ofzo) te bouwen en op het buisje je sein te monteren. De draden van het sein zelf soldeer je op het printje. En dan zijn sein en decoder 1 geheel.
Het aansluiten doe ik met een 2 polige JST connector. Je steekt het sein met zijn voet van boven in de baan, je plugt aan de onderkant de 2 polige JST stekker er in en je bent klaar.
Zo'n JST connector is altijd een goed idee, al vind ik ze over het algemeen wat lomp als je echt iets heel fijns probeert te maken.
Deze kost €4 om te maken (30 stuks) maar dat komt hoofdzakelijk doordat er eigenlijk een verkeerde/dure/obsolete attiny85 van €1,80 er op zit. Een attiny1616 had ook volstaan en die zijn €0.70 dan was die €3 en die heeft menig IO pin.
Ik snap ook niet helemaal waarom je een I2C extender gebruikt, daar jou gekozen uProcessor meer dan genoeg pinnen ter beschikking heeft. Ik zou dan net als Schneider MBZ dan een print zonder elektronica maken en alleen de connector met soldeer pads maken.
Ja goed punt. Ik had eerst ook bedacht de pins van de lampen over de USB connector zelf te doen. Alleen heb ik dan niet genoeg pins vrees ik. Daarnaast wil ik ook een Zwitserse seinbrug in dezelfde decoderprint kunnen stoppen: daar kom ik aan een hoop lampjes. Verder had ik bedacht dat het zero-config is. Stel dat je een 3-lamp sein hebt en je wil een 4-lamp sein, dan moet je hem eruit kunnen halen en je nieuwe erin en moet het gelijk werken. Het was dus gedacht vanuit gebruikersgemak ;D.
Die avr van je kan al je leds aansturen die je wilt, zelfs met PWM. Vind ik zelf overkill maar voor een sein, maar ok.. als je het toch hebt. Ik zou dan eerder een enkele print maken, zonder USB aansluitingen, zonder I2C dingen en alleen paar transistortjes. JLC heeft die hele hele kleine dubbele NPN dingen in het assortiment zitten. Dan kan je aan 1 kant van je print de benodige 14-16 soldeer pads maken. Zo'n printje mag trouwens best lang zijn he, als die 8cm lang is, dan zal geen kwaad kunnen. Mij maakt het niet uit natuurlijk, maar je kan jouw fabricage kosten minstens door 2 delen. En je eind product met 2 een polige JST in 1.00 of 2.54mm is net zo makkelijk, right.
Ik ken die NPN's, gebruik ze op een printplaat voor in een locomotief (heb je ook al eens gezien volgens mij ;) ). Lengte is overigens wél een punt wat mij betreft, want op onze club is de hoogte tussen schaduwstation en zichtlaag beperkt dus je wil niet dat dat sein 10cm onder het hout uitsteekt.
Ik ga nog eens kijken naar die JST connectors. Maar welke idioot bij dat bedrijf heeft bedacht dat je je voor elke datasheet en 3D-download moet registreren en je alles per e-mail toegestuurd krijgt ::).
In ieder geval dank voor je uitgebreide feedback en meedenken Bas: wordt gewaardeerd en kijk uit naar verdere reacties van je (y).
Met vriendelijke groet,
Dennis
-
Leuk!
Even off-topic:
Ha Gerard, die 4700 heb ik ook maar dat is een armsein. Dit is een lichtsein.
Precies. Voor armseinen ligt mijn project (helaas) al behoorlijk lang stil (te veel te doen). Zie ook: https://forum.beneluxspoor.net/index.php?topic=108775.0
Wat armseinen betreft: ook Theo Maassen (vooral actief met de MobaLedLib) heeft daarvoor ook wat leuke dingetjes gedaan.
Nu weer terug naar lichtseinen. je hebt toch een steekverbinding / stekker nodig, dus USB zou een heel leuke optie zijn. Wat processoren betreft: de AVR128DA32 zou je waarschijnlijk ook door een Tiny Series 3 kunnen vervangen. Deze zijn bijna identiek, maar wat beperkter en goedkoper. De bovengenoemde library draait daar ook op.
Groet
Aiko
-
@Aiko Ik dacht inderdaad al begrepen te hebben dat je library ook op de Attiny series draait (je bedoelt neem ik aan de Series 2). Dan inderdaad maar even mijn AVR swappen voor de Attiny, vooral omdat die in een lekker kleine footprint verkrijgbaar zijn (3x3mm).
Ik heb ook nog een denkfout gemaakt met mijn PCAL6416AHF GPIO chip op de seinprint, want ik moet weerstandswaardes uitlezen maar dat lukt daarmee natuurlijk helemaal niet. Dus kan ik twee dingen doen: óf gewoon 4 weerstandjes op de seinprint en ze aansluiten via de RX en TX pins van de USB-C connector (daarmee wordt het max aantal eigenlijk 4, wat problematisch is als ik 6 of 8 seinen wil configureren), óf ik gebruik een goede ADC chip. Ik dacht nu aan de TLA2024IRUGT (https://jlcpcb.com/partdetail/TexasInstruments-TLA2024IRUGT/C2670138) van TI. Lekker klein ook.
Nog even mijn gedachtespinsel:
Zodra je een sein inplugt wordt via I2C contact gelegd met de ADC chip op de seinprint (die vast zit aan het sein). Zo worden 4 weerstandswaardes uitgelezen (via voltage divider-schakeling). Bijvoorbeeld 820, 330, 20, 0. De decoder weet dan dat het sein uit drie seinen bestaat (bijvoorbeeld hoofdsein, voorsein en een derde hulpsein - de laatste is 0 en daar is dus geen sein aangesloten). Je kunt ook een seinbrug aansluiten, dan heb je meer dan 4 seinen nodig en dat kan als je 2 ADC chips hebt.
Elke weerstandswaarde staat voor een bepaald sein. Bijvoorbeeld 820 staat voor een hoofdsein met 5 lampen in volgorde groen-rood-groen-geel-groen. De decoder weet dan dat de eerste 5 pins op de LED PWM chip bij dit eerste sein horen. Zo worden de leds gealloceerd horend bij alle seinen.
Maar nu nog het laatste. Ik ga met DCC aspecten werken, dus niet met traditionele DCC 0 en 1. Als de decoder DCC-adres 25 krijgt toegewezen en hij een seinprint detecteert met drie seinen, dan luistert hij automatisch op de adressen 25, 26 en 27. Als ik op adres 25 dan DCC aspect '5' stuur, wat correspondeert met fb5 van het SBB L-stelsel, weet de decoder dat hij de drie groene lampen op het sein aan moet zetten.
Het leuke hieraan is dat als je besluit je 3-lampige sein om te wisselen voor 4-lampig je verder eigenlijk niets aan de configuratie hoeft te wijzigen.
Is dit overdreven? Misschien wel. Is het leuk om te kijken of het werkt? Ja ;D.
Met vriendelijke groet,
Dennis
-
want ik moet weerstandswaardes
Opsich is het configureren van een sein best makkelijk uit te voeren. Wat ik bijvoorbeeld zou doen, is om een drukknopje te gebruiken. Een kort drukje gevolgd door een DCC adres, kan je gebruiken voor het sein adres. Maar als je dan bijvoorbeeld een lang drukje doet, kan je een wisseladres naar keuze gebruiken om een sein type kiezen. Dan kan je die hele ADC achterwege laten.
Mvg,
Bas
-
Opsich is het configureren van een sein best makkelijk uit te voeren. Wat ik bijvoorbeeld zou doen, is om een drukknopje te gebruiken. Een kort drukje gevolgd door een DCC adres, kan je gebruiken voor het sein adres. Maar als je dan bijvoorbeeld een lang drukje doet, kan je een wisseladres naar keuze gebruiken om een sein type kiezen. Dan kan je die hele ADC achterwege laten.
Mvg,
Bas
Dat is zonder meer een eenvoudiger keuze. Overigens komt er wel een drukknopje op, maar die heb je dus alleen nodig om het eerste DCC-adres (van de eventuele reeks) in te stellen.
Nadeel van die keuze is wel dat als je een ander sein inplugt (je wisselt bijvoorbeeld van een sein met drie lampen naar een sein met vier lampen) je hem opnieuw moet configureren. De vraag is natuurlijk hoe vaak je dat doet maar dat vond ik nou net het coole van mijn oplossing: hij detecteert welke seinconfiguratie je inplugt.
Een ander punt is dat een Zwitsers sein uit meerdere 'subseinen' kan bestaan. Zie bijvoorbeeld deze foto:
(https://images.beneluxspoor.net/bnls_2025/Segnali-Riazzino-Cugnasco-281109-6831cc6064bf2.jpg) (https://images.beneluxspoor.net/bnls_2025/Segnali-Riazzino-Cugnasco-281109-6831cc6064bf2.jpg)
(bron Wikipedia, CC BY-SA 3.0, link (https://de.wikipedia.org/wiki/Signalsystem_L#/media/Datei:Segnali_Riazzino-Cugnasco_281109.jpg))
Daar is het eerste subsein het hoofdsein met drie lampen. Het tweede subsein het voorsein met vier lampen (lijkt net vijf op de foto). En het derde sein is dat kastje eronder, al kan ik niet precies zien wat het is. Een goed overzicht van het uitgebreide Zwitserse seinstelsel vind je hier (https://gleis3a.de/threads/signalsystemschweiz).
Met vriendelijke groet,
Dennis
-
Hallo Dennis
Ja, natuurlijk bedoelde ik de Tiny 2 series. Was een typo van mij. Ik heb de library met alle Microchip Tiny curiosity boards getest, en mocht je alsnog tegen een probleem aanlopen (je wilt met aspecten werken, en die zijn relatief beperkt getest), laat het me dan weten.
Wat betreft het configureren van de decoders: wat is precies de bedoeling? Ik heb het gevoel dat ik er helemaal naast zit en het probleem niet begrijp.
Groet,
Aiko
-
Hallo Dennis
Ja, natuurlijk bedoelde ik de Tiny 2 series. Was een typo van mij. Ik heb de library met alle Microchip Tiny curiosity boards getest, en mocht je alsnog tegen een probleem aanlopen (je wilt met aspecten werken, en die zijn relatief beperkt getest), laat het me dan weten.
Wat betreft het configureren van de decoders: wat is precies de bedoeling? Ik heb het gevoel dat ik er helemaal naast zit en het probleem niet begrijp.
Groet,
Aiko
Ja nou Bas heeft wel een punt dat ik altijd ingewikkelde oplossingen probeer te bedenken voor problemen die ik dan zelf tot een probleem maak ;D.
Maar waar het om gaat is dat je een seinvoet hebt en een sein. Het sein plug je met de USB C-stekker in de seinvoet. In de seinvoet zit de decoder. Doordat elk type sein een paar andere weerstandswaarden heeft, kan de seinvoet ontdekken welk type sein in hem geplugd is (met welke lampconfiguratie). Op die manier hoef je in beginsel niets te configureren in de decoder (behalve dus een DCC-adres).
Hoop dat ik het nu duidelijk uitleg ;).
Met vriendelijke groet,
Dennis
-
Hi Dennis
Helder!
Bas' oplossing (drukknop) werkt natuurlijk prima. Maar waarom voor het sein type ook niet PoM (en SM) programmeren? Al mijn (accessory) decoders luisteren ook naar een specifiek Loco adres, en reageren op PoM CV berichten. Daarmee schakel je eenvoudig om van type.
Als je toch al kijkt naar mijn DCC library, kijk dan ook even naar de "Decoder-Core" library, die daar op verder bouwt en PoM/SM al heeft ingebakken. Disclaimer: de "Decoder-Core" library zal je wel wat moeten aanpassen (board definitie / CV variabelen / RS-Bus terugmelding verwijderen).
Groet
Aiko
-
waarom zou je pom en CV werk willen doen, als je alles met normale wisseladressen kan oplossen? ;D Het verschilt per systeem, maar niet elk systeem vind ik zo vriendelijk met cv's programmeren
-
Weten jullie dat Schneider deze USB Zwitserse seinen aanbiedt?
https://schneider-mbz.de/en/products/sbb-typ-l-hauptsignal-vierflammig?srsltid=AfmBOooD2LRlCl84Pgm7MRT0txRzQ5DZy_Ie1xMqqPGM0S62VgE3HK5A (https://schneider-mbz.de/en/products/sbb-typ-l-hauptsignal-vierflammig?srsltid=AfmBOooD2LRlCl84Pgm7MRT0txRzQ5DZy_Ie1xMqqPGM0S62VgE3HK5A) ???
-
Ja want dat stond in de OP
a nou Bas heeft wel een punt dat ik altijd ingewikkelde oplossingen probeer te bedenken
Niet om het een of ander, maar ik heb dit niet gezegd. Ik vind het eerlijk gezegd een best slim idee eigenlijk, automatische seinherkenning. Ik maak je er slechts op attent dat het wel een dure oplossing is. Naast het feit dat die ADC chip van je al ruim een €1 kost, kost het gewoon veel om een dubbele printplaat per sein te maken. En zoals ik reeds heb aangekaart, 1 enkele printplaat volstaat. En wat ik me afvraag, hoeveel verschillende sein voet printen wil je precies hebben? Want die weerstand? Waar komt die nu precies te zitten. Als je een eindgebruiker er zelf weerstanden op wilt laten zetten, kan je een catastrofe verwachten ;D
En ik vraag me af of die meerkosten het wel waard is. Hoe vaak configureer je een sein decoder? Meestal 1x per baan. En knopje indrukken en een wissel adres aansturen dat is 5 seconde configuratie werk, 15s als je 3 seinen op 1 decoder heb. Wegen die 5-15 secondes werk per sein per eens in 5j? het op tegen een bijna verdubbeling van de fabricagekosten?
Mvg,
Bas
-
Hi Bas
waarom zou je pom en CV werk willen doen, als je alles met normale wisseladressen kan oplossen? ;D Het verschilt per systeem, maar niet elk systeem vind ik zo vriendelijk met cv's programmeren
Natuurlijk heb je gelijk dat het zetten van een wisseladres het makkelijkst via een knopje kan. Maar als je meer wilt doen, zoals de LEDs dimmen of het seinbeeld aanpassen, dan kan dat vaak beter via SM/PoM.
Groet, Aiko
-
Helderheid instellen via CV? Nee dank je.
Ik zou hier een rij regelaar voor gebruiken. Je drukt het knopje 4s in voor helderheid menu. Alle leds gaan aan.
Je pakt lok 9999 er bij dan kies je met een functie je lampje, en alleen dat lampje blijft aan. Dan kan je met je rijregelaar de helderheid instellen en als je klaar bent, zet je de functie weer uit. En alle lampen gaan weer aan.
Dit is hoe ik helderheid zou willen instellen.
Mvg,
Bas
-
Hi Bas
Er zijn meerdere wegen die naar Rome leiden. Afhankelijk van de (grootte) van de baan, zullen mensen ook andere voorkeuren hebben.
Bij mijn (nieuwe) servo decoder stel ik een aantal zaken, zoals de uiterste stand van de wisseltongen, ook het liefst in met een handregelaar die luistert naar een specifiek lok adres.
Bij andere decoders gebruik ik liever CVs (en PoM), zeker omdat ik daarvoor ook gebruikersvriendelijke software heb. Ter illustratie hierbij een screenshot.
Groet
Aiko
(https://images.beneluxspoor.net/bnls_2025/Switch-68388cd462d42.png) (https://images.beneluxspoor.net/bnls_2025/Switch-68388cd462d42.png)
-
Ik lees jullie goede ideeën met veel interesse heren ;). Bij ons op de club hebben we trouwens geen handregelaars (wel een computer uiteraard); we rijden daar volledig geautomatiseerd.
Met vriendelijke groet,
Dennis
-
Leuk om te volgen dit :)
Beetje offtopic misschien, ik heb een aantal LocoNet modules die je kan instellen via LNCV, omdat met het handje te doen is best onhandig (vind ik).
Wat ik daarvoor gedaan heb is een XML defenitie gemaakt per module, die kan ik in mn software (Traintastic) inlezen en laat die een lijst van LNCV's zien met evt controls om ze wat makkelijker te kunnen instellen.
Voorbeeldje:
(https://images.beneluxspoor.net/bnls_2025/traintastic-lncv-programmer-start-6838b7492c24a.png) (https://images.beneluxspoor.net/bnls_2025/traintastic-lncv-programmer-start-6838b7492c24a.png)
(https://images.beneluxspoor.net/bnls_2025/traintastic-lncv-programmer-active-6838b74928b04.png) (https://images.beneluxspoor.net/bnls_2025/traintastic-lncv-programmer-active-6838b74928b04.png)
De Startup time heeft een stapgrootte van 0,5sec, dat staat in de XML defenitie, zo kan de gebruiker een "normale" waarde instellen en rekent de programmer uit welke waarde naar het register moet worden geschreven.
In de XML definitie kun je ook voorkeuze lijstjes opgeven, dan krijg je als gebruiker een dropdown met tekst en programmer schrijft dan de bijbehorende waarde naar het register.
De XML definities staat op GitHub, zie: https://github.com/traintastic/lncv
-
Als dingen op het oog gefintune'd moeten worden, zoals servo posities maar ook seinhelderheid dan probeer ik om een oplossing te bedenken waarbij geen computer nodig is. Niet iedereen heeft altijd maar een laptop liggen. En dan is het toch wel fijn als je met phone of een throttle lokaal even aanpassingen kan doen.
Bij ons op de club hebben we trouwens geen handregelaars
Maar wel smartphones neem ik aan? Dan kan je engine driver, z21 app of itrain app of marklin app of ... app gebruiken voor finetuning ;)
Mvg,
Bas
-
Ik heb er nog eens even over nagedacht en ga denk ik toch voor een andere aanpak. Ik ga eens proberen of niet toch de volledige decoder in het sein kan, in plaats van in de seinvoet.
Het enige component dat dan nog op de seinvoet moet is de USB-C connector.
Volgens mij moet in het sein dan gewoon een kleine mcu komen, een spanningsregulator en wat kleine componenten zoals diodes voor gelijkrichten, weerstandjes en condensatoren.
Een nadeel zou zijn dat er geen ruimte is voor een programmeer-drukknop. Dat zou ik natuurlijk op de seinvoet-printplaat kunnen maken, maar ik zat te denken aan een losse programmeerprintplaat. Zeg maar een soort probestand-achtig iets. Uiteindelijk kun je de seinen straks heel makkelijk loshalen, dus het is ook relatief simpel om ze even van de baan af te halen en in de programmeer-hulpprintplaat te zetten (en daarna weer terug).
Ik hou wel vast aan de weerstanden om te bepalen welk sein hij zelf is, om zo ook te voorkomen dat je voor elk sein verschillende firmware-versies moet maken.
Nu nog even kijken welke microcontroller hier goed op gaat passen. Ik neig naar een WLCSP25 of -24 versie van de STM32G0 of C0. Die laatste is nog niet verkrijgbaar maar in evaluatie.
En ik vraag me af of de printplaat (vooral de regulator) niet te heet wordt qua dissipatie als ik bijvoorbeeld 7 ledjes laat branden à 10mA per stuk en mijn spanningsregulator dat moet omsmurfen van 16V naar 5V. Veel meer leds zullen er tegelijkertijd niet branden. Een andere optie is uitwijken naar een buck converter maar je zit toch al snel met de grootte van de componenten. Iets als de TPSM365R3 zou wel een optie kunnen zijn wat mij betreft maar is natuurlijk wel een stuk prijziger dan een gewone regulator.
Met maximaal 7 leds a 10mA blijf ik ook binnen de toleranties van de mcu en hoef ik geen transistors of aparte LED PWM-chips op te nemen.
Tips of suggesties zijn welkom :).
Met vriendelijke groet,
Dennis
-
Ik denk dat 10mA per led erg veel is. Meestal kom ik niet hoger dan 2-3mA voor een goed lichtopbrengst
-
Ik denk dat 10mA per led erg veel is. Meestal kom ik niet hoger dan 2-3mA voor een goed lichtopbrengst
Dat is waar Bert en dat is ook al vaak tegen mij gezegd, maar ik wil voor de berekeningen wel rekening houden met flinke marges.
Met vriendelijke groet,
Dennis
-
En ik vraag me af of de printplaat (vooral de regulator) niet te heet wordt qua dissipatie als ik bijvoorbeeld 7 ledjes laat branden à 10mA per stuk en mijn spanningsregulator dat moet omsmurfen van 16V naar 5V. Veel meer leds zullen er tegelijkertijd niet branden. Een andere optie is uitwijken naar een buck converter maar je zit toch al snel met de grootte van de componenten. Iets als de TPSM365R3 zou wel een optie kunnen zijn wat mij betreft maar is natuurlijk wel een stuk prijziger dan een gewone regulator.
FUBAR
Tips of suggesties zijn welkom :).
https://jlcpcb.com/partdetail/Lrc-SLMUN5211DW1T1G/C2932892 (https://jlcpcb.com/partdetail/Lrc-SLMUN5211DW1T1G/C2932892)
(psst... ingebouwde voorschakelweerstanden, 2 in 1 NPN transistors)
Ik zou die USB-C ook opgeven en een langwerpige decoder maken die in een buis past. Die van mij is al bulky met 1cm breed, maar ze kunnen smaller dan dan, op 0.8mm printje.. lekker dun ook. De draden der sein soldeer je op de decoder, die in de buis zit. De buis met seinpaal schuif je van boven af door de baan. En je sluit je 2 polige 1.0mm JST kabeltje met DCC aan op de sein, en je bent klaar.
Mvg,
Bas
-
Ik zou de Leds op de PWM output zetten en software matig dimmen. Ik heb bij een aantal moderne LEDs overigens genoeg aan fracties van mA. Intensiteit instellen kan je dan met PoM, of een loco adres gebruiken en handregelaar.
Groet, Aiko
-
(https://images.beneluxspoor.net/bnls_2025/250625-seinoplossing-685b9031ed7c6.png) (https://images.beneluxspoor.net/bnls_2025/250625-seinoplossing-685b9031ed7c6.png)
Wij, AMC de Rijp, gaan voor de oplossing van Bas. Sein gemonteerd op 3D geprint hulpstuk waarin de print van Bas is gemonteerd, eenvoudig op de baan te plaatsen, gat van diam. 12 mm is voldoende, en onder de baan 2 draadjes aansluiten.
Groet,
Henk
-
Het is hier even stil, maar dat betekent niet dat ik ook stil zit ;D.
Al dat gepraat over elektronica is leuk, maar zonder het daadwerkelijke sein heb ik er natuurlijk niets aan. Daarom de afgelopen tijd druk bezig geweest met het sein tekenen (in Fusion360) en printen op mijn nieuwe 3D-printer.
(https://images.beneluxspoor.net/bnls_2025/sein-v29-6885de4a9a096.jpg) (https://images.beneluxspoor.net/bnls_2025/sein-v29-6885de4a9a096.jpg)
Deze print is de laatste die ik heb geprint en die is goed gelukt. Nog een paar kleine dingetjes aanpassen in het ontwerp (meeste inmiddels gedaan) en het ontwerp zelf optimaliseren (betere constraints en parametrisering). En ik moet nog iets doen aan de reiniging (ultrasoonreiniger testen/aanschaffen).
Ondertussen ook nog nagedacht over wat ik precies wil qua elektronica en decoder en volg de andere discussies hier op het forum op de voet.
Met vriendelijke groet,
Dennis
-
Compliment Dennis, keurige print. Ik denk met een Resin printer? Chapeau!
Groet,
Henk
-
Hi Dennis
Ziet er perfect uit. Het grijs lijkt goed overeen te komen met het grote voorbeeld. Alleen het signaal vlak moet nog zwart gespoten worden. Met een malletje is dat misschien wel makkelijk te spuiten?
Meer hoeveel lampen / leds zitten er nu in? 7? Hoe ga je dat doen? Ze op een (flexibel?) printje bij JLCPCB laten zetten? Of losse 0402 LEDs? Ik ben benieuwd.
Wat decoder betreft: zoe iets zou niet zo moeilijk moeten zijn. Ik verwacht dat ik voor de stappenmoter print een “Tiny” versie van mijn DCC-core decoder ga maken, zonder RS-bus maar wel met CVs, SM and PoM. Dat zou hier ook moeten kunnen werken.
Groet, Aiko
-
Dank Henk! :)
Jij mag niet meer raden Aiko ;D.
Inderdaad een flex print met daarop de leds al gesoldeerd. 0402 zou ideaal zijn, maar het probleem is de groene leds. De precieze kleur die ik nodig heb (rond de 510nm) is in 0402 vrijwel niet verkrijgbaar. Daarom ben ik voornemens uit te wijken naar 0603, al zit ik dan tegen de limieten wat fysiek past.
Spuiten kan ik inderdaad een mal voor maken, maar dat is voor latere zorg eigenlijk. Eerst moet dit 100% goed uit de printer komen en moet het me lukken om de boel ook elektrisch te laten werken (in ieder geval de leds laten branden).
Ik heb vanavond nog even een filmpje geüpload dat laat zien hoe ik het sein kan aanpassen met de parameters in Fusion360. Dat ben ik nu dus verder aan het optimaliseren en daarna is het denk ik zo goed als klaar.
https://www.youtube.com/v/Z7MMuZlRxMM
Met vriendelijke groet,
Dennis
-
Inderdaad een flex print met daarop de leds al gesoldeerd. 0402 zou ideaal zijn, maar het probleem is de groene leds. De precieze kleur die ik nodig heb (rond de 510nm) is in 0402 vrijwel niet verkrijgbaar.
Ik zat net even bij Mouser te zoeken, en met 520nm is er wel een groene 0402 LED. Nummer 710-150040GS73220. Die zou je bij JLCPCB gewoon moeten kunnen bestellen. Is dat wat?
-
Mooi werk Dennis, ben onder de indruk van je parametrische benadering. Heb zelf ook SBB-seinen geprint, ‘t blijft een beetje tricky vanwege de kleine afmetingen. Ik zelf heb de seinen van bedrade 0402’s voorzien, de draden vallen tussen de mast en vallen niet erg op. Heb ook aan flex-pcb gedacht maar weet niet hoe dat op te lossen en vraag me af hoeveel print banen er naast elkaar passen, deze kunnen aan voor- en achterzijde van een flex-pcb? Succes met je seinen-project en ben benieuwd naar het vervolg.
-
Ik zat net even bij Mouser te zoeken, en met 520nm is er wel een groene 0402 LED. Nummer 710-150040GS73220. Die zou je bij JLCPCB gewoon moeten kunnen bestellen. Is dat wat?
520nm is eigenlijk alweer te veel. 505 tot 510 is het beste. Maar ondanks dit soort 'exacte' specificaties verschilt het toch nog wel eens per led, dus misschien ga ik jouw suggestie toch eens aan een test onderwerpen :).
Mooi werk Dennis, ben onder de indruk van je parametrische benadering. Heb zelf ook SBB-seinen geprint, ‘t blijft een beetje tricky vanwege de kleine afmetingen. Ik zelf heb de seinen van bedrade 0402’s voorzien, de draden vallen tussen de mast en vallen niet erg op. Heb ook aan flex-pcb gedacht maar weet niet hoe dat op te lossen en vraag me af hoeveel print banen er naast elkaar passen, deze kunnen aan voor- en achterzijde van een flex-pcb? Succes met je seinen-project en ben benieuwd naar het vervolg.
Dank Jan. Printbanen kunnen heeeeel dun zijn, dus dat gaat zeker geen problemen opleveren. En inderdaad aan voor- én achterzijde. Bij mij komt de flexprint alleen in de seinbehuizing: vanaf daar komen gewoon lakdraden naar beneden langs de mast. Ik denk hetzelfde als bij jou dus.
-
een heel interessant project Dennis.
Ik heb een paar jaar geleden zoiets gerealiseerd met WeichZwei decoders van DigitalBahn. Ik heb een Japanse baan in N en gebruik Kato rails. De decoders van Digital Bahn passen er precies onder. Verder heb ik dummy Japanse seinen van LEDs voorzien (net als in de prutsvlog) en op de decoder aangesloten.
Het lijkt me eenvoudiger dan zelf een decoder te bouwen, tenzij dat natuurlijk je hobby is!
-
Het 3D-sein zelf uit de printer is eigenlijk klaar, dus ik kan weer even focussen op de elektronica. Afgelopen weekend had ik ineens een zinvolle ingeving dat een testprint wel handig zou zijn. Dus even schemaatje getekend (dit keer netjes) en daarna printplaatje:
(https://images.beneluxspoor.net/bnls_2025/DCC-TestSignal-frontback-68ad633d8985a.jpg) (https://images.beneluxspoor.net/bnls_2025/DCC-TestSignal-frontback-68ad633d8985a.jpg)
Dit is een 'sein' met decoder geïntegreerd. Even handig als één geheel en ik bedacht me dat dit later ook wel handig is in schaduwstations waar je snel en dirty een sein wil plaatsen. De afmeting van deze printplaat is 1 bij 8 cm. De decoder is gebaseerd op het werk van AP3737 uit het topic over een microstepper decoder (https://forum.beneluxspoor.net/index.php?topic=108775.0). Om het passend te krijgen in deze nog kleinere printplaat heb ik de gelijkrichter vervangen door vier losse diodes. Verder is er een kleinere spanningsregelaar aanwezig.
In totaal kan deze decoder 12 leds aansturen, die nu verdeeld zijn over 4 groepen (van de respectievelijke "sub-seinen"). De 12 leds zijn aangesloten op GPIO-uitgangen van de Attiny. Per groep is een mosfet aanwezig die op een PWM-uitgang van de Attiny is aangesloten. In Zwitserland dimmen op een sein namelijk altijd alle lampen per groep tegelijk (eerst gaat alles uit, daarna gaat het nieuwe seinbeeld integraal aan).
Al jullie feedback is welkom!
Schema downloaden kan hier (https://drive.proton.me/urls/K3QGXFDA8G#IzqqVfSnFKBm).
Bijhorende assembly files downloaden kan hier (https://drive.proton.me/urls/N95B3VA84W#VT6h86HtCVS2).
Met vriendelijke groet,
Dennis
-
Ik begrijp niet goed waarom je zowel weerstanden aan emitter en collector heb zitten. Ik snap dat je de emitter weerstand gebruikt om de basis stroom te begrenzen, maar het is beter om deze voor de basis te zetten. Bovendien is de waarde van 220R veels te laag. Je gaat dan basis stromen krijgen van 5-0.7 / 220 = 19.5mA per transistor. Dit belast je 5V circuit zo zwaar, dat je spanningsregulator dit niet gaat overleven.
De collectorweerstand is ook veels te laag. Als je 19V DCC invoert, blijft er na de gelijkrichter (1,4v) en de led(~1.3v) 16.3V over. Deel dat door 430R en je zit op 38mA. Ik zou de leds zelf op 5mA laten uitkomen.
Je kan overwegen om de npn transistors te vervangen door https://jlcpcb.com/partdetail/Nexperia-PUMH13F/C3588805 (https://jlcpcb.com/partdetail/Nexperia-PUMH13F/C3588805). Deze is ook 2 in 1, en ze hebben ingebouwde weerstanden van 4k7. Dat is een basis stroom van 0.9mA. En je wint er een klein beetje ruimte mee. En niet onbelangrijk ze zijn ook goedkoper met iets van 8ct per stuk. Dat x6 x 10? printplaten is toch bijna $5 winst
De diodes zijn tevens extended parts. Je kan C2128 overwegen, maar die is klein tikke groter. Wel is die basic en goedkoper. $3 winst.
In principe kan je software PWM'en, op 50~60Hz is dat prima te doen. En code is niet heel lastig daarvoor. Dan kan je de mosfets achterwege laten. Dat is 3$ + (4 x 13ct x 10?) = $8.2 winst. Bovendien doe je bij mosfets er ook goed aan om zowel pulldown weerstanden (10k ~20k) te gebruiken en een inrush current limit weerstand tussen gate en GPIO pin (22R).
Ik zou schakelaar C231329 vervangen door een van deze 2, omdat is basic dat is weer $3 winst.
(https://images.beneluxspoor.net/bnls_2025/image-68ac17ebcffc0.png)
R20, R28 en R29 zijn voor de status LEDs, die hebben niet echt niet meer dan 0,5mA nodig en nu staan ze op 5mA. Deze weerstanden kan je 6k8 van maken. Dit is ook belangrijk omdat je echt zoveel als mogelijk je 5V circuit wilt ontlasten. Die 15mA voor al die leds kan catastrophaal zijn. Die attiny trekt op 8MHz ( <= toereikend voor dit doel) ongeveer 2,6mA.
Dus op een bestelling van 10 printen kan je een kleine 20$ besparen. En er is nog wat werk te doen om het 5V circuit te ontlasten.
Mvg,
Bas
-
Ha Bas,
Dank voor je uitgebreide reactie! (y)
Ik ga die diodes aanpassen naar de 323-variant die basic part is. De pushbutton ga ik ook aanpassen (is wel iets groter, maar dat lukt nog wel net). Ook ga ik de voorschakelweerstand van de 3 leds aanpassen naar een grotere waarde zodat er minder A door de regulator loopt.
Ik wil denk ik toch vasthouden aan de hardware PWM. Vind het ook leuk om het op die manier op te lossen en in de code met de timers te werken en kijken hoe e.e.a. functioneert. De pulldown (ook op de basis, toch?) en de inrush current limiter R's zal ik toevoegen.
Dan over de led circuits. In het opstellen ben ik uitgegaan van 20mA leds en ik gebruik hier 5mA leds. Niet slim. 4.3V/5mA = 860ohm -> dus ik ga daar naar 1K weerstanden.
Klopt mijn volgende denkwijze?
De BC847QASZ die ik gebruik mag maximaal 350mW dissiperen. Laten we even uitgaan van 150mW per transistor. Bij 5mA betekent dat maximaal 30V. Dus dan heb ik eigenlijk geen 430R weerstand überhaupt meer nodig, toch?
Ik had een andere rekensom van iemand waarbij de transistor 200mW mocht. Daar werd dus 20mA gebruikt. Dan kom je uit op 10V. Hij ging nog uit van 4.3V over de transistor verlies en 2V over de led en kwam dus (toevallig) uit op 16.3V. Daar gingen we uit van maximale invoer van 24V en dus moest er nog 8V worden kwijtgeraakt -> 8V/20mA = 400ohm.
Ik begrijp alleen niet waarom jij schrijft "Dit belast je 5V circuit zo zwaar, dat je spanningsregulator dit niet gaat overleven." terwijl de transistors gevoed worden door het 16V circuit. Kun je me dat nog eens uitleggen?
Dan nog tot slot even over die transistors: ik weet niet of ik er veel ruimte mee bespaar want jouw transistors met ingebouwde weerstanden zijn SOT-323 en mijn BC847QASZ is DFN-1010B-6 dus al een stuk kleiner. Bovendien heb ik daar al een flinke hoeveelheid van gekocht bij JLCPCB (zit in mijn part library) en dan zijn ze goedkoper dan de prijs die geadverteerd staat bij het product :).
Maar nogmaals dank voor het uitgebreid meedenken. Ben geen electromannetje dus ik leer 'on the job'.
Met vriendelijke groet,
Dennis
-
De BC847QASZ die ik gebruik mag maximaal 350mW dissiperen. Laten we even uitgaan van 150mW per transistor. Bij 5mA betekent dat maximaal 30V. Dus dan heb ik eigenlijk geen 430R weerstand überhaupt meer nodig, toch?
Die weerstand is feitelijk je voorschakelweerstand, je gebruikt die om de stroom door je led te beperken. Ik zou de weerstand voor de collector 3k3 maken.
Ik wil denk ik toch vasthouden aan de hardware PWM. Vind het ook leuk om het op die manier op te lossen en in de code met de timers te werken en kijken hoe e.e.a. functioneert.
Software PWM kan je makkelijk doen met een timer ISR. Die kan je elke 200us laten afgaan. Dan voeg je een countertje toe die tot 100 telt en dan reset naar 0.
Als de counter 0 is, dan zet je alle lampjes aan die aan moeten gaan. Dit is het begin van de dutycycle.
Bij elk interrupt ga je een lijstje langs met if statements om te kijken of er al een lampje uit moet schakelen.
Als je geen for-loops gebruikt en direct poort instructies, dan is je interrupt niet te lang.
void updateTrackPower()
{
uint32_t currentTime = micros() ; // vervang micros door een ISR
if( currentTime - prevTime >= 200 ) // 50 HZ
{ prevTime = currentTime;
if( !state )
{
PORTB = 0x00 ; // turn off all track pins at once
PORTD = 0x00 ;
}
else if( counter == 0 ) // if counter reaches 100, reset it to 0 and enable the track power pins, begin of cycle
{
PORTB = 0xFF & track_mask_1 ; // turn on ALL track at the same time.
PORTD = 0xFF & track_mask_2 ; // With an AND mask you can pick which tracks go ON and which go OFF
// etc
}
if( counter == dutyCycle[ 0] ) PORTB &= ~TRACK_1_MASK ; // 8 bit comparison are somewhat fast, followed by direct port manipulation
if( counter == dutyCycle[ 1] ) PORTB &= ~TRACK_2_MASK ;
if( counter == dutyCycle[ 2] ) PORTB &= ~TRACK_3_MASK ;
if( counter == dutyCycle[ 3] ) PORTB &= ~TRACK_4_MASK ;
if( counter == dutyCycle[ 4] ) PORTB &= ~TRACK_5_MASK ;
if( counter == dutyCycle[ 5] ) PORTB &= ~TRACK_6_MASK ;
if( counter == dutyCycle[ 6] ) PORTD &= ~TRACK_7_MASK ;
if( counter == dutyCycle[ 7] ) PORTD &= ~TRACK_8_MASK ;
if( counter == dutyCycle[ 8] ) PORTD &= ~TRACK_9_MASK ;
if( counter == dutyCycle[ 9] ) PORTD &= ~TRACK_10_MASK ;
if( counter == dutyCycle[10] ) PORTD &= ~TRACK_11_MASK ;
if( counter == dutyCycle[11] ) PORTD &= ~TRACK_12_MASK ;
if( ++counter > 100) counter = 0 ; // 100 speed steps
}
}
Dit specifieke voorbeeld had ik gemaakt voor een atmega chip en om PWM op spoortjes te zetten, maar voor LEDs werkt het ook. Maar met dit lapje code en goede invulling voor masks natuurlijk, kan je exact hetzelfde bereiken, maar zonder de mosfets. All I'm saying.
Mvg,
Bas
-
Ik begrijp alleen niet waarom jij schrijft "Dit belast je 5V circuit zo zwaar, dat je spanningsregulator dit niet gaat overleven." terwijl de transistors gevoed worden door het 16V circuit. Kun je me dat nog eens uitleggen?
De transistors schakelen het 16V circuit via led en weerstand naar 0V toe. Het aansturen van de transistor gebeurt met de basis stroom en die komt uit de attiny vandaan. Dit is 5V. Er moet een weerstand tussen attiny pin en basis pin om die basisstroom te begrenzen. Meestal neem ik gewoon 1mA aan, maar afhankelijk van de transistor kan minder ook. Als die weerstand te laag is, dan moet die attiny meer stroom leveren voor de transistor. Dat vindt die attiny wel prima, maar die stroom komt wel uit de 5V regelaar vandaan. Daarom moet je een hogere basis weerstand kiezen. Het liefst zo groot dat je net aan de maximale verzadiging bereikt.
-
Leuk (y)
Het idee om eerst een PCB proefsein te maken lijkt me heel verstandig.
De aanpak met Mosfets in de 16V plus leiding klinkt ook leuk. Ik zou ook gewoon echte PWM gebruiken; het kan inderdaad in software maar dat vraagt best wel wat code. Nu kost het je de ruimte voor 4 mosfets; dat kan er nog wel af.
Ik ben het wel met Bas eens dat ik de weerstanden in de emitter niet snap; die kunnen wat mij betreft dus weg. Neem wel iets van 10K in de basis. Dan raakt de transistor in verzadiging en valt er iets als 0,3V over de collector - emitter (de basis komt op 0,7V). Als je 5mA door de LEDs wilt, dan verstookt de transistor 5 x 0,3 =1,5 mW. De collector weerstanden verstoken echter het leeuwendeel: 16V (DCC) - 2V (LED) - 0,3 (C-E) = 13,7V x 5 mA = 67,5 mW. Dat kan nog net.
Ik vind 5mA wel heel veel voor de moderne LEDs. 2 mA zou ook ruim voldoende moeten zijn. Als je in de collector dus iets tussen 4K7 en 10K neemt, dan zou je voldoende moeten hebben om de LEDs helder te laten branden.
Ik ben geen expert op het gebied van mosfets, en weet dus niet of de gekozen mosfet geschikt is, of niet, Mosfets hebben geen (nauwelijks) basis / gate stroom, en kan je dus beschouwen als een soort condensator: als je (vanuit de microcontroller) een spanning op de gate zet, dan komt daarop een lading te staan die niet zomaar weer weg loopt. Vandaar dat men meestal aan de gate een weerstand heeft om die lading weg te laten lopen als de gate spanning wegvalt. Misschien dat die lading vanuit de gate wel door de ATTiny kan weglopen als je de poort laag zet (zou ik in de specs na moeten zoeken), maar tijdens inschakelen moet de gate niet “open” hangen, want dan weet je niet wat die doet. Dus ik zou altijd gate weerstanden nemen (eventueel een weerstand array; is bij JLCPCB ook een basic component).
Zoals gezegd, weet ik weinig van Mosfets. Je schakelt daarmee de +16 V, en ik weet niet zeker of je huidige schakeling dat wel doet. Misschien wel, maar misschien ook niet.
Leuk!
Aiko
-
. Meestal neem ik gewoon 1mA aan, maar afhankelijk van de transistor kan minder ook.
De versterkingsfactor (hfe) bepaalt de verhouding tussen collector en basisstroom. Voor transistoren zoals hier gebruikt ligt die hfe vaak tussen de 300 en 600, Als je voor de hfe uitgaat van 100, dan zit je heel veilig. Als je 5mA collector stroom wilt, dan is 50uA basisstroom voldoende. Omdat er 5V (4,3 om precies te zijn) over de basis weerstand moet kunnen vallen, zou 100K nog voldoende moeten zijn.
Groet, Aiko
-
De belangrijkste pro van die software PWM is dat je kan dimmen per LED. Er is een reëel grote kans dat je dat nodig ga hebben. Het is met leds, vooral met meerdere kleuren door elkaar vaak lastig te voorstellen welke weerstand geschikt is. Groene leds, daar wil je minder stroom door, rode leds wil je meer stroom door.
En als je de software PWM al heb, heb je meteen de mogelijkheid om te faden. Per led. En die mosfets zijn dan 100% overbodig. Als je perse hardware PWM wilt, dan kan dat. Maar dan zou ik een PCA9685 voor de transistors hangen. Die is in SOIC wellict wat bulky, maar hij is perfect voor dit doel. En difuse through hole leds en SMD leds, is ook een wereld van verschil.
het kan inderdaad in software maar dat vraagt best wel wat code.
Dit valt dus wel, mee. Die voorbeeld code is in principe goed, je moet alleen nog macros maken voor die masks. Maar zelfs met micros() zoals die nu is, zou dit al moeten werken.
Het is dan alleen een kwestie van een bepaalde helderheid waarde invullen in het array, en die functie regelt de rest voor je.
Bas
-
Heren,
Soms moet je gewoon erkennen dat iets beter kan en je terug moet naar de tekentafel. Bas, je hebt denk ik gelijk dat het dimmen per groep niet tot het gewenste mooie resultaat leidt (wat ik wel wil).
Ik ben eigenlijk wel gecharmeerd van die oplossing met een PCA9685 die hier natuurlijk wel vaker is besproken. En de QFN-28 versie zou prima op de printplaat passen. Die is wel flink duur, maar het aantal componenten wordt denk ik minder en de Attiny kan ook kleiner uitvallen (en goedkoper).
Waar ik ook naar neig is om gewoon alle leds over de regulator te laten lopen. Ik heb even gerekend met wat er in de datasheet vermeld staat. Ik heb eigenlijk nooit meer dan 6 leds aan. Laat ik het even ruim nemen en uitgaan dat ze 5mA per stuk verbruiken (wat veel meer is dan daadwerkelijk verbruik). Dan heb ik 30mA en nog een beetje verwaarloosbaar extra van de Attiny en PCA9685.
Even uitgaand van omzetten van 18V naar 5V krijg je dan 390mW dissipatie. De temperatuurstijging van mijn regulator is met die waarden een kleine 30 graden, wat dus met een normale kamertemperatuur geen enkel probleem gaat opleveren. In een locomotief zou dit niet kunnen, want dat wordt te warm. Maar een sein op de baan zou geen probleem moeten zijn.
Benieuwd naar jullie visie.
Met vriendelijke groet,
Dennis
-
Goed punt dat het dimmen niet goed gaat, omdat er in iedere groep verschillende kleuren zitten. Was mij nog niet opgevallen. Je kunt nu of software PWM-en (zoals Bas eerder noemde), of hardware (zou mijn voorkeur hebben). Je kan daarvoor inderdaad de PCS9685 nemen. Maar kijk ook eens naar de AVR32DA48; die heeft ook voldoende PWM pinnen. En je zou ook eens naar STM32s kunnen kijken. Daarvan zijn er ook heel kleine met > 16 PWM kanalen. Keuze genoeg (y)
Aiko
-
Ik snap niks van dat elektronisch gebabbel, maar ik vind het wel ontzettend knap wat jullie hier allemaal samen voor elkaar krijgen.
-
En je zou ook eens naar STM32s kunnen kijken. Daarvan zijn er ook heel kleine met > 16 PWM kanalen. Keuze genoeg (y)
Aiko
Interessant, de stm kende ik nog niet, “beperkte” me nog met nano en esp.
Zijn er nog drawbacks? Zie dat je op moet passen met 5 V.
-
Hi Sven en Eric
Ik snap niks van dat elektronisch gebabbel, maar ik vind het wel ontzettend knap wat jullie hier allemaal samen voor elkaar krijgen.
Ik krijg juist dat gevoel als ik anderen hele mooie dingen zie maken. Zo van "dat kan ik nooit". Maar allemaal bij elkaar kunnen we blijkbaar veel ;D
Interessant, de stm kende ik nog niet, “beperkte” me nog met nano en esp.
Zijn er nog drawbacks? Zie dat je op moet passen met 5 V.
Tja, drawbacks ..... Weer wat nieuws leren ;)
De STMs zijn inderdaad 3V3, en lopen op 48Mhz tot x00 Mhz. Voor decoders vind ik ze veel beter dan ESP32s (als je wilt weten waarom, lees dan de sectie over ESP32 in mijn GitHub DCC-library). Je hebt hele goedkope STMs, maar ook duurdere die voor decoders een complete overkill zijn. En de kleinste ESP32 is, dacht ik 1,8 x 1,8 mm
Groet, Aiko
-
Weer wat nieuws leren ;)
De STMs zijn inderdaad 3V3, en lopen op 48Mhz tot x00 Mhz.
Voor decoders vind ik ze veel beter dan ESP32s (als je wilt weten waarom, lees dan de sectie over ESP32 in mijn GitHub DCC-library).
Je hebt hele goedkope STMs, maar ook duurdere die voor decoders een complete overkill zijn.
En de kleinste ESP32 is, dacht ik 1,8 x 1,8 mm
Groet, Aiko
Aiko,
ik heb je DCC-library in Github bekeken en zeer leerzaam om te lezen.
Weer wat nieuws leren ;)
Dank Eric (y)
-
Weer even verder geknutseld aan mijn sein en de voorgestelde verbeteringen geïmplementeerd. Hardware aansturing met PCA9685, andere diodes en knopjes. PCA9685 mist nog wat weerstanden en verbindingen met GND (o.a. adres pins).
(https://images.beneluxspoor.net/bnls_2025/DCC-TestSignal-20250921-68cfbc3fd407b.png) (https://images.beneluxspoor.net/bnls_2025/DCC-TestSignal-20250921-68cfbc3fd407b.png)
Toch ben ik nog niet tevreden. Allereerst twijfel ik nog een beetje over de 9685, omdat dat ding groot is. Nú maakt dat niet zoveel uit, maar uiteindelijk wil ik dit echt mini-mini op een printplaat krijgen. Het tweede waar ik tegenaan hik is de spanningsregulator. Ik wil toch overstappen naar een buck. Daarvoor heb ik de TPS62177 op het oog. TI Webench geeft een footprint van 42mm2 aan voor de configuratie die ik wens, ik kom in KiCad uit op zo'n 52mm2, maar dat is ook prima. Ik ga dan gelijk naar 3.3V. Voordeel is dat ik probleemloos 0201 weerstanden voor de leds kan gebruiken.
Ik neem dus nog even wat tijd om een en ander te overdenken en wat ik echt praktisch vind. Maten spelen daar zeker bij mee. Ik denk dat ik tot een mooie 12x30mm kan komen bij behoud van de PCA9685. Dat is ook prima aan de achterzijde, waar uiteindelijk alle lakdraden gesoldeerd moeten worden.
Met vriendelijke groet,
Dennis
-
Hi Dennis
Ziet er al mooi uit. Is de print 2 of 4 lagen? Bij kleine printjes is 4 lagen niet veel duurder. Verder vroeg ik me af of je niet wat ruimte kan winnen als je, in plaats van losse weerstanden, weerstand arrays gebruikt.
Wat betreft step-down, je zou eens kunnen kijken wat Matthias (Stummiforum) gebruikt voor zijn “Supercaplader im Eigenbau”. Die is behoorlijk klein.
Groet, Aiko
-
Je kan ook een mm aan ruimte winnen door zelf kleinere footprints te maken voor de weerstandjes.
Weet ook dat 0201 componenten niet onder de economic pcba dienst vallen. Dus je zal dan wat extra $ moeten lappen.
Beiden weet ik omdat ik ooit een functionele cijferbak heb ontworpen. Hij was echt veels te duur om te prototypen en met een kleine vraag, zag ik er geen heil in.
Mvg
Bas
-
Kleinere footprints voor de weerstanden zou ik niet doen. Ik ben recent nog op een aardig artikel gestuit waarin 0201 en 01005 footprints belicht werden en hoeveel moeite de meeste PCB-bestukkers daar mee hebben als de footprints niet volledig aan hun eisen voldoen. De eilandjes bij die formaten worden zo klein dat de scheikundige/natuurkundige effecten van soldeertin/pasta veel meer roet in het eten gaan gooien als het pad niet volledig juist ontworpen is. Op m'n werk krijg ik de IPC-standaard onderwezen en ook daar worden deze problemen aangehaald: niet doen en gewoon aan de ontwerpstandaarden houden is ook hun handleiding.
@ Dennis1984: zoals AP3737 schrijft zou ik zeker voor weerstand-netwerken gaan (goed opletten dat je de juiste gebruikt/koopt!). Dat scheelt enorm veel ruimte. Op de plek waar nu nog 3 0201's zitten kun je met gemak een 4-voudig netwerkje kwijt in '0201' (dat heet anders, maar ben even kwijt hoe). En dan hou je mogelijk nog ruimte over ook ten opzichte van de 3 losse weerstanden.
-
Als footprint echt en issue is, dan zou je kunnen overwegen de MAXM17901 / MAXM17903 te gebruiken. Daar zit de spoel al in.
De PCA9685 is heel mooi, maar niet als je footprint klein moet zijn. Als het echt klein moet, dan lijkt me een Tiny of kleine DXCore (als je echt meer uitgangen wilt) beter.
Als je de print goedkoop wilt, worden je componenten er slechts op 1 kant opgezet. Je zou dan zelf wat grote componenten (druktoets, SMD Elco) op de achterkant kunnen solderen.
Leuke uitdaging :)
Aiko