Zoeken

 
Geavanceerd zoeken



Welkom, Gast. Alsjeblieft inloggen of registreren.

Gebruikersnaam: 
Wachtwoord:
Sessielengte:

Login met gebruikersnaam, wachtwoord en sessielengte

Modelspoorwijzer.net - ForumAlgemeenMijn baanTopic: Irgendwo in Deutschland
Pagina's: 1 ... 107 108 [109] 110 111 ... 158   Omlaag
Print
Auteur Topic: Irgendwo in Deutschland  (gelezen 899118 keer)
0 geregistreerde gebruikers en 3 gasten bekijken dit topic.
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1620 Gepost op: 19 November 2020, 19:41:59 »

Duidelijk.  Grin
Ik voer dan gewoon de leading zeroes niet in.
Ik heb vrij bewust voor integers gekozen omdat die voor dit doel het minste ruimte innemen en ik ergens in het proces toch een getalwaarde moet hebben om ze als offset te kunnen gebruiken, dus dan maar van begin af aan.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1621 Gepost op: 25 November 2020, 14:35:30 »

Weer wat verder gegaan met het Übergabeaufgleisgleisloknummereingabegerät.

Het terugbrengen van de pulsen naar 50ms creëerde een nieuw probleem nieuwe uitdaging.
Voor het testen van de rijrichting, wordt door Koploper gewoon een rijopdracht gegeven, maar alleen zolang de bezetmelder die bij die testknop hoort, ook bezet is.
Bij een puls van 50ms ben je een knappe jongen als je iets aan de loc ziet bewegen.
In eerste instantie heb ik alleen die puls met 2 seconde verlengd, maar dan blijf je een probleem houden met geluidlocs, die zijn binnen die tijd vaak nog niet aan het rijden.
Dus topoverleg gevoerd met mijn partner in crime op het gebied van alles wat met electronica en arduino's te maken heeft.
Hij zette me op het goede spoor, zodat er nu een bezetmelding (en dus ook rijopdracht) wordt gegeven, zolang toets "B" wordt ingedrukt.

Een andere aanpassing betreft een onhebbelijkheid bij loconet. Wanneer het GPON commando wordt gegeven (de centrale gaat aan het werk), gaan bezetmelders hun status doorgeven. Ik geloof dat het strikt genomen geen verplichting is, maar wel een common practice. Het voordeel is dat de centrale op dat moment doorkrijgt welke bezetmelders vrij en bezet zijn.
Het probleem is alleen dat vooral bij veel bezetmelders het soms zo druk kan zijn op de lijn, dat een melder er niet doorkomt. Net als bellers bij de belastingtelefoon, houden de meeste bezetmelders het na flink wat proberen voor gezien en geven de beginstatus gewoon niet meer door. Bij de HCC Modelbaanautomatisering weten ze er alles over te vertellen.

Hier wordt die beginstatus ook doorgegeven, waarbij ik heb gekozen voor alles vrij. Lekker makkelijk programmeren met als enige consequentie dat ik overnieuw moet beginnen als precies tijdens het proces van een loc aanmelden in Koploper, er een noodstop is.
Maar de status van dit ding is natuurlijk totaal niet kritisch, dus ik stel het doorgeven van de status met 1 seconde uit. Dat zou genoeg moeten zijn om loconet wat tot rust te laten komen.

De vernieuwde sketch:
Code:
/*
 Extern_starten_loc_koploper
 Versie:  1.0
 Datum:   25-11-2020
  
  Extern starten locomotief is in Koploper een hulpmiddel om zonder tussenkomst van muis
  en_of toetsenbord een locomotief in een blok te plaatsen en te laten starten met
  automatisch rijden.
  Koploper maakt daarvoor gebruik van 14 bezetmeldpunten:
  - 10 voor de cijfers 0 - 9 om het decoderadres in te tikken
  - 1 om aanwezige inhoud te resetten en het ingetikte decoderadres over te nemen
  - 1 om de rijrichting van de loc te testen (door kort een rijopdracht te geven)
  - 1 om de rijrichting indien nodig om te keren
  - 1 om de loc daadwerkelijk in het blok te plaatsen en het automatisch rijden te
  starten.

  Deze sketch maakt het mogelijk dat dit niet alleen werkt met directe invoer van
  deocderadressen, maar ook locs in een scroll-lijst te zetten met een omschrijving.
  De sketsch zorgt dan dat de benodigde bezetmeldingen naar Koploper worden gestuurd.

  Serial.primt opdrachten zijn alleen nodig voor debugging
*/

// include the library codes voor loconet, het lcd-scherm en het keypad
#include <LocoNet.h>
#include <LiquidCrystal.h>
#include <Keypad.h>


///// Kenmerken keypad  /////
const byte ROWS = 4; // vier rijen
const byte COLS = 4; // vier kolommen

// knoppen koppelen aan een array voor de keymap
// waarden zijn ascii
char hexaKeys[ROWS][COLS] = {
  {49, 50, 51, 65},   // 1, 2, 3, A
  {52, 53, 54, 66},   // 4, 5, 6, B
  {55, 56, 57, 67},   // 7, 8, 9 ,C
  {42, 48, 35, 68},   // *, 0, #, D
};

byte rowPins[ROWS] = {10, 7, 14 , 15}; // Pinnen gebruikt voor de rijen van het keypad
byte colPins[COLS] = {16, 17, 18, 19}; // Pinnen gebruikt voor de kolommen van het keypad

// Initialiseer het Keypad
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
byte buttonState;
boolean buttonHold = 0;

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

//// Loconet ////
#define  TX_PIN   9

static   LnBuf        LnTxBuffer;
static   lnMsg        *LnPacket;

unsigned int address_received;
unsigned int myAddress;

byte numSensors = 14;  // can change to suit the number of sensors used, optional
boolean sensorValue[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // default low
byte addrOffset;
byte locRow = 0;
byte inputMode = 0;
byte inputModeOld;
int i;
int locadr[4] = {0, 0, 0, 0};
int locAdresKey;
int locadres;

struct locList {
  String locDescr;
  int locAdresList;
}

// de scroll-lijst voor de locomotieven met omschrijving en decoderadres.
// Lijst kan worden ingekrompen of uitgebreid, maar de laatste waarde moet (" ", 0} zijn
locList[] = {
  {"DB 141 447", 1417},
  {"DB 211 082", 2112},
  {"DB 211 159", 2119},
  {"DB 212 064", 2121},
  {"DB 215 035", 2151},
  {"DB 215 070", 2150},
  {"DB 260 319", 2609},
  {"DB 323 597", 3235},
  {"DB 795 201", 7951},
  {"DB Klv 12", 12},
  {"DR 132 577", 132},
  {"NS 2433", 2433},
  {"OBB 1044", 1044},
  {"SBB 11117", 1117},
  {"SBB 13254", 1324},
  {" ", 0}
};

//berekent het aantal regels in de scroll-lijst
int listLength = sizeof(locList) / sizeof(locList[0]);

void setup() {
  // Configure the serial port for 57600 baud
  Serial.begin(57600);

  // Initialize the LocoNet interface, specifying the TX Pin
  LocoNet.init(TX_PIN);

  // Initialize a LocoNet packet buffer to buffer received bytes
  initLnBuf(&LnTxBuffer) ;

  // Read the decoder base address
  myAddress = 33; // basisadres = 33 (detector 3.1 - 3.14

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  welkom();
}

void loop() {
  LnPacket = LocoNet.receive() ;  // Check for received LocoNet packets

  if (LnPacket)
  {
    LocoNet.processSwitchSensorMessage(LnPacket);  // process the packet and fetch address received
    //printRXpacket (); // comment out in working version
    if ( LnPacket -> data[0] == 0x83 ) sendAllsensors (); // Global power-on update request
  }

  // Lees de ingedrukte knop uit
  char button = customKeypad.getKey();

  // Check of de knop wel of niet is ingedrukt
  KeyState buttonState =  customKeypad.getState();
  
  // De meeste bezetmeldingen worden als puls gegeven. De melding om de rijrichting te
  // testen wordt hoog als toets B wordt ingedrukt en laag als B wordt losgelaten
  // Hier wordt gekeken of toets B nog is ingedrukt
  if (buttonHold = 1 & sensorValue[addrOffset] == 1 & buttonState == 0) {
    sendSensorOff();
    lcd.setCursor(0, 0);
    lcd.print("C: loc omkeren");
    lcd.setCursor(0, 1);
    lcd.print("D: start rijden");
  }


  if (button) {
    lcd.clear();
    inputModeOld = inputMode;
    
    // als * of # wordt gedrukt, invoer via loclijst
    if (button == 35 || button == 42) {
      inputMode = 1;
    }

    // als een cijfer wrordt gedrukt, directer invoer decodernummer
    if (button >= 48 && button <= 57) {
      inputMode = 2;
      // maximaal vier cijfers voor decodernummer, nummer schuift steeds 1 positie op naar links
      locadr[3] = locadr[2];
      locadr[2] = locadr[1];
      locadr[1] = locadr[0];
      locadr[0] = (button - '0'); // maak int van char variabele
      // maak int van ingedrukte nummertoetsen
      locAdresKey = (locadr[3] * 1000) + (locadr[2] * 100) + (locadr[1] * 10) + (locadr[0]);
      lcd.setCursor(0, 0);
      lcd.print("Decodernummer:");
      lcd.setCursor(0, 1);
      lcd.print(locAdresKey);
    }
    // negeer letters die te vroeg worden gedrukt
    if ((inputMode != 3 & button > 65) || (inputMode == 0 & button == 65)) {
      welkom();
    }


    if (inputMode == 1) {
      // scroll met * naar boven
      if (button == 42) {
        if (locRow > 0) {
          locRow = locRow - 1;
        }
      }

      // scroll met # naar beneden
      if (button == 35) {
        // voorkom dat verder wordt gescrolld dan aantal locs
        if (locRow < (listLength - 2)) {
          locRow = locRow + 1;
        }
      }

      // bij eerste keer drukken * of #, ga naar eerste loc in lijst
      if (inputModeOld != inputMode) {
        locRow = 0;
      }
      lcd.setCursor(0, 0);
      lcd.print(">");
      lcd.setCursor(2, 0);
      lcd.print(locList[locRow].locDescr);
      lcd.setCursor(2, 1);
      lcd.print(locList[locRow + 1].locDescr);
    }

    // als A wordt ingedrukt, voer de resetroutine uit
    if (button == 65) {

      reset();
      // als A door gebruiker als reset is bedoeld, zet het locadres op 0 en keer
      // terug naar het welkomst-scherm
      if (inputMode == 0 || inputMode == 3) {
        locadres = 0;
        inputMode = 0;
        welkom();
      }

      // ala A door gebruiker als keuze loc uit lijst is bedoeld, haal het locadres
      // van de gekozen loc uit de array
      if (inputMode == 1) {
        locadres = locList[locRow].locAdresList;
      }

      // ala A door gebruiker als keuze loc uit lijst is bedoeld, gerbuik voor het
      // locadres de waarde van de ingetoetste cijfers
      if (inputMode == 2) {
        locadres = locAdresKey;
      }
      // als het locadres niet 0 is, splits het dan in vier losse cijfers die de
      // corresponderende bezetmelder bepalen
      if (locadres != 0) {
        // Serial.print("Stuur locadres voor: ");
        // Serial.println(locadres);

        addrOffset = (locadres % 10000 - locadres % 1000) / 1000;
        sendSensorPulse ();
        addrOffset = (locadres % 1000 - locadres % 100) / 100;
        sendSensorPulse ();
        addrOffset = (locadres % 100 - locadres % 10) / 10;
        sendSensorPulse ();
        addrOffset = locadres % 10;
        sendSensorPulse ();
        for (int i = 0; i <= 3 ; i++) {
          locadr[i] = 0;
        }
        // ga naar de modus om de gekozen loc in het automatisch rijden op te nemen
        inputMode = 3;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("B: test rij-");
        lcd.setCursor(0, 1);
        lcd.print("   richting");
      }
    }


    if (inputMode == 3) {
      // als op B wordt gedrukt, activeer de bezetmelder om de rijrichting te testen
      if (button == 66) {
        // Serial.print("Stuur opdracht voor testen rijrichting van loc: ");
        // Serial.println(locadres);
        // Serial.println("11");
        addrOffset = 11;
        if (sensorValue[addrOffset] == 0) {
          sendSensorOn ();
        }
        lcd.clear();
      }
 
      // als op C wordt gedrukt, activeer de bezetmelder om de rijrichting om te keren
      if (button == 67) {
        // Serial.print("Stuur opdracht voor wisselen rijrichting van loc: ");
        // Serial.println(locadres);
        // Serial.println("12");
        addrOffset = 12;
        sendSensorPulse ();
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("D: start rijden");
      }

      // als op D wordt gedrukt, activeer de bezetmelder om de loc in het blok te plaatsen
      // en automatisch rijden te starten
      if (button == 68) {
        // Serial.print("Stuur opdracht voor automatisch rijden van loc: ");
        // Serial.println(locadres);
        // Serial.println("13");
        addrOffset = 13;
        sendSensorPulse ();
        inputMode = 0;
        lcd.clear();
        welkom();
      }
    }
  }
}



void welkom() {
  // welkomstscherm
  lcd.setCursor(0, 0);
  lcd.print("* of #: loclijst");
  lcd.setCursor(0, 1);
  lcd.print("getal : dec.nr");

}

void reset() {
  // resetroutine: activeer de bezetmelder om de invoer te resetten en ga naar de routine
  // om die te verzenden
  // Serial.println("Stuur resetopdracht");
  // Serial.println("10");
  addrOffset = 10;
  sendSensorPulse ();
}


void sendAllsensors () {
  // stel alle bezetmelders op 0 (niet bezet) en stuur die naar loconet
  // omdat dit niet-kritische meldingen betreft, gebeurt dit met 1000 ms vertraging
  // om drukte bij OPC_GPON te verminderen
  delay(1000);
  unsigned int tempaddr;
  tempaddr = myAddress + 1;  // point to first sensor address
  for (i = 0; i < numSensors; i++)
  {
    sensorValue[i] = 0;
    LocoNet.reportSensor(tempaddr + i, sensorValue[i]);
    //Serial.print("Sent sensor : ");
    //Serial.println(i);
  }
}



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

void sendSensorPulse () {
  // stel de gekozen bezetmelder een korte tijd op 1 en dan weer teru naar 0 en die naar loconet
  for (i = 1; i >= 0; i--)   {
    sensorValue[addrOffset] = i;
    LocoNet.reportSensor(myAddress + addrOffset, sensorValue[addrOffset]);
    // Serial.print(myAddress + addrOffset);
    // Serial.print("   ");
    // Serial.println(sensorValue[addrOffset]);
    delay(50); // pulsduur en tijd tussen twee bezetmeldingen
  }

}

void sendSensorOn () {
  // stel de gekozen bezetmelder op 1 (bezet), alleen van toepassing als toets B wordt gedrukt
  buttonHold = 1;
  sensorValue[addrOffset] = 1;
  LocoNet.reportSensor(myAddress + addrOffset, sensorValue[addrOffset]);
  // Serial.print(myAddress + addrOffset);
  // Serial.print("   ");
  // Serial.println(sensorValue[addrOffset]);
}

void sendSensorOff () {
  // stel de gekozen bezetmelder op 0 (vrij), alleen van toepassing als toets B wordt gedrukt
  buttonHold = 0;
  sensorValue[addrOffset] = 0;
  LocoNet.reportSensor(myAddress + addrOffset, sensorValue[addrOffset]);
  // Serial.print(myAddress + addrOffset);
  // Serial.print("   ");
  // Serial.println(sensorValue[addrOffset]);
}

Nog een triviaal dingetje: op een gegeven moment komen vier keer na elkaar twee regels voor, die nauwelijks van elkaar afwijken.
Code:
       addrOffset = (locadres % 10000 - locadres % 1000) / 1000;
        sendSensorPulse ();
        addrOffset = (locadres % 1000 - locadres % 100) / 100;
        sendSensorPulse ();
        addrOffset = (locadres % 100 - locadres % 10) / 10;
        sendSensorPulse ();
        addrOffset = locadres % 10;
        sendSensorPulse ();

Staat een beetje knullig, dus waarom dat niet gewoon in een lus gestopt die vier keer doorlopen wordt?
Nou, omdat dat niet werkt. Daarvoor is machtsverheffen nodig (of een andere oplossing die zelf weer knullig is). En de programmeertaal voor de Arduino kan veel, alleen machtsverheffen vreemd genoeg niet, niet goed tenminste. Dus vandaar dat hiervoor is gekozen.

Volgende stap is het aansturen van een wat grotere display en natuurlijk de inbouw in een handzaam kastje.

groet, Huub
« Laatste verandering: 25 November 2020, 19:38:03 door hubertus » Gelogd

Plettenburg, DB jaren '80 in H0
Cees Baarda
Jr. Member

Offline Offline

Berichten: 58



WWW
« Antwoord #1622 Gepost op: 25 November 2020, 18:54:07 »

Hoi Huub,

dat triviale dingetje zou ik als volgt doen:
Code:
void stuurLocAdresNaarKoploper(int adres) // adres is max 9999
{
byte adresOffsetArray[4];
for (i = 3; i >= 0; i--)
{
adresOffsetArray[i] = adres % 10;
adres = adres / 10;
}
for (i = 0; i < 4; i++)
{
addrOffset = adresOffsetArray[i];
sendSensorPulse ();
}
}
Natuurlijk niet helemaal van mezelf. Ik vond op stackoverflow een soortgelijke oplossing voor het opdelen van het adres met een while loop.
Ik heb er een functie van gemaakt om te zorgen dat het array niet vast in memory staat.
Het is wel iets meer code, maar misschien wel efficiënter. Ik vul de array achterstevoren, omdat de cijfers van achter naar voor berekend worden.

groet Cees.
Gelogd

webmaster HCC!m
eigen website: http://home.hccnet.nl/c.baarda

06-2019: begonnen aan de bouw van een modulebaan.
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1623 Gepost op: 25 November 2020, 19:10:23 »

Hoi Cees,

Dat is wel een interessante.
Ga ik eens proberen. Dank je.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1624 Gepost op: 25 November 2020, 20:45:59 »

Inmiddels is de techniek in de harde praktijk beproefd, dus terwijl de baan vol in bedrijf is.
En het werkt zoals het moet werken.
Tegelijk bedacht ik me nog iets anders.
In het Zwitserse Blausee-Mitholz kent men het fenomeen "knopjestrein".
En eigenlijk is dat voor Plettenburg ook best wel een goed idee voor wat treinen die er alleen maar mogen komen als hoge heren van de Bundesbahn niet kijken, zoals de Plan V en de Nederlands-Zwitserse TEE.
Ik kan natuurlijk ook gewoon knopjes maken, maar een extra functie in het Übergabeaufgleisgleisloknummereingabegerät is natuurlijk ook een mogelijkheid.
Dat zou dan een erweitertes Übergabeaufgleisgleisloknummereingabegerät mit Sonderzugabfahrterlaubnistaste worden.

Nog eens even laten bezinken.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
Jakop de Bruin
Global Moderator
Hero Member

Offline Offline

Berichten: 8818


265*


WWW
« Antwoord #1625 Gepost op: 25 November 2020, 21:48:02 »

Tegen de tijd dat ze in Plettenburg de naam van hun nieuwe speeltje hebben uitgesproken, is de trein in Waldijk al vertrokken incl. fluit van de Hc.  Grin
Gelogd

Waldijk '80-'93 en '00-'09
Waldijk on Flickr
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1626 Gepost op: 25 November 2020, 22:51:30 »

 Grin Grin
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1627 Gepost op: 26 November 2020, 11:37:24 »

Het is wel iets meer code, maar misschien wel efficiënter.

Fotofinish, maar het scheelt vier bytes in de programma-opslagruimte.  Grin
Het was wel even zoeken om het werkend te krijgen, want hij kwam in een eindeloze lus.
Boosdoener was de variabele i, die in de aangeroepen functie sendSensorPulse steeds weer de waarde nul krijgt.
Daar vervangen door een j en nu werkt het.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1628 Gepost op: 26 November 2020, 14:00:03 »

Ik kwam bij het opruimen nog een oud ombouwproject tegen, al vermoed ik dat mijn broer hier het overgrote deel van het werk heeft gedaan.
De basis bestaat uit Jouef-rijtuigen uit de jaren '60, begin jaren '80 omgebouwd tot een Nederlandse trek-duw-intercity (dus aanmerkelijk eerder dan bij NS zelf). Met wisselende front- en sluitseinen (ik heb niet geprobeerd of de led's het nog doen).



groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
Cees Baarda
Jr. Member

Offline Offline

Berichten: 58



WWW
« Antwoord #1629 Gepost op: 26 November 2020, 15:46:28 »

Citaat
Boosdoener was de variabele i, die in de aangeroepen functie sendSensorPulse steeds weer de waarde nul krijgt.
Daar vervangen door een j en nu werkt het.

Dat zou niet mogen gebeuren. Mijn misser: ik had alle variabelen, die niet globaal hoeven te zijn, lokaal moeten maken. Betekent ook dat jij de teller variabele "i" globaal had gedefinieerd, anders had je direct een foutmelding moeten krijgen.
Herkansing:
Code:
void stuurLocAdresNaarKoploper(int adres) // adres is max 9999
{
  byte adresOffsetArray[4];
  for (byte teller = 3; teller >= 0; teller--)
  {
    adresOffsetArray[i] = adres % 10;
    adres = adres / 10;
  }
  for (byte teller = 0; teller < 4; teller++)
  {
    sendSensorPulse (adresOffsetArray[i]);
  }
}

void sendSensorPulse (byte adresOffsetOvergave)
{
    // stel de gekozen bezetmelder een korte tijd op 1 en dan weer terug naar 0 en die naar loconet
    LocoNet.reportSensor(myAddress + adresOffsetOvergave, 1);
    delay(50); // pulsduur en tijd tussen twee bezetmeldingen
    LocoNet.reportSensor(myAddress + adresOffsetOvergave, 0);
}

Gelijk ook een voorstel voor iets andere "sendSensorPulse" functie gedaan. Ik denk dat daarin, die kleine loop je meer tijd kost dan nodig. Deze functie roep je ook op een andere plek aan. Die aanroep moet je dan natuurlijk ook veranderen.
En, persoonlijk maak ik liever zo min mogelijk gebruik van globale variabelen.


groet Cees.
Gelogd

webmaster HCC!m
eigen website: http://home.hccnet.nl/c.baarda

06-2019: begonnen aan de bouw van een modulebaan.
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1630 Gepost op: 26 November 2020, 16:08:19 »

Hoi Cees,

Ik had inderdaad de i globaal gedefinieerd, in een vroegere versie van de sketch was dat nodig. Ik denk niet dat dat nu nog steeds geldt.
In een volgende versie nog eens aanpassen.
De kleine loop zat er redelijk bewust in omdat ik niet weet hoelang de pauze tussen twee meldingen moet zijn om door Koploper goed te worden opgepikt. In theorie kan natuurlijk vier keer achter elkaar dezelfde bezetmelder worden verzonden en Koploper moet dat ook als vier meldingen interpreteren. Ik ben met een halve seconde begonnen (dus die hele loop 1 sec) en zit nu op 50ms. Dat was snel genoeg voor een prettig gebruik, dus verder niet meer geprobeerd nog verder te verlagen.
Maar ik ga de aanpassing nog eens proberen.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1631 Gepost op: 25 December 2020, 10:53:32 »

Gisteren was er een pakketje bij de buren afgeleverd met als inhoud heel veel lucht en daartussen een paar plastic zakjes.
Een van die zakjes:


De Propangaszug kan nu een extra stroomafname krijgen.

Overigens rechtstreeks besteld bij Brawa.
Eigenlijk bestel ik dit soort dingen liever via de winkel. Zeker als de klant je alle bestelnummers al voorkauwt, is dat voor zo'n winkel snel verdiend. Daarbij mogen ze voor mij extra handelingskosten rekenen. Ik heb er wel wat voor over als de fysieke winkel kan blijven bestaan.
In dit geval me dus gericht tot de winkel waar ik het model had gekocht. Maar als op de simpele vraag of de onderdelen leverbaar zijn en wat ze dan mogen kosten, na ruim zeven weken en een reminder nog geen bevredigend antwoord is gekomen, wordt het zelfs mij te gek. Het antwoord dat wel werd gegeven op de reminder was "we wachten op antwoord van Brawa".
Wel apart eigenlijk, want toen ik zelf de vraag aan Brawa stelde, had ik na 1,5 uur netjes een volledig antwoord. Nog eens twee uur later de bevestiging van de inmiddels geplaatste bestelling en een week later de spullen in huis.
Ik heb wat te doen met kerst.  Smiley

groet, Huub

Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1632 Gepost op: 26 December 2020, 15:24:30 »

Met wat styreen en gaatjesprint is de bedrading wat gefatsoeneerd, de stroomafname is nu van alle assen en met wat extra styreen en grijze verf is het interieur iets minder opvallend gemaakt.



In een later stadium komt er misschien nog wat meer interieur bij, maar daarvoor ga ik eerst op zoek naar goede foto's.
Dak erop en dan kan de trein worden ingezet.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
hubertus
Hero Member

Online Online

Berichten: 8428


WWW
« Antwoord #1633 Gepost op: 29 December 2020, 19:10:29 »

Het nadeel van een baan die eigenlijk te groot is voor de ruimte, is dat er soms minder ideale oplossingen voor bepaalde wensen moesten worden bedacht. Met stip op nummer 1 staat hierbij het station, dat, voor een groot deel niet zichtbaar, in een 180 graden-boog ligt.
Op zich heeft het wel een leuk effect opgeleverd dat je net kunt doen of er twee emplacementen op de baan zijn, met elk hun eigen aankleding.
Maar die boog maakt aan- en afkoppelen wel heel er lastig. Voor de lokale goederentrein is een spoor aanwezig met relatief veel rechte stukken, om dat koppelprobleem nog enigszins te omzeilen. Daar is ook een ontkoppelaar ingebouwd. Die zat al niet op een fijne plek, maar met het besluit er een stad boven te bouwen, werd het een onmogelijke plek.
Bij de ontkoppelaar zit een lichtsluis waarmee de spleet tussen twee wagens gedetecteerd kan worden, maar in de praktijk blijk je dan te laat als nog moet gaan remmen. Bij automatisch rijden, is dat nog wel te corrigeren, waardoor het redelijk betrouwbaar werkt. Maar bij handmatig rijden is het veel pielen en vervolgens concluderen dat de wagens nog steeds vastzitten. Je hebt gewoon zicht nodig op de ontkoppelaar.
Maar dat zicht is niet veel soeps, het is gewoon te donker.



Kortom, er moest hiervoor een oplossing komen.
Omdat er voor de ontkoppelaar ook nog drie sporen liggen waarvan de treinen het zicht kunnen beletten, ben ik eigenlijk op zoek naar een simpel camerasysteem waarmee ik direct zicht heb op het (ont)koppelen. Daarvoor zijn er inmiddels wel wat ideeën, maar nog niet concreet genoeg om al te verwezenlijken. Maar om in elk geval iets te kunnen zien, is er vandaag wel verlichting aangebracht. Drie witte leds uit de rommeldoos en een schakelaar, want het licht is alleen nodig bij een- en afkoppelen.



Nog lang niet ideaal, maar wel een enorme verbetering.

groet, Huub
Gelogd

Plettenburg, DB jaren '80 in H0
1200blauw
Hero Member

Offline Offline

Berichten: 1538


Benoemd snoodaard


« Antwoord #1634 Gepost op: 29 December 2020, 20:14:36 »

Door dat lampje wordt een bijna abstracte foto opeens een foto waarop iets te herkennen is, dus dat is goed Grin
Ik ben benieuwd hoe je het robleem gaat oplossen. De toestuur-Chinees heeft wel kleine goedkope cameraatjes in het assortiment. Blijven er geen stroomafnemers in die draad hangen trouwens? Het lijkt of die vrij laag hangt boven de aanpalende sporen, of is dat gezichtsbedrog?
Gelogd
Pagina's: 1 ... 107 108 [109] 110 111 ... 158   Omhoog
Print
Modelspoorwijzer.net - ForumAlgemeenMijn baanTopic: Irgendwo in Deutschland
« vorige volgende »
Ga naar: