Ha Hans, bij mij zijn de PWM op mijn analoge baan stroomkringen ook volledig gescheiden.
Ondertussen in de DCC hoek... Een Marktplaatsverkoper, letterlijk om de hoek, had een aanbieding voor 5 stuks lokpilot 5 basic decoders. Meteen maar een setje opgehaald.
(https://www.xs4all.nl/~robvd/Forum/DCC-06.jpg)
Eerste projectje: DCC met Arduino geluid in mijn 1e generatie GE GTEL loc. Dat valt uiteen in
- Het geluid van een gasturbine nabootsen
Het geluid van een straalmotor (gasturbine) bestaat uit een fluittoon en ruis. beide zijn vrij eenvoudig op de Arduino te maken, maar niet tegelijk als output op één pin. Het idee: de output van 2 pinnen combineren en versterken.
Zo gedacht, zo gedaan. de pin met de toon en de pin met ruis zijn beiden met een weerstand op de basis van de transistor (de versterker) aangesloten. En dat werkte zowaar. Door met de waarden van de weerstanden te variëren kon ook de onderlinge geluidssterkte worden aangepast (de fluittoon is snel te luid).
Het Arduino programma kan de toonhoogte laten oplopen (bij het opstarten) en weer laten dalen.
- De Arduino aansluiten op de DCC decoder
Het idee: de Arduino krijgt zelf stroom van de wielen, en trekt daarmee geen vermogen van de decoder. De uitgang(en) van de decoder worden gebrukt als logische poorten naar de Arduino toe. Die leest deze uitgangen uit en reageert daar op. Mijn decoders hebben twee uitgangen: AUX 1 (groene draad) en AUX2 (paars). Deze uitgangen worden geschakeld met functie 1 en 2. De decoder heeft een gezamenlijke + (blauwe draad, U+), de uitgangen schakelen naar de massa (GND). Ik verbind de decoder U+ met de +5V van de Arduino. Zo kan ik "Hoog" (functie is uit) en "Laag" (functie is aan) op de decoder uitgangen meten met de Arduino.
Ik doe wat weerstanden tussen de U+ en de uitgangen van de decoder en de pinnen van de Arduino, om grote stromen te vermijden (als bescherming van beide stukjes elektronica).
Dit alles levert het volgende aansluitschema.
(https://www.xs4all.nl/~robvd/Forum/DCC-10.jpg)
^ Links de decoder aansluitingen, rechts de "versterker" met speaker. Functie en en 2 worden gelezen op pinnen D4 en D5. Het geluid komt uit pin D10 (luid) en D11 (zachter).
Let op: Ik heb niets aan de decoder zelf gesoldeerd. Alle verbindingen met de Arduino zijn gemaakt aan de (8 polige) stekker of, voor de uitgangen, aan het uiteinde van de draden.
Het programma doet niets zolang er geen functie "aan" is.
Met F1 "aan" wordt het gasturbine geluid gestart met een simulatie van een oplopend toerental tot aan vol gas. Zolang F1 "aan" blijft, draait de "turbine" voluit. Zodra F1 wordt uitgezet, neemt de toonhoogte langzaam af en schakelt het geluid uiteindelijk helemaal af.
Met F2 wordt een (niet zo heel goede) hoorn hoorbaar. Dit werkt alleen als er geen turbine geluid is.
Tot zover de theorie. Nu maar eens kijken of het ook werkt.
(https://www.xs4all.nl/~robvd/Forum/DCC-07.jpg)
^ Alles is gesoldeerd. Eerst testen voor alles wordt ingepakt en ingebouwd
(https://www.xs4all.nl/~robvd/Forum/DCC-08.jpg)
^ Arduino en decoder passen (klem) achterin de loc. Hier is geen ruimte meer voor de speaker.
(https://www.xs4all.nl/~robvd/Forum/DCC-09.jpg)
^De speaker krijgt een behuizing uit de 3D printer en gaat voor in de loc.
Het enige probleem was dat " functie uit" (ofwel uitgang "Hoog" ) niet stabiel was. Dat is opgevangen door even wat langer te meten. Nu wordt gekeken of er in een tijdsspanne van 50 ms minstens één keer "hoog" wordt gezien.
Nog een ander dingentje: het luidspreker membraan heb ik beschadigd toen ik deze in de behuizing drukte (het klemt). Daarmee is het geluid wat zachter geworden. het speakertje wordt op termijn nog vervangen (eerst bestellen). En dan zet ik er meteen een 23 mm exemplaar in (nu is het nog 20 mm).
Oh ja. Nog een bijeffect van deze opstelling. De loc reageert niet meer op analoge PWM rijstroom met een lage frequentie. Ik vermoedt dat dit komt door de gelijkrichter en (grote) elco op de stroomvoorziening van de Arduino.
Hoe dan ook: DCC met een eenvoudige decoder, en geluid uit een Arduino! Ik ben er blij mee, en het smaakt naar meer...
Rob