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

Toon hier je (model)TRAM foto's. door R1954
Vandaag om 21:13:10
BR-18.6 Schaal-0. door FritsT
Vandaag om 21:11:30
Piko 2025 door Tedo
Vandaag om 20:54:25
Defensie wil oude koplopers ombouwen tot hospitaaltrein door Gert Arkema
Vandaag om 19:49:44
Station Roodeschool door Torikoos
Vandaag om 19:40:08
Sikje 225 door timtrein
Vandaag om 19:36:42
digitaal veranderd in 15 jaar door saskia
Vandaag om 19:30:38
ongeremde Sikken/wagens in goederentreinen door timtrein
Vandaag om 19:29:54
Länderbahn en Reichsbahn locomotieven. door Prutsert
Vandaag om 18:44:27
Mijn eerste H0-modeltreinbaan in aanbouw door puntenglijder
Vandaag om 18:23:00
Aachenau West door wob
Vandaag om 18:05:46
DCM motor van Märklin demonteren. door Bahn-AG
Vandaag om 18:00:57
Fleischmania Nostalgia door Scratchbuilt
Vandaag om 16:20:02
Toon hier je nieuwe (model-) spooraanwinst(en)... door Arjan6511
Vandaag om 15:28:50
Modeltreinexpress gesloten op 22juli2025 door VAM65
Vandaag om 15:12:12
Ronald doet de Fork Challenge! door Ronald Halma
Vandaag om 14:29:47
Onlangs gespot - gefotografeerd, de foto's door MaraNCS
Vandaag om 14:22:42
Raadplaatje door grossraumwagen
Vandaag om 13:41:32
ICR-rijtuigen, voor welk merk ga je? LSmodels, PBmodels, Exact Train of Piko? door Corné81
Vandaag om 12:59:21
Railpro 607 door Bob11
Vandaag om 12:53:23
365 "Het is weekend foto's" door Wim Vink
Vandaag om 10:39:09
LS Models / Models World 2021 door Benelux795
Vandaag om 10:00:39
Philotrain NS6001-6006 (niet kijken als je blij met jou philotrain bent) door orientexpress
Vandaag om 09:56:00
Lima IRM pimpen door Brouwersbaan
Vandaag om 09:42:01
Tips voor een natuurgetrouwe modelbaan door laurent
Vandaag om 08:55:50
Klein baantje 1200x1200mm door Wim Vink
16 July 2025, 23:02:19
Locverlichting dmv micro-LEDS door Mar-Cas
16 July 2025, 22:21:51
De overeenkomst tussen een Ovaalramer en een Motorpost. door FritsT
16 July 2025, 21:47:03
Gewoon wat busfoto's door Bolramer
16 July 2025, 21:43:57
Spoor- en tramweg parafernalia door Eric B
16 July 2025, 21:25:56
  

Auteur Topic: AdServo, servo besturing voor iedereen  (gelezen 73404 keer)

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: AdServo, servo besturing voor iedereen
« Reactie #195 Gepost op: 19 March 2015, 20:44:03 »
Hallo Timo,

Bedankt voor je antwoord.
Citaat
hij moet gaan luisteren naar DCC prog commando's en POM commando's
Mijn vraag was misschien niet duidelijk maar ik vroeg me af hoe het DCC signaal er inhoudelijk uitziet om een CV te programmeren. M.a.w. wat moet de decoder voor signaal herkennen? Bijvoorbeeld een gewoon DCC besturingssignaal is opgebouwd uit minimaal 14 preambles, dan één of twee adres bytes, één of twee databytes en een errorbyte. Ik neem aan dat voor CV programming het DCC hier op lijkt maar vroeg me af hoe de details er uitzien.

groet Frits
Groet Frits

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #196 Gepost op: 19 March 2015, 21:50:53 »
Wat dat betreft precies gelijk aan een normaal (extended) packet. Structuur is gelijk, gaat om de inhoud. Zie S-9.2.1 DCC Extended Packet Formats. Manier van ééntjes en nulletjes blijft gelijk.


Timo
Verzonden vanaf mijn desktop met Firefox

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: AdServo, servo besturing voor iedereen
« Reactie #197 Gepost op: 19 March 2015, 22:02:50 »
Bedankt voor de link. Dat is precies de info die ik zocht. Top!

gr. Frits
« Laatst bewerkt op: 19 March 2015, 22:09:15 door Fritsprt »
Groet Frits

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #198 Gepost op: 05 May 2015, 20:59:17 »
Hallo,

Ik had de Adservo onlangs bij een dorpsgenoot nog in de handen maar ben deze vergeten te bestellen.

Is de adservo nog te koop en zo ja, hoe?

Met vriendelijk groet,

Spock (nee, natuurlijk niet  ;D)

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #199 Gepost op: 18 May 2015, 00:56:28 »
Hoi Timo,

Bedankt voor het snelle opsturen van de adservo's.
Helaas door postnl wat later ontvangen, vrijdag was schijnbaar een speciale dag  :o.

Zoals ik het nu kan beoordelen werkt DCC en adservo (als testversie).

Ik ben vandaag wel een dag bezig geweest met foutzoeken, maar uiteindelijk aan de gang gekregen.

Ik ben begonnen met een aangepaste DCC sketch van rubyb welke werkend was op een Arduino mega. Alleen pin nummers gewijzigd en ge-upload naar de adservo.
Helaas niet werkend. Op een gegeven moment de sketch aangepast om met de serial monitor te kunnen debuggen. Toen de usb-ser interface werd aangesloten op de pro mini ging het programma ineens werken. Ik kon met de ecos de servo (1 stuk) aansturen. Ik dacht dat dit misschien met een timer te maken had icm de serieele poort. Een aantal testen later bleek dit niet het geval en het enigste wat het verschil maakte, tussen werken en niet werken, was de voeding van de usb-ser interface.

De adservo was aangesloten op een 9V-1A wisselspanning voeding. Deze voeding vervangen door een regelbare lab voeding (=gelijkspanning). Vanaf dat moment werkt de adservo ook goed zonder usb-ser interface.

Wat echter opvalt is de hoge piekstroom. De voeding geeft aan wanneer er meer dan 1 Ampere wordt gevraagd en dat ledje licht regelmatig op. Deze piekstromen worden veroorzaakt door het jitteren van de servo's.

Ik denk dat de elko C3 (de voedingselko) te klein bemeten is icm wisselvoedingspanning.

Nog te doen: De servo lib vervangen door ServoControl en/of ServoExtend.
Afregelen mbv i2c en instellingen bewaren in EEprom.
Servobesturingssignaal stoppen als de gewenste servostand is bereikt (geen jitter meer).

Mijn compliment vwb de documentatie. De soldeerinstructies zijn goed beschreven. Het zou fijn zijn als er in de documentatie ook het schema en de PCB waren afgebeeld.

De eerste werkt, nu de rest nog  :).

Met vriendelijke groet, 

spock

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #200 Gepost op: 18 May 2015, 13:46:21 »
Hoi Spock,

Ik zag het op de track&trace inderdaad al gebeuren. Mede omdat tot het afleveren bij jou PostNL alleen maar de eerste stap (afgegeven bij PostNL) aan bleef geven. Andere 3 stappen gebeurde opeens bij aflevering :p

Ik moet eerlijk zeggen, ik had het nog nooit op AC getest. Dat was tot net.  ;D De condensator is inderdaad aan de kleine kant en naar wat blijkt, voor AC te klein. Ook bij mij is de rippel te hoog. Ik heb de adServo eigenlijk ook niet voor AC gemaakt. De gelijkrichter zit er meer in zodat het niet uit maakt hoe je de power aansluit. Ik heb er nog wel over gedacht een grotere condensator te plaatsen maar dit had wat nadelen (groter component, grotere print, hoge inschakelstroom) dus niet gedaan. Mede omdat een schakelende voeding zo gevonden is :) (Ik moest net echt even zoeken naar een geschikt trafotje :p ) Toch heb ik nog wel een beetje aan AC voeden gedacht, dat is de reden dat de condensator aan de rand van de print zit. Mocht je dus willen is het goed te doen om een grotere condensator liggend naast de print te monteren. Ik denk dat ik hiervoor de handleiding maar ga aanpassen en eigenlijk stel dat je moet voeden met DC. Bedankt voor het er op wijzen  ::)

Bedankt voor het compliment! De documentatie is nog lang niet af helaas. Het is niet het leukste werk maar ik vind dat dit er zeker bij hoort. Schema en PCB zullen nog worden toegevoegd. Volgende keer dat ik een print ga solderen zal ik ook foto's maken om de soldeerhandleiding te ondersteunen.

Zelf ben ik gisteravond bezig geweest om te kijken waar het nu mis gaat als ik zowel buttons als DCC doe. Ik ben er nog niet helemaal uit. Timing problemen zijn zo'n beetje de vervelendste die je kunt hebben. Ik zal hier binnenkort meer over gaan posten :)


Timo
Verzonden vanaf mijn desktop met Firefox

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #201 Gepost op: 18 May 2015, 23:40:29 »
Hoi Timo,

Zou je een tipje van de sluier willen oplichten over de vermeende timing problemen. Wat bedoel je met buttons? Toch niet de knoppen op de adservo van de analoge versie?

MVG spock


Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #202 Gepost op: 19 May 2015, 17:38:30 »
Hoi Spock,

Zolang ik adServo draai met de MynaBay DCC library zonder de knoppen uit te lezen gaat alles prima. Maar lees ik ook de knoppen uit komt het met regelmaat voor dat ik een DCC commando mis. Dus het lijkt er op dat de DCC.update dan niet meer vaak genoeg aangeroepen wordt  ::)


Timo
Verzonden vanaf mijn desktop met Firefox

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #203 Gepost op: 20 May 2015, 00:03:41 »
Hoi Timo,

Afgelopen zondag ook wat gespeeld/getest en de volgende dcc handling functie gebruikt:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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<maxservos; i++)
{
    if(address == accessory[i].address)  //is dit een gezocht dcc addres?
{
#ifdef TESTSERIAL
Serial.print("Basic addr: ");
Serial.print(address,DEC);
Serial.print("   activate: ");
Serial.println(enable,DEC);
#endif
         if (i == testdccservo) {
digitalWrite(LED,HIGH);
}
      if(enable) accessory[i].output = 1;
      else accessory[i].output = 0;
    }
  }
}

Even nog een toelichting vwb  testdccservo. Dit is een globale variabele en mag 0 tot 3 zijn (nummervan de servo - zero-based). De led wordt weer laag gemaakt als de servo[ testdccservo] op de eindpositie is gekomen.

Als op de ecos centrale een wisselcommando wordt gegeven, dan wordt er in de seriele monitor 2 * 3 commando's getoond. Dus het commando wordt 6 keer uitgezonden.
Het nut van de led is het tonen of een dcc adres wordt gezien door arduino (als je geen seriele monitor gebruikt). Een bijkomend voordeel was, dat bij mijn probleem van een instabiele voeding, de led onregelmatig begon te knipperen terwijl het dccaddress niet werd uitgezonden. Dit gaf m.i. aan dat de optokopler schakeling niet goed werkte.

Ik hoop dat je er wat mee kunt.

MVG spock

« Laatst bewerkt op: 20 May 2015, 23:28:22 door spock. Reden: code in kader gezet »

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #204 Gepost op: 20 May 2015, 16:37:18 »
Hoi Spock,

Ik denk dat je de code even tussen [code ] tags wil plaatsen ;) Alles wordt altijd zo italic :p Mss even aanpassen.

Wat betreft de code, bedankt voor het meedenken. Dat is inderdaad ongeveer zoals ik het gedaan heb. Het is bijna een copy past uit het voorbeeld van de MynaBay DCC library. En zolang ik de buttons niet inlees geeft dat ook geen problemen. Dit terwijl het inlezen van de buttons echt niet zo veel tijd mag kosten. Ik heb een kleine tijdmeting gedaan en kom uit op gemiddeld dat het uitlezen 22us in beslag neemt (gemiddelde over 1 seconde) met een minimum van 16us maar steeds met een uitschieter van +- 130us. (Moet je ook even bedenken dat de micro() functie niet heel nauwkeurig is.) De verschillen zijn te verklaren door interrupts die wel of niet plaatsvinden tijdens de functie. Ik moet nog even kijken of het constanter is als ik interrups uit zet. Maar zelfs de 130us zou in mijn beleving niet zo uit moeten maken. Dit is wel langer van een level change in het DCC signaal maar dat wordt afgehandeld met een interrupt. Het lijkt me dus dat de DCC.update() (aangeroepen per loop) toch nog meerdere keren per pakket aangeroepen wordt.

Volgende stap is eens kijken hoe lang de hele loop nu duurt. Ook eens evn kijken hoe de library nu precies de afhandeling doet. Als de library minimaal 1 keer per level change (of per bit) aangeroepen moet worden (dus een buffer van 1 gebruikt) dan kan dat nog wel eens voor problemen zorgen... Dan wordt het geheel wel heel timing kritisch.

Nog wel een ander punt om te melden. Vandaag kwam de postbode langs met een pakketje uit China. Dit pakketje is al mijn andere bestelling voorbij gevlogen en was er in 8 dagen.  :o Was dus wel het laatste pakketje wat ik had verwacht  8) "Maar wat zat er dan in?" vraag je je af.  ;D Nieuwe servo's! Tot nu toe heb ik ook altijd gespeeld met de wel bekende Tower Pro SG90 servo's (en ook al ondervonden dat er wat verschillende uitvoeringen zijn). Deze servo's werken best okay met één uitzondering, het opstarten. Ondanks dat de uitslag niet zo groot is bewegen ze toch bij het opstarten. Dit is een bekent verschijnsel van analoge servo's. Vandaar dat ik al een tijdje op zoek was naar digitale servo's die niet gelijk 3 keer zo veel kosten als de SG90. Dit om te kunnen testen of deze beter reageren. En opeens zag ik de Tower Pro SG92R voorbij komen voor +- €2,50 pers stuk. En las ik dat nu goed, digital? Zouden ze echt digitaal zijn? Dus snel besteld en vandaag geleverd gekregen. Aangesloten en warempel, geen enkele beweging bij power up!  ;D Dus ik denk dat de SG92R dus echt de ideale servo is  ;D

Hier nog ff code snipets:

Zoals gezegd, copy past van de DCC packet handler. Checkt alleen 1 adres ter test nu
void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data){
    address -= 1;
    address *= 4;
    address += 1;
    address += (data & 0x06) >> 1;
   
    boolean enable = (data & 0x01) ? 1 : 0;
   
    if( address == 1 ){
        if(enable){
            servoControl.gotoEndPos(1, 0);
        }
        else{
            servoControl.gotoEndPos(1, 1);
        }
    }
}

Code om de buttons uit te lezen en te handelen:
void buttonUpdate(){
    static byte iButton;       //Pointer to button to update
    static byte numButtons;    //Counter for the number of buttons pressed
    byte servo = iButton / 2;  //Pointer to effected servo
    byte modulo = iButton % 2; //which butto for that servo
   
    buttons[iButton].update();    //update the button state
   
    //button is pressed an is even (have priority over odd)
    if(buttons[iButton].read() == LOW && modulo == 0){   
        servoControl.gotoEndPos(servo, 0);    //go to position A
        numButtons++;
    }
    //button is pressed and is odd, check if the even button isn't pressed
    else if(buttons[iButton].read() == LOW && modulo == 1 && buttons[iButton - 1].read() == HIGH){           
        servoControl.gotoEndPos(servo, 1);    //go to position B
        numButtons++;
    }
   
    //Update button pointer for next call
    iButton++;
    if(iButton >= NrButtons){
        iButton = 0;
       
        //Turn ArduinoLED on if button is pressed
        if(numButtons != 0){
            digitalWrite(LedArduino, HIGH);
            numButtons = 0;
        }
        else{
            digitalWrite(LedArduino, LOW);
        }
    }
}

En om de timing te bekijken (onderdeel van de loop):
    unsigned long tic;
    unsigned long toc;
    static unsigned long tictoc;
    static unsigned long tocMin, tocMax, tocAvg;
   
    servoControl.update();  //update all servo's
   
   
    tic = micros();
   
    //check buttons for a press (one per call)
    buttonUpdate();  // <----- Gaat het om
   
   
    toc = micros();
   
    toc -= tic;
    if(tocMin > toc){
      tocMin = toc;
    }
    else if(tocMax < toc){
      tocMax = toc;
    }
    if(tocAvg == 0){
      tocAvg = toc;
    }
    else{
      tocAvg += toc;
      tocAvg /= 2;
    }
   
   
   
    if( (millis() - tictoc) > 1000UL) {
      tictoc = millis();
       
      Serial.print(tic);
      Serial.print("   ");
      Serial.print(toc);
      Serial.print("   ");
      Serial.print(tocMin);
      Serial.print("   ");
      Serial.print(tocMax);
      Serial.print("   ");
      Serial.println(tocAvg);
     
      tocMin = -1;
      tocMax = 0;
      tocAvg = 0;
    }


Timo
Verzonden vanaf mijn desktop met Firefox

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #205 Gepost op: 21 May 2015, 11:41:12 »
Hoi Timo,

De code staat in een venster..  (y) .

Waar ik me over verbaas is dat er dcc commando's worden gemist. Ik kan me voorstellen dat er 1 commando wordt gemist, maar 6 (igg ecos centrale). Hoeveel commando's zie jij bij 1 onschakeling?

Als test is het misschien handig om de aanroep van de servo besturing even te vervangen door het schakelen van een ledje in de buttonupdate(). Kun je zien of het aan de button of de servo libs zou kunnen liggen.

Sluit ook de dcc schakeling niet ut. Ik heb al eerder een DCC decoder gemaakt en kreeg deze toen moeilijk aan de gang. Ik heb op de adservo print nog een extra weerstand van 10k tussen de voeding en pin 7 van de 6n137 gezet en gebruik niet de interne pullup weerstand van de arduino.

Happy bughunting,  spock

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #206 Gepost op: 21 May 2015, 15:04:38 »
Ik vind het ook wel bijzonder dat ik commando's mis. Hoeveel commando's ik binnen krijg weet ik niet. Om en of andere reden doet de DCC monitor niets. Ik zou dus de code moeten aanpassen. Ga ik nakijken. Het is overigens wel sterk afhankelijk van de ingestelde pulstijd op de centrale. Hoeveel de DCC spec ook al weer zegt weet ik niet.

Denk niet dat het aan de opto ligt. Deze is normaal opgebouwd en voorzien van externe 10k ipv te vertrouwen op de ingebouwde 50k-ish.


Timo
Verzonden vanaf mijn desktop met Firefox

spock

  • Offline Offline
  • Berichten: 757
Re: AdServo, servo besturing voor iedereen
« Reactie #207 Gepost op: 22 May 2015, 23:55:35 »
De digitale servo's staan in bestelling. Kijken hoe snel ze leveren.

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: AdServo, servo besturing voor iedereen
« Reactie #208 Gepost op: 27 May 2015, 23:48:45 »
Timo,  stuur je een digitale servo ook aan met een puls van 1 - 2ms of gaat dat anders?
Groet Frits

Verstuurd vanaf mijn HTC One X met Tapatalk

Groet Frits

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: AdServo, servo besturing voor iedereen
« Reactie #209 Gepost op: 28 May 2015, 13:52:42 »
Aansturing is gewoon gelijk. Zit waarschijnlijk alleen een microcontroller in voor het lezen van de pulsen ipv gewoon een analoge comperator.


Timo
Verzonden vanaf mijn desktop met Firefox