Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Nieuwe ruimte voor baan na ca. 30 jaar door Frits C
Vandaag om 06:37:17
24e smalspoormodelbouwdagen 30 en 31 augustus 2025 bij Stoomtrein Katwijk Leiden door Ronald Halma
Vandaag om 01:21:11
Terugverende koppeling door Deetrein
Vandaag om 00:27:32
Aanbrengen van (kleine) nummerplaten en dergelijke door Ferdinand Bogman
Vandaag om 00:05:28
Ombouw Hornby LMS Class 2P 4-4-0 naar NS 2100 door Erwin 054
03 August 2025, 23:57:10
NS 9500 scratch build uit Fleischmann BR94 door Erwin 054
03 August 2025, 23:50:40
Vreemd probleem door RobVille
03 August 2025, 23:37:42
Bahnstrecke 5867 door ruudns
03 August 2025, 23:05:00
Wat was jullie allereerste loc? door hervé
03 August 2025, 22:53:51
Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
03 August 2025, 22:46:30
Artikelen over de CIWL in Spoorwegjournaal door grossraumwagen
03 August 2025, 22:38:55
BNLS-Module: "Rvbr-Btk, Ringvaartbrug Haarlemmermeer nabij Buitenkaag" NS H0 door MOVisser
03 August 2025, 22:20:45
Fleischmann Anna ombouw. door Wim Vink
03 August 2025, 22:09:30
Lokpilot 4 defect door spock
03 August 2025, 21:57:09
Toon hier je nieuwe (model-) spooraanwinst(en)... door Cegielski
03 August 2025, 21:17:19
De overeenkomst tussen een Ovaalramer en een Motorpost. door FritsT
03 August 2025, 21:02:57
Tentoonstelling: Liefs uit Roosendaal door Rsd1000
03 August 2025, 20:33:08
Da's Daz 2 door Huup
03 August 2025, 20:15:23
Vijfhuis (v.h. Frotterdam) door Ferdinand Bogman
03 August 2025, 19:57:09
Module vliegveld Jan van Mourik door Modellbahnwagen
03 August 2025, 18:56:12
Antislipband vervangen van Fleischmann 4065 door Albert de Heer
03 August 2025, 18:47:08
De bouw van mijn modelbaan in Thailand door Flevodienst 1976
03 August 2025, 18:30:14
Yamorc:loconet goes loco door Dirk
03 August 2025, 18:24:44
Dordrechtse Dwarsliggerwagens door marco
03 August 2025, 18:06:22
Nederlandse trams in HO tijdperk 3 door Bart van der Meer
03 August 2025, 17:17:10
lampjes in huizen willekeurig schakelen door Ronald Schreuder
03 August 2025, 17:13:17
US diorama in H0 door puntenglijder
03 August 2025, 16:33:32
Aanbrengen nummerschildjes, maar met welke lijm? door FransW
03 August 2025, 16:17:23
Vitrinekast door Hasenwald
03 August 2025, 14:34:01
Verwijderen van het nummer op Roco 1631 – tips gezocht door Ben
03 August 2025, 13:15:07
  

Auteur Topic: Digitaliseren Fleischmann draaischijf  (gelezen 52382 keer)

Karst Drenth

  • Offline Offline
  • Berichten: 10482
  • NS blauw, groen, rood, bruin, grijs en standgroen
    • Plan U op Sleutelspoor
Re: Digitaliseren Fleischmann draaischijf
« Reactie #60 Gepost op: 14 February 2017, 20:15:38 »
Nog een uitdaging Dick:


Nu je afstanden kunt 'tellen' kun je misschien ook 'leren'... maw de schijf een keer helemaal rond laten stappen en de tijd meten tussen elke aansluiting... deze in eeprom opslaan... en tijdens het draaien naar een bepaald spoor de magneet aangetrokken laten... :P

bosje77

  • Offline Offline
  • Berichten: 2840
Re: Digitaliseren Fleischmann draaischijf
« Reactie #61 Gepost op: 14 February 2017, 20:42:38 »
Hallo Dick,

Ik heb even de link bekeken van frudy maar ook daar zie ik weer een pc gekoppeld aan de Ecos met train controller er op.
Ik werk puur en alleen maar met de Ecos en niet met een pc werkt het systeem waar je mee bezig bent dan nog wel?

Gr robin

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #62 Gepost op: 14 February 2017, 21:10:18 »
Hoi
@bosje 77: Je hoeft geen PC te gebruiken hoor, Deed Ruud in zijn eerste posts ook niet. Staan nog wat filmpjes van op zijn site
Ecos zet zelf het DCC commando op de rails, dat is uiteindelijk de trigger voor de arduino  Idem met de draaischijf besturing

@karst : ben ik weer terug bij mijn eerste post. Kan wel maar ik heb gemerkt dat de reproduceerbaarheid van de schijf  beperkt is.
Ik heb wel wat gespeeld met de waarde van de concensator aan de stroomdetectie naar de motor van de draaischijf.  Die springt nu sneller aan waardoor je uiteindelijk wat soepeler loopt. Nu nog een sirene oid om het getik te maskeren ::)

Ik liep gisteren bij tetst werk wel tegen nieuwe problemen in de DCC communicatie met rocrail aan. Rechtsreeks op de multimuis ging goed maar via rocrail werd het een puinhoop.  Morgen een dag vrij na dienst, maar eens spelen met een DCC sniffer

Heeft iemand ervaring met het LDT protocol en rocrail ??

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #63 Gepost op: 15 February 2017, 15:49:04 »
Hallo

weer een stap verder
Rocrail in combinatie met een roco multimaus was een hardnekkige tegenstander  8)
Het is gelukt, de Rocrail commando's worden nu netjes met het LDT protocol afgehandeld

Bijgaand de laatste software  Nog een paar kleine items op de ToDo lijst en dan is het prototype wel af
Als mensen de Rocrail testfile willen inzien graag een PB

*
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  Arduino DCC Turntable control
  Original DCC sketch : Arduino DCC solenoid Control  Author: Ruud Boer - January 2015
  Adapted for turntable control with LDT protocol Dick Koning feb 2017, echter de nummering van de sporen is conform RocRail

  The DCC signal is optically separated and fed to pin 2 (=Interrupt 0). Schematics: www.mynabay.com
  Many thanks to www.mynabay.com for publishing their DCC monitor and -decoder code.

  Basis idee  geef korte puls op het locking relais, de draaischijf gaat draaien
  als de draaischijf 1 positie gedraait heeft, stopt de stroom door de motor automatisch
  dit genereert een overgang van laag naar hoog op de motor sense pin
  Gebruik dit event om te bepalen hoeveeel afslagen er gedraaid is en genereer eventueel een nieuwe puls

  versie DCC_draai_rocrail3
    :inbouwen DCC stuurelementen, eenvoudige koppeling tussen DCC en draaischijf gemaakt
    :onderstening van commando'ga naar track nr , + 1 track, -1 track, 180 graden draai

  In Rocrail met Xpressnet interface liggen de adressen 4 lager dan de standaard LDT adressen dus basis is 221 ipv 225
  Dit moet worden aangepast met de offset constante
  De Rocrail commando's zijn geinverteerd (instellenin in Rocrail zelf)
  Rocrail genereert 2 commando's een draairichting en een afslagnummer  De draairichting is overbodig en wordt niet gebruikt

  TODO break statement tijdens daai
  TODO calibratie algoritme


  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*/

#define aan 0               // tbv relais ingangen zijn geinverteerd       
#define uit 1
#define test 1              // Indien (test) = 1 worden de positie medlingen uitgeprint

#define richting1  3        // Arduino Digital I/O pin number  tbv relais sturing
#define richting2  4        // 2 single relais altijd gelijkop bewegen bepalen de draairichting
#define lock       5        // relais wat de interne "lock" van de draaischijf aanstuurt
#define brug1      6        // ompoolrelais tbv polariteit van de draaibrug
#define brug2      7        // ompoolrelais tbv polariteit draaibrug

#define In_1      8         // Arduino Digital I/O pin number  tbv schakelaars
#define In_2      9
#define In_3      10
#define In_4      11
#define cSense    12        // curent sense motoraandrijving

#include <DCC_Decoder.h>    // Mynabay DCC library
#define kDCC_INTERRUPT 0


// Globale variabelen

int teller = 0;                   // teller is het aantal afslagen dat de scijf moet draaien
int track = 0;                    // actuele afslag waar de draaischijf zich bevindt
int target = 0;                   // doel waarnaar naar toe gedraaid moet worden
bool brugrelais = 0;              // ompoolrelais draaibrug  Normaal=0 ( NC aansluitingen Geinverteerd =1 C aansluitingen

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// FILL IN
const byte maxaccessories = 6;    //The number of "LDT command" adressen you want to control with this Arduino
const byte offset = 4;            // Offset tov originele LDT adressen  Bij gebruik Xpressnet/ multimouse offset = 4 anders offset = 0

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

typedef struct
{
  int               address;          // Address to respond to
  byte              output;           // State of accessory: 1=on, 0=off   rood /groen in wissel commando
  int               track;            // turntable tracknumber
  int               track2;           // turntable track number
  boolean           finished;         // finished : 0=busy 1= ready for next command
  boolean           activate;         // start verwerking commando
  unsigned long     offMilli;         // for internal use
  unsigned long     durationMilli;    // for internal use  "busy periode"

}
DCCAccessoryAddress;
DCCAccessoryAddress accessory[maxaccessories];

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DCC packet handler
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data)
{
  // Convert NMRA packet address format to human address
  address -= 1;
  address *= 4;
  address += 1;
  address += (data & 0x06) >> 1;

  boolean enable = (data & 0x01) ? 1 : 0;

  for (int i = 0; i < maxaccessories; i++)
  {
    if ( address == accessory[i].address )
    {
      accessory[i].activate = 1;
      if ( enable ) {
        accessory[i].output = 1;
      }
      else {
        accessory[i].output = 0;
      }
    }
  }
} // END BasicAccDecoderPacket_Handler


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialization: COPY - PASTE the structure as many times as you have commands and fill in the values you want.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void ConfigureDecoderFunctions() // The amount of accessories must be same as in line 52 above!
{
  accessory[0].address = 226 - offset; // basisadres LDT =225, eerste commando 226     Voor Multimaus + rocrail  adres -4 invoeren
  accessory[0].track = 0;       // output 0 adres
  accessory[0].track2 = 0;      // output 1 adres    LDT : 226 1 draai 180 graden
  accessory[0].finished = 1;    // Do not change this value
  accessory[0].activate = 0;    // Do not change this value
  accessory[0].output = 0;      // Do not change this value
  accessory[0].durationMilli = 250;

  accessory[1].address = 227 - offset;
  accessory[1].track = 0;       // output 0 adres    LDT : 227 0 draai 1 positie CW
  accessory[1].track2 = 0;      // output 1 adres    LDT : 226 1 draai 1 positie CCW
  accessory[1].finished = 1;    // Do not change this value
  accessory[1].activate = 0;    // Do not change this value
  accessory[1].output = 0;      // Do not change this value
  accessory[1].durationMilli = 250;

  accessory[2].address = 229 - offset;
  accessory[2].track = 12;      // output 0 adres    LDT : 229 ga naar spoor 1
  accessory[2].track2 = 5;      // output 1 adres    LDT : 229 ga naar spoor 2
  accessory[2].finished = 1;    // Do not change this value
  accessory[2].activate = 0;    // Do not change this value
  accessory[2].output = 0;      // Do not change this value
  accessory[2].durationMilli = 250;

  accessory[3].address = 230 - offset;
  accessory[3].track = 3;       // output 0 adres    LDT : 230 ga naar spoor 3
  accessory[3].track2 = 0;      // output 1 adres    LDT : 230 ga naar spoor 4
  accessory[3].finished = 1;    // Do not change this value
  accessory[3].activate = 0;    // Do not change this value
  accessory[3].output = 0;      // Do not change this value
  accessory[3].durationMilli = 250;

  accessory[4].address = 231 - offset;
  accessory[4].track = 45;      // output 0 adres    LDT : 231 ga naar spoor 5
  accessory[4].track2 = 24;     // output 1 adres    LDT : 231 ga naar spoor 6
  accessory[4].finished = 1;    // Do not change this value
  accessory[4].activate = 0;    // Do not change this value
  accessory[4].output = 0;      // Do not change this value
  accessory[4].durationMilli = 250;

  accessory[5].address = 225 - offset; // basisadres LDT =225, eerste commando is programeerstand hier gebruikt als reset, toekomst calibratie oid
  accessory[5].track = 0;       // output 0 adres    reset track en target naar 0  moet nog iets in om dat ogv sensor te doen
  accessory[5].track2 = 0;      // output 1 adres    reset track en target naar 0  moet nog iets in om dat ogv sensor te doen
  accessory[5].finished = 1;    // Do not change this value
  accessory[5].activate = 0;    // Do not change this value
  accessory[5].output = 0;      // Do not change this value
  accessory[5].durationMilli = 250;

} // END ConfigureDecoderFunctions



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void setup()
{
  DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handler, true);
  ConfigureDecoderFunctions();
  DCC.SetupDecoder( 0x00, 0x00, kDCC_INTERRUPT );


  //-------( Initialize Pins so relays are inactive at reset)----
  digitalWrite(richting1, uit);
  digitalWrite(richting2, uit);
  digitalWrite(lock, uit);
  digitalWrite(brug1, uit);
  digitalWrite(brug2, uit);
 

  //---( THEN set pins as outputs )----
  pinMode(richting1, OUTPUT);
  pinMode(richting2, OUTPUT);
  pinMode(lock, OUTPUT);
  pinMode(brug1, OUTPUT);
  pinMode(brug2, OUTPUT);
  delay(1000); //Check that all relays are inactive at Reset

  pinMode(In_1, INPUT_PULLUP);
  pinMode(In_2, INPUT_PULLUP);
  pinMode(In_3, INPUT_PULLUP);
  pinMode(In_4, INPUT_PULLUP);
  pinMode(cSense, INPUT);
  pinMode(2, INPUT_PULLUP); //Interrupt 0 with internal pull up resistor (can get rid of external 10k)

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW); //turn off Arduino led at startup

  Serial.begin(38400);

  target = 0;
  track = 0;
  teller = 0;

} //--(end setup )---


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Main loop
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void loop()
{
  // target gewenste afslag
  // track actuele afslag
  // teller aantal slagen
  // clockwise(1) : clockwise  clockwise(0) : counter clockwise

  leesDCC();                // genereert een gewenst afslag nummer
  pushButton();             // genereert een gewenst afslag nummer

  if (target > track)
  {
    teller = target - track;
    if (teller <= 24) {
      clockwise(0);
      if (test) melding();
      while (teller > 0) {   // niet definitief gebruiken, blokkeert alles
        draai(0);
      }
    }
    else
    {
      teller = 48 - teller ;
      clockwise(1);
      if (test) melding();
      while (teller > 0) {   // niet definitief gebruiken, blokkeert alles
        draai(1);
      }
    }
  }

  if (target < track)
  {
    teller = track - target;

    if (teller <= 24) {
      clockwise(1);
      if (test) melding();
      while (teller > 0) {   // niet definitief gebruiken, blokkeert alles
        draai(1);
      }
    }
    else
    {
      teller = 48 - teller ;
      clockwise(0);
      if (test) melding();
      while (teller > 0) {   // niet definitief gebruiken, blokkeert alles
        draai(0);
      }
    }
  }
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Aansturing van de draaischijf
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void draai(bool richting)
{
  static bool pulsBusy = false;            // pulsBusy is de variable die aangeeft dat het interne draaischijf locking relais geactiveerd is
  static unsigned long pulsTimer = 0;      // pulsTimer is de teller die meeloopt met de duur van de relais puls
  static unsigned long pulsDuur = 2000;    // pulsDuur geeft aan hoelang de puls default duurt  Moet iets korter zijn dan de tijd die nodig is voor 1 stap

  // teller is het aantal afslagen dat de schijf moet draaien    Globale variable
  // richting is de variabele die aangeeft welke kant de draai opgaat  Procedure Parameter

  if (!pulsBusy) {
    pulsTimer = millis() + pulsDuur;
    pulsBusy = true;
    digitalWrite(lock, aan);
    delay(10);  // probeersel geef het relais even tijd
  }
  else {
    if ( millis() > pulsTimer)
    {
      digitalWrite(lock, uit);  // de default pulsperiode is voorbij

      if (digitalRead(cSense)) {
        //cSense is hoog : er loopt geen stroom door de motor   Hier moet je mischien nog iets van een debounce in zetten
        teller = teller - 1;
        pulsBusy = false;
        if (richting) {        // richting 1=clockwise   0=counterclockwise
          track = track - 1;
          if (track < 0) track = track + 48;
          if (test) melding();
          if (track == 13 || track == 37) {
            brugrelais = !brugrelais; // statement voor ompolen railrelais.  Kies de sporen ogv de layout
            brug(brugrelais);
          }
        }
        else
        {
          track = track + 1;
          if (track >= 48) track = track - 48;
          if (test) melding();
          if (track == 13 || track == 37) {
            brugrelais = !brugrelais; // statement voor ompolen railrelais  Kies de sporen ogv de layout
            brug(brugrelais);
          }
        }
      }
    }
  }

  if (!digitalRead(cSense)) {
    digitalWrite(13, HIGH);
  }
  else {
    digitalWrite(13, LOW);
  }
}

//--(end draairoutine )---



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DCCLoop
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void leesDCC()
{
  static int addr = 0;          // Static variable assignment alleen bij startup. Waarde persisteert als de functie verlaten wordt

  DCC.loop(); // Loop DCC library



  if (accessory[addr].finished && accessory[addr].activate)    //event wordt 1 maal getriggerd daarna verplichte pauze
  {
    accessory[addr].finished = 0;
    accessory[addr].offMilli = millis() + accessory[addr].durationMilli;

    if (accessory[addr].output == 1)
    {
      switch (accessory[addr].address) {
        case (225-offset):   //calibratie draaischijf
          track = 0;
          target = 0;
          brugrelais=0;
          break;
        case (226-offset):   // halve draai  LDT 226
          target = track + 24;
          if (target >= 48) target = target - 48;
          break;
        case (227-offset):  // 1 step clockwise LDT 227
          target = track - 1;
          if (target < 0) target = target + 48;
          break;

        default:
          target = (accessory[addr].track2);
          break;
      }
      if (test) {
        Serial.println (accessory[addr].address);
        Serial.print ("Ga naar target track (output = 1 'groen' )   ");
        Serial.println(target);
      }
    }
    else // output=0
    {
      switch (accessory[addr].address) {
        case (225-offset):   // calibratie draaischijf
          target = 0;
          track = 0;
          brugrelais=0;
          break;
        case (226-offset):   // halve draai  LDT 226
          target = track + 24;
          if (target >= 48) target = target - 48;
          break;

        case (227-offset):  // 1 step  counter clockwise
          target = track + 1 ;
          if (target >= 48) target = target - 48;
          break;

        default:
          target = (accessory[addr].track);
          break;
      }
      if (test) {
        Serial.println(accessory[addr].address);
        Serial.print ("Ga naar target track (output = 0 'rood')   ");
        Serial.println(target);
      }
    }
  }

  if ((!accessory[addr].finished) && (millis() > accessory[addr].offMilli))    // blokkade want commando herhaalt zich zelf
  {
    accessory[addr].finished = 1;
    accessory[addr].activate = 0;
  }
  if ( ++addr >= maxaccessories ) addr = 0;   // Bump to next address to activate
}




void clockwise(bool on)
{
  if (on) {
    digitalWrite(richting1, aan);
    digitalWrite(richting2, aan);
    if (test) Serial.println("Clockwise ");
  }
  else {
    digitalWrite(richting1, uit);
    digitalWrite(richting2, uit);
    if (test) Serial.println("Counter Clockwise");
  }
  delay(10);
}

void pushButton()
{
  // invoer dmv druk toetsen  0 = ingedrukt

  if (!digitalRead(In_1)) {
    target = track + 2;
    if (target >= 48) target = target - 48;
  }
  if (!digitalRead(In_2)) {
    target = track + 4;
    if (target >= 48) target = target - 48;
  }
  if (!digitalRead(In_3)) {
    target = track - 2;
    if (target < 0) target = target + 48;
  }
  if (!digitalRead(In_4)) {
    target = track - 4;
    if (target < 0) target = target + 48;
  }
}

void brug(bool on)
{
  if (on) {
    digitalWrite(brug1, aan);
    digitalWrite(brug2, aan);
    if (test) Serial.println("Brug geinverteerd ");
  }
  else {
    digitalWrite(brug1, uit);
    digitalWrite(brug2, uit);
    if (test) Serial.println("Brug normaal");
  }
  delay(10);
}

void melding()
{
  Serial.print("Teller :"); Serial.print(teller); Serial.print("    Target : "); Serial.print(target); Serial.print("    Track : "); Serial.println(track);
}

 

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #64 Gepost op: 15 February 2017, 22:22:54 »
Nog een uitdaging Dick:


Nu je afstanden kunt 'tellen' kun je misschien ook 'leren'... maw de schijf een keer helemaal rond laten stappen en de tijd meten tussen elke aansluiting... deze in eeprom opslaan... en tijdens het draaien naar een bepaald spoor de magneet aangetrokken laten... :P

Ik dacht dat is een uitdaging die nooit gaat lukken, omdat de draaischijfmotor nu niet bepaald een toonbeeld van stabiliteit is
Maar https://robidouille.wordpress.com/2009/09/20/back-emf/ en een leuk filmpje https://youtu.be/Z7Q7Apf16_Q

en hier wordt het zelfs gebruikt om een modeltreintje te besturen
http://www.aerodynes.fr/2013/03/17/making-a-z-scale-train-controller/

Maar eens rustig bestuderen en de  L293 chip in china bestellen

« Laatst bewerkt op: 16 February 2017, 00:08:24 door dickkoning »

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3603
  • Als het maar elektrisch is.
    • Homepage Gerard van der Sel
Re: Digitaliseren Fleischmann draaischijf
« Reactie #65 Gepost op: 16 February 2017, 08:34:07 »
De L293 bevat 2 H-bruggen. Hierdoor kan je twee treinen met een chip laten rijden.  Verder een puik dingetje waarmee je een hoop lol kunt beleven.

Groet,

Gerard van der Sel.
Holzburg (IIIb/IVa) schaal N.
Kijk ook eens bij de bouw en lees de avonturen.

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #66 Gepost op: 16 February 2017, 16:45:32 »
hallo Gerard

De L293 bevat 2 H-bruggen. Hierdoor kan je twee treinen met een chip laten rijden.  Verder een puik dingetje waarmee je een hoop lol kunt beleven.

Klopt, ik heb er al eens mee gespeeld om met een arduino een analoge treinbaan aan te sturen
https://www.youtube.com/watch?v=HqNdlAGVY90   
Treintje wordt bestuurd door een arduino via een H brug.  Uitdaging was om ook de wissels en de iR sensor te reguleren

Het idee om met een H brug een "last" gereguleerde voeding te maken is wat gecompliceerder dan een standaard H brug motor aandrijving
Helemaal snap ik het nog niet maar de beschrijving gebruikt van beide H bruggen slechts de helft
De code gaat me ver boven mijn pet  :police:

Wel een leuk idee en zeker een experiment waard.
Voorlopig zoek ik stabiliteit in een goede voeding en ga ik eerst met een displaytje aan de gang
Dan komt het moeilijkste onderdeel : houtbewerking en een proefbaantje bouwen  :-[

« Laatst bewerkt op: 16 February 2017, 18:52:38 door dickkoning »

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3603
  • Als het maar elektrisch is.
    • Homepage Gerard van der Sel
Re: Digitaliseren Fleischmann draaischijf
« Reactie #67 Gepost op: 17 February 2017, 09:30:20 »
Ken het gevoel. Het echte werk zit in het h-file (aansturing H-bridges). Als je engels beheerst wordt het goed uit gelegd.

Succes en ik blijf je volgen.


Groet,

Gerard van der Sel.
Holzburg (IIIb/IVa) schaal N.
Kijk ook eens bij de bouw en lees de avonturen.

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #68 Gepost op: 18 February 2017, 10:57:41 »
Hallo Gerard

gisteren geëxperimenteerd met een H brug en een Rotary encoder. Gewone sturing dus geen back emf terugkoppeling.
Geen groot succes, de motor van de draaischijf laat zich beperkt regelen, eerst een lange periode van "kleef" en dan  een beperkt regelbereik.
Maar misschien doe ik te moeilijk  en is een gewone gestabiliseerde voeding wel de beste oplossing  ?  :( :(
 

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3603
  • Als het maar elektrisch is.
    • Homepage Gerard van der Sel
Re: Digitaliseren Fleischmann draaischijf
« Reactie #69 Gepost op: 20 February 2017, 10:17:18 »
Ik zou eerst de spanning verhogen. Lange periode van kleef en klein regelbereik duiden op een te lage spanning. Wat je ook kan doen is gaan voor pulsbreedte modulatie. Alhoewel alle Arduino voorbeelden met de L293 gebruiken PBM.

Groet,

Gerard van der Sel.
Holzburg (IIIb/IVa) schaal N.
Kijk ook eens bij de bouw en lees de avonturen.

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #70 Gepost op: 27 February 2017, 16:51:37 »
Hi

ik heb het prototype van mijn draaischijf decoder af

tov de vorige keer zijn er de volgende wijzigingen

- LCD display waarop de actuele (track) en toekomstige (target) bestemming van de draaischijf zichtbaar zijn
- Rotary encoder om eenvoudig met de hand de decoder aan te sturen
- Gestabiliseerde voeding om het motortje van de draaischijf zo goed mogelijk aan te sturen

Het resultaat kun je in het YouTube filmpje in actie zien
https://www.youtube.com/watch?v=R1SMiSs2mZU

de code is inmiddels te uitgebreid om hier te publiceren
https://github.com/tkoning

Als volgende stap zou ik een printontwerp in eagle kunnen maken maar dat is alleen zinvol als er meer mensen zijn die ook zoiets willen bouwen
Het is tenslotte een hobby project
Als je interesse hebt graag reactie per PB

Dick

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Digitaliseren Fleischmann draaischijf
« Reactie #71 Gepost op: 27 February 2017, 17:51:52 »
 Heel mooi gedaan (y)

('LCD display' is overigens een pleonasme...)  ;)
El Carrilet
"te dom om te poepen"
MH

tuurtje

  • Offline Offline
  • Berichten: 4695
Re: Digitaliseren Fleischmann draaischijf
« Reactie #72 Gepost op: 27 February 2017, 17:54:39 »
Hoi Dick,

Ik heb er wel interesse in

Groetjes

Arthur
Arthur is helaas in januari 2025 overleden

dickkoning

  • Offline Offline
  • Berichten: 140
Re: Digitaliseren Fleischmann draaischijf
« Reactie #73 Gepost op: 01 March 2017, 10:54:27 »
Hoi

bijgaand het schema van de decoder



helaas nog niet genoeg gegadigden om er een PCB voor te ontwerpen   :'( :'( :'(
« Laatst bewerkt op: 01 March 2017, 11:14:35 door dickkoning »

MichelKuijpers

  • Offline Offline
  • Berichten: 11
Re: Digitaliseren Fleischmann draaischijf
« Reactie #74 Gepost op: 01 March 2017, 18:49:39 »
Hoi Dick,

Geweldig mooi resultaat. Ik wil dit ook gaan proberen met de N spoor uitvoering van Fleischmann.
Ik mis voor mijn gevoel nog wat ik op J3 moet aansluiten en waar ik de draaischijf zelf precies op aansluit.
Zou je hiervoor nog een schema kunnen tekenen?

Op de youtube valt het me op dat je achter de relais nog een schakeling hebt hangen, die zie ik voor m'n gevoel ook niet terug in dit schema.
Waarschijnlijk kijk ik verkeerd, maar zou je me kunnen helpen?

Groeten en een fijne dag,
Michel