Auteur Topic: Analoog rijden met geluid - het project.  (gelezen 73206 keer)

0 leden en 1 gast bekijken dit topic.

Offline mark mms

  • Super Modelspoorder
  • ******
  • Berichten: 1.224
  • Thanked: 26 times
  • Geslacht: Man
Re: Analoog rijden met geluid - het project.
« Reactie #25 Gepost op: 6 juni 2018, 20:00:42 »
Heb inmiddels een stuk of vijf glaskasten en dan is een geluidswagon idd een verstandig idee.  :D

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #26 Gepost op: 2 juli 2018, 11:46:01 »
Ik heb afgelopen week mijn baan weer eens afgestoft om met geluid eens 'echt' te gaan rijden. En meteen een rijschema opgesteld waarin ik alleen de treinen met geluid (en één met geluidswagon) in bedrijf heb. Het werkt erg aardig, maar hier en daar ben ik de software nog verder aan het verbeteren.

Ondertussen heeft het me ook aan het denken gezet of het allemaal niet kleiner en eenvoudiger kan. Dit is tenslotte allemaal begonnen met deze opmerking van @Pierre :
Ik heb even een vraagje. Kan je hier ook een "tjoek-tjoek" geluidje mee maken die zich aanpast aan de snelheid van een (analoge) trein? Ik ben al een tijdje op zoek naar een betaalbare oplossing hier voor.

Als het om stoomtreinen gaat, is het tenslotte vooral ruis, dat met "puffen" te horen is. Internet gaf wel wat schema's voor ruisgeneratoren, maar die hebben zoveel onderdelen nodig, dat een MP3 speler kleiner is.
Uitendelijk kwam ik uit op ruis genereren met de Arduino (of Digispark) zelf. Gisteravond een beetje zitten pielen met een testopstelling en testprogramma. Daar is dit uit gekomen.



Wat mij betreft goed genoeg om verder uit te gaan werken.

Het schema is in ieder geval eenvoudig:




En ook de testcode voor de Arduino om ruis te puffen valt mee

/*
 * RUISGENERATOR
 * Stoomtrein geluiden met "puffen" van ruis.
 * Testprogramma: langzaam versnellen van het puffen.
 */

#define Ruispin      10
#define Startfreq  2000                           // laagste frequentie ruis
#define Eindfreq   4000                           // hoogste frequentie ruis
#define pauze         0.33                        // factor puf/pauze

unsigned int  puf = 1000;                         // lengte puf-slag (ms)

void maakPuf(unsigned int lengte, unsigned int laag, unsigned int hoog) {
  unsigned int  freq;
  unsigned long mils;
  mils = millis() + (1-pauze) * lengte;
  while (millis() < mils) {
    freq = random (laag, hoog);
    tone (Ruispin,freq);
  }
  noTone(Ruispin);
  delay (lengte * pauze);
}

void setup() {
  pinMode (Ruispin,OUTPUT);
}

void loop() {
  // viercylinder = 4 puf slagen met verschil in eerste en laatste slag
  maakPuf(puf, Startfreq + 100, Eindfreq + 250);
  maakPuf(puf, Startfreq, Eindfreq);
  maakPuf(puf, Startfreq, Eindfreq);
  maakPuf(puf, Startfreq - 50 , Eindfreq - 100);

  if (puf > 120) {
    puf = puf * 0.90;
  }
}


Voor (kleine) stoomlocs gaat het project hier over een andere boeg verder... Ben benieuwd waar we uit komen. Heel misschien is de Glaskasten toch nog haalbaar, @mark mms .
Voor diesels en grotere stomers hou ik het op de MP3 versie.

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #27 Gepost op: 6 juli 2018, 00:14:48 »
Ruisgenerator in BR91

OK, het is nog geen Glaskasten, maar heel veel ruimte heeft deze BR91 ook niet om geluid on te bouwen.




Maar ruimte voor een DigiSpark (bijna een Arduino), een gelijkrichter, een kleine Elco, wat weerstanden, een transistor en een mini luidsprekertje is er wel. En dat betekent dat een geluidsmodule op basis van de ruisgenerator in deze lok mogelijk moet zijn.


Het was even wat pielen. Zo is na het laden van het programma de USB stekker van de Digispark goeddeels afgezaagd. Dan past-ie tegen het dak van de kabine van de BR91. De luidspreker had ik eerst aan de onderkant van de lok tussen de cylinders geplakt, maar daarmee was er geen klankkast werking. Dus uiteindelijk is de luidspreker ook in de kabine gekomen.

Aan de kant van de stoker is naast de motor de gelijkrichter en elco geplaatst.




Aan de kant van de machinist was nog ruimte voor de weerstanden van de spanningsdeler om de rijstroom te meten. De digispark met transistor en speaker komt boven de motor in de kabine.




Ondertussen is de lok weer gemonteerd en de eerste proefritten zijn gedaan. Geluid is op zich heel accceptabel (al zeg ik 't zelf).
Deze opstelling is wel wat gevoelig voor stroomonderbrekingen. De DigiSpark wacht na elke onderbreking 5 seconden met het programma opstarten. In deze tijd 'kijkt'-ie of er een computer is aangesloten om een programma te uploaden.
Nu is dat uploaden niet meer nodig; ik ben nog aan het uitzoeken hoe dat is uit te zetten.... Als de DigiSpark meteen weer opstart, dan is een korte stroomonderbreking geen probleem meer voor de "geluidsbeleving" denk ik  8)

Filmpje, aansluitschema en sketch volgen binnenkort.

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Pierre

  • Super Modelspoorder
  • ******
  • Berichten: 7.918
  • Thanked: 334 times
  • Geslacht: Man
  • Woonplaats: Den Haag (Loosduinen)
    • Haagse Modelbouw Club
Re: Analoog rijden met geluid - het project.
« Reactie #28 Gepost op: 6 juli 2018, 21:03:36 »
Kijk ... lekker simpel lijkt me. Hier hou ik van. ;D
Mooi werk Rob. Ben benieuwd naar het filmpje (en schema).
Groet Pierre.

Ik rommel wat met treintjes en bouwwerkjes in H0 (H0e) en ook een klein beetje in N  .... Scratchbuilding, kitbashing en weathering.  ;D Lid van de http://haagsemodelbouwclub.nl/

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #29 Gepost op: 6 juli 2018, 23:42:51 »
Hoi Pierre,

Het is inderdaad een eenvoudiger opzet. Hier is het dan.

Een compacte geluidsmodule voor stoomlocs

Eerst maar even het resultaat: de BR91 puffend onderweg met een gemengde en een lokale goederentrein.



Het voordeel van deze compacte geluidsmodule ten opzichte van de MP3 versie:
  • Compacte opbouw (Geen MP3 print en slechts 1 kleine Elco nodig).
  • Goedkoper: scheelt gauw een tientje(5 euro MP3 speler en 5 euro geheugenkaartje). Deze versie kost zo'n 7 euro aan onderdelen, of minder dan 4 met spullen direct uit China
  • Traploze rijstroom afhankelijke stoomgeluiden (nou ja, veel kleine stapjes, het is tenslotte digitaal)
Daarentegen zijn de geluidseffecten wel beperkt. Er kan alleen met een blokgolf geluid worden gemaakt. Geen volume instellingen. De ruis wordt gemaakt door de frequentie van de blokgolf snel willekeurig te veranderen.
Ook is het geluid minder 'rijk'.

Het aansluitschema:




De voeding en rijstroommeting is hetzelfde opgebouwd als bij de andere geluidsmodules. Alleen hebben de weerstanden van de spanningsdeler een lagere waarde (220 ohm) en heeft de condensator een aanmerkelijk lagere capaciteit (en is dus ook kleiner).
De aansturing van de transistor gaat over een lage weerstand, om ervoor te zorgen dat de transistor helemaal open gaat. De luidspreker is aangesloten op de ingangsspanning. Die is hoger dan de 5V op de DigiSpark en zo is de geluidssterkte wat groter.


Als laatste de code. Het programma'tje is nog niet perfect. Zo zijn de geluidseffecten nog niet goed te starten bij langzaam rijden (wel bij stilstand en snel rijden). Maar het is de versie die in het filmpje is te horen.


  /*
 * RUISGENERATOR STOOMTREIN
 * Stoomtrein geluiden met rijstroom afhankelijk "puffen" van ruis.
 *
 * Eenvoudige extra geluidsfuncties:
 * 1: fluitje (lijkt meer op een telefoon)
 * 2: sissen
 * 3: remmen
 * 4: 4 seconde stilte (vrijloop)
 * Functies werken redlijk bij langzaam rijden en goed bij stilstand en snel rijden
 *
 * versie 0.9.1 - 7 jul 2018
 * toegevoegd:
 *             begrenzing puf tijd (voorkomen negatieve tijdsduur)
 *             rijstroommeting en functie bepalen in de puf-pauze
 */


// --- DEFINITIES ----

// pin definities
#define Ruispin       0                           // pin voor aansturen van speaker
#define rijpin1       1
#define rijpin2       2

//geluidsdefinities
#define Startfreq  1800                           // laagste frequentie ruis
#define Eindfreq   4000                           // hoogste frequentie ruis
#define pauze         0.25                        // factor puf/pauze
#define RemLaag    3200                           // frequentiebereik voor remgeluid
#define RemHoog    3800
#define SisLaag    4000                           // frequentiebereik voor sisgeluid
#define SisHoog    5500

// definities voor de meting van de rijstroom
#define pullup               false     // geeft aan of de interne pullup weerstand gebruikt moet worden
#define maxpulsbreedte       5000      // hoe lang wachten (minimaal 2x periode)
#define pulsbreedtestil        22      // pulsbreedte in % waaronder loc stil staat   

// Frequenties (Periodes) op de rijstroom
#define rijPeriode            2020    // rijstroom puls in us
#define functie_01_Periode    1500    // Periode (freq.) functie 1
#define functie_02_Periode    1250    // Periode (freq.) functie 2
#define functie_03_Periode     990    // Periode (freq.) functie 3
#define functie_04_Periode     790    // Periode (freq.) functie 4
#define functie_05_Periode     590    // Periode (freq.) functie 5 - niet gebruikt
#define functie_06_Periode     490    // Periode (freq.) functie 6 - niet gebruikt
#define pulsruis               100    // maximaal verschil in gemeten Periodes (ruis)
#define minhoog                200    // minimaal "hoog" signaal

// ---- VARIABLEN ----

// puf-geluid variabelen: 4 slagen (is tweezijdige tweecylinder loc)
unsigned int ruisStartFreq[] {Startfreq + 120, Startfreq, Startfreq, Startfreq + 300 };  // hoogste frequentie puf-ruis per slag
unsigned int ruisEindFreq[]  {Eindfreq - 50,   Eindfreq,  Eindfreq,  Eindfreq  - 120 };  // laagste frequentie puf-ruis per slag
int slag = 0;

// rijstroom variabelen
int rijpin[] {rijpin1, rijpin2};
int vooruit = 1;                      // richting: bepaalt welke pin wordt uitgelezen voor de rijstroom puls
double pulsbreedteHoog;
double pulsbreedteLaag;
double pulsPeriode;
int pulsbreedte = 0;                  // pulsbreedte in %
int functie = 0;                      // speciale functie frequentie gemeten

unsigned int  puf;                    // lengte puf-slag (ms)
unsigned long pze;                    // pauze tot aan klok stand(ms)

// --- FUNCTIES ---

// Functie: maak puf geluid (één slag)
// Geeft ruis voor een deel van de opgegeven lengte en stil voor de resterende tijd (factor definitie)
// De ruisfrequentie neemt langzaam af om enigszins de volume afname te simuleren.
// input: lengte van de slag (in ms)
//        laagste frequentie van de ruis
//        hoogste frequentie van de ruis
// output: tijd tot einde pauze van de puf
unsigned long maakPuf(int lengte, unsigned int laag, unsigned int hoog) {
  unsigned int  freq;
  unsigned long mils;
  constrain (lengte,10,1000);                           // beperk de slag tussen 10ms en 1s.
  float factor = 1 - (0.09/lengte);
  mils = millis() + (1-pauze) * lengte;
  while (millis() < mils) {
    freq = random (laag, hoog);
    tone (Ruispin,freq);
    laag = laag*factor;
    hoog = hoog*factor;
  }
  noTone(Ruispin);
  return millis() + (lengte * pauze);                         // pauze tijd tussen de puffen
}

// Functie: Afspelen van ruis.
// Gebruikt voor sissen en remgeluid. Constant ruis-geluid gedurende de opgegeven lengte (in ms).
// input: lengte van de slag (in ms)
//        laagste frequentie van de ruis
//        hoogste frequentie van de ruis
void speelRuis(unsigned int lengte, unsigned int laag, unsigned int hoog) {
  unsigned int  freq;
  unsigned long mils;
  mils = millis() + lengte;
  while (millis() < mils) {
    freq = random (laag, hoog);   
    tone (Ruispin,freq);
  }
  noTone(Ruispin);
}

// Functie: Afspelen van een 'fluitje'
// Afwisselend een hoge en lage frequentie met een kleine frequentie variatie.
// input: lengte (in ms)
void speelFluitje(unsigned int lengte) {
  unsigned int  freq;
  unsigned long mils;

  mils = millis() + lengte;
  while (millis() < mils) {
    tone (Ruispin,random (2100,2120));
    delay (20);
    tone (Ruispin,random (2400,2430));
    delay (18);
  }
  noTone(Ruispin);
}

void meetPuls() {
  // puls meting variabelen: lengte 'hoog', 'laag' en trillingstijd (periode). Alle tijden in us.
  pulsbreedteHoog = pulseIn(rijpin[vooruit], HIGH, maxpulsbreedte);
  pulsbreedteLaag = pulseIn(rijpin[vooruit], LOW, maxpulsbreedte );
  pulsPeriode = pulsbreedteHoog + pulsbreedteLaag;
}

// HERKEN FUNCTIE-FREQUENTIE
// functie voor het checken van functie-frequenties
// op de puls (functietoets).
int getFunctie () {
  int f = 0;
 
  if (abs (pulsPeriode - functie_01_Periode) < pulsruis) { f = 1;}
  if (abs (pulsPeriode - functie_02_Periode) < pulsruis) { f = 2;}
  if (abs (pulsPeriode - functie_03_Periode) < pulsruis) { f = 3;}
  if (abs (pulsPeriode - functie_04_Periode) < pulsruis) { f = 4;}

  return f;
}

void setup() {
  pinMode     (Ruispin,OUTPUT);
 
  pinMode     (rijpin[0],INPUT);
  digitalWrite(rijpin[0],pullup);
  pinMode     (rijpin[1],INPUT);
  digitalWrite(rijpin[1],pullup);
  meetPuls();
  speelRuis (950, SisLaag,SisHoog);               // sissen
}

void loop() {

  vooruit = !vooruit;
  // Pulsbreedte bepalen
  meetPuls();
  pulsbreedte = 100 * pulsbreedteHoog / pulsPeriode;
  functie = getFunctie();
  if (functie) {
    switch (functie) {
      case 1:
        speelFluitje(1800);                          // fluitje afspelen, 1,8 sec.
      break;
 
      case 2:
        speelRuis (3000, SisLaag,SisHoog);           // sissen, 3 sec.
      break;
 
      case 3:
        speelRuis (2600, RemLaag,RemHoog);           // remgeluid 2,6 sec.
      break;

      case 4:
        pze = millis()+ 4000;                         // 4 sec. stilte
      break;
    }

  }
  else {
    // rijgeluid
    // tweecylinder = 4 puf slagen met verschil in eerste en laatste slag
    if (pulsbreedte > pulsbreedtestil && millis() > pze) {            // lok rijdt en niet in puf-pauze of stilte
      puf = map(100 * sqrt (pulsbreedte), 550, 990, 700, 10);
      pze = maakPuf(puf, ruisStartFreq [slag], ruisEindFreq [slag]);
      if (slag < 3) {
        slag++;
      }
      else {
        slag = 0;
      }
    }
  }
}
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #30 Gepost op: 8 juli 2018, 23:08:15 »
Vandaag wilde ik nog "even" wat verbeterde ruisgenerator software laden en meteen proberen de 5 seconde pauze van de DigiSpark te verwijderen.

Voor beide was het nodig om een en ander op de USB poort van de computer aan te sluiten, maar de USB stekker had ik (bijna helemaal) van de print afgezaagd. Ik had (expres) nog wel een paar stukjes koperbaan laten zitten, en daar kan dan tijdelijk een afgedankte USB kabel aan gesoldeerd worden.




Het programmatje moest ik nog wel een paar keer aanpassen, maar nu werken de extra geluidsfuncties ook vrij goed bij langzaam rijden. Daarnaast nog een 'vrijloop' (4 seconden stilte) als 'geluid'functie 4 toegevoegd. Ook een fout verwijderd: bij snel rijden kon de rekensom voor de puf ook een negatieve tijd opleveren, en dan werd het stil... Nu niet meer.

Voor het verwijderen van die 5 seconden opstartvertraging ben ik verdwaald in oude links, onbegrijpelijke instructies, bestanden die niet meer bestaan en andere waarvan het onduidelijk is hoe je ze moet gebruiken. Ik heb stukjes en beetjes, maar wil dat eerst nog alle brokken bij elkaar zoeken en dat dan eerst maar eens in een proef opstelling proberen.
Want je kunt de boel stuk maken ("brick it", er een dode baksteen van maken)

Ondertussen gaat de BR91 met nieuwe software, en zonder de USB stekker, wederom in dienst gesteld worden...

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #31 Gepost op: 10 juli 2018, 08:26:18 »
Bij het rijden met de (2e hands) BR91 kwam ik er achter dat deze vooral haperde in de linker bocht... en dan viel het geluid steeds stil...
Het bleek dat stroomafname op de voorste loop-as wegviel als deze opzij moest schuiven om de bocht te maken. Dus asje er af, olieprut verwijdert (deze loc had ik met veel te veel olie overal ontvangen, maar dit deel was nog niet als 'besmeurd' herkent en niet schoongemaakt) en een van de stroomafnemers een tikje verbogen. Nu is het geluid veel stabieler tijdens het rijden.

Soms zit de oplossing in de eenvoudige en voor de hand liggende dingen.

Die 5 seconden opstart-vertraging van de DigiSpark wil ik ook nog steeds oplossen, maar dat is alweer minder nijpend geworden  :D

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #32 Gepost op: 11 juli 2018, 22:58:58 »
Weer even een update over de geluidsmodule in de BR91 en verdere verkleining van de geluidsmodule,

Ik heb ondertussen een zogenaamd bootloader bestand voor de DigiSpark gevonden, waarmee deze alleen 5 seconden wacht als  pin 0 met de massa is verbonden. Nu werkt dat prima; ik had daar alleen mijn transistor en speaker op gezet en dat is voldoende verbinding met de massa, waardoor deze nog steeds 5 seconden wacht. Dus wat aan de pin-indeling gedaan: rijstroom staat nu op pin 2 en 4, en de speaker op pin 1.

Maar werkt nu prima: geluid start meteen, en wat stroomonderbrekingen leveren alleen wat gesis op. Makkelijk rangeren ook.
Verder nog wat aan de software gesleuteld en wat geluiden voor andere stomers voorbereid.


Om de software te verbeteren in de testoppstelling, had ik wat weerstanden nodig. Dus even bij de lokale electronicawinkel annex legerdump langs geweest (kon meteen even wat spullen voor de vakantie inslaan). Op de fiets er heen bedacht ik me dat ik misschien nog verder kan miniaturiseren door alleen de microprocessor te gebruiken met een kleine spanningsregelaar. dus daar ook maar wat spulletjes voor gekocht.




De ATtiny behuizing is wat groter dan die op de DigiSpark, maar zonder de print kom ik toch kleiner uit. Als het goed is, dan is er alleen nog een spanningsregelaar, 1k weerstand en 0,1 uF condensator nodig om de processor te laten draaien.
Ik wil proberen de ATtiny chip van de DigiSpark af te halen en daar dan een IChoudertje op te solderen. De DigiSpark wordt dan gebruikt om de ATtiny's te programmeren.
Tenminste, dat is het plan. De praktijk wil nog wel eens wat weerbarstig zijn  8)

Rob

Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline mark mms

  • Super Modelspoorder
  • ******
  • Berichten: 1.224
  • Thanked: 26 times
  • Geslacht: Man
Re: Analoog rijden met geluid - het project.
« Reactie #33 Gepost op: 12 juli 2018, 22:16:52 »
Goed bezig Rob, ik blijf het volgen.

Offline Pierre

  • Super Modelspoorder
  • ******
  • Berichten: 7.918
  • Thanked: 334 times
  • Geslacht: Man
  • Woonplaats: Den Haag (Loosduinen)
    • Haagse Modelbouw Club
Re: Analoog rijden met geluid - het project.
« Reactie #34 Gepost op: 12 juli 2018, 22:56:41 »
Rob jongen ... ik vind het fenomenaal wat je daar allemaal uit je hoge hoed loopt te toveren. :o Ik denk dat ik een beetje aangestoken ben door je laatste projectje met de digispark. Dit is precies wat ik voor ogen had. Als ik er mee aan de gang ga mag ik je dan op het forum om hulp vragen zodat er misschien nog meer mensen baat bij hebben? 
Groet Pierre.

Ik rommel wat met treintjes en bouwwerkjes in H0 (H0e) en ook een klein beetje in N  .... Scratchbuilding, kitbashing en weathering.  ;D Lid van de http://haagsemodelbouwclub.nl/

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #35 Gepost op: 12 juli 2018, 23:48:53 »
Dank Mark, Pierre...

Ik blijf lekker door prutsen, hoor.

... Ik denk dat ik een beetje aangestoken ben door je laatste projectje met de digispark. Dit is precies wat ik voor ogen had. 
Ik wordt gaandeweg ook meegesleept in DigiSpark MP3loze versie, Pierre. Met name voor de boemels is dit de beste oplossing.

Als ik er mee aan de gang ga mag ik je dan op het forum om hulp vragen zodat er misschien nog meer mensen baat bij hebben?

...Tuurlijk, Pierre.
Overigens, als je in een loc de ruimte ervoor hebt, zou ik beginnen met een Arduino Nano i.p.v. een DigiSpark. De tsjoek-tsjoek software werkt op allebei, maar de Arduino is eenvoudiger aan te sluiten en simpeler in de upload van de software.
(Voor de DigiSpark moet je extra drivers op de computer installeren, aanvullende onderdelen voor in het Arduino programmeerprogramma downloaden en installeren, en de upload werkt meestal niet meer als er iets aan pin 3 of 4 is gesoldeerd. Niet onoverkomenlijk, maar wel lastig als je nog bezig bent met de basis in de vingers te krijgen. Arduino is, en blijft, meer plug-and-play)

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Pierre

  • Super Modelspoorder
  • ******
  • Berichten: 7.918
  • Thanked: 334 times
  • Geslacht: Man
  • Woonplaats: Den Haag (Loosduinen)
    • Haagse Modelbouw Club
Re: Analoog rijden met geluid - het project.
« Reactie #36 Gepost op: 13 juli 2018, 09:10:36 »
Dank je Rob. Ik zal eens een nieuw draadje opstarten over mijn Arduino ervaringen. Eens kijken waar dat op uit draaid  8);D

Maar eerst moet ik nog een rijtje huisjes afmaken.
Groet Pierre.

Ik rommel wat met treintjes en bouwwerkjes in H0 (H0e) en ook een klein beetje in N  .... Scratchbuilding, kitbashing en weathering.  ;D Lid van de http://haagsemodelbouwclub.nl/

Offline SuperSylvester

  • Super Modelspoorder
  • ******
  • Berichten: 2.054
  • Thanked: 77 times
  • Geslacht: Man
Re: Analoog rijden met geluid - het project.
« Reactie #37 Gepost op: 13 juli 2018, 14:13:02 »
Heel acceptabel Rob dat geluid en dat voor die paar euro  8)
Groet, Jack. Dwarsliggers houden het spoor recht....

H0 gelijkstroom, ECOS 2, Carsysteem, Periode pre-historie tot heden, grensoverschrijdend Nederlands

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #38 Gepost op: 14 juli 2018, 21:55:31 »
Dank je, Jack.

Geluid vanuit een lok is toch beter dan een wagon er achter. Mijn favoriete boemel-lokje is de BR70 uit Rijswijk begin dit jaar. Rijdt betrouwbaar en soepel, ook bij lage snelheid. Dus daar wil ik toch ook graag geluid in maken.

Ondertussen heb ik de ATtiny processor van de DigiSpark afgesoldeerd, nadat ik eerst het programma'tje voor de BR70 er op had geladen. Met zo'n kleine ATtiny, past het misschien wel in de BR70.
Ik denk dat (v.l.n.r. op de foto hieronder) de Elco, transistor, gelijkrichter, ATtiny, ontkoppelcondensator (ik weet niet wat dat is, maar blijkbaar hoort die er bij) en spanningsregelaar in de rechter watertank past als ik iets van het lood weg haal.




Na wat puzzelen alle onderdelen op een stukje karton gelijmd dat net zo breed en lang is als de watertank. Alle pootjes zo gebogen dat een en ander gesoldeerd kan worden. Nadat lijm droog was alles gesoldeerd en even spanning erop gezet: zowaar kwam het gesis van het starten van de geluidsmodule uit het speakertje.

Dus dit is de kleinste geluidsmodule tot nu toe:




Alleen de 4 weerstanden (spanningsdelers) van de rijstroom moet ik nog maken (en ruimte voor vinden).
Eerst even meten hoeveel er van het blok lood af moet.




Dus de haakse slijper er weer eens bij gepakt om een stuk van het balastblok weg te halen.




Geluidsmodule even passen...




Op zich is er nog wat ruimte in de watertanks van de kap om wat bladlood bij te plakken, maar eerst kijken wat het effect is van het lagere gewicht. Een proefritje helling op.




Er is geen merkbaar verlies van trekkracht en ook de stroomopname is nog prima. Dus dat kan verder zo blijven.

Nu verder het loden blok en de module goed isoleren en dan verder met de inbouw. Het kale lood van het balastblok zet ik dik in de verf (in een weinig gebruikte oranje kleur, je ziet er tenslotte niets meer van straks).
Als dat allemaal een beetje droog is, kan de module worden ingebouwd. De speaker, daar moet ik nog een plekje voor verzinnen...

Tot zover weer even.

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Pierre

  • Super Modelspoorder
  • ******
  • Berichten: 7.918
  • Thanked: 334 times
  • Geslacht: Man
  • Woonplaats: Den Haag (Loosduinen)
    • Haagse Modelbouw Club
Re: Analoog rijden met geluid - het project.
« Reactie #39 Gepost op: 14 juli 2018, 22:33:47 »
Je blijft me verbazen met je bouwwerken Rob. Ik ben woest aan het schilderen en popel om de soldeerbout te pakken. Ik moet me beheersen. ;D
Groet Pierre.

Ik rommel wat met treintjes en bouwwerkjes in H0 (H0e) en ook een klein beetje in N  .... Scratchbuilding, kitbashing en weathering.  ;D Lid van de http://haagsemodelbouwclub.nl/

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #40 Gepost op: 15 juli 2018, 21:38:34 »
Dank je Pierre.
Ik moet zeggen: ik had zelf ook nooit gedacht dat die BR70 nog geluid zou krijgen.

...Ik ben woest aan het schilderen en popel om de soldeerbout te pakken. Ik moet me beheersen. ;D
...En dan moet je straks van de meester eerst met breadboard en jumper kabeltjes aan de slag voor je mag solderen  ;)

Ondertussen had ik vanmorgen voor de koffie de spanningsdelers voor de rijstroom sensoren naast de motor gesoldeerd en ook de geluidsmodule al op de rijstroom aangesloten. Spannend moment....




Even proberen: achteruit een sis en daarna mooi puf-puf. Vooruit gaf de lok geen sjoege (of eigenlijk: geen tsjoeke).

Dus later vandaag 'eventjes' aan probleemzoeken gedaan, en daarvoor moest uiteindelijk de zorgvuldig in elkaar gepuzzelde module wat uit elkaar getrokken worden. Ik had de draadjes voor de rijstroomsensoren netjes weggewerkt maar kon zo niet volgen welke van de twee het niet deed.




En de kleine ATtinyvan de DigiSpark is wel erg klein. Ik kon vooral niet zien of de draden goed verbonden waren of niet. (een tafel-loep staat nu op het verlanglijstje!). En zo gaandeweg viel steeds meer uit: de motor, de rest van het geluid...
Dus ik was hier vooral zelf aan het puffen en stoom afblazen.

Uiteindelijk bleek het meest bereikbare draadje niet goed vast te zitten (ik was ervan uit gegaan dat het probleem waarschijnlijk op een van de moeilijst te bereiken/solderen plekken zou zitten).

Daarna alles weer getest en toen de boel weer netjes in elkaar gepuzzeld en ingepakt.




En dan het speakertje. Die komt aan de kant van de stoker. Hier ligt-ie nog los.




De speaker komt nog hoger en verder naar voren. De achterkant van de motor steekt in de kolenvoorraad en die is smaller dan de kabine.




Voorlopig even zo. Er is geluid te horen, maar het mag nog wel wat luider. Ik denk dat ik het raampje van de deur nog verder open moet doen.

Maar al met al: de BR70 met geluid: het werkt! En daar ben ik aardig mee in mijn sis, eh sas.

Rob


Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Pierre

  • Super Modelspoorder
  • ******
  • Berichten: 7.918
  • Thanked: 334 times
  • Geslacht: Man
  • Woonplaats: Den Haag (Loosduinen)
    • Haagse Modelbouw Club
Re: Analoog rijden met geluid - het project.
« Reactie #41 Gepost op: 15 juli 2018, 22:00:08 »
Wauuw Rob ... dat heb je knap in elkaar gepuzzeld. Pfff wat een gefriemel zeg. Ik hoop ook ooit eens zo ver te komen. ;)
Groet Pierre.

Ik rommel wat met treintjes en bouwwerkjes in H0 (H0e) en ook een klein beetje in N  .... Scratchbuilding, kitbashing en weathering.  ;D Lid van de http://haagsemodelbouwclub.nl/

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #42 Gepost op: 16 juli 2018, 11:35:01 »
Kleine stapjes, Pierre. Kleine stapjes... En ja: het is inderdaad een gefriemel.

Ondertussen is in de BR70 het raam bij de stoker open gezet en met een tandenstoker op de rand van de het luidsprekertje wordt het geluid enigszins naar het raam geleid. Misschien dat ik er ooit nog eens een echte boombox van maak, maar voorlopig vind ik 'm zo wel luid genoeg.

Dan hierbij nog de technische details: de code en de aansluitschema's.

In de loks maak ik iets verschillende geluiden, door wat te variëren in de 4-slags puf geluiden. Door elke slag een iets andere ruis-frequente te geven, ontstaat er een 4-kwarts ritme. Ik heb er nu drie gedefinieerd. Elk ritme kan afzonderlijk "aan" worden gezet, afhankelijk voor welke lok er gecompileerd wordt.
Daarnaast heeft elke lok zijn eigen rij-eigenschappen: spanning of pulsbreedte waarop de lok wegrijdt of stopt, de spanning voor een acceptabele topsnelheid, en de langst en kortste slagen die daarbij horen. Deze zijn ook te definiëren bovenin het programma'tje.

Goed, hier is de code zoals gebruikt voor de BR70 en BR91 (De BR57 definitie is al gemaakt, maar ik ben nog op zoek naar ruimte in de loc).


  /*
 * RUISGENERATOR STOOMTREIN
 * Stoomtrein geluiden met rijstroom afhankelijk "puffen" van ruis. Voor analoog rijden met geluid.
 * Rijstroom met pulsbreedtebesturing is nodig: de pulsbreedte wordt omgerekend naar puf-snelheid.
 *
 * Eenvoudige extra geluidsfuncties:
 * 1: fluitje (lijkt meer op een telefoon)
 * 2: sissen
 * 3: remmen
 * 4: stilte (vrijloop)
 * Functies werken redelijk bij langzaam rijden en goed bij stilstand en snel rijden
 *
 * versie 1.0 - 16 jul 2018
 */


// --- DEFINITIES ----

// kies de loc om te compileren: zet precies één definitie op 'true'
#define BR57 false
#define BR70 true
#define BR91 false

// pin definities
#define Ruispin       1                // pin voor aansturen van speaker: pin 1 of 0 (0 = 5 sec. vertraging)
#define rijpin1       2                // rijstroom meting
#define rijpin2       4                // rijstroom meting

//geluidsdefinities per type loc

#if BR57
  // definities voor slagen BR57. ("paa tsjie paa tsjoe...")
  #define Startfreq1  1400             // laagste frequentie ruis slag 1
  #define Eindfreq1   3400             // hoogste frequentie ruis slag 1
  #define Startfreq2  2100             // laagste frequentie ruis slag 2
  #define Eindfreq2   4800             // hoogste frequentie ruis slag 2
  #define Startfreq3  1400             // laagste frequentie ruis slag 3
  #define Eindfreq3   3400             // hoogste frequentie ruis slag 3 
  #define Startfreq4  1200             // laagste frequentie ruis slag 4
  #define Eindfreq4   3000             // hoogste frequentie ruis slag 4
  // berekening snelheid
  #define pulsbreedtestil   26         // pulsbreedte in % waaronder loc stil staat
  #define pulsbreedtemax    80         // pulsbreedte waar de maximum snelheid (pufritme) wordt bereikt 
  #define langstePuf       440         // langste puf (in ms) - langzaam rijden
  #define kortstePuf        60         // kortste puf (in ms) - topsnelheid (minimum ligt rond 50ms)
  // opstart geluid
  #define BeginSis        1150         // lengte van het sisgeluid bij starten (en korte stroomonderbrekingen)
#endif

#if BR70
  // definities voor slagen BR70 ("tsjoe, tsjie, tsjoe, tsjie")
  #define Startfreq1  1700             // laagste frequentie ruis slag 1
  #define Eindfreq1   3900             // hoogste frequentie ruis slag 1
  #define Startfreq2  2000             // laagste frequentie ruis slag 2
  #define Eindfreq2   4100             // hoogste frequentie ruis slag 2
  #define Startfreq3  1720             // laagste frequentie ruis slag 3
  #define Eindfreq3   3930             // hoogste frequentie ruis slag 3 
  #define Startfreq4  1980             // laagste frequentie ruis slag 4
  #define Eindfreq4   4050             // hoogste frequentie ruis slag 4
  // berekening snelheid
  #define pulsbreedtestil   28         // pulsbreedte in % waaronder loc stil staat
  #define pulsbreedtemax    65         // pulsbreedte waar de maximum snelheid (pufritme) wordt bereikt 
  #define langstePuf       375         // langste puf (in ms) - langzaam rijden
  #define kortstePuf        50         // kortste puf (in ms) - topsnelheid (minimum ligt rond 50ms)
  // opstart geluid
  #define BeginSis        1150         // lengte van het sisgeluid bij starten (en korte stroomonderbrekingen)
#endif

#if BR91
  // definities voor slagen BR91: 1e wat hoger, laatste wat lager dan de 2 middelste slagen ("tsjie, tsja, tsja, tsjoe")
  #define Startfreq1  1950             // laagste frequentie ruis slag 1
  #define Eindfreq1   4350             // hoogste frequentie ruis slag 1
  #define Startfreq2  1800             // laagste frequentie ruis slag 2
  #define Eindfreq2   4000             // hoogste frequentie ruis slag 2
  #define Startfreq3  1800             // laagste frequentie ruis slag 3
  #define Eindfreq3   4000             // hoogste frequentie ruis slag 3 
  #define Startfreq4  1750             // laagste frequentie ruis slag 4
  #define Eindfreq4   3900             // hoogste frequentie ruis slag 4
  // berekening snelheid
  #define pulsbreedtestil   26         // pulsbreedte in % waaronder loc stil staat
  #define pulsbreedtemax    84         // pulsbreedte waar de maximum snelheid (pufritme) wordt bereikt 
  #define langstePuf       800         // langste puf (in ms) - langzaam rijden
  #define kortstePuf        71         // kortste puf (in ms) - topsnelheid (minimum ligt rond 50ms)
  // opstart geluid
  #define BeginSis        1750         // lengte van het sisgeluid bij starten (en korte stroomonderbrekingen)
#endif

// algemene geluidsdefinities
#define pauze         0.25             // factor puf/pauze (elke slag heeft voor een deel stilte)
#define RemLaag    3200                // frequentiebereik voor remgeluid
#define RemHoog    3800
#define SisLaag    4000                // frequentiebereik voor sisgeluid
#define SisHoog    5500

// definities voor de meting van de rijstroom
#define pullup               false     // geeft aan of de interne pullup weerstand gebruikt moet worden
#define maxpulsperiode       5000      // hoe lang wachten (minimaal 2x periode rijstroom PWM)

// Frequenties (Periodes) op de rijstroom
#define rijPeriode            2020     // rijstroom puls in us
#define functie_01_Periode    1500     // Periode (freq.) functie 1
#define functie_02_Periode    1250     // Periode (freq.) functie 2
#define functie_03_Periode     990     // Periode (freq.) functie 3
#define functie_04_Periode     790     // Periode (freq.) functie 4
#define functie_05_Periode     590     // Periode (freq.) functie 5 - niet gebruikt
#define functie_06_Periode     490     // Periode (freq.) functie 6 - niet gebruikt
#define pulsruis               100     // maximaal verschil in gemeten Periodes (ruis)
#define minhoog                200     // minimaal "hoog" signaal

// --- CONSTANTES ---

const float sqrtpbstil = 100*sqrt(pulsbreedtestil);
const float sqrtpbmax  = 100*sqrt(pulsbreedtemax);


// ---- VARIABLEN ----

// puf-geluid variabelen: 4 slagen (is tweezijdige tweecylinder loc)
unsigned int ruisStartFreq[] {Startfreq1, Startfreq2, Startfreq3, Startfreq4};  // hoogste frequentie puf-ruis per slag
unsigned int ruisEindFreq[]  {Eindfreq1,  Eindfreq2,  Eindfreq3,  Eindfreq4 };  // laagste frequentie puf-ruis per slag
int slag = 0;

// rijstroom variabelen
int rijpin[] {rijpin1, rijpin2};
int vooruit = 1;                      // richting: bepaalt welke pin wordt uitgelezen voor de rijstroom puls
double pulsbreedteHoog;
double pulsbreedteLaag;
double pulsPeriode;
float pulsbreedte = 0;                // pulsbreedte in %
int functie = 0;                      // speciale functie frequentie gemeten

unsigned int  puf;                    // lengte puf-slag (ms)
unsigned long pze;                    // pauze tot aan klok stand(ms)


// --- FUNCTIES ---

// Functie: maak puf geluid (één slag)
// Geeft ruis voor een deel van de opgegeven lengte en stil voor de resterende tijd (factor definitie)
// De ruisfrequentie neemt langzaam af om enigszins de volume afname te simuleren.
// input: lengte van de slag (in ms)
//        laagste frequentie van de ruis
//        hoogste frequentie van de ruis
// output: tijd tot einde pauze van de puf
unsigned long maakPuf(int lengte, unsigned int laag, unsigned int hoog) {
  unsigned int  freq;
  unsigned long mils;
  float factor = 1 - (0.09/lengte);
  mils = millis() + (1-pauze) * lengte;
  while (millis() < mils) {
    freq = random (laag, hoog);
    tone (Ruispin,freq);
    laag = laag*factor;
    hoog = hoog*factor;
  }
  noTone(Ruispin);
  return millis() + (lengte * pauze);                         // pauze tijd tussen de puffen
}

// Functie: Afspelen van ruis.
// Gebruikt voor sissen en remgeluid. Constant ruis-geluid gedurende de opgegeven lengte (in ms).
// input: lengte van de slag (in ms)
//        laagste frequentie van de ruis
//        hoogste frequentie van de ruis
void speelRuis(unsigned int lengte, unsigned int laag, unsigned int hoog) {
  unsigned int  freq;
  unsigned long mils;
  mils = millis() + lengte;
  while (millis() < mils) {
    freq = random (laag, hoog);   
    tone (Ruispin,freq);
  }
  noTone(Ruispin);
}

// Functie: Afspelen van een 'fluitje'
// Afwisselend een hoge en lage frequentie met een kleine frequentie variatie.
// input: lengte (in ms)
void speelFluitje(unsigned int lengte) {
  unsigned int  freq;
  unsigned long mils;

  mils = millis() + lengte;
  while (millis() < mils) {
    tone (Ruispin,random (2100,2120));
    delay (20);
    tone (Ruispin,random (2400,2430));
    delay (18);
  }
  noTone(Ruispin);
}

void meetPuls() {
  // puls meting variabelen: lengte 'hoog', 'laag' en trillingstijd (periode). Alle tijden in us.
  pulsbreedteHoog = pulseIn(rijpin[vooruit], HIGH, maxpulsperiode);
  pulsbreedteLaag = pulseIn(rijpin[vooruit], LOW, maxpulsperiode );
  pulsPeriode = pulsbreedteHoog + pulsbreedteLaag;
}

// HERKEN FUNCTIE-FREQUENTIE
// functie voor het checken van functie-frequenties
// op de puls (functietoets).
int getFunctie () {
  int f = 0;
 
  if (abs (pulsPeriode - functie_01_Periode) < pulsruis) { f = 1;}
  if (abs (pulsPeriode - functie_02_Periode) < pulsruis) { f = 2;}
  if (abs (pulsPeriode - functie_03_Periode) < pulsruis) { f = 3;}
  if (abs (pulsPeriode - functie_04_Periode) < pulsruis) { f = 4;}

  return f;
}

void setup() {
  pinMode     (Ruispin,OUTPUT);
 
  pinMode     (rijpin[0],INPUT);
  digitalWrite(rijpin[0],pullup);
  pinMode     (rijpin[1],INPUT);
  digitalWrite(rijpin[1],pullup);
  speelRuis (BeginSis, SisLaag,SisHoog);               // sissen bij opstarten
}

void loop() {
  // Pulsbreedte bepalen
  vooruit = !vooruit;                             // wissel de pin waarop de rijstroom wordt gemeten
  meetPuls(); 
  pulsbreedte = 100 * pulsbreedteHoog / pulsPeriode;
  functie = getFunctie();
 
  // speciale geluidsfunctie gevonden
  if (functie) {
    // als speciale functie is gevonden, controleer de functie frequentie nogmaals.
    // Hiermee wordt onterecht meten voorkomen (door bijvoorbeeld storing op de stroomopname).
    meetPuls();
    if (functie == getFunctie()) {                     // nog steeds dezelfde funtie op de rijstrrom
      switch (functie) {                               // speel functie 1, 2, 3 of 4.
        case 1:
          speelFluitje(1800);                          // fluitje afspelen, 1,8 sec.
        break;
        case 2:
          speelRuis (3000, SisLaag,SisHoog);           // sissen, 3 sec.
        break;
         case 3:
          speelRuis (3600, RemLaag,RemHoog);           // remgeluid 3,6 sec.
        break;
         case 4:
          pze = millis()+ 4500;                        // 4,5 sec. stilte = vrijloop
        break;
      }
    }
  }
  else {                                               // geen speciale functie, dan rij-geluid
    // rijgeluid
    // tweecylinder = 4 puf slagen met verschil in de slagen (volgens definities van de loc)
    if (pulsbreedte > pulsbreedtestil && millis() > pze) {                   // lok rijdt en er is nu geen puf-pauze of vrijloop
      // puf slag berekenen
      if (pulsbreedte > pulsbreedtemax) {
        pulsbreedte = pulsbreedtemax;
      }
      puf = map(100 * sqrt (pulsbreedte), sqrtpbstil, sqrtpbmax, langstePuf, kortstePuf);  // reken pulssbreedte % om naar puf-tijd
      pze = maakPuf(puf, ruisStartFreq [slag], ruisEindFreq [slag]);         // maak puf-ruis. Functie geeft resterende pauze-tijd terug
      // volgende puf-slag (volgnummer 0-3)
      if (slag < 3) {
        slag++;
      }
      else {
        slag = 0;
      }
    }
  }                                                     // einde functie spelen / rijgeluid
}                                                       // einde hoofd-lus


En dan de aansluitschema's voor de DigiSpark en ATtiny.

Van de DigiSpark zijn alleen andere pinnen in gebruik genomen dan eerder, zodat er niet meer 5 seconden gewacht wordt tijden het opstarten.




En dan de versie waar alleen de ATtiny wordt gebruikt. Hier is alleen een spanningsregelaar en ontkoppelcondensator nodig om de ATtiny van een stabiele 5V te voorzien. De gebruikte regelaar, 78L05 kan 100 mA leveren, en dat is ruim voldoende omdat de speaker de stroom krijgt van de gelijkgerichte rijstroom en niet van de 5V.




In de ATtiny versie is de DigiSpark geprogrammeerd en daarna is de chip van de DigiSpark losgesoldeerd. Volgende stap is een ICvoetje op de DigiSpark maken, zodat ik eenvoudig andere ATtiny's kan programmeren.

Maar daarover later meer...

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline mark mms

  • Super Modelspoorder
  • ******
  • Berichten: 1.224
  • Thanked: 26 times
  • Geslacht: Man
Re: Analoog rijden met geluid - het project.
« Reactie #43 Gepost op: 16 juli 2018, 15:50:45 »
Rob ik vind het geweldig om te zien.

Wel even een vraag, dit kan alleen met pulsbreedte besturing?
Dus niet met een regel trafo van 1,2 t/m 16 volt?

Kom ik in de problemen met een constante treinverlichting m.b.v. iets in de trend van hoogfrequente wisselstroom (of zoiets)?

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #44 Gepost op: 16 juli 2018, 19:50:16 »
Hoi Mark,

Dank je. Het geheel hier is opgebouwd rondom pulsbreedte besturing. Om 2 redenen:
1. Met pulsbreedtebesturing kun je vanaf lage rijsnelheden (en bij stilstand, als de aanloopweerstand de trein nog stil houdt) al meteen voldoende spanning opwekken voor de elektronica. Dat gaat niet met de gewone trafo. Dan moet je op 6V of meer zitten en dan rijden de meeste treinen al flink door.
2. De breedte van de puls bepaalt de rijsnelheid voor de geluidsmodule. Er is vast ook wel iets te verzinnen met de het meten van de spanning, maar dat was niet mijn uitgangspunt. Bovendien werkt dat dan pas bij hogere snelheid (zie punt 1).

Ik weet niet wat de hoogfrequente treinverlichting doet. Ik stel me voor dat die wel kan interfereren met het meten van de pulsbreedte. Maar dat is dan wel weer op te lossen met een hoogfrequent filter, denk ik. Maar dat gaat een beetje buiten mijn kennis en ervaringsgebied. Ik heb wat basiskennis elektronica, maar ik kan er niets aan rekenen. Ik ben, zeg maar, empirisch autodidact (= gewoon zelf wat aanklooien tot het werkt).

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Dirk T

  • Super Modelspoorder
  • ******
  • Berichten: 1.345
  • Thanked: 98 times
  • Geslacht: Man
  • Tweerail DCC, NL 1950-1975 met ruime blik
Re: Analoog rijden met geluid - het project.
« Reactie #45 Gepost op: 17 juli 2018, 08:46:42 »

Je bent leuk bezig vind ik!

... (een tafel-loep staat nu op het verlanglijstje!).

Dat kan. Nadeel van een dergelijke loep (ik heb er een) vind ik dat je met beide ogen door dezelfde lens kijkt, en dat maakt het voor mij moeilijk om diepte te zien. Inmiddels gebruik ik een andere oplossing: een leesbril van de Action, van wel 90 eurocent.

Wat betreft rekenen aan elektronica: het is niet zo belangrijk maar die 220 ohm weerstanden in de spanningsdeler om de PWM aan te passen voor de ATTiny, dat zal wel goed gaan, maar als ik zo kijk kun je in plaats van 220 ohm minstens net zo goed 1k gebruiken. Scheelt weer wat mA in het gebruik.
Het einde van een weg wordt altijd bereikt door hem stap voor stap af te lopen.

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #46 Gepost op: 17 juli 2018, 09:44:01 »
Dank je Dirk.

Ik gebruik ook al een leesbril, die van mij is van de Big Bazar, maar dat is niet meer voldoende. En terwijl ik dit schrijf bedenk ik me dat ik natuurlijk van +1 ook naar +2 of meer kan gaan voor dit gepriegel! Dank, ga ik eens proberen.

Wat betreft rekenen aan elektronica: het is niet zo belangrijk maar die 220 ohm weerstanden in de spanningsdeler om de PWM aan te passen voor de ATTiny, dat zal wel goed gaan, maar als ik zo kijk kun je in plaats van 220 ohm minstens net zo goed 1k gebruiken. Scheelt weer wat mA in het gebruik.

Goed punt, Dirk.

Die mA's hebben wel even door mijn hoofd gespeeld. Die 220 ohm is vooral bedacht om de extra diodes en weerstanden op de DigiSpark pinnen te kunnen overrulen. En 220 ohm heb ik gebruikt omdat ik deze in de eerste opzet had liggen (de eerst volgende in de voorraad was 10k). Misschien wat overdadig, maar het werkt. Ik heb inderdaad overwogen om grotere weerstanden te gebruiken bij de ATtiny, maar ik wilde uitsluiten dat door deze verandering e.e.a. niet zou werken (teveel gelijktijdig veranderen maakt het fout zoeken moeilijker). Maar nu het draait, zou ik dat inderdaad nog anders kunnen maken. De weerstanden zitten immers gewoon langs de motor en zijn vrij eenvoudig te vervangen. En ondertussen is de voorraad weerstanden weer aangevuld met 470 en 1k.
(maar mezelf kennende, zal het in de BR70 wel zo blijven zitten... Maar ik ben nog niet klaar met de ontwikkeling in andere locs)

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Dirk T

  • Super Modelspoorder
  • ******
  • Berichten: 1.345
  • Thanked: 98 times
  • Geslacht: Man
  • Tweerail DCC, NL 1950-1975 met ruime blik
Re: Analoog rijden met geluid - het project.
« Reactie #47 Gepost op: 17 juli 2018, 10:16:26 »
Misschien wat overdadig, maar het werkt.

En uiteindelijk is dat waar het om gaat, toch?
Het einde van een weg wordt altijd bereikt door hem stap voor stap af te lopen.

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #48 Gepost op: 29 juli 2018, 21:58:11 »
Ondertussen tuffen de BR70 en BR91 lekker rond op de baan. Met name voor rangeren en boemelen is deze ruisgenerator geluidsmodule ideaal. Bij langere en constante ritten wordt het geluid wat eentonig, tenzij er wat met de snelheidsregelaar wordt gedaan (iets gas terug nemen de helling op bijvoorbeeld)….

Verder heb ik gebprobeerd een IC voetje te solderen op de DigiSpark waar de ATtiny vanaf was gehaald, maar dat is niet gelukt. Ondertussen zijn de print banen kaduuk. Niet getreurd. Misschien dat ik nog eens een DigiSpark in elkaar zet op een experimenteer bordje, zodat ik daarmee de losse ATtiny's kan programmeren (als dat lukt).
Maar er zijn weer wat DigiSparks uit China gearriveerd, dus ik kan weer verder.

Nu dacht ik dat er in de BR57, toch een vrij grote loc, wel wat ruimte zou zijn om een geluidsmodule in te bouwen.




Maar dat viel tegen. Het was even puzzelen hoe de kabine van de ketel af ging, maar het blok lood krijg ik er niet uit zonder echt iets stuk te maken....

Dus dan maar naar de BR64. Die heeft wel wat ruimte onder het blok lood.




Bij de bestelling van tante Ali heb ik 2 soorten DigiSparks besteld. De "dikke" met USB op de print en een "dunne" met micro USB aansluiting. De eerste kan 500 mA leveren, de 2e slechts 100 mA. Nu is 100 mA onvoldoende om de MP3 speler van stroom te voorzien, maar het is ruim genoeg voor de ruisgenerator versie van de geluidsgenerator. Eens kijken of ik die in de BR64 kan proppen...

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.743
  • Thanked: 161 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Analoog rijden met geluid - het project.
« Reactie #49 Gepost op: 30 juli 2018, 17:49:08 »
Vandaag de geluidsmodule voor de BR64 in elkaar geprutst.

Allereerst de hoekjes van de bevestigings-gaten weggehaald en een papiertje voor de elektrische isolatie op de digiSpark geplakt. Daarop de gelijkrichter, Elco en spanningsdelers voor de rijstroommeting gemaakt. Ook de rijstroom draden zitten al aan de gelijkrichter




Vervolgens de transistor er op en dan kan een en ander op zijn plek worden gezet en de aansluitingen worden gemaakt. De speaker zit  rechtsonder naast de motor op de luchtdruktank geplakt. Tussen het frame en de luchtdruktank is ruimte waar het geluid weg kan.




Van het loden blok hoeft aleen een randje bovenop weg te worden gehaald, zodat de bovenkant naast de DigiSpark past. Verder een klein hoekje rechtsachter weggevijld om de draden wat ruimte te geven.




Kap er op en rijden maar...

Tijd voor een filmpje van de 3 locs met ruisgenerator. Komt binnenkort.


Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...