BeneluxSpoor.net forum
Vraag en antwoord => Elektronica en analoog => Topic gestart door: Timo op 25 October 2014, 17:42:57
-
Beste allemaal,
Afgelopen tijd heb ik een vergrote belangstelling gezien voor het gebruik van een Arduino als basis voor de besturing van modelspoorzaken. Zie bijvoorbeeld Arduino als DCC decoder (http://forum.beneluxspoor.net/index.php/topic,60909.0.html), Arduino analoge(!) modelbaan sturing (http://forum.beneluxspoor.net/index.php/topic,57884.0.html) en
Arduino S88 terugmelder (http://forum.beneluxspoor.net/index.php/topic,60841.msg3221496534.html). Nu liep ik zelf ook al een tijd met het idee om een DCC decoder te maken. Aangezien ik zelf veel met PIC's werk wilde ik dat als basis gaan gebruiken. Maar nooit aan begonnen, genoeg andere projecten gehad enz. Je kent het wel. Tot nu! Mede door het geklus aan Arduino's van Rudy [RudyB] en het feit dat ik ook gevraagd ben wat (niet modelspoor) gerelateerde Arduino code en libraries te schrijven1 ben ik wat meer gaan doorspitten over Arduino.
Al het gebruik van de Arduino is leuk maar in mijn ogen is een kale Uno niet te gebruiken op een echte modelspoorbaan. Een Arduino met jumper draadjes en een breadboard is leuk om dingen te proberen maar om dat onder je baan te plaatsen is naar mijn mening vragen om problemen storingen. Bij Arduino Sparkfun (https://www.sparkfun.com/) hebben ze dit ook door gehad en zijn gekomen met de Arduino Pro Mini (http://arduino.cc/en/Main/ArduinoBoardProMini). Deze is bedoelt om te gebruiken in meer (semi)-permanente opstellingen. Kijk, dit klinkt al beter. Ze hebben hier alle onnodige dingen vanaf gehaald (simpele pin-headers voor een shield, geen USB, power jack, kleine regulator enz) en het bordje onmogelijk veel kleiner gemaakt (18x33mm tegenover 53x69mm voor een Uno). En laat ze nu ook nog eens minder dan de helft van een Uno kosten! In China kan je ze bestellen voor 2 dollar per stuk en dan komen ze nog naar je toe ook. Hiervoor is het nog wel leuk om iets te maken.
Ook kwam ik nog wat anders tegen. Op een digitale baan is het tegenwoordig al aardig standaard dat je een servo kunt gebruiken voor het aansturen van wissels en andere bewegingen. Ze zijn goedkoop, kunnen traag bewegen en zijn naar wens af te regelen. Maar voor een analoge baan is dit anders. Hier is het gebruik van een servo nog minder gebruikelijk aangezien je ze niet even met een drukknopje aan kunt sturen. Standaard wisselaandrijvingen of Conrad wisselmotoren worden hier nog veel gebruikt.
Dit bracht mij aan het denken. Een servo aansturen met een Arduino komt zo'n beetje naar de blink-a-led waarmee je begint. Het is super eenvoudig en Arduino wordt zelfs geleverd met een Servo library. Maar goed, dan zit je weer met het punt dat je onder een baan wel een stabiele oplossing wilt en geen losse draadjes en breadboards. Hierdoor is het idee ontstaan hiervoor een simpele printplaat te maken. Mij eisen waren:
- Aansturen van 4 servo's met drukknoppen
- Makkelijk soldeerbaar (= alleen tru hole componenten)
- Goedkoop (makkelijk te krijgen componenten, geen poespas)
- Op basis van een Arduino Pro Mini
- Klein (maakt het namelijk ook weer goedkoop)
- Betrouwbare opstelling zodat hij op een echte baan te gebruiken is
- Schoefaansluitingen mogelijk voor alles
- Instelbaar onder de baan
- Arduino stackable (female header op adServo)
Met deze eisen heb ik KiCad maar weer eens opgestart en ben ik aan de slag gegaan. het ontwerp is simpel gebleven, headers voor de Arduino Pro Mini, headers voor de servo's, aansluitingen voor drukknoppen en een spanningsregelaar. En tada, de adServo is geboren!
(https://images.beneluxspoor.net/bnls/adservo_schema_v1.png) (https://images.beneluxspoor.net/bnls/adservo_schema_v1.png)
En voor de oplettende, er is ook nog iets extra's toegevoegd. Door het werk van OpenDCC (http://www.opendcc.de/elektronik/opendecoder/opendecoder_e.html), [RudyB] (http://forum.beneluxspoor.net/index.php/topic,60909.0.html) en MynaBay (http://www.mynabay.com/arduino/2-uncategorised/14-arduino-dcc-monitor) heb ik er ook maar een optocoupler op gezet. Ook al was digitaal niet de eerste insteek voor dit project brengt dit het geheel wel dichter bij mijn oude wens om een servo decoder te maken. In eerste instantie zal ik hier nog niet mee aan de slag gaan voor werkende code maar de code van [RudyB] zou al moeten werken :D De hardware laat op deze manier toe of je een analoge servo controller wilt, een digitale servo decoder of een combi!Vandaar de naam, adServo ;)
Gisteren daarna maar PCBnew opgestart en toen kwam het lastige, hou het klein ::) Maar na een dagje puzzelen heb ik het eerst ontwerp. Nog niet volledig af, moet nog wat tekst op enzo, maar het geeft een idee. De print is 50x32mm geworden waarmee ik wel vind dat ik aan de norm klein heb voldaan. ;D
(https://images.beneluxspoor.net/bnls/adservo_board_v1.png) (https://images.beneluxspoor.net/bnls/adservo_board_v1.png)
Plaatje met alleen front copper maar het is een dubbelzijdig printje geworden. Op de achterkant zitten niet zo veel sporen. Waarschijnlijk is dit plaatje op je scherm groter dan in het echt ;D De Arduino Pro Mini kjomt hier bovenop door middel van headers (en kan er dus nog af).
Enige keuze die ik heb gemaakt is om de ingangsspaning aan de lage kant te houden. Dit omdat ik voor de Arduino de onboard regulator gebruik. Voor de servo's zit er een lineaire regulator op het bordje die bij te veel spanning ook warm kan worden (en wil er eigenlijk geen koeling op en bij) en bij Arduino hebben ze het ook over max 12v (dit zal wel zitten in het gebruik van 16v caps). Maar dit zou geen probleem mogen zijn omdat goedkope 3A of 5A switched regulatoren ook makkelijk uit China over te brengen zijn. Als je hiermee +-8V afstelt verstook je niet zo veel hitte en maakt het niet uit welke trafo/voeding je pakt. Op één zo'n regulator kan je best wat adServo's kwijt.
Om de adServo te gebruiken moet je de Arduino Pro Mini nog wel programmeren (standaard staat er alleen blink a led op ;D). Dit kan met een USB-UART TTL breakout board (http://arduino.cc/en/Guide/ArduinoProMini) (zoals een FTDI FT232RL, Silicon Labs CP2102 of Prolific Technologies PL2032Hx) of je hangt hem aan Arduino Uno (http://www.instructables.com/id/Arduino-Examples-2-Use-an-Arduino-as-a-FTDI-Progr/). Tijdens de beta zal de code nog wel eens wijzigen en neem ik aan dat iedereen wel de Arduino Pro Mini kan programmeren. Wanneer de code een stable bereikt zou ik ze ook als service kunnen programmeren. Maar het zelf doen is niet lastig en dankan je ook in de toekomst de boel upgraden :D
Morgen ga ik nog naar Eurospoor, dus kan ik er even niet mee verder. Maar na het weekend zal ik er nog eens rustig naar kijken en zelf eens ff een Arduino uit de kast pakken om wat te testen. In de loop van de week wil ik het ontwerp naar China sturen om te laten maken. Dan begint het wachten en kan ik vast de Arduino Sketch afmaken. Ook zal ik een handleiding schrijven over hoe de boel te solderen en te gebruiken. Dus zelfs als je weinig soldeerskills hebt is dit nog prima te doen.
Wat kost dit geheel vraag je nu? Ik heb zitten rekenen en kom op minder dan 8 euro uit als je de analoge en digitale opties plaatst. (Ik ga nog even beter rekenen:p ) Alle onderdelen zijn makkelijk te krijgen in China of lokaal. Eerste duurt natuurlijk wel wat langer maarja, het is hobby ;D De eerste batch zijn er gelijk al 30 dus wie ook wil testen moet me maar een berichtje sturen.
Ik wil dit project als open hardware delen. Het is dus geen mooi kant en klaar product maar een doe het zelf project. Zelf iets doen is dus noodzakelijk. Wel zou ik het als kit willen gaan leveren als er interesse is. Dus van mij de vraag, wie heeft er interesse in een printplaat? En wie ook in de onderdelen?
Goed, was weer een lang verhaal maar ik hoop dat er mensen zijn die dit een nuttig project vinden ;D Reacties en opmerkingen zijn zeer welkom :D
Timo
1 Voor de geïnteresseerde, eerste gepruts is nu te zien op de Dutch Design Week in Eindhoven op de stand van Infento (http://www.infentorides.com/).
-
Hallo Timo.
Ik vind het een nuttig project en heb wel belangstelling voor een complete set voor een proef opstelling.
Omdat ze dus zowel analoog als digitaal te gebruiken zijn,
kan ik beginnen met de drukknop (analoog) en later overschakelen op de computer (digitaal). (y)
mvg,
vrijbuiter55.
-
is je keuze voor 4 servo's gekomen door het gebrek aan IO poorten? je zou de schakelaars voor het omzetten van de wissels ook door middel van een analoge poort op de Arduino aan kunnen sturen.. dan kan je door gebruik van verschillende weerstanden meerdere schakelaars op één analoge poort aansluiten.. zo krijg je meer IO poorten vrij en kan je misschien nog meer servo`s aansturen ;D
-
@Timo,
Je demonstreert e.e.a. Op de Dutch Design Week. Kom je toevallig ook uit Eindhoven?
Ik ben na de introductie afgelopen donderdag door RudyB erg gecharmeerd van de toepassing van de Arduino als DCC decoder voor servo's.
Maar eerlijk gezegd vooral omdat het zo direct en simpel te gebruiken was i.c.m. Hornby Railmaster/eLink.
Ook Ruud heeft het over 'betrouwbaarheid' en 'werkend in lab opstelling'.
Het zou prachtig zijn als de optie plug-and-play beschikbaar is. Waarbij het bijvoorbeeld ook zou helpen als er niets gesoldeerd hoeft te worden, maar dat schroefverbindingen mogelijk zijn.
Als 'eindgebruiker' wil ik graag mee testen.
Grzz, Hans
-
is je keuze voor 4 servo's gekomen door het gebrek aan IO poorten? je zou de schakelaars voor het omzetten van de wissels ook door middel van een analoge poort op de Arduino aan kunnen sturen.. dan kan je door gebruik van verschillende weerstanden meerdere schakelaars op één analoge poort aansluiten.. zo krijg je meer IO poorten vrij en kan je misschien nog meer servo`s aansturen ;D
Of gebruik die I/O poorten om een relais om te gooien zodat je ook meteen puntstuk polarisatie kunt doen oid...
Dat mis ik in deze servo decoder nog ten opzichte van bijvoorbeeld die van Karst en Uhlenbrock , dat omschakelcontact.
Verder wel een fraai uitgedachte oplossing (y)
-
Hallo Timo,
Een geweldig initiatief! Zelf heb ik ook lang zitten denken om zoiets te gaan maken, maar ik kan zelf geen PCBs ontwerpen.
Ik ben wel geïnteresseerd in een aantal PCBs (afhankelijk van de prijs), omdat ze een goede basis zijn.
Echter, ik denk dat ik zelf mogelijk mijn eigen code zal schrijven (gewoon omdat ik het leuk en leerzaam vind).
Daarnaast vind ik het super dat je het zowel analoog als digitaal wilt maken.
Juist die veelzijdigheid zou je kunnen uitbreiden, door ook de switches als outputs voor de servo's te gebruiken. Dan zou je een totaal van 8 servo's kunnen aansluiten. Zie ook Servoknob code.
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
Deze hoeven niet allemaal op een PWM pin te zitten (zojuist getest, werken zelfs op analoge pinnen).
Als je de pins voor de switches aan de zijkanten aanpast dat in plaats van de min, je de plus in het midden hebt, dan kan je er ook voor kiezen om in plaats van de helft van de 100K weerstanden weg te laten en daar de min op aan te sluiten met een draadbrug.
Volgens mij maakt dit je print meer veelzijdig (en heel eerlijk, voor mij ook meer bruikbaar).
Ik ben benieuwd wat je ervan vind!
Groeten,
Henk
-
In eerste instantie bedankt voor alle reacties! Met de geïnteresseerde zal ik contact opnemen als ik printjes in handen heb :D
@vrijbuiter55, dat heb je goed gezien, dat is het idee. Wel is de insteek om eerst mooie code voor analoge modus te maken. Maar het staat je vrij om zelf aan de slag te gaan of code van [RudyB] of MynaBay te gebruiken. Maar aangezien ik ze zelf ook als decoder wil gebruiken wil ik ook graag DCC hebben. Of dit op basis is van de software van MynaBay wordt of niet zie ik tegen die tijd. Maar dat is het leuke van een vrij ontwerp, je kan het er gewoon op zetten.
@Auke, de keuze voor 4 servo's is niet gekomen door het gebrek aan IO. Ik heb er nog wel een paar over. Zo heeft een Arduino Pro Mini (denk dat ik hem vanaf nu maar afkort als APM) nog 2 of 4 die ik nu niet "aftap". Deze zitten niet bij alle modellen op dezelfde plaats en het zou dit ontwerp wat lastig maken. De keuze is gekomen omdat ik
- de print eigenlijk niet groter wil maken. De print zal dan weer duurder worden.
- De kabel naar een servo kan je niet te lang maken om betrouwbaar te werken. Op veel plekken heb je waarschijnlijk genoeg aan vier aansluitingen. En omdat ik de print heb ontworpen met simpel en goedkoop in het achterhoofd is het voor een station niet zo'n probleem om een tweede of derde te pakken.
- Een servo toch nog best wat stroom kan vragen. Ik wil niet dat de kans bestaat dat de diode of spanningsregelaar het te zwaar krijgen.
De mogelijkheid om een analoge pin voor meerdere knoppen te gebruiken ken ik en het blijft een slimme oplossing 8)
@Hans, helaas sta ik niet zelf op de DDW. Een goede vriend van me staat daar met een afstudeerproject. Ik heb daarvoor veel van de elektronica en code van vormgegeven. Maar heet concept en design komen bij hem vandaan. Ik (en hij ook) komen uit Enschede.
Wat betreft plug en play. Het blijft in eerste plaats een kit. Wel een die je, net als de BNLS Booster-Hub makkelijk in elkaar kunt zetten en daarna een stabiel component vormt. Het design is verder open. Ik zal wel software schrijven maar wil je iets anders kan je dat zo doen. Met Arduino als basis is hiervoor genoeg te vinden op het grote wilde web.
Maar als hij in elkaar zit is het plug en play. Misschien op de render van het bord niet zo goed te zien, maar de aansluitingen voor power, DCC en de wisselschakelaar zijn te voorzien van schroefterminals (http://image.made-in-china.com/2f0j00RvDagLcPuGoH/Screw-Terminal-Block-TA-5-0-.jpg). Makkelijker kunnen we het niet maken. Wel heb ik de aansluitingen voor de schakelaars zo gemaakt dat je ze ook kunt voorzien van pin headers ipv schroefaansluitingen voor de mensen die dat handig vinden. naar wens in te vullen dus ;D
@JAB van Ree, Ik heb de relais expres weg gelaten. Waarom? Dit zou de print groter maken (jaja, weer het argument) en de print goedkoop en simpel wil houden. Maar ook omdat ik een aantal keer hier een andere methode heb gezien. Namelijk het gebruik van microswitches (http://www.ebay.nl/itm/10-Good-Tact-Switch-KW11-3Z-5A-250V-Microswitch-3PIN-good-/111446762755?pt=LH_DefaultDomain_0&hash=item19f2bea503). Deze kosten hetzelfde als het relais maar hoef ik geen printruimte voor te maken en ze geven (in tegenstelling tot relais aan een decoder) wel de actuele wisselstand door. Dit maakt de code ook weer wat makkelijker en de print half zo groot.
Wel is het mogelijk om de huidige wisselingangen te misbruiken gebruiken om een relais mee aan te sturen. Wel is er nog een transistor nodig om het relais te bekrachtigen. De weerstanden daar kunnen eventueel worden aangepast om een basis van een transistor te schakelen. Je hebt dan nog wel te maken met een leuke programmeer uitdaging (iets met, wat was de laatste wisselstand ;) ) Misschien dat ik nog wel een extra 5v aansluiting maak, mmmmm ;D
@Henk, ik weet dat een servo niet aan een PWM uitgang hoeft. De servo library gebruikt ook niet de PWM functie van de microcontroller. De PWM voor een servo is namelijk te traag hiervoor ;D Zo uit me hoofd zit dan ook maar 1 servo per toeval aan een PWM poort maarja, die gebruik ik gewoon als IO.
Verder ondersteund de servo lib zelfs tot 12 servo's. Ik heb er, zoals hierboven ook aangegeven, voor gekozen dit tot 4 te beperken wegens ruimte en vooral stroomverbruik. Als je met 8 servo's een beetje driftig gaat schakelen kunnen de spanningsregulator en de diode het nog wel eens warm krijgen. Denk dat ik dat dus nog laat zitten. Misschien dat ik later nog een dochterbord maak waarmee dit wel mogelijk is maar aan de andere kant, wanneer heb je zoveel servo's bij elkaar en hoeveel meer kost het om een tweede adServo op te bouwen.
Timo
-
Hoi Timo
Ik heb al eens een kleine microcontroller board ontworpen het meet slechts 5cm x 7 cm.
Deze is beter toe te passen dan de grote Arduino develpment board.
Deze printjes wil ik ook gaan toepassen op mijn modelspoorbaan.
Een versie van de adServo met I2C bus zal ik wel makkelijk vinden.
Ik ben nu op versie 2 aan het broeden met een I2C bus en bluetooth aansluiting.
(https://images.beneluxspoor.net/bnls/smitsduinov2_1_pcb_1.jpg) (https://images.beneluxspoor.net/bnls/smitsduinov2_1_pcb_1.jpg)
Ik kan ze voor $9,95 per tien laten maken, ben even het webadres kwijt, ik zal even kijken of ik het nog terug kan vinden als je interesse hebt.
Mvg Paul Smits
-
Hallo Timo,
Ik sluit me aan bij Vrijbuiter55. Voor een proefbaan, waarbij ik zowel digitaal als analoog wil rijden, lijkt me dit een mooi product.
Voor digitaal wil ik overstappen naar BiDiB van Fichtelbahn, waarbij ik de wissels vooralsnog met de hand wil schakelen.
Ik doe graag mee met testen. Dus als je de printjes (of sets) gereed hebt houd ik me aanbevolen.
Groeten,
Pieter
-
@ Timo en Paul,
Deze misschien? ITEAD Studio (http://imall.iteadstudio.com/open-pcb/pcb-prototyping/im120418001.html)
Hier laat ik mijn printen altijd etsen.
-
Hoi Timo,
Een leuk initiatief. Er zal waarschijnlijk wel belangstelling zijn voor je printplaatjes.
Zelf houd ik het liever bij de standaard Arduino:
- De Arduino wordt geleverd met opsteek pennetjes. Daar soldeer ik de verbindingen aan. Mocht er ooit een probleem zijn dan kan de Arduino zonder soldeerwerk uitgewisseld worden.
- Natuurlijk komen er geen breadbordjes en losse draadjes onder de tafel. De opto-coupler wordt met weerstand en led op een 'low cost' stukje gaatjesprint van 2 cm gesoldeerd.
- Ik wil de USB poort beschikbaar hebben voor het afregelen van de servo's en om eventueel andere software experimenten uit te voeren.
- Ik ga 12 servo's op een Arduino aansluiten. De prijs komt dan uit onder de €0,40 per wissel (exclusief servomotortje).
-
Zoek ook een arduino oplossing. Ben echter nnog niet voldoende vertrouwd ermee en zie daarom de afname van enkele printjes wel zitten.
-
@Henk, ik weet dat een servo niet aan een PWM uitgang hoeft. De servo library gebruikt ook niet de PWM functie van de microcontroller. De PWM voor een servo is namelijk te traag hiervoor ;D Zo uit me hoofd zit dan ook maar 1 servo per toeval aan een PWM poort maarja, die gebruik ik gewoon als IO.
Verder ondersteund de servo lib zelfs tot 12 servo's. Ik heb er, zoals hierboven ook aangegeven, voor gekozen dit tot 4 te beperken wegens ruimte en vooral stroomverbruik. Als je met 8 servo's een beetje driftig gaat schakelen kunnen de spanningsregulator en de diode het nog wel eens warm krijgen. Denk dat ik dat dus nog laat zitten. Misschien dat ik later nog een dochterbord maak waarmee dit wel mogelijk is maar aan de andere kant, wanneer heb je zoveel servo's bij elkaar en hoeveel meer kost het om een tweede adServo op te bouwen.
Timo, jammer dat ik je niet heb weten te overtuigen. ;)
Ik zie het vooral iets, wat voor jouw "no pain" is (behalve misschien print-lay-out veranderen, terwijl je de prints zo snel mogelijk wilt bestellen), maar later wel "gain" kan opleveren.
Aangaande een warme spanningsregelator, dat is iets wat je zelf in de hand hebt. Zelf detach ik de servo na gebruik, zodat ik geen last van jitter heb. Bovendien is het de vraag hoeverre je ooit 8 servo's tegelijk zal schakelen. Is een beetje aan de programmeur.
@JAB van Ree,
Wel is het mogelijk om de huidige wisselingangen te misbruiken gebruiken om een relais mee aan te sturen. Wel is er nog een transistor nodig om het relais te bekrachtigen. De weerstanden daar kunnen eventueel worden aangepast om een basis van een transistor te schakelen. Je hebt dan nog wel te maken met een leuke programmeer uitdaging (iets met, wat was de laatste wisselstand ;) ) Misschien dat ik nog wel een extra 5v aansluiting maak, mmmmm ;D
Ik vind de microswitches een cool idee, maar als mensen echt relays willen gebruiken, kunnen ze bijvoorbeeld ook deze relais (http://www.aliexpress.com/snapshot/6051742768.html) gebruiken. Dan heb je ook geen transistor meer nodig. Zelf wel even een jumperkabeltje solderen, dan heb je hem ook.
Om weer terug te komen op de input van de switches. Deze zou ik juist de optie openlaten om deze te misbruiken gebruiken voor dit soort acties. Jep, ik blijf het proberen om je te overtuigen. ;)
En aangaande programmeer uitdaging met geheugen van vorige outputs, die valt volgens mij best mee. Als je niet ergens een geheugen array aanmaakt, kan je natuurlijk altijd nog de stand van de servo's uitlezen en daar je output op aanpassen. :P
Groeten,
Henk.
p.s. eigenlijk wilde ik het niet zeggen, maar volgens mij kan je de 100K ohm weerstanden voor de switch input weglaten, scheelt je weer 4 cent of zo. Ik vind ze wel handig, want als ik ze niet soldeer, heb ik een extra plek om een ground of 5V aan te solderen. ;)
p.p.s. Voor iedereen die zelf een arduino UNO wil gebruiken/makkelijk een arduino wilt uitwisselen: in plaats van vast solderen kan je ook vrouwelijke pinnetjes (http://www.aliexpress.com/snapshot/6051742762.html) solderen op de plek, dan kan je altijd nog draadjes voor een UNO, of zo een pro-mini eruit trekken.
-
Ter illustatie voor mensen die willen experimenteren, maar liever een UNO gebruiken:
Voor permanente opstellingen gebruik ik liever een pro mini, simpelweg omdat de prijs 1/5 is van een Uno en de functionaliteit gelijk is (muv USB).
Echter voor testen gebruik ik liever een UNO of leonardo.
Om dat mogelijk te maken, soldeer ik female headers op de plek van de pro-mini.
En vervolgens gebruik ik draadjes om het geheel aan te sluiten en te testen.
(https://images.beneluxspoor.net/bnls/with_UNO_and_servo.jpg) (https://images.beneluxspoor.net/bnls/with_UNO_and_servo.jpg)
Daarna prik ik de pro-mini erin. Makkelijk als een decoderwissel. :D
(https://images.beneluxspoor.net/bnls/with_pro_Mini_and_stepper.jpg) (https://images.beneluxspoor.net/bnls/with_pro_Mini_and_stepper.jpg)
P.s. bij de één heb ik servo aangesloten, maar in de definitieve versie gebruik ik een stappenmotor. Twee aansluitingen van de servo gebruik ik nu als power voor de stappenmotor.
P.p.s. dit is voor een project om thuis twee spots te maken achter mijn bed. Met touch bediening. De stappenmotor is om aan het koordje van het licht te trekken. Belachelijk? Ja, maar leuk. ;D
-
@Timo
Goed bezig (y) (y) (y)
-
Ik vind de microswitches een cool idee, maar als mensen echt relays willen gebruiken, kunnen ze bijvoorbeeld ook deze relais (http://www.aliexpress.com/snapshot/6051742768.html) gebruiken. Dan heb je ook geen transistor meer nodig. Zelf wel even een jumperkabeltje solderen, dan heb je hem ook.
Om weer terug te komen op de input van de switches. Deze zou ik juist de optie openlaten om deze te misbruiken gebruiken voor dit soort acties. Jep, ik blijf het proberen om je te overtuigen. ;)
En aangaande programmeer uitdaging met geheugen van vorige outputs, die valt volgens mij best mee. Als je niet ergens een geheugen array aanmaakt, kan je natuurlijk altijd nog de stand van de servo's uitlezen en daar je output op aanpassen. :P
Die relais zien er bruikbaar uit, bedankt voor de link.
Wat het 'geheugen' betreft. Waarom is dit van belang? Je laat Koploper bij opstarten alle wissels een maal heen en weer initialiseren en het klopt altijd.
Maar goed, voorlopig houd ik het bij de Uhlenbrock en Paco servodecoders, die bevallen prima. Paco voor dingen zonder relais/puntstukpolarisering, Uhlenbrock voor 'met'
-
Een servo uitlezen? Dat is dacht ik niet mogelijk zonder aanpassingen aan de servo
-
Zie http://arduino.cc/en/Reference/ServoRead.
Zo werkt het instellen van de maximale uitslag van digirails decoders ook.
-
Ondanks het late uur van mijn post de dag erna de hele dag op Eurospoor rond gelopen ;D Ik was wel gesloopt toen ik weer thuis was in het oosten van het land.
Maar mijn hoofd heeft natuurlijk niet stil gezeten ;D Ik heb vooral zitten denken om de decoder toch geschikt te maken voor 8 servo's. Meer later ;) Eerste maar weer wat vragen beantwoorden.
@[bekie], @[Fritsprt] Bedankt! Reacties helpen altijd om bezig te blijven met zoiets.
@Paul [smits66], ik wil deze printjes ook naar Itead sturen, die leveren prima werk. Komt nog wel 6 dollar verzendkosten bij maar is een prima prijs voor printjes met silk en mask :)
I2C is wel mogelijk met de adServo alleen hier komen de verschillende varianten om de hoek kijken... De layout van de APM is wat minder fixed dat die van een Uno. Alle APM hebben wel een 12 pins headers aan beide zijden en de afstand is (zo ver ik heb kunnen zien) ook altijd gelijk. Alleen er zijn vier pinnen die nog wel eens op een andere plek willen zitten. Deze zitten dan of naast de analog pinnen of aan de korte zijde. Ook zijn het er soms twee en soms vier. Een ding hebben ze in ieder geval gemeen, het is altijd A4 en A5, oftewel de I2C pinnen. (Soms dus ook nog A6 en A7.) Omdat ik niet echt veel ruimte op mijn printplaat vrij had en ik ze zelf niet gebruik heb ik ze niet naar de adServo print geleid (er is geen header voor), dit zou gewoon niet meer passen. Maar ze zijn er dus wel. Dus vind jij het geen probleem deze van de APM af te halen (dit zou gewoon met een header kunnen, zit de adServo niet in de weg) zou je gewoon de adServo printen kunnen pakken.
@Pieter [Pjotr500] Dank je wel :) Nog een vraagje van mijn kant. Had wel eens wat gelezen over BiDib (zo te zien van de lui van openDCC), maar zijn er al centrales en programma's die er mee werken (en werkelijk wat aan de extra info) hebben?
@Servé, daar gaan de printen ook heen :)
@Rudy [RudyB] (ja, ook al per PB over gehad maar toch hier ook ff melden om iedereen inzicht te geven)
Ieder zijn eigen keuze. Leuke is dat de software kant iig uitwisselbaar is :)
Opzet van deze print is dat je niet aan de slag moet met prefboard. Dit kost toch altijd meer tijd dan je denkt en is ook niet gratis. Door een simpele printje te maken is het ook geschikt voor iemand met basis soldeerskills.
De opzet van de adServo is dat de APM erop zit met female headers op de adServo. Hij kan er dus af/vervangen worden. Maar het is natuurlijk mogelijk de AMP vast te solderen als iemand dit beter lijkt (is wel steviger maar een druppel hot glue is ook een optie).
Voor testdoeleinden blijf ik ook een Uno gebruiken maar voor onder de baan pak ik een APM, deze kost namelijk de helft. Software is gewoon uit te wisselen. Sterker nog, op de APM en de Uno zit dezelfde microcontroller.
@[JAB van Ree] Het schakelen van alle wissels bij het opstarten is een optie. Veel computerprogramma's doen dit al maar zou je hem met een MM gebruiken heb je kortsluiting mocht je over een wissel rijden waarvan het relais anders staat dan gedacht. Ook als je kortsluiting gehad hebt is het van belang (als je dit de computer niet laat weten = gebruikelijk op grote/club banen). De decoder komt dan ook "online" zonder te weten wat de laatste wisselstand was. "Oplossen" door de servo bij opstarten naar een stand te laten gaan is vervelend met analoog rijden en bij gebruik van een computer klopt de stand dan niet daarmee. Toegegeven, als je een externe kostsluitloze voeding gebruikt (ipv de boel uit DCC te voeden) blijft de Arduino gewoon onder spanning.
Ook dacht ik met polariseren gelijk aan Tillig wissels. In het verleden de stelbak voor de tongen vervangen door een metalen balk omdat de lipjes in het plastic makkelijk braken. Hierdoor is de polariteit van de tongen schakelen dus ook nodig. Maar deze kunnen ook nog tegen de rail liggen. Kloppen relais en wisselstand dan niet heb je kortsluiting. Maar goed, wil je dit op laten lossen door de Arduino snel het relais goed te laten zetten ben je (door de bootloader) toch te traag. (En helaas zijn Tillig wissels niet meer zo goedkoop al 6 jaar terug >:()
En om dat terug te komen op het uitlezen van een servo. Dat is echt niet mogelijk. Ook niet met servo.read(). Deze geeft alleen de laatst gebruikte waarde weer (uit de reference: "the value passed to the last call to write()"). Na het opstarten van de Arduino zal deze dus nog niets terug geven (of waarschijnlijk gewoon 0). Hetzelfde geldt wanneer je zelf een array maakt, deze is ook leeg na het opstarten.
@Henk [Monobrachius] Last but nog least, okay, misschien heb je me wel overtuigd ;D Ik laat de optie vallen om de analoge schakelaars via pin header aan te sluiten. (Of iig de groepjes van drie in dit ontwerp.) De meeste zullen toch de schroefaansluitingen willen, is ook veel makkelijker ;D De adServo gaat dus 8 servo's ondersteunen in DCC-mode. Ik zal zo eens aan de slag gaan in KiCad om de boel te wijzigen. Op naar v2 dus ;D
De weerstanden zouden weggelaten mogen worden maar geven de boel wel een extra bescherming. Zet je er per ongeluk voedingsspanning op zal hij het wel overleven. Doe je dat zonder weerstand denk ik het niet. Een andere idee was (maar dat is nog niet gemaakt/ nog getest) is dat als je de boel voed met wisselspanning je daarmee ook kunt schakelen. Daar dit ook "tijdelijk" gnd in en de via 100k zou dit wel geclampt moeten kunnen worden met de interne diodes. Is wel een beetje een hack ;D Gewoon naar GND schakelen is netter.
Timo
-
Het kan best zijn dat ik eroverheen heb gelezen, maar ik wilde nog even terugkomen op de relais-aansluiting. Is het misschien mogelijk om gewoon een uitgang te maken, net zoals de digikeijs-decoders hebben, waarop je je eigen relais kunt aansluiten? Als deze uitgang dan op de helft van het omlopen omschakelt, heb je het puntstukpolarisatieprobleem (heerlijke alliteratie) ook opgelost. Misschien dan je zelfs kunt kiezen tussen 8 servo's of 4 servo's met schakeluitgang.
-
Na het opstarten van de Arduino zal deze dus nog niets terug geven (of waarschijnlijk gewoon 0). Hetzelfde geldt wanneer je zelf een array maakt, deze is ook leeg na het opstarten.
Hallo Timo,
Is het een idee om de servostanden weg te schrijven naar EEPROM geheugen. Dan kan je ze wel inlezen na opnieuw opstarten.
gr. Frits
-
Nadeel is dan dat elke keer wisselen een write kost.. Na 100000 keer omzetten is de kans groot dat hij het daarna niet meer lekker doet (onverwacht werkt)
-
Dat is inderdaad het probleem. EEPROM kent een beperkt aantal writes en daarna is het op. Schrijf je steeds elke wisselstand weg is het EEPROM sneller aan het einde van zijn leven dan dat je zou willen van een decoder.
Timo
-
Leuk initiatief!
Hoe kan met deze print een servo geregeld worden?
Voor mijn BNLS-spoor modulebak zoek ik een mogelijkheid spoorbomen via reed-contacten een begrensde beweging te geven. Servo's zijn daarvoor wel een idee als de slag en de snelheid softwarematig aangepast kunnen worden.
Zeker belangstelling van mijn kant! (y)
Groet,
Tjalling
-
Nadeel is dan dat elke keer wisselen een write kost.. Na 100000 keer omzetten is de kans groot dat hij het daarna niet meer lekker doet (onverwacht werkt)
- 1,000,000 write EEPROM endurance
- Flash/Data EEPROM retention: > 40 years
MicroChip PIC gebruiken dus ;)
Rekensommetje: DDPB, elke 30 seconden wordt een wissel omgezet... 120 x uur, 960 x per (beurs)dag --> 1.000.000 / 960 = 1040 Beursdagen / 2.5 beursdag per beurs --> 416 Beurzen volcontinue de baan laten rijden... oftewel thuis ( !! ) 2.85 jaar ! de baan volcontinue 8 uur per dag laten rijden.... ;) :P :-\
Voor RailZ en MiWuLa misschien een probleem, voor ons stervelingen in het geheel niet denk ik zo maar ;)
Grtzz,
Karst
-
Hoe kan met deze print een servo geregeld worden?
...
Servo's zijn daarvoor wel een idee als de slag en de snelheid softwarematig aangepast kunnen worden.
Dat is drie variabelen (begin, eind en snelheid) aanpassen voordat je op uploaden drukt. :)
Henk
-
@Henk [Monobrachius] Last but nog least, okay, misschien heb je me wel overtuigd ;D Ik laat de optie vallen om de analoge schakelaars via pin header aan te sluiten. (Of iig de groepjes van drie in dit ontwerp.) De meeste zullen toch de schroefaansluitingen willen, is ook veel makkelijker ;D De adServo gaat dus 8 servo's ondersteunen in DCC-mode. Ik zal zo eens aan de slag gaan in KiCad om de boel te wijzigen. Op naar v2 dus ;D
De weerstanden zouden weggelaten mogen worden maar geven de boel wel een extra bescherming. Zet je er per ongeluk voedingsspanning op zal hij het wel overleven. Doe je dat zonder weerstand denk ik het niet. Een andere idee was (maar dat is nog niet gemaakt/ nog getest) is dat als je de boel voed met wisselspanning je daarmee ook kunt schakelen. Daar dit ook "tijdelijk" gnd in en de via 100k zou dit wel geclampt moeten kunnen worden met de interne diodes. Is wel een beetje een hack ;D Gewoon naar GND schakelen is netter.
:D sorry dat ik zo koppig ben.
BTW, thanks voor de uitleg. :) Met wisselspanning schakelen... Waarom ook niet. :)
Hoeveel printjes wil je initieel bestellen? En wat wordt de prijs per stuk ongeveer, dan kan ik mijn voorkeur doorgeven. :)
-
waarom initieel in programeren.. je kunt het ook programmeren via de multimaus of waarmee je de boel aanstuurt ;D
-
Ik weet weet dat een PIC een factor meer EEPROM writes aan kan dan een AVR. Meeste microcontroller projecten heb ik gedaan met PIC's. Alleen de toegankelijkheid van de Arduino IDE en de prijs van een compleet Arduino Pro Mini bordje heeft me doen besluiten daarvoor een bordje te maken. Een oplossing waar ik aan het gedacht is om dus een power lost detectie te maken waardoor de Arduino op condensator power de huidige stand wegschrijft. Andere optie blijft om de wissel bij inschakelen naar één stand te laten gaan en dan moet je de voedingsspanning maar niet uit zetten :D Dat is wel de meest simpele oplossing. Of je gebruikt een microswitch ;D
Dus wat betreft relais. Deze komen er niet op. Wel is het mogelijk, zoals bij een Digirails Digikeijs decoder, de ingangpinnen te gebruiken voor een relais. Wel gaat het hier ook logische uitgangen, er zal nog een transistor gebruikt moeten worden (of het printje wat Henk eerder heeft laten zien). Hier zal ik alleen (initieel) geen code voor maken. Focus ligt als eerste op analoge aansturing met basis DCC. Maar het staat je vrij de code aan te passen, de hardware kan het.
Voor het instellen, doel is dit te kunnen doen via de centrale (of de drukknoppen). Ik heb nog geen software gemaakt of getest zelf maar dit moet te doen zijn. Via de Arduino IDE is dit natuurlijk ook te doen (en zo zullen de eerste versies waarschijnlijk gedaan worden). Maar ik wil, net als andere servo decoders, gewoon de mogelijkheid om dit via de rijregelaar te doen en via CV prog. Het is allemaal een kwestie van software. En in de tijd dat ik moet wachten op de printjes (ik weiger 25 dollar te betalen voor express bezorging) kan ik daarmee gaan testen.
@Henk [Monobrachius] De eerste bestelling zal bestaan uit 30 printjes. Dit is het minimale aantal wat ik er in een batch kan laten maken. Er kunnen dus genoeg mensen beta testen :)
Timo
-
Nu had ik vanmiddag nog een post willen doen maar dat ben ik vergeten ::) Toch nog even een losse post om het overzichtelijker te maken.
adServo, de prijs
Vandaag heb ik zitten rekenen, wat zouden de componenten op een adServo kosten. Ik kwam uit op €2,70 voor de Analoge versie, €2,60 voor de DCC versie en €3,00 voor de analoog+DCC versie. Nu moet ik wel gelijk de kanttekening maken dat dit de prijs is wanneer je de componenten wel per 20, 50 of 100 inkoopt. Ook koop ik alles in in Dollar, deze staat ook niet stil dus dat kan ook een verschil maken. Wil je er dus maar één solderen zal deze dus wel iets duurder zijn. Maar het geeft een idee :)
Ik heb de hele tijd geroepen dat ik de adServo als open platform neer wil zitten. Het hoeft dus geen winstgevend product te worden. Maar dit haalt niet weg dat ik de nodige tijd in het ontwerp heb gestoken (en ben nog niet klaar). Ik zou dus een kleine marge op de print voor het werk aan de adServo en het straks opsturen. Daarom kom ik dus bij de prijs van het printje. Wat zouden jullie vinden voor €2,50 voor het printje? Vinden jullie dit een prijs waarvoor je het een interessant vindt? Of zou dat een afketser zijn? Toegegeven, de kosten voor de productie zijn dus lager maar ik denk dat voor die prijs de print nog steeds aantrekkelijk is.
Kitjes
Ik heb in de eerste post al geroepen dat ik ze misschien ook wel als kit zou willen leveren. Zouden mensen interesse hebben ik een complete kit? En moet hier dan ook een APM in zitten? Hierboven heb ik al wat prijzen genoemd voor het bordje en de componenten. Hierna had ik zelf een prijs van €7,50 in gedachten voor een adServo met alle componenten voor analoog+DCC. Ik geef hiermee gelijk weer toe dat hier een marge op zit maar ik zal er niet rijk van worden. Zeker omdat ik er dan wel werk aan heb om uit te sorteren enz.
Update v2
Na het aandringen ;) van Henk [Monobrachius] ben ik toch de print gaan herzien. v2 ondersteund nu tot 8 servo's direct op de print. Dit gaat in dat geval wel ten koste van de analoge inputs voor drukknoppen.
Tijdens het aanpassen heb ik niets afgedaan aan mijn originele eisen, deze gelden nog steeds. Op de v1 had ik alleen de mogelijkheid ingebouwd om te kunnen kiezen of je de drukknoppen wilde aansluiten via screw terminals of (per wissel) met een 3-polige header. Ik heb de mogelijkheid voor 3-polige header laten varen. Hierdoor is het niet nodig om GND op de middelste pin te hebben. Hier is nu, zoals een servo verwacht, 5v voor in de plaats gekomen. Omdat de servo op de derde pin nu wel GND verwacht (maar origineel met een IO poort verbonden zit) is er een jumper pad gekomen. Hiermee kan er een GND voor de servo gecreëerd worden. 8)
(https://images.beneluxspoor.net/bnls/adservo_schema_v2.png) (https://images.beneluxspoor.net/bnls/adservo_schema_v2.png)
Zo ziet dan het schema van v2 eruit. De vier jumpers zijn dus om de GND voor de extra servo's te maken.
Dat was het makkelijke werk ;D Toen kwam het aanpassen van het bord zelf
(https://images.beneluxspoor.net/bnls/adservo_board_v2.png) (https://images.beneluxspoor.net/bnls/adservo_board_v2.png)
Door een druppeltje tin op de pads (aangegeven bij S6 t/m S8) is het mogelijk een servo aan te sluiten.
Buiten dat zijn er nog wat meer aanpassingen geweest
- LM7805 is gedraaid, zo past eventueel koeling
- C4 toegevoegd, dit geeft de mogelijkheid om een extra condensator in de voedingslijn op te nemen
- Meer tekst en aanwijzingen op silkscreen aangebracht, ook op de achterkant (niet zichtbaar hier)
- Alle tekst leesbaar geplaatst (hoop ik dan)
- Gaten voor de header verkleind, dit zou ook makkelijk moeten passen. Zo hebben de headers iets meer snug-fit en blijft er meer soldeereiland over om te solderen = makkelijker
- Voor de oplettende
lezer kijker, 6N136 aangepast in 6N137. Dit was al het doel om te gebruiken (ook al is de 6N136 ook geschikt) maar was er per ongeluk ingeslopen[/li
Timo
-
Timo,
Volgens mij zijn de prijzen inclusief de marges, die je noemt, meer dan redelijk.
Als ik zie wat je er voor krijgt dan hoef ik daar niet lang over na te denken.
Elk ander alternatief op de markt is minimaal een factor drie duurder.
Groeten,
Pieter
-
Mensen moeten de Arduino ook nog kunnen flashen.. Dus neem aan dat die optie ook moet worden aangeboden
-
Timo,
Prijsstelling is prima. Uiteraard neem je een marge, er zijn ook onverwachte kosten etc.
Groet,
Tjalling
-
Voor die prijs wil ik graag een paar printjes. Mooi project.
Gr. Frits
-
Bedankt voor alle reacties en interesse! :D
Auke heeft inderdaad gelijk, de Arduino moet nog geflasht worden. Dit kan je doen met een FTDI breakout bordje (http://arduino.cc/en/Guide/ArduinoProMini) (heb ik op dit moment niet liggen en zal ik nu ook niet zo snel kopen door de f*up van vorige week van FTDI) of door hem aan een Uno te hangen (http://www.instructables.com/id/Arduino-Examples-2-Use-an-Arduino-as-a-FTDI-Progr/). Zelf nog een PL2303HX adapter liggen, daarmee moet het ook gaan (zolang het maar serial is). Alleen eens kijken of ik daar ook een DTR lijn op kan maken zodat ik ze niet handmatig moet resetten...
Met de beta test kan iedereen beter zelf de decoder programmeren omdat er waarschijnlijk genoeg versies uit komen... Als er een beetje stable versie is dan wil ik als service wel wat Arduio Pro Mini's flashen.
Zal de beginpost ook ff aanpassen. 8)
Timo
-
Hey Timo, wat is er met FTDI? ???
Ik heb zelf zo'n board (http://www.ebay.com/itm/FT232RL-FTDI-3-3V-5-5V-USB-to-TTL-Serial-Adapter-Module-for-Arduino-Mini-Port-/121351210789?pt=LH_DefaultDomain_0&hash=item1c41188725) en dat werkt prima. Voor $3,- kan je naar hartelust de Arduino Pro Mega via de IDE programmeren.
-
Ftdi heeft een driver uit gebracht die de namaak chips bricked.. Mij al bij een overkomen, maar ook weer gefixed :)
-
FTDI zit midden in FTDI gate (http://hackaday.com/2014/10/24/ftdi-screws-up-backs-down/) (klik (http://tweakers.net/nieuws/99209/driver-update-maakt-namaakchips-voor-usb-naar-seriele-poort-onbruikbaar.html), klik (http://www.eevblog.com/forum/reviews/ftdi-driver-kills-fake-ftdi-ft232) of voor het echte doorzagen (http://www.eevblog.com/2014/10/27/eevblog-676-rant-ftdi-bricking-counterfeit-chips/)).
En als je voor $3,- dollar zo'n bordje hebt gekocht kan je er donder op zeggen dat er een neppe op zit. Je mag dan wel goed opletten dat Windows niet binnenkort je driver update. De driver die brickt is er dan nu wel uit (iig uit Windows Update) maar naar alle waarschijnlijkheid pusht FTDI komende week een driver waarmee je ook niet met neppe chips kunt werken. Hij is dan niet gebrickt maar werken onder Windows doet hij dan niet meer (tot je terug gaat naar de oude driver).
Timo
-
:o :o :o
Bedankt voor de waarschuwing. Ik heb zeker weten niet de originele FTDI chip!
-
Yeayyy, vandaag Arduino Pro Mini's binnen gekregen ;D Binnen 1,5 week dus dat ging lekker snel :) Kon het niet laten om hem gelijk op een (papier) print te leggen om te kijken.
(https://images.beneluxspoor.net/bnls/IMG_20141029_185734_crop.jpg) (https://images.beneluxspoor.net/bnls/IMG_20141029_185734_crop.jpg)
Snelle foto met me telefoon van de Arduino op de print. Wat is het schattig! ;D
Zijn er nog opmerkingen over de print? Zo niet zal ik het morgen eens "panalizen" en dan ga ik denk morgen de bestelling bij iTead plaatsen. Eens kijken hoe snel die printen dan hier zijn. Vanavond eens me werkplaats opruimen en misschien dat er vanavond al een servo kan bewegen :)
Timo
-
Ik zie dat je op de print diverse silkscreen-teksten hebt geplaatst. ITead heeft nog wel eens de neiging om deze teksten groter te maken, waardoor ze niet meer op de plaats staan waar jij ze wil hebben ;)
-
klopt het dat rx en tx in gebruik zijn voor I/O?
de arduino kan problemen hebben met programmeren als rx en tx verbonden zijn.. ook is het misschien leuk om rx en tx nog te kunnen gebruiken voor uitbreiding (wifi module via uart bijvoorbeeld)
-
@Servé, bedankt voor de heads up. We zullen het zien. Ik heb me als het goed is aan de iTead eisen gehouden voor silkscreen. Geen tekst is kleiner dan de minmale 32mils, alles 40mils of groter. Denk dat ik de lijnen nog wel een beetje aanpas ook al zijn die nu ook allemaal groter dan de minimale 8mils.
@Auke, RX en TX zijn idd in gebruik voor IO. Ik verwacht alleen geen problemen hiermee, eerder gemakken. Waarom? In analog mode zweven ze gewoon want ze lopen dan naar de drukknoppen en die zijn dan (hoogst waarschijnlijk) niet ingedrukt met programmeren. En ook al zijn ze dat wel verwacht ik geen probleem omdat er nog 100k tussen zit.
Met een servo is het iets anders, dat durf ik zo niet te zeggen maar verwacht ook geen probleem. Heb je de weerstanden erop dan zitten die er nog tussen met RX dan via 100k aan GND en TX via 100k aan de servo ingang. Laat je R3 zitten en vervang je R2 door een draadbrug zal misschien nog de lastigste zijn. RX is dan wel volledig vrij maar TX hangt dan direct aan de servo ingang. Maar ik verwacht eignelijk dat deze het signaal niet erg belast. Dit zal ik eens testen.
Maar goed, dit is misschien een probleem met testen maar op de baan denk ik niet. Het is een stuk makkelijker om de Arduino er even af te halen en bij de computer te programmeren dan met je laptop onder de baan ;D En zo wel, trek je S6 er even af (en moet je er zeker van zijn dat de voedingsspanning uit staat).
Goed, even snel opruimen en dan testen!
Timo
-
Timo, (y)
Ik vind het mooi geworden. :)
Tx en Rx gebruiken om bijvoorbeeld een bluetooth module op aan te sluiten, zou misschien gaaf zijn, maar op dit moment zou ik het nu ook nog niet weten wat het nut ervan is (voor mij, behalve misschien voor het aansturen van een robot).
Heb je V2 besteld?
Ik zit te denken aan een printje of 4-6.
heb ik toch geen spijt dat ik 8 maanden geleden 10 pro mini's heb gekocht onder het mom: voor dat geld!?! Het komt nog wel eens van pas.
Groeten,
Henk
p.s. je hebt twee servos die S6 genoemd worden en volgens mij moet in je wire diagram D2 worden omgedraaid. ;) Kan mij overigens aan m'n .... roesten.
-
Dank je Henk!! Even aangepast. S6 was door wat copy past werk. Nu netjes de missende S5 toegevoegd :) En de led :-X Even omgedraaid, klopt de silkscreen ook weer met hoe de led er op moet. Morgen zal ik even het bordje panalizen en dan gaat hij de deur uit :)
Wat betreft RX/TX (had ik nog in me volgende post willen zetten), je kunt ze dus juist makkelijk gebruiken omdat ze dus op de pinnen van S5 (rechter S6 :p) aanwezig zijn.
Net even getest, ik kan de Arduino Pro Mini programmeren. Je had groot gelijk om er zoveel in te kopen ;D
Aangezien de PL2303 breakout die ik heb geen DTR heeft moet ik zelf de reset ingedrukt houden voor programmeren. Dit was al snel vervelend. Gelukkig zit dit wel op de chip. Soldeerbout uit de kast gehaald en half uurtje later is er ook een DTR pin ;D Maar wat zijn die pinnetjes klein, laat staan 0,1mm lakdraad ::) Maar goed, zit erop, daarna nieuw krimpkousje erom gedaan en gaan. En yep, dat werkt nu mooi.
(https://images.beneluxspoor.net/bnls/IMG_20141029_214216.jpg) (https://images.beneluxspoor.net/bnls/IMG_20141029_214216.jpg)
Als je goed kijkt zie je net het stukje lakdraad lopen :-X
Timo
-
heerlijk hardware aan het hacken ;D (y)
-
@Timo,
Je hebt een PB.
Grzz, Hans
-
De printen zijn besteld! Iets vertraging door wat onverwachte zaken dit weekend. Ook vond mijn PC het samenvoegen van drie printplaten ook wat zwaar. Is ook al een oud beestje. Eens kijken hoe snel iTead ze gaat leveren.
Aan de andere kant ben ik al wel bezig geweest met code voor het analoge deel. Helaas heb ik toch dat kleine draadje weer gebroken (^%$%%^$) en moet ik hem zelf in reset houden met proggen... Ow well, fix ik nog wel weer. Eerst eens even de analoge code afmaken en misschien al stiekem spelen met de digitale code ;D Heb namelijk het pakketje met opto's binnen. Gelijk al een op me broodplankje gedrukt maar nog niet de code geschoten/MRdirect opgestart. Zal de code van Rudy en MynaBay toch echt eerst verder moeten uitpluizen. En wegens me achtergrond wil ik wel iets meer van de lib weten dan welke functies er zijn.
Dus tot zo ver :)
Timo
-
Volgens mij ben je goed bezig. Kijk uit naar de eerste spulletjes.
Heb in ieder geval heel wat hulptroepen verzameld. :)
Grzz, Hans
-
Aan de andere kant ben ik al wel bezig geweest met code voor het analoge deel. Helaas heb ik toch dat kleine draadje weer gebroken (^%$%%^$) en moet ik hem zelf in reset houden met proggen...
Anders een Uno of Mega gebruiken voor programeren.
Ik heb zelf twee USB-serial adapters, maar ik krijg ze niet lekker aan de praat (zelf ook de reset button doorgelust).
Met een Uno heb ik minder hoofdpijn. :)
Henk
-
Ben op dit moment Uno/Mega-loos ::) Maar gaat opzich prima met de dongle, alleen het draadje weer even fixen. Makkelijke van de APM vind ik dat hij in zijn geheel op een breadboardje past.
Timo
-
De nano is daar ook leuk voor
-
wel leuk, maar past niet qua pin bezetting op het printontwerp van Timo :-[
-
Dat klopt, ik bedoelde voor op zijn broodbord :P
-
Het is even wat stil geweest. Dit kwam vooral doordat ik aan het wachten was op onze Chinese vrienden. Ik kreeg al snel het bericht dat de printen in productie waren. Ook volgde het bericht dat ze op de post waren al snel. Maar helaas duurde de post echt super lang. Hongkong post is altijd een loterij hoe snel het gaat. Andere dingen die ik later besteld had heb ik al weer een geruime tijd maar de printplaten deden er erg lang over. Maar goed nieuws! De eerste batch met printplaten is aangekomen! ;D Het slechte nieuws, ik ben zelf niet thuis... Dat zal je altijd zien. Woensdag ben ik waarschijnlijk weer thuis en kan ik ze bekijken en zal ik ze jullie gelijk ook tonen! Hopelijk kan ik dan ook de eerste (beta) sketch tonen om de adServo analoog te gebruiken.
Ben nog beetje aan het twijvelen waar ik de snelheid van de servo ga afhandelen. En zo ook hoe ik de stand van de servo ga afhandelen. Alle wissels in een stand leggen of dat ik de eerste servo beweging snel maak (omdat ik nog niet weet vanaf waar ik hem regel).... Eerste is natuurlijk wel het makkelijkste met polarisatie... Keuzes keuzes keuzes :p
Timo
-
@Timo,
Ik wacht met belangstelling je 'uitvinderswerk' af.
Grzz, Hans
-
Hoi Allemaal,
Sorry dat het geen woensdag werd. Ben pas vandaag weer thuis gekomen en heb eindelijk de printjes uit kunnen pakken. Dus tada!!! De eerste printen!
(https://images.beneluxspoor.net/bnls/IMG_20141206_152133.jpg) (https://images.beneluxspoor.net/bnls/IMG_20141206_152133.jpg)
Omdat ze per drie aan elkaar zitten moet ik ze zelf nog los maken. Ik was bij de eerste alleen iets te enthousiast ::) Daarbij er eentje onbruikbaar/minder bruikbaar gemaakt. Maar wat zien ze er goed uit! Alle opschriften goed leesbaar.
Gelijk er eentje in elkaar gezet. Gaat heerlijk makkelijk! Zolang je niet zoals ik niet als laatste de regulator er op zet ::)
(https://images.beneluxspoor.net/bnls/IMG_20141206_194054.jpg) (https://images.beneluxspoor.net/bnls/IMG_20141206_194054.jpg)
Okay, ik was vergeten dat ik bijna geen screw terminals meer had dus die zitten er nog niet allemaal op. Voor de rest werkt de print prima! Net even een test programma in gezet en het werkt allemaal zoals verwacht :)
Helaas nog weinig tijd gehad om het programma af te schrijven. Dit zal binnenkort volgen. Dan is hij in ieder geval al analoog te gebruiken en in te stellen.
Als het goed is hebben alle geinteresseerde nu ook bericht :)
Timo
-
Dat ziet er fraai uit... (y)
Max.
-
Okay, ik bekijk de reactie van Max en zie dan gelijk het plaatje. En denk oeps! ::) :-X
Voor testen had ik alleen nog de bovenste aansluitingen voor de schakelaars gebruikt. Maar zie nu pas dat ik de onderste screw terminal verkeerd om er op gesoldeerd heb :-X :-X :-X Nouwja, als ik nieuwe heb dan ook maar omdraaien ;D ;D ;D
@Max, bedankt!
Timo
-
@Timo,
Uh, neu.... Geen bericht...
Grzz, Hans
-
Hoi allemaal,
De eerste printen en kits zijn op de post. Hartelijk dank voor de interesse! Ik ben ook bezig geweest met de schrijven van een handleiding. Ik zal de eerste versie hier morgen neerzetten. Hier staat ook een soldeer handleiding in om makkelijk de verschillende versies in elkaar te zetten. Heb mogelijk ook de eerste versie om analoog de adServo te gebruiken met snelheid en positie instelling. Nog druk in beweging dus ;D
Timo
-
Heb mogelijk ook de eerste versie om analoog de adServo te gebruiken met snelheid en positie instelling.
Wist wel dat het interessant zou worden... 8)
Max.
-
@Timo ,setje is binnen , en is inmiddels deels gesoldeerd ,op wat weerstanden en ic 6N137 na.
Moet het kenmerk (O) van ic naar naar uitsparing afbeelding ic gesoldeerd worden?
Is het rondje (O) pin 1?
wil.
-
Hi Willem,
Het rondje (of een inkeping in de behuizing) geeft altijd pootje nummer 1 aan
Groetjes
Arthur
-
De stip op de IC verkapping geeft inderdaad pin 1 aan. Op de print is alleen een andere methode gebruikt, namelijk een inkeping. Er zijn ook veel IC's die dat hebben en dat geeft ook de bovenkant / pin 1 aan.
Ik ben op dit moment bezig met het netjes maken van de eerste code. Deze hoop ik later vanavond nog online te zetten. Hiermee kan je de adServo al analoog servo's laten aansturen.
Wel wil ik nu al de eerste versie van de handleiding online zetten. Het is eigenlijk nog echt een draft versie (vandaar de v1a van alpha) maar voor de mensen die de adServo hebben ontvangen staat er een soldeerhandleiding in. Dus hier adServo handleiding v1a (https://drive.google.com/file/d/0B0VTMBMOLEBdQUJ5QzNab19ROGs/view?usp=sharing).
Iets lader op de avond, tijd voor de eerste code! Download adServo v2 (https://drive.google.com/file/d/0B0VTMBMOLEBdVTc2SW12SF9TTTQ/view?usp=sharing)
v1 is alleen voor mezelf geweest en stelde nog niets voor ;D Ik heb geprobeerd de code compact en leesbaar te houden. In deze versie kun je vier servo's aansluiten (S1 t/m S4) en deze aansturen met de knoppen (alleen analoog dus). De knoppen zijn netjes debounced. Ook zijn een snelheid en posities in te stellen maar alleen nog via de code. Volgende stap is om deze on the fly in te kunnen gaan stellen en weg te schrijven in EEPROM. Wel wordt een servo ontkoppelt na het bereiken van de eindpositie zodat deze niet blijft brommen.
Om code te gebruiken pak de zip uit in je Sketchbook van Arduino, inclusief de libraries. Deze komen dan beschikbaar in Arduino. (Herstart nodig!)
Timo
-
Hoi Timo, printjes zijn binnen. Ze zien er echt super professioneel uit. Eens kijken of ik volgende week kan beginnen. Kleine tip bij het versturen van de printjes. Gebruik een stevigere enveloppe of extra papiertje er om heen. De enveloppe was door de scherpe kanten van de printjes gescheurd. Gelukkig zaten ze er nog allemaal in. Nogmaals bedankt voor de snelle verzending en de inspanningen die je verricht!
Gr. Frits
-
Hallo Timo en nabouwers, Ik zit net de print en het schema te bekijken. In het schema staat voor de optocoupler 6N136 en op de print 6N137. Een 6N137 gaat volgens mij niet werken omdat bij dit type pootje 7 hoog moet zijn dmv een 10K weerstand. Daar is op de print niet in voorzien. Een 6N136 kan volgens mij wel gewoon toegepast worden. Is overigens alleen van belang als je de decoder met DCC wil aansturen.
-
Hoi Frits,
Mooi dat de printjes binnen zijn! :D Wow, hebben ze aardig met de enveloppen gegooid. Als ik er (na de beta) meer op de post ga doen wil ik ze in plastic zakjes op de bus doen. Kan ik ook makkelijker kitjes maken. Maar zal voor nu de rand van de envelop voorzien van plakband.
Wat betreft de optocoupler, deze is al vrij snel in het proces vervangen voor de 1N137, deze is makkelijker te krijgen. Alleen was hij per ongeluk in het schema blijven staan als 1N136 maar had ik al onder het schema gezet toen. Volgens de truth tabel in de datasheet van de 1N137 (https://www.fairchildsemi.com/datasheets/6N/6N137.pdf) mag pin 7 (enable) not connected gelaten worden en dan is de uitgang gewoon enabled. Zou dus gewoon moeten werken zonder pull up. Ook in de OpenDCC decoder (http://www.opendcc.de/elektronik/HW2/platine_v201_schaltung.jpg) staat de 1N137 gemeld en hier zit ook geen pull up. En gelukkig, nu ik verder scroll in de datasheet:
Enable Input – No pull up resistor required as the device has an internal pull up resistor.
Dus ik verwacht geen problemen 8)
Timo
-
Ik zag gisteren toen ik het hele draadje door nam dat je inderdaad schreef dat je de 136 door een 137 ging vervangen. Ik heb hier toevallig voor een ander projectje een 137 op het breadboard staan met externe pull up. Die zal ik er eens uit trekken en hier melden of het gewoon blijft werken. Als in de datasheet staat dat er een interne pullup in zit zal dat vast wel zo zijn en verwacht ik geen problemen.
Nog even over de enveloppe: PostNL had de beschadigde enveloppe in een plastic zak gedaan met een excuusbriefje erbij voor de beschadiging, die in het automatische verwerkingsproces ontstaan zou zijn. Gezien de scheur in de enveloppe (in het midden) is een plakbandje op de hoeken niet voldoende maar eenvoudig een A4-tje opgevouwen om de printjes in de enveloppe zou voldoende zijn, of bubbeltjes enveloppen gebruiken. Die zijn wel iets duurder maar die koop je op ebay.com ook voor 25 cent per stuk.....
Update: 6N137 werkt zonder pullup aan pootje 7. Ik heb niets gezegd....... :-X
-
Update: 6N137 werkt zonder pullup aan pootje 7. Ik heb niets gezegd....... :-X
Gelukkig heb ik de datasheet goed gelezen ;D
Mm, gaan ze er wel ruw mee om. Nouwja, voor de volgende batch wil ik dat wel gaan doen. Maar voor nu nog niet. Duurt dan weer zo lang voor ik ze aan jullie kan sturen. En ja, jullie zijn nog de beta tester 8) Maar ik zal de volgende keer wat extra papier om de printen doen. (y)
Timo
-
@Timo, kan jij nog een advies geven m.b.t. een Arduino Compatible FTDI Basic Breakout Board (3.3/5V) unit.
Ik heb er een aantal gezien maar gezien de discussie in dit draadje hierover zie ik graag een advies.
Wil.
-
Zelf heb ik er een op basis van de Prolific PL2303 (http://www.ebay.nl/itm/USB-To-RS232-TTL-PL2303-Auto-Converter-Module-Converter-Adapter-4Pin-Cable-M20-/300935559844?pt=LH_DefaultDomain_0&hash=item4611283aa4). Werkt prima maar laat zich niet installeren onder Windows 8. Ik zit (en blijf ook nog wel even) op Windows 7 dus voor mij geen probleem. Verder ken ik zo nog de Silicon Labs CP2102 (http://www.ebay.nl/itm/1PCS-NEW-CP2102-USB-2-0-to-UART-TTL-6PIN-Module-Serial-Converter-M23-/121330377821?pt=LH_DefaultDomain_0&hash=item1c3fdaa45d) en de WCH CH340G (http://www.ebay.nl/itm/USB-To-RS232-TTL-CH340G-Converter-Module-Adapter-STC-replace-Pl2303-CP2102-M71-/291297583731?pt=LH_DefaultDomain_0&hash=item43d2b06273). Met beide geen ervaring maar de laatste heeft nu een enorme opmars binnen de hobby markt als prima en goedkope vervanger van de FTDI. Gemaakt door een kleine onbekende fabrikant maar werkt schijnbaar ook prima onder Windows 8.
Nadeel van de PL2303 en de CH340G in de links is dat ze geen RTS of DTR pin hebben om de Arduino een reset te geven. De CP2102 heeft deze wel. Maar zowel op de PL2303 en de CH340G is deze er wel aan te solderen, wel priegel werk. Heb ik dus gedaan maar schijnbaar niet zo goed, want zit nu weer los ::) Zonder die pin kan je wel gewoon de Arduino programmeren maar moet je zelf de Arduino resetten en uit reset laten komen als de Arduino IDE wil uploaden.
Timo
-
Ik gebruik onderstaande 2303 clone van Ebay. Werkt ook prima. Deze heeft standaard de DTR pin zodat een handmatige reset niet nodig is.
(https://images.beneluxspoor.net/bnls/2014_12_14_225421.jpg) (https://images.beneluxspoor.net/bnls/2014_12_14_225421.jpg)
-
Weer een update van mijn kant. :D
Ik heb gemerkt dat er een beetje onduidelijkheid is ontstaan. Op dit moment zit de adServo nog in de beta/testfase. Dat betekend dat je, zodra je een kit in elkaar soldeert, niet gelijk een kant en klare oplossing hebt. Dit is wel mijn doel maar daar ben ik gewoon nog niet. Ik heb de eerste printen vooral aangeboden zodat er meer mensen mee kunnen testen, iets dat nodig is om alles netjes glad te strijken. Op dit moment heb je alleen nog wel wat meer technische kennis nodig om de boel aan de praat te krijgen. Zo heb ik niet een Arduino voor iedereen en dient men deze zelf nog te programmeren (met een USB-TTL converter of een Arduino Uno). Ook in het laatste zit nog een groot deel van de beta, de code is nog niet af! Dit gaat in stapjes, de volgende versie (v3) zal voor de analoge aansturing al grotendeels af zijn maar het digitale deel moet nog.
Ik doe dit als hobby en verdien er niets mee. Omdat ik denk dat er meer mensen interesse kunnen hebben in de adServo wil ik het niet voor mezelf houden en jullie (iedereen op Beneluxspoor) vanaf het begin betrekken in de ontwikkeling van de adServo. Ook kan iedereen zo aangeven wat hij zou willen (hele reden dat er van de hardware al een versie 2 is gemaakt). En door het open design kan iedereen die daar de kennis voor heeft (en hier dus hobby in ziet) de adServo naar wens aanpassen. Maar ik snap dat dit niet voor iedereen is weggelegd en niet even de code uit zijn mouw schudt. Daarom ben ik voor die mensen bezig om mijn werk uit te brengen samen met duidelijke documentatie (jullie feedback is welkom).
Verwacht je dus een compleet product moet ik je dus helaas nog teleur stellen, dan ben je iets te vroeg. Ik ben druk bezig maar je zult dan nog even geduld moeten hebben. Als de code zover af is dat het voor iedereen bruikbaar is zal ik ook geprogrammeerde Arduino's in de kits leveren. Vanaf dan is het echt een kwestie van solderen en gaan. Ben je daar dus in geïnteresseerd blijf dan vooral dit draadje volgen! Heb je nog vragen, opmerkingen of verzoeken hoor ik daar graag van!
Ik hoop het voor iedereen nu duidelijk gemaakt te hebben zodat ik met hulp van jullie een leuk product (klinkt zo commercieel :-X) kan maken voor jullie (en mezelf ;D ).
@Frits, helaas heeft mijn PL2303 niet zoveel break out pinnen. Maarja, draadje maar weer eens fixen. Tot nu toe netjes zelf de resetknop ingedrukt.
Ik heb ook per ongeluk de voltage regulator op één Arduino laten doorbranden. Hoe dat gebeurd is weet ik ook niet zo. Spanning stond wel iets hoger dan
eerst (mss 14v) maar zou zeggen dat het moet kunnen. De regulator op de Arduino zou tot 20V mogen hebben. Ook is er nog 1,5V drop over de diodes. Nouwja, we houden het maar weer op 8v :)
Okay, kop koffie erbij en eens kijken of ik de code voor het instellen van de eindposities kan maken. ;D
Timo
PS Zal vandaag de tweede batch op de post doen :)
-
De Arduino Pro Mini kan max 12V hebben.......... :o
-
Ja, maar ik enzo niet waarom. Afgezien van de condensatoren lijkt er niets op te zien dat het limiteert tot 12v. De regulator zou tot 20v mogen hebben. Condensator eigenlijk naar tot 10v ::) Maar dat zou geen reden moeten zijn om de magic smoke uit de regulator te laten ontsnappen.
Timo
-
is het je Uno of Pro mini die gesneuveld is? Je kan ook gewoon domme pech hebben.....
-
Wat gebruikte je als voeding? Een slechte voeding van nominaal 12V kan in praktijk best "pieken" op 20V. Daar zie je met een Voltmeter niet zoveel van, maar je componenten merken het wel degelijk...
-
Nee, de ATmega is nog heel, was echt de regulator. Deze eraf gehaald en vervangen door een simpele 78l05 en ding doet het weer prima. De voeding die ik gebruik is me labvoeding dus de afwijking zal niet zo groot zijn. ;D Weet niet precies waar ik hem naar draaide maar aangezien hij maar tot 18v gaat en ik hem echt niet vol uit had staan gok ik dus een volt of 14.
Timo
-
Voor de geïnteresseerde een filmpje van de adServo (https://www.youtube.com/watch?v=u6f87Ro-fpU). Hier zit er één servo aan (op S2) en 4 knopjes op een breadboard voor het aansturen. Eerst stuur ik de servo gewoon aan. Daarna hou ik de Prog-knop ingedrukt waarna de servo naar het midden loopt en kan ik de eerste servo positie afstellen met de twee toetsen die bij de servo horen. (Dit kan natuurlijk ook met de andere positie.) Door daarna weer de prog-mode knop in te drukken wordt deze opstelling opgeslagen en kan je de servo nu naar de nieuwe positie laten gaan. Dit wordt natuurlijk in EEPROM opgeslagen zodat dit ook na het uitschakelen van de adServo gewoon onthouden blijft.
Alleen nog even de snelheid afstellen maken en dan is de volgende versie klaar. Deze zal ik binnenkort vrijgeven samen met een nieuwe versie van de handleiding (waarin ik dit proces ook uitleg).
De volgende lading kitjes en printen is ook op de post. Wil jij ook een kit, laat het me weten. Bedenk wel dat het project nog in testfase zit. Als je nu instapt verwacht is dus dat je ook wat wilt testen. Anders zal je nog even moeten wachten. Ook zullen de volgende kits even moeten wachten tot ik weer screw terminals binnen heb. ::)
Timo
-
Schitterend - misschien dat ik m'n 5 wissels toch maar met servo's moet gaan uitvoeren... (y)
Max.
-
Ziet er echt al goed uit!
-
Okay, de code moet ik nog afmaken maar vandaag veel tijd gestoken in de handleiding. Ik ben het voor vandaag wel weer zat dus hierbij adServo handleiding versie 1b (https://drive.google.com/file/d/0B0VTMBMOLEBdRHVya0lLM04taVE/view?usp=sharing).
Timo
-
Dag Timo,
Nu pas je draadje eens helemaal door gelezen. Interessant project.
Als je toch nog in je code aan de gang gaat, heb ik nog een opmerking ter verbetering:
In adServo2.ino staat:
for(byte i = 0; i < NrButtons; i++){
pinMode(ButtonMap[i], INPUT_PULLUP);
digitalWrite(i, HIGH);
buttons[i].attach(ButtonMap[i]);
}
In regel 3 wil je kennelijk de pull-up weerstand van de pin aanzetten met: digitalWrite(i, HIGH)
Dat heeft de code in de regel daarvoor al voor je gedaan. Dus m.i. kun je deze regel (3) weglaten.
Iets soortgelijks komt ook voor een paar regels lager bij de ProgramPin.
m.vr.gr. Cees Baarda
-
pinMode(ButtonMap, INPUT_PULLUP);
//Hier wordt pin (ButtonMap als input gezet met een pull up weerstand
digitalWrite(i, HIGH);
// hier wordt uitgangpin i hoog gemaakt.
Ik ben een beginner maar volgens mij zijn het verschillende opdrachten. Eerst een ingang van een Pullup voorzien en daarna een uitgang hoog maken.
gr. Frits
-
Dag Frits,
een pin van de Arduino kan alleen een ingang of een uitgang zijn.
Als je begint met: pinMode(pin, OUTPUT);
dan kun je de toestand van de pin veranderen.
Als je begonnen bent met: pinMode(pin, INPUT);
Dan kun je de pin niet als uitgang gebruiken.
Wel kun je dan de pull-up weerstand aanzetten door: digitalWrite(pin, HIGH); als volgende regel te zetten.
Al enige tijd kun je in de Ardiuno-omgeving nu volstaan met: pinMode(pin, INPUT_PULLUP);
Op http://arduino.cc/en/Reference/PinMode (http://arduino.cc/en/Reference/PinMode) vind je de uitleg over het gebruik van pinmode.
m.vr.gr. Cees
-
Dank
-
@Cees, je hebt helemaal gelijk maar heb ik als een soort backward compatibility erin laten staan. pinMode(ButtonMap, INPUT_PULLUP) wordt pas net ondersteund. Maar je hebt gelijk, oude versie zou hier toch een error op geven dus kan ik het wel gewoon bij de nieuwe versie houden en de digitalWrite() weghalen.
@Frits, ik vond het eerst ook raar om te lezen. Maar als een pin input is zal een digitalWrite() de pullup aan of uit zetten. Beetje misbruik maken van dezelfde functie door de Arduino IDE. Later is er ook de pinMode(pin, INPUT_PULLUP) aan toegevoegd. Toch blijft de digitalWrite() nog steeds handig omdat je nu leuke dingen met de pullup kunt doen on the fly. Maar zoals ik aan gaf kan hij er voor nu inderdaad uit :)
Maar iedereen weer bedankt voor de reacties!
Timo
-
Beste allemaal!
Om maar gelijk met de deur in huis te vallen, firmware v3 is af! Hiermee is volledige analoge aansturing mogelijk. Dus wissel omzetten, eindposities instellen en de snelheid afregelen per servo. Dit alles natuurlijk zonder computer.
Download: Firmware adServo v3 (https://drive.google.com/file/d/0B0VTMBMOLEBdUFB1dTA5dWFWRk0/view?usp=sharing)
Download: Handleiding adServo v1b (https://drive.google.com/file/d/0B0VTMBMOLEBdRHVya0lLM04taVE/view?usp=sharing) (zelfde als laatste publicatie)
Volgende is nu, DCC uitpluizen! Eens kijken of ik hier vanavond al mee aan de slag kan :)
Dan vraag van mijn kant, zijn er al mensen die de adServo in elkaar hebben zitten? Was de handleiding hierbij nog nuttig?
Timo
-
In mijn uitzoekwerk naar de DCC library dacht ik, ik gooi de DCC monitor sketch er eens in. Mooi kant en klaar enzo. Wel bedacht voor de Uno maar zover ik weet is er aan de mini niets anders. Ook heb ik de opto aan dezelfde pin. Dus sketch erin en in krijg netjes output op de monitor. Mooi dacht ik. Dus ik slinger de MRdirect bak aan en trek een kabel van de booster naar de adServo. Maar helaas, enige output in de monitor blijft uit :(
Test gedaan met de scope. Digitale signaal staat netjes op de ingang van de adServo. Daarna de uitgang van de opto bekeken, daar lijkt ook niets mis mee op eerste gezicht, netjes tussen 0V en 5V. Maar helaas niets in de monitor.
Snel even simpele sketch geschreven om de interrupt te testen:
const byte Led = 13;
unsigned long lastMillis;
void setup(){
pinMode(Led, OUTPUT);
digitalWrite(Led, HIGH);
delay(1000);
digitalWrite(Led, LOW);
attachInterrupt(0, turnOn, CHANGE);
}
void loop(){
if(millis() - lastMillis > 500){
digitalWrite(Led, LOW);
}
}
void turnOn(){
digitalWrite(Led, HIGH);
lastMillis = millis();
}
En zoals verwacht gaat de LED aan (en blijft aan) als ik nu het DCC signaal er op zet.
Ik ben er dus nog niet achter waarom ik nog niets te zie krijg in de DCC monitor >:( Dit weekend maar weer mee verder.
Timo
-
@Timo,
Zit er veel verschil tussen se Uno en jouw Adservo?
Grzz, Hans
-
Hallo Hans,
Als je even terug gaat naar het begin van dit draadje dan zie je dat de Adservo gebruikt maakt van een Arduino Pro mini. De Pro Mini maakt net als de Uno gebruik van een AT328. Ze hebben beide een kristal van 16Mhz en beide hetzelfde aantal in/uitgangen. Dus qua functies is er geen verschil. Het grote verschil zit in het feit dat de Pro Mini veel kleiner is en geen usb aansluiting heeft. De Pro Mini moet je om die reden programmeren met een usb/serial adapter.
gr. Frits
-
@Frits,
Als er technisch geen wezenlijk verschil is tussen beide varianten, is het des te opmerkelijk dat er toch functionele verschillen lijken te bestaan.
Grzz, Hans
-
Dat klopt. Het verbaast mij, en zo te lezen Timo ook
Wel bedacht voor de Uno maar zover ik weet is er aan de mini niets anders.
, dat de DCC monitor niet probleemloos werkt op de Pro Mini. Ik heb hier de DCC monitor draaien op een Uno maar helaas even niet de mogelijkheid om hem op een Pro Mini te zetten dus ik wacht even af wat de bevindingen van Timo zijn. Maar onverklaarbaar is het wel momenteel.
-
Het verbaast mij inderdaad. Chip en kloksnelheid zijn gelijk. Volgens mij is zelfs de pin mapping gelijk. In ieder geval zit int0 zowel bij de Uno als bij de Pro mini op pin 2. Ik heb helaas even geen Uno liggen (toch maar eens over laten komen uit het verte oosten) om te kijken of het dat wel mee werkt. Ik zal de code van MynaBay eens verder uitpluizen. Ben tot vrijdag bij mijn vriendin dus kan even geen nieuwe code testen. (Mobiele werkbank staat eigenlijk wel op de planning ;D )
Maar niemand heeft dus nog de code getest? Of een adServo in elkaar?
Timo
-
Hallo Timo,
Ik ben op dit moment met een ander project bezig waarbij ik de DCC decoder in test opstelling heb draaien op een Uno met de bedoeling om het uiteindelijk op een Pro Mini te zetten. Zojuist, n.a.v. jouw bevindingen het programma maar even op een Pro Mini gezet en tot mijn verbazing werkt het niet..... ???
-
@Frits,
Dan is er dus iets mis met het programma zelf, of niet?
Het programna van Ruud (RudyB) werkt al wel.
Je zou dat misschien kunnen gebruiken.
Grzz, Hans
-
Volgens mij werkt Ruud ook met een Uno. Met een Uno werken de programma's bij Timo en mij ook. Hetzelfde programma werkt echter niet op de Pro Mini. Ik heb het net snel geprobeerd en het uploaden gaat foutloos maar daarna gebeurt er niets. Misschien heb ik een fout gemaakt bij het aansluiten en dat zal ik van het weekend eens op mijn gemak nakijken. Het zou ook kunnen dat er in de timing iets misgaat. De Uno en PM hebben verschillende bootloaders en wellicht worden de fuses anders geprogrammeerd. Timo heeft er veel meer verstand van dan ik dus ik heb goede hoop dat hij de oorzaak weet te achterhalen en de oplossing met ons wil delen.
-
Mm, dat is raar. Maar ben ik in ieder geval niet de enige. Ik zal de voor eens gaan uitpluizen om te kijken of ik iets kan vinden. Misschien een fout in de PM wire.h of iets in de code. Zoals gezegd is de chip hetzelfde en lopen ze beide op dezelfde klok. Misschien nog eens proberen door gewoon als board de Uno te selecteren ::) Wordt vervolgt dus...
Timo
-
Ik las ergens dat de mini niet op 16 Mhz draait, maar op 8. Als dat zo is, dan is de tijdmeting in us onnauwkeuriger, in stappen van 8 us (ipv 4 voor de UNO). Een tijdmeting op de mini kan er dan 2x8=16 us naast zitten.
In de mynabay DCC-Decoder.ccp code worden op regel 25 de min en max pulslengtes voor een DCC '1' en een '0' gedefinieerd:
#define kONE_Min 52
#define kONE_Max 64
#define kZERO_Min 90
#define kZERO_Max 10000
Misschien is het een test waard om deze te verruimen om de max 16 us fouttolerantie op te vangen. Bijvoorbeeld naar:
#define kONE_Min 40
#define kONE_Max 76
#define kZERO_Min 80
#define kZERO_Max 10000
-
Dag Timo en anderen,
n.a.v. de discussie over niet werken van de DCC-versie:
in het 2e schema/print van de AdServo zie ik geen pull-up weerstand naar pen 7 van de 6N137. In andere schakelingen die DCC decoderen komt die wel voor. Ik heb een hulpschakeling naast mijn Arduino ontwerpsetje gebouwd. Die werkt naar behoren met de library van Mynabay.
Zie het schema:
(https://images.beneluxspoor.net/bnls/Arduino_DCC_input_schema.png) (https://images.beneluxspoor.net/bnls/Arduino_DCC_input_schema.png)
Ik heb ooit ergens gelezen, dat die wel nodig is. Die weerstand is een PullUp voor de basis van de fototransistor. Die zou zo maar eens nodig kunnen zijn om goed gedefinieerde nullen en enen op de uitgang te krijgen.
m.vr.gr. Cees
-
Ik heb het geprobeerd met en zonder weerstand en ook zonder weerstand werkt de optocoupler goed
-
@Rudy De Pro Mini is er in een paar smaken. Eigenlijk de meest gangbare is met de Atmega328 erop, dezelfde als de Uno, en een klok van 16Mhz. Je hebt inderdaad ook 8Mhz versies, dit zijn de 3,3V versies. Op 3,3V kan de Atmega328 namelijk niet meer stabiel lopen op 16Mhz. Maar ik bezit wel degelijk een Pro Mini met Atmega328 op 16Mhz. Dit selecteer ik ook in Arduino en de timing klopt in me huidige programma. (Anders zouden de pulsen naar de servo's ook twee keer zo lang zijn.)
@Cees, dat klopt dat die bij veel getekend wordt. Maar deze is volgens de datasheet intern al aanwezig. Dus als je de pin niet aansluit is deze al hoog. Zolang je de pin niet laag trekt is de opto in ON state en werkt gewoon. En zoals gezegd, er komt ook signaal uit de opto. Frits merkte dit eerder ook al op en heeft dit toen ook zonder problemen getest zonder de pull up weerstand.
@Cees, maak jij gebruik van een Uno of een Pro Mini?
We zoeken dus nog even verder helaas ::)
Timo
-
Dag Timo,
Mijn datasheet - misschien een andere - zegt het volgende:
19. No external pull up is required for a high logic state on the enable input. If the VE pin is not used, tying VE to VCC will result in improved CMR performance.
Ik begrijp hier uit, dat je VE (pen 7) zelfs direct aan Vcc mag hangen, als je deze ingang niet gebruikt. De werking van de schakeling heeft daar wel baat bij. Een zwevende ingang, zoals bij de AdServo, lijkt me niet gewenst, die kan van alles oppikken. Zeker in de rauwe omgeving die modelbaan heet. Ondanks de goed afgelopen tests van anderen zou ik het zekere voor het onzekere nemen en VE met 10k aan VCC hangen.
Er staat ook een intern schema op het datasheet en daarop staat geen interne pullUp-weerstand. De eerste zin betekent m.i. dat je geen pullUp nodig hebt als je die enable-pin daadwerkelijk gebruikt.
Antwoord op Uno of...
Nu heb ik nog alleen een Arduino Uno. Er zijn 10 pro micro's onderweg.
m.vr.gr. Cees
-
... als het niet werkt even de draadjes naar de dcc ingang omwisselen en dan opnieuw proberen....
Vraag niet waarom ik dit weet .....
groet,
Guus
-
@Cees, ik heb de Fairchild datasheet gebruikt. (Volgens mij zijn het ook Fairchild IC's maar kan ik op afstand even niet checken.) In die datasheet staat:
Note 3 - Enable Input – No pull up resistor required as the device has an internal pull up resistor.
Datasheet vermeldt niets over verbeterde CMR als de enable aan Vcc ligt. Maar ik zal het zeker nog even proberen thuis. Ik zal thuis het DCC signaal ook vergelijken met het uitgangssignaal van de opto. Maar gezien het bij Frits (zonder pull-up) prima werkt op een Uno en niet op een Pro Mini verwacht ik de fout ergens anders.
... als het niet werkt even de draadjes naar de dcc ingang omwisselen en dan opnieuw proberen....
Ga ik ook nog proberen. Mocht dit werken moet de code dus wat aangepast worden. Maar ook hier verwacht ik het probleem niet dankzij de test van Frits.
Nu heb ik nog alleen een Arduino Uno. Er zijn 10 pro micro's onderweg.
Micro of Pro Mini? Op de Micro zit wel weer een compleet andere uC.
Net even de boards.txt van de Arduino IDE nageplozen welke fuses geset worden enzo. Enige verschil dat ik kan vinden is dat de Uno de nieuwe (snelle en kleinere) optiboot gebruikt als bootloader en de PM nog de oude Arduino bootloader. Enige wat je daar van terug ziet in de fuses is dat het start adres voor de bootloader bij de Uno hoger ligt (bootloader zit in laatste beetje mem). Dit zijn precies de 1537 bytes die een Uno Sketch groter mag zijn.
Verder maakt de Uno van precies dezelfde MCU en wire gebruik als de Uno. Beide 16Mhz, atmege328p en variant=standard. De gecompilede .hex is voor de Pro Mini en de Uno dus ook exact gelijk. Enige wat ik me dus zo nog even kan bedenken is dat de Fuses af fabriek (China hè :p) niet zo staan zoals de Arduino IDE denkt. Maar zelfs dan verwacht ik geen probleem...
En aangezien de Uno en PM dus echt gelijk zijn ga ik denk ik zelf ook maar de Optiboot bootloader in me PM schieten ;D Gaat het uploaden van de sketch wat sneller.
Timo
-
@Timo,
Ik heb bewondering voor je vasthoudendheid.
Wel een complete abacadabra voor mij on je toelichting.
Wacht met spanning af. Hoop eigenlijk dat het voor de gebruiker net zo eenvoudig is als de set van Ruud.
Grzz, Hans
-
Hoi Hans,
Dat zou uiteindelijk wel moeten. De Pro Mini en de Uno hebben exact dezelfde chip, de Atmega328p. Enige dat verschilt is dat de Pro Mini kleiner is en geen USB chip heeft, deze moet je extern er aan hangen.
Enige wat ik me nu zo nog snel kan bedenken:
- Foutje in de library, misschien toch per ongeluk polariteit gevoelig
- Kristal op de Pro Mini is onnauwkeuriger (gaan we nameten...)
Wat het ook is, ga het oplossen. Dan is het voor de gebruiker gewoon code erin en gaan :)
Timo
-
Hoi Timo, ik hoop echt dat jij het vindt. Ik heb een dccar decoder gebouwd obv een Uno, met de bedoeling die in een PM te laden. Omdat ik er van uitging dat ze in de basis hetzelfde zijn had ik nooit eerder geprobeerd om het programma op de PM te testen. Als het niet gaat werken is mijn project mislukt. Een Uno past nl niet in een 1:87 vrachtwagentje......
Ik denk dat het een timing probleem is. Helaas nog geen tijd gehad om het te controleren.
-
Dag Timo,
een wat late reactie - even geveld door griep -.
mijn datasheet van de 6N137 is van Agilent Technologies, een onderdeel van HP.
De door mij bestelde Arduino's zijn pro mini's. Duidelijk een tikfout van mij of de computer die me te goed hielp met spelling ;-). Ik had vlak voor mijn bericht veel getypt over een ander soort micro. Dat systeem van mij vond na 2 karakters, dat het micro moest worden.
m.vr.gr. Cees
-
Vandaag bij zowel de Uno als de Pro Mini de Fuses en Lockbits uitgelezen. Beide hebben dezelfde instellingen op Fuse "BOOTSZ" na.
De bootsize voor de Uno staat op 256W_3F00 en de Pro Mini op 1024W_3C00.
Volgens mij betekent dit dat de gereserveerde ruimte voor de bootloader bij de Uno 256kB is en bij de ProMini 1024kB. Dat lijkt me trouwens vreemd want ik heb volgens mij ooit eens gelezen dat de bootloader 2k is en de Optiboot 1K. Kan iemand mij dat uitleggen/toelichten?
Ik ga kijken of ik op de Pro Mini dezelfde bootloader kan zetten als op de Uno en dan de DCC Monitor of DCC Decoder uploaden als ware de Pro Mini een Uno.
Wordt vervolgd.
gr. Frits
-
en nu het vervolg.......
na goed nadenken kan ik niet verklaren waarom de Pro Mini het niet zou doen. Hij is echt 100% hetzelfde als de Uno.
Nog maar eens de optocoupler schakeling op de Pro Mini aangesloten en de DCCdecoder software geladen. Intellibox op adres 3, F1 toets gedrukt............en zie......de led op de Pro Mini begint te knipperen. (Dat had ik voor test even zo geprogrammeerd). Het werkt!!
Ik blij, kan ik weer verder gaan met mijn eigen DCC decoder te bouwen voor in de Faller vrachtwagentjes.
Terug on topic. De DCC Decoder software zou dus ook moeten werken i.c.m. de adservo software.
Nog even een tip voor de mensen die de optocoupler schakeling bouwen. Het gebeurde mij dat het signaal van de Intellibox geen goed contact maakte. Dat is eenvoudig te controleren door de diode die antiparallel over de ingang staat te vervangen door een led. Die knippert dan in het ritme van het dcc signaal. En als je zeker wil zijn dat de optocoupler ook goed werkt kan je een led op de uitgang (pin 6) van de optocoupler aansluiten met een weerstandje.
Op pin 7 hoeft echt geen pullup weerstand. De 6N137 heeft een ingeboude pullup weerstand.
@Timo. Zou het kunnen dat de adservo software gebruik maakt van timers die ook door de DCC Decoder software gebruikt worden? Dat zou nl wel een verklaring kunnen zijn dat het bij jou niet werkt op je Pro Mini. Heeft dan dus niets met de Pro Mini te maken. In dat geval werkt het ook niet met de Uno.
-
Hallo
zou het kunnen dat de timing op de mini minder precies is dan op de uno
De mini heeft een keramische oscillator de uno een quarz kristal
http://jorisvr.nl/arduino_frequency.html
dick koning
-
@Dick. Welkom op het forum!
zou het kunnen dat de timing op de mini minder precies is dan op de uno
De mini heeft een keramische oscillator de mini een quarz kristal
1. De Pro Mini heeft net als de Uno een kristal! (althans de China exemplaren die ik heb).
(https://images.beneluxspoor.net/bnls/_57_7.jpg) (https://images.beneluxspoor.net/bnls/_57_7.jpg)
foto Ebay
2. De Pro Mini doet het ook. Zie mijn bovenstaande bericht.
Wat blijkbaar niet werkt, volgens Timo, is de adservo software i.c.m. de DCC Decoder software. Dat is, volgens mij, onafhankelijk van de Uno of Pro Mini.
gr. Frits
-
Frits, mooi dat het werkt! Maar heb jij echt zo'n groot kristal op die dingen zitten? Zo ver ik in kan schatten heeft mijn Pro Mini ook een kristal maar een lief klein SMD dingetje. Het zou kunnen dat deze te grote afwijking heeft, ik zal eens moeten. (Maar moet ik even de clock out fuse zetten en dus een andere Arduino als ISP opzetten...) Wegens ziekte en nu opkomend tentamen heb ik nog niets kunnen gaan meten. Maar het feit dat het bij jou werkt schept weer hoop. Dan zal ik vast ook gewoon wat fout doen ;D
Ik heb overigens nog niets met eigen DCC software gedaan. Enige dat ik tot nu toe heb geprobeerd is de DCC monitor te laden (de kant en klare sketch). adServo maakt wel gebruik van een timer maar dat is gewoon de timer uit de Servo library (timer1). Zo ver ik even door de DCC code ben gelopen maakt dat gebruik van micro() en dat is op basis van timer0.
Volgens mij betekent dit dat de gereserveerde ruimte voor de bootloader bij de Uno 256kB is en bij de ProMini 1024kB. Dat lijkt me trouwens vreemd want ik heb volgens mij ooit eens gelezen dat de bootloader 2k is en de Optiboot 1K. Kan iemand mij dat uitleggen/toelichten?
Ja dat kan ik ;D De orginale bootloader is idd 2k, optiboot is 512 byte. De adressen die jij vond zijn word adressen aka 2 bytes. Voor de optiboot is er dus 256 words beschikbaar = 512 bytes.
Goed, gezien Frits de basis aan de gang heeft verwacht ik voor mij ook geen probleem. Ik zal volgende week er weer mee aan de slag gaan :)
Timo
-
Hallo Timo,
Bedankt voor de uitleg over de bootloadersize.
Op mijn Pro Mini zitten inderdaad ook hele kleine smd kristallen. De foto was de eerste die ik tegenkwam op Ebay en het kan niemand ontgaan dat er een kristal opzit. ;D
Succes met je tentamens! Wat doe je trouwens voor opleiding?
gr. Frits
-
Hoi Frits,
Ah, vandaar. Ja, ik heb ook mini kristallen ;D
Ik studeer Elektrotechniek (of tegenwoordig, Electrical Engineering) aan de Universiteit Twente. Het examen op de planning is Optische Basis Systemen. Ben niet zo'n fan van optica...
Timo
-
Hoi Timo ,eindelijk na 2 maanden de processors binnen ,maar nu.
Gaarne advies hoe krijg ik de software er op met een mac als computer.
wil.
(http://i129.photobucket.com/albums/p225/willem2222/P1170184_zpsw0zp0hwd.jpg) (http://s129.photobucket.com/user/willem2222/media/P1170184_zpsw0zp0hwd.jpg.html)
-
Hallo Wil,
Voordat die vraag te beantwoorden is, is het handig om te weten hoe ver je überhaubt bent met het programmeren van Arduino's via je Mac.
Heb je bijvoorbeeld de IDE al op je Mac staan en er weleens een UNO mee geprogrammeerd? Als je die vraag beantwoord hebt kunnen de mensen op het forum je weer verder helpen. Om een Arduino Pro Mini te programmeren heb je een UNO of een serial to usb converter nodig.
Zie ook deze link: http://arduino.cc/en/Guide/MacOSX (http://arduino.cc/en/Guide/MacOSX)
gr. Frits
-
@Willem, ziet er bekent uit! ;D Bij jou is er iig geen vraag of er een kristal op zit ;D Inderdaad, wat Frits zegt. Het is voor ons wel makkelijk te weten wat je al met een Arduino gedaan hebt. Verder heb je inderdaad een USB-Serial converter of een Arduino Uno (of een andere Arduino met USB).
Verder heb ik net even me trouwe HP54603B aan geslingerd en aan het meten geslagen. Ik wilde dus eens weten of de clock van de Pro Mini misschien erg afwijkt. Om dit te meten heb ik in een andere Arduino Pro Mini de ArduinoISP sketch geladen. Daarna een "nieuw" board aangemaakt in de Arduino IDE maar met de fuse voor clock out gezet (low bit 6). Hierdoor komt de clock op pin 8 (PORTB0) te staan. Probe eraan en gaan. En zover ik kan zien is die klok prima in orde. Gewoon spot on 16Mhz. 8) De timing van de Pro Mini zou dus het probleem niet mogen zijn.
(https://images.beneluxspoor.net/bnls/IMG_20150129_140158.jpg) (https://images.beneluxspoor.net/bnls/IMG_20150129_140158.jpg)
Maar goed, dit brengt me dus nog niet verder. Nu maar eens me MRdirect opstelling checken (spoortje eraan) en toch eens even kijken of het signaal goed aankomt bij de Arduino.
Ondertussen wel extra servo's binnen. En met meer servo's eraan heb ik eerst echt 5 minuten zitten spelen met servo's tegelijk aansturen. Een grote uitslag, een klein, ander weer snel enz ;D Is op zich al leuk speelgoed 8)
Timo
-
Fascinerend altijd die bewegende servo armpjes........;):D
-
@Frits, Ben nieuw in de wereld van Arduino.
Gaarne in stappen advies.
Moet dus een converter kopen nu dit begrijp ik ,maar waar.
Als ik deze heb zal ik mij weer melden,zal hem niet aankopen in het buitenland want dit duurt mij te lang.
Ik hoor nog wel.
wil.
-
hallo
ik heb inmiddels de software van ruud boer voor de servo besturing getest.
Behoudens veel beweging van de servo's bij het opstarten werkt die bij mij zowel op een uno als een pro mini goed.
De software gebruikt de DCC library van mynabay, met de daar beschreven configuratie van de optocoupler
Mijn dcc signaal wordt met eeen multimuis opgewekt.
dick
@timo welke digitale centrale gebruik jij ?
-
@Dick,
Spannend... Want dat de software van Ruud op een Uno werkt, wisten we al.
Als deze ook werkt op een micro is de vraag wat het operationele verschil is tussen de Uno en de Adservo/micro? Onze 'centrale' is overigens het Hornby Railmaster computer programma en de eLink interface.
Grzz,
Hans
-
Hallo Wil,
Als je niet in China wil kopen kan je ook in europa kopen voor weinig.
Bijvoorbeeld deze: USB-To-RS232-TTL (http://www.ebay.nl/itm/USB-To-RS232-TTL-Upgrade-PL2303HX-Auto-Converter-Module-Chip-Adapter-Arduino-/181562066122?pt=UK_Computing_Other_Computing_Networking&hash=item2a45f144ca) of in een nederlandse winkel: hackerstore.nl (http://hackerstore.nl/Artikel/295)
Als je even een paar pagina's terug gaat zie je bij reactie #72 een foto van de usb/232 converter verbonden met een Pro Mini.
Als je zelf ook meer met Arduino wil gaan doen kan je ook een Uno (of Mega) kopen. Deze leent zich iets meer voor experimentele opstellingen dan de Pro Mini. Het grote voordeel is dat deze modellen zelf een usb aansluiting hebben. (Er zijn nog meer modellen met usb, maar ik geef een voorbeeld). Met een Uno (en zijn usb soortgenoten) kan je ook Pro Mini's programmeren. Wat je gaat kopen hangt dus o.a. af van wat je er zelf mee wil gaan doen.
Als je gaat Googlen zul je overigens ook gewone elektronica winkels vinden waar je Arduino artikelen kunt kopen.
Als tip wil ik je nog attenderen op de site, www.arduino.cc. Daar vind je veel informatie.
Succes.
gr. Frits
-
Dick, was de beweging bij het opstarten niet te verminderen door voor het uitschakelen de hoek hetzelfde te maken als de minimum hoek en bij de volgende keer aanschakelen de servo voeding pas aan te zetten enkele seconden nadat de Arduino gestart is? (Heb een reply op je email gestuurd). Bij mij werkt dat meestal.
-
@ruud
dat werkt goed maar de eerste keer dat het programma de "main" loop doorloopt zie je een actieve regeling van de servo naar bij mij 110gr
dat is meer dan de "gebruikelijke jitter"van de servo.
ik momenteel wat te puzzelen hoe ik eea kan traceren in de software
-
Hallo Wil,
Als je niet in China wil kopen kan je ook in europa kopen voor weinig.
Bijvoorbeeld deze: USB-To-RS232-TTL (http://www.ebay.nl/itm/USB-To-RS232-TTL-Upgrade-PL2303HX-Auto-Converter-Module-Chip-Adapter-Arduino-/181562066122?pt=UK_Computing_Other_Computing_Networking&hash=item2a45f144ca) of in een nederlandse winkel: hackerstore.nl (http://hackerstore.nl/Artikel/295)
Als je even een paar pagina's terug gaat zie je bij reactie #72 een foto van de usb/232 converter verbonden met een Pro Mini.
Als je zelf ook meer met Arduino wil gaan doen kan je ook een Uno (of Mega) kopen. Deze leent zich iets meer voor experimentele opstellingen dan de Pro Mini. Het grote voordeel is dat deze modellen zelf een usb aansluiting hebben. (Er zijn nog meer modellen met usb, maar ik geef een voorbeeld). Met een Uno (en zijn usb soortgenoten) kan je ook Pro Mini's programmeren. Wat je gaat kopen hangt dus o.a. af van wat je er zelf mee wil gaan doen.
Als je gaat Googlen zul je overigens ook gewone elektronica winkels vinden waar je Arduino artikelen kunt kopen.
Als tip wil ik je nog attenderen op de site, www.arduino.cc. Daar vind je veel informatie.
Succes.
gr. Frits
Frits ,bedankt voor de info, ga de converter bestellen.
Vind de benadering juist en zal veel anderen die weinig of geen kennis van zaken hebben gebruik gaan maken van Aduino mogelijkheden gaan helpen en toepassen.
-
Wat een reacties opeens allemaal ;D Helaas nog geen tijd gehad verder te gaan met meten maar tentamen gehaald. (Moest KaKu's (https://www.google.nl/search?q=Kaku&ie=utf-8&oe=utf-8&gws_rd=cr&ei=u5LOVJ_fN8n0UKuohJgL#safe=off&q=klik+aan+klik+uit) van me vriending repareren en een Arduino library
in elkaar hacken maken voor een serieel uit te lezen Nunchuk :-X .) Maar nu ik weet dat de timing iig geen noemenswaardige afwijking heeft zoek ik de fout bij mezelf. Dat deze week eens nalopen (baan aansluiten aan MRdirect, uitgang booster meten, ingang opto meten, uitgang opto meten enz enz). Misschien ben ik wel gewoon waardeloos geweest met solderen ;D
Ondertussen wel nog even Optiboot (de bootloader van de Uno) op de Pro Mini gezet. Voor testdoeleinden echt top! Uploaden van sketches kan nu veeel sneller. Ook heeft die bootloader no-wait ingebakken. Bij power on wordt de bootloader overgeslagen en wordt gelijk met de sketch begonnen. Iets waar de oude bootloader (zoals in de mini) 1 a 2 seconde over doet.
@Frits, bedankt voor het aanvullen van de info :)
@Willem, Frits heeft het inderdaad goed, een convertertje nodig. Als de boel iets meer loopt (meer volledige versie van het programma enzo) wil ik voor de Arduino-leken ook geprogrammeerde Ardruino Pro Mini aanbieden maar dat heeft zo in de beta niet veel zin. En, mits de juiste onderdelen, stelt het ook echt niets voor dat programmeren ;D
@Dick, dat de software werkt is natuurlijk niet verwonderlijk als het er voor gemaakt is. Zelf wil ik alleen een uitgebreidere functionaliteit hebben dan dat. Mede ook omdat ik er analoge aansturing in wilde hebben ben ik daarmee begonnen. Dingen als instellingen in EEPROM (vanuit werking te lezen en beschrijven permanent geheugen om instellingen on the fly in te kunnen stellen) en traag bewegen zijn hierdoor al gerealiseerd. Iets dat de software van Rudy niet heeft. De Pro Mini is, afgezien van de afmetingen, gelijk aan de Uno. Ook de opto ingang is eigenlijk gelijk. Net als de Sketch van Rudy wordt de code vna de adServo ook op basis van de MynaBay code. Als centrale gebruik ik MRdirect met een Delta als booster.
@Rudy, als je mee leest, jij hebt wel traag bewegen gerealiseerd maar hiermee heb je de 50 dagen bug in je code geschreven ;) Je moet de vergelijking altijd schrijven als
if(currentMillis - previousMillis > interval) {
Om geen problemen te krijgen met de rollover van de de unsigned int.
@Hans, operationele verschillen bestaan dus eigenlijk niet. Verschil tussen Uno en Pro Mini is het missen van USB en andere vorm.
Bewegen van de servo ligt eigenlijk volledig bij de servo. Als ze power krijgen willen ze nog wel eens beetje bewegen, zeker de analoge servo's. De servo's die ik heb doen dat ook. Als ik ze bijvoorbeeld inplug terwijl de Arduino al een positie uitstuurt is er toch even een kleine beweging. Dit is dus bijna niet op te lossen zonder "goede" servo's te kopen. Maar zolang die opstart spast niet te erg is en de je er in de manier van montage rekening mee houdt moet hier ook wel mee te leven zijn denk ik. Als je in de aandrijfstang een beetje extra speling hebt is het niet zo erg dat een wisseltong wat tegen de railstaaf gedrukt wordt.
Timo
-
Hoi Timo,
Gefeliciteerd met je tentamen. (y)
Hoe heb je de optiboot op de Pro Mini gezet? Het was mij nl niet gelukt om de Pro Mini werkend te krijgen. Ik heb o.a. een AtmelDragon en AtmelStudio dus aan het gereedschap ligt het niet.
gr. Frits
-
Hoi Frits,
Eerst heb ik "arduino-1.0.6\hardware\arduino" naar mij sketchbook gekopieerd ("[]Sketchbook\hardware\arduino"). Daarna boards.txt aangepast. Daarin twee nieuwe boards aangemaakt, een Pro Mini met Optiboot en een Pro Mini met clock out.
# See: http://code.google.com/p/arduino/wiki/Platforms
##############################################################
pro5v328optiboot.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 Optiboot
pro5v328optiboot.upload.protocol=arduino
pro5v328optiboot.upload.maximum_size=32256
pro5v328optiboot.upload.speed=115200
pro5v328optiboot.bootloader.low_fuses=0xff
pro5v328optiboot.bootloader.high_fuses=0xde
pro5v328optiboot.bootloader.extended_fuses=0x05
pro5v328optiboot.bootloader.path=optiboot
pro5v328optiboot.bootloader.file=optiboot_atmega328.hex
pro5v328optiboot.bootloader.unlock_bits=0x3F
pro5v328optiboot.bootloader.lock_bits=0x0F
pro5v328optiboot.build.mcu=atmega328p
pro5v328optiboot.build.f_cpu=16000000L
pro5v328optiboot.build.core=arduino
pro5v328optiboot.build.variant=standard
##############################################################
pro5v328clk.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 w/ CLK-out
pro5v328clk.upload.protocol=arduino
pro5v328clk.upload.maximum_size=30720
pro5v328clk.upload.speed=57600
pro5v328clk.bootloader.low_fuses=0xBF
pro5v328clk.bootloader.high_fuses=0xDA
pro5v328clk.bootloader.extended_fuses=0x05
pro5v328clk.bootloader.path=atmega
pro5v328clk.bootloader.file=ATmegaBOOT_168_atmega328.hex
pro5v328clk.bootloader.unlock_bits=0x3F
pro5v328clk.bootloader.lock_bits=0x0F
pro5v328clk.build.mcu=atmega328p
pro5v328clk.build.f_cpu=16000000L
pro5v328clk.build.core=arduino
pro5v328clk.build.variant=standard
Hierbij is "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 Optiboot" eigenlijk een kopie van de Uno... Is dus puur om het zelf overzichtelijk te houden want je zou dus ook gewoon als board de Uno kunnen gebruiken. "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 w/ CLK-out" heeft gewoon de oude bootloader maar de fuses anders geset om clock out te hebben.
Hierna een andere Pro Mini voorzien van de ArduinoISP sketch maar een andere programmer moet ook werken. Daarna selecteer je onder Tools -> Programmer de juiste programmer en onder Tools -> Board selecteer je "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 Optiboot" (Uno selecteren zou ook moeten werken) om een Pro Mini van Optiboot te voorzien. Daarna Tools -> Burn bootloader.
Misschien is een kopie van de hele hardware\arduino folder beetje te veel maar wist niet of ik vanuit sketchbook ook de bootloaders in de Arduino IDE folder kon aanspreken. Eigenlijk gaat het dus alleen om de map "hardware\arduino\bootloaders" in combinatie met boards.txt.
Timo
-
@Timo/Frits, de converter is binnen,
(http://i129.photobucket.com/albums/p225/willem2222/P1170192_zpscuxkf6az.jpg) (http://s129.photobucket.com/user/willem2222/media/P1170192_zpscuxkf6az.jpg.html)
Nu lees is op deze site , http://hackerstore.nl/Artikel/258 dat ik TX/RX moet wisselen bij het aansluiten.
Zo ook Arduino nu op de mac gezet en krijg een z.g. sketch board.
Ja, wat nu te doen , kan je mij in jip en janneke taal nu de procedure aangeven voor verdere stappen?
wil.
-
Hallo Wil,
Volgens mij heb je e.e.a. bijna aan de praat. Ik heb geen Mac maar ik verwacht daar geen afijkende zaken t.o.v. Windows. Ik begrijp dat je de Arduino IDE al hebt geinstalleerd. Hoog tijd om je Pro Mini (PM) met je adapter aan te sluiten.
Ik zie dat je 6 draadjes tussen je usb converter en de PM hebt zitten. Dat is er één te veel. De CTS aansluiting wordt niet gebruikt. Zie ook mijn foto bij reactie #72. Even uit mijn hoofd:
usb - PM
GND - GND
CTS - nc
VCC - VCC
RX - TX
TX - RX
DTR - GRN
Ik zou overigens eerst de converter op de MAC aansluiten zonder verbinding met de PM. De MAC zal je vragen de driver te installeren. Als je dat gedaan hebt dan moet je even bij apparaatbeheer en poorten kijken welke com poort gebruikt wordt. Weet niet hoe dat moet bij een MAC maar dat weet je zelf waarschijnlijk wel.
Nu sluit je de PM en converter met de 5 draadjes op elkaar aan. USB stekker in de converter en op zowel de converter als de PM moet er een ledje gaan branden als indicatie dat de voedingsspanning aanwezig is. Op de PM moet ook het ledje van poort 13 zien knipperen omdat normaal gesproken het Blink LED programma door de fabrikant geinstalleerd is.
In de Arduino IDE zie je onder het tabblad bestand voorbeelden staan. Kies daar voor bijvoorbeeld Blink LED en klik hier op. Het programma (sketch in Arduino taal) opent zich. Je ziet een kort eenvoudig C-achtig programma. Bij delay staat vermoedelijk 500. Dat betekent dat het ledje 500ms aan is. Verander deze waarde in bijvoorbeel 2000. Zodat het ledje 2sec aan is en dan 500ms uit. Dat is nodig omdat er reeds een Blink programma op de PM staat en anders kan je het verschil niet zien.
Onder in het IDE scherm staat een tekst met iets van: Uno verbonden via COM 6. In het tabblad Extra (of Tools als je de engelse uitvoering gebruikt) kan je de Com poort en het type Arduino kiezen. Kies hier de door jou gebruikte Com poort en Pro Mini, 5V 16MHz.
Klik nu op de uploaden knop en je zal zien dat het Blink LED programma gecompileerd wordt en vervolgens geupload wordt. Tijdens het uploaden gaan de RX en TX ledjes op de converter knipperen. Na afloop start het Blink programma vanzelf met de door jou ingestelde delay tijden.
Succes!!!
Frits
-
Hoi Frits , bedankt voor de supersnelle reactie ,nu aan de slag ,doe de handelingen wel op een XP machine .
Laat het resultaat nog wel weten.
wil.
-
@Frits, nog even een vraag, bij "programmer" staat bij mij AVRISPmkl aangevinkt is dit juist.
Nog de zaak niet aan de praat, alles staat goed maar ik verdenk de z.g. com poort van de mac.
Nieuwe FTDI driver al op de mac gezet maar zie daar geen Aduino port.
Ga als het niet verder lukt op een Windows machine verder.
wil.
-
Ik ben nu niet thuis. Ik zal het vanavond even nakijken.
-
Volgens mij is dit geen FTDI chipset, maar een CP2102 van Silabs, zie ook http://hackerstore.nl/Artikel/258
De relatie met FTDI lijkt mij in deze context alleen maar de functionaliteit als USB-to-Serial naar de Arduino, maar niet voor wat betreft drivers etc.
Ben benieuwd of er ook MAC drivers zijn voor de CP2102...
Succes met testen!
ik volg dit draadje met veel interesse; hoop ooit nog eens ermee aan de slag te gaan maar tijd ontbreekt...
-
@Frits ,goed nieuws ,op mijn XP machine het voorbeeld "blink" gelukt.
TX/RX leds zijn niet aanwezig op de converter denk ik ,ik kan ze niet vinden.
Aduino mini , led veranderd van frequentie ,dit betekend dat hij de upload heeft uitgevoerd.
@Daan , zal op de mac CP2102 drivers zetten en kijken of ik daar het ook aan de praat krijg.
wil.
-
Hallo Wil,
Mooi dat het gelukt is. In principe kan je nu ook de adservo er op zetten.
bij "programmer" staat bij mij AVRISPmkl aangevinkt is dit juist
Voor de meelezers nog even deze vraag beantwoorden. Deze instelling is voor normaal gebruik niet van belang. Maar dat had jij al door. Als je een AT Mega chip rechtstreeks wil programmeren m.b.v. de ICSP connector dan moet je het type programmeer apparaat kiezen. Dat heb je bijvoorbeeld nodig als je een andere bootloader op de chip wil zetten. Zie voorgaande voorbeeld van Timo om de Optiboot bootloader op de AT328 van de PM te zetten.
Volgens mij is dit geen FTDI chipset, maar een CP2102
Daan heeft het juist. Jouw adapter heeft een CP2102 chip. De driver vind je o.a. hier: https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx (https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx)
TX/RX leds zijn niet aanwezig op de converter denk ik ,ik kan ze niet vinden.
Ik zit naar je adapter te kijken en ik zie ze ook niet. Dat geeft echter niets. Soms is het handig als je ziet dat er data verzonden wordt. Nu je weet dat hij werkt maakt het niet zoveel uit.
-
Hoi Frits, zo alles werkt nu op mijn XP machine, krijg de compoort configuratie op mijn mac niet voor elkaar , alle drivers geladen maar
blijft een conflict met het OS X Yosemite.
Dus nu de volgende stap, hoe krijg ik de info sturing van Timo nu in mijn Arduino , gepost op 2 Febr.j.l.
Kan ik bij de opdracht "selecteer" de tekst copy/paste gebruiken.
Ja dan het laatste wanneer moet ik de button op de Arduino toepassen.
Misschien wat domme vragen maar kan niet alle procedure op internet vinden, hopelijk zal dit voor gebruikers zoals ik wat verheldering brengen.
wil.
-
Hallo Wil,
Ik kan je vandaag helaas niet geheel helpen want ik krijg het ook niet voor elkaar (zal wel moe zijn)
Wat ik je wel kan zeggen is dat je niet het programma nodig hebt van 2 febr. Dat was even een zijsprong i.v.m. het installeren van een andere bootloader. Jouw PM heeft reeds een goed werkende bootloader dus daar hoef je niets aan te veranderen. De software (sketch)en de handleiding staan bij reactie #88 Gepost op: 13 januari 2015.
Ik heb zelf net geprobeerd om de sketch in de IDE te laden maar het lukte me niet. Ik gebruikte daarvoor deze handleiding: http://arduino-info.wikispaces.com/Arduino-Libraries#NewLib (http://arduino-info.wikispaces.com/Arduino-Libraries#NewLib) Daar staat de oude en nieuwe manier beschreven maar helaas krijg ik bij compileren een fout melding dat een library er niet is. Vermoedelijk heb ik de naam onjuist ingevuld maar ik zie het even niet.
Misschien leuke oefening voor jou om te proberen.............. ;) Ik zal morgen nog eens proberen en wellicht reageert Timo nog voor die tijd.
gr. Frits
-
frits , nu dit is niet erg ,ben al blij met elke reactie m.b.t. mijn Arduino avontuur .
Ik hoop dat Timo wat info kan geven en kan ik zijn Adservo gaan toepassen.
In afwachting en geduld is een schone zaak.
wil.
-
Hoi Willem,
Frits heeft gelijk, je moet de zip hebben die ik heb geplaatst in post 88 (http://forum.beneluxspoor.net/index.php/topic,61213.msg3221534127.html#msg3221534127). Daar staat Firmware v3. Boven aan de pagina staat een pijl naar beneden met een streep, dit is de download knop. Deze zip moet je uitpakken in je Arduino sketchbook. Dit is normaal (op Windows) "C:\Users\[user]\Documents\Arduino". Wil je zeker weten dat je de juiste map hebt open dan de ARduino IDE en ga naar File => Preferences. Bovenaan staat dan "Sketchbook location:". In die map pak je de zip uit, je hebt dan twee mappen: "adServo3" en "libraries". Herstart nu de Arduino IDE.. Hierna is adServo zichtbaar in de Arduino IDE. Ga naar File => Sketchbook => adServo3. Hierna opent de code van adServo. Nu kan je net als je deed bij de blink sketch op uploaden klikken. En klaar is kees ;D
Timo
-
En klaar is kees
beter: Klaar is Wil en ook Frits nu. What's in a name?!!
Vermoedelijk heb ik de naam onjuist ingevuld maar ik zie het even niet.
Het zat hem dus toch in de naam. Als je de software download heb je een zip bestand met de naam adServo v3.zip.
Verander deze naam in adServo3.zip. Dit zip bestand kan je vervolgens uitpakken in de Arduino map zoals Timo beschrijft.
Vervolgens zie je de adServo3 in je sketchbook staan en kan je hem compileren en uploaden.
Timo bedankt. Wil en de andere meelezers succes!
-
De naam van de zip zou niet uit mogen maken. Zolang je de inhoud maar uitpakt in je sketchbook zodat je eindigt met de volgende 4 mappen:
[Sketchbook]\adServo3
[Sketchbook]\libraries\ServoControl
[Sketchbook]\libraries\ServoExtend
[Sketchbook]\libraries\Bounce2
Zolang je dat hebt zit je goed. Arduino IDE herstarten en tada, het staat er :)
Timo
-
Hoi Timo, dat dacht ik ook maar feit was dat ik bij het compileren een foutmelding kreeg omdat hij de libraries niet zag. En als je adServo v3 gaat unzippen krijg je sowieso een foutmelding omdat er geen spatie in de naam mag staan.
Gr. Frits
-
Geen spaties?! Welke software gebruik jij? ;D WinRAR (waarmee ik het inpak) en zo ver ik weet WinZIP hebben geen problemen met spaties. Dus als je daar een error krijgt is dat denk ik ook de reden dat je librarie niet gevonden wordt omdat hij niet uitgepakt is ofzo.
Net ff getest, zo gedownload en uitgepakt, geen probleem. Ook als ik het hernoem naar "Pietje Puk is gaan wandelen.zip", geen probleem. Dit alles met WinRAR.
Enige wat je niet moet doen is dat je een nieuwe map met de naam van de zip aanmaakt zodat je krijgt
[]Sketchbook\adServo v3\libraries
Dat gaat niet werken.
Timo
-
Winrar geeft geen error maar de IDE. Misschien heb ik iets anders fout gedaan echter na het aanpassen van de naam werkt het perfect. Ik ben nu aan het werk dus kan het niet proberen.
-
Dan gok ik dat je die extra map hebt aangemaakt. ;D Dan kun je de sketch nog wel vinden maar staat de librarie niet meer waar de IDE hem verwacht.
Timo
-
Timo ,hier is alles gelukt (y).
Nog bedankt voor alle support en ik hoop dat er meer gebruik gaan gaan maken van je Adservo.
Ik heb nog wel een vraag, is er een goede uitleg voor het analoog gebruik en hoe de instelling van de servo's gedaan kan worden.
In de pdf staat er wel iets over maar het lukt mij niet om snelheid en positionering voor elkaar te krijgen.
Het reset geven van de instellingen zijn mij duidelijk.
Zo ,dit was een test voor gebruik met Decoder63 ,en nu er een bouwen voor DCC.
Ps; heb het ook werkend op mijn mac m.b.t. programmering.
wil.
-
Hey Wil, Dat is mooi dat het werkt en ook nog op je Mac. Goed bezig. (y)
-
@Frits , ook nog dank voor alle support.
wil.
-
Hoi Wil,
Ik dacht dat ik dat hoofdstuk al geschreven had in de handleiding maar blijkbaar niet ::) Heb het hoofdstuk net even geschreven. Zie dus het hoofdstuk Instellen => Analoog ;D
Handleiding adServo v1c (https://drive.google.com/file/d/0B0VTMBMOLEBdTUcyd3RPbk5rblU/view?usp=sharing)
Hoop dat het duidelijk is 8)
Timo
-
Hoi Timo , (y).
Ik zou er op prijsstellen dat er wat meer gebruikers hun ervaring met de Adservo hier te plaatsen.
Weer een goede analoog en digitale praktische toepassing.
wil.
-
@Wil, dat zou ik ook wel willen. Maar blijft wel dat iedereen zit te wachten op de DCC versie.
Gelijk daar een kleine update over. Ik ben er nu eigenlijk wel van overtuigd dat de hardware van de adservo werkt. Alle signalen nog eens met de scope bekeken en wat uit de opto komt is dik in orde. Netjes scherpe transities tussen 0 en 5V.
(https://images.beneluxspoor.net/bnls/IMG_20150204_122252.jpg) (https://images.beneluxspoor.net/bnls/IMG_20150204_122252.jpg)
(Okay, in mijn gedachten was het plaatje scherper ::) )
Blijven er twee mogelijkheden over (die eigenlijk op hetzelfde neerkomen). Of het signaal uit MRdirect is niet mooi genoeg of de DCC library is te kritisch. Ik ben dus bezig met de library uit te spitten. Ik heb helaas geen andere centrale om het te kunnen testen.
Wat ik in ieder geval gemeten heb is dat MRdirect is dat "1" bitjes wel wat lang zijn. (Voor een "1" 60us laag en 64us laag wat precies aan de grens ligt wat een decoder moet snappen.) Maar dit ophogen in de sketch heeft nog geen effect gehad. Zou nog kunnen dat de code vindt dat er te veel verschil in het H en L deel van het signaal zit (zou 6us mogen zijn). Alle locdecoders die ik heb die snappen het signaal in ieder geval wel.
Voor "0" bitjes is wat meer ruimte in de specs. Dus de gemeten waarde van 120us H en 120us L of 184us H en 180us L zou ook ruim binnen de spec moeten vallen.
We zoeken dus weer verder. Helaas nu door de week wel redelijk druk dus moet het van deze kleine momenten en het weekend hebben :-\
Timo
-
Timo, als je op de scope 64 us meet dan zou ik eens proberen in de code kOne_Max op 74 te zetten.
Er kan max 8us tijdmeetfout in de Arduino optreden, en in de code staat kOne_Max default op 64, dat zal waarschijnlijk niet echt heel goed gaan.
-
Blijven er twee mogelijkheden over (die eigenlijk op hetzelfde neerkomen). Of het signaal uit MRdirect is niet mooi genoeg of de DCC library is te kritisch. Ik ben dus bezig met de library uit te spitten. Ik heb helaas geen andere centrale om het te kunnen testen.
Misschien een derde...
Ben je alleen DCC aan het testen of loopt hele servo gebeuren ook door op de achtergrond?
Even geen idee hoe die servo loopt in Arduino (interrupt / timers / pollen), maar als die gebruik maakt van interrupts dan kun je wel eens tegen interrupt lol aanlopen. Bij de Atmels blokkeren interrupts nogal is mijn ervaring...
Dus als de ene loopt (servo) en DCC interrupt komt dan staat die (DCC) in de wacht tot de andere klaar is.....
Mvg
Robert
-
@Wil, dat zou ik ook wel willen. Maar blijft wel dat iedereen zit te wachten op de DCC versie.
@Timo , dat zal het zeker zijn ,maar ik gebruik de Adservo ook in een digitale omgeving , alleen de trigger doe ik met decoder63 van Moerman , deze heb ik nog niet getest maar moet zeker lukken.
Veel suc6. met je verdere ontwikkelingen.
wil.
-
Blijven er dus toch twee dingen over ;D Ik gebruik namelijk de monitor sketch die komt met de library. Ik ga er dan ook vanuit dat deze sketch verder klopt. Kan dus niet dwars zitten met de adServo sketch want die staat er dan niet op.
Maar ik verwacht ook geen probleem in de adServo sketch. In de adServo sketch wordt alleen de servo library gebruikt die een interrupt aan maakt, Voor de rest draait alleen de interrupt voor millis() en micro() maar dat is standaard met Arduino.
@Rudy, zoals ik schreef had ik dat al als eerste gedaan. Waarde voor een "1" tussen 40us en 80us (standaard tussen 52us en 64us) en een "0" tussen 81us en 10000us (standaard tussen 90us en 10000us). Maar helaas, ook dan zie ik geen pakketjes voorbij komen. En zoals eerder gecheckt krijgt de Arduino wel interrupts van het DCC signaal.
@Wil, de adServo triggeren met iets externs is zeker mogelijk. Let er wel op, je moet de ingang laag trekken om te schakelen. In rust wordt de lijn naar 5V getrokken.
Timo
-
@Wil, de adServo triggeren met iets externs is zeker mogelijk. Let er wel op, je moet de ingang laag trekken om te schakelen. In rust wordt de lijn naar 5V getrokken.
Timo
Timo ,ik kom niet in een conflict omdat ik de trigger functie via een relais sturing van uit decoder63 activeer.
Helaas de analoog afstelling volgens de nieuwe instructie wil nog niet lukken , servo's gaan keurig naar midden stand maar de volgende stappen lukt nog niet.
Laat nog wel weten of alles volgens de instructie werkzaam zal functioneren.
Wil.
Zijn er al gebruikers die de analoog versie werkend hebben.
-
Hoi Wil,
Via een relais moet zeker lukken. Wil je 1 relais per wissel gebruiken of per servo? In het laatste geval "drukt" het relais dus steeds een van de "knoppen" van de adServo in. Dan is het slim om de code aan te passen zodat de servo wel ontkoppelt raakt als deze de eindpositie heeft bereikt. Standaard blijft de servo gekoppeld tot een seconde na het loslaten van de knop. Dit is niet zo lastig aan te passen en kan ik wel voor je doen als je het zo aan stuurt.
En wat wil er niet lukken met afstellen? Je zegt dat je de servo's wel naar de middenstand krijgt. Maar kan je de servo's al wel schakelen voor je in prog-mode zit? Met dezelfde knoppen kan je de servo naar een positie brengen in prog-mode. Per keer drukken maar de servo een klein stapje (zijn in totaal 252 stappen van uiterst links naar uiterst rechts).
Timo
-
@Timo , Decoder 63 uitgangen kunnen puls gericht werken ,dus 2 uitgangen via relais naar de Adservo.
Voor mijn wissels sturing ,nog met spoelen gebruik ik nu 0.2 sec puls.
Voor de programmering Adservo lukt het afstellen rechts om uit midden stand niet , links om lukt wel.
Ik ben nog niet aan de laatste programmering (snelheid toegekomen).
De servo's werken goed daar heb ik een generator test unit voor.
wil.
-
Als links om wel lukt maar rechts om niet zou ik de knop op de G aansluiting controleren. Vandaar ook mijn vraag, kan je ze (met geresette instellingen) wel gewoon bedienen? Standaard moeten de servo's allemaal al naar dezelfde eindposities lopen.
Timo
-
@Timo, nee de knoppen werken wel , dat zou een zeldzaam defect zijn.
Naar aanleiding van jou uitleg m.b.t. van de pull up met een basis spanning 5volt ben ik gaan meten.
Nu dit is de oplossing ,heb ik stap 19 stomweg de aangeven R2/R5/R7/en R10 aangebracht ,dus R3/R4/R8/en R9 open gelaten.
Gewoon overheen gelezen , dus probleem hiermede opgelost.
wil.
-
Vanavond ook maar eens een printje bestukt. Ik had helaas geen brugcel en 7805 liggen. Die gewoon overbrugd en een 5V voeding gebruikt. Voor de aansluiting van de schakelaars heb ik pinheaders gebruikt ipv schroefconnectors. Dat met het oog op flexibiliteit. Kan ik er later ipv schakelaars altijd nog 4 extra servo's op aansluiten. Allereerst de complimenten aan Timo voor het printontwerp. Dat is echt top. Alles past precies, er is geen mm onbenut gebleven. De oplossing om de ingangen van de schakelaars ook als uitgangen voor de extra servo's te kunnen gebruiken is echt subliem. Even proefgedraaid met twee servo's en een draadje als schakelaar. Het programmeren van de servostand en snelheid is echt heel eenvoudig en werkt perfect. Ik heb wel een andere montagevolgorde aangehouden dan de, overigens zeer goed verzorgde, handleiding voortschrijft. In het algemeen monteer ik eerst alle passieve componenten van klein naar groot en tot slot de actieve elementen zoals de optocoupler. De grote spanningsregelaar komt als laatste. Morgen maar eens de DCC decoder software installeren samen met de servo software en kijken of e.e.a wil werken. Voor vandaag weer genoeg.
(https://images.beneluxspoor.net/bnls/2015_02_16_231559.jpg) (https://images.beneluxspoor.net/bnls/2015_02_16_231559.jpg)
-
Hoi Frits,
Ziet er goed uit! (y) Bedankt voor de complimenten! Doel was inderdaad ook de boek compact, en daarmee goedkoop, te houden.
Doorlussen is inderdaad prima mogelijk. Voor onder de van zou ik de spanningsregulator wel plaatsen, je hebt makkelijk spanningsval over de kabels. Maar voor nu (y)
Ik heb de soldeerhandleiding echt geschreven van laag naar hoog. Dit om de kans te verkleinen dat onderdelen er tijdens het solderen uit vallen en bij onervaren mensen er daardoor slecht/scheef op komen te zitten. Maar als je kunt solderen kun je dit natuurlijk naar eigen inzicht doen, als alles er maar op komt ;D
Wel grappig om je werkbank te zien. Mijn printje, herkenbare Arduino Pro Mini, zelfde servo's en een tussenschotje van een Action sorteerdoos ;D Precies wat ik ook heb liggen ;D Handige doosjes.
Kan jij de DCC monitor er eens op laden? Kijken of jij dan wel pakketjes langs ziet komen op de serial monitor. Welke centrale gebruik jij?
Timo
-
Hey Timo,
Die werkbank is de eettafel....... ;D ;D ;D
Ja die assortimentsdozen van Action zijn top. Goedkoop en flexibel in te richten. Jammer dat ze vaak uitverkocht zijn.... :(
Ik heb de volgende volgorde aangehouden: 1-4, 15-20, 7-14, 5, 6, 21. Maar goed, een ieder zal dat op zijn eigen manier doen.
Ik ga vanavond de Mynabay DCC decoder er op zetten (als het even kan samen met jouw adServo software). Ik zal de uitkomst hier weer publiceren.
gr. Frits
-
Hoi Frits,
Die dozen liggen hier vaak gelukkig met stapels 8)
Kan je vanavond eens beginnen met de MynaBay DCC monitor te laden? Want op zich is de rest dan super makkelijk in te bouwen in de adServo sketch. Maarja, als de meegeleverde monitor al niets laat zien... Welke centrale gebruik je?
Timo
-
Twin Center
-
De Mynabay DCC Monitor op de APM gezet. DCC van het TwinCenter (zusje van de Intellibox) aangesloten en zie daar. Op de SerialMonitor komen de datapakketten voorbij.
Vervolgens de Mynabay DCC Basic Accessory Decoder er op gezet. Adressen op 1 gezet, uitgang op 13. En als ik op het TC de groene knop druk van adres 1 dan licht het ledje op poort 13 van de APM op. Op de SerialMonitor zie je ook dat de DCC code gedetecteerd wordt.
Vervolgens de beide programma's (adServo en DCC Basic Acc decoder) in elkaar geschoven. Geen fouten bij het compileren en uploaden. Ik had verwacht dat ik dan beide programma's onafhankelijk van elkaar zou moeten kunnen gebruiken. Ze doen het echter beide niet. Ook op de SerialMonitor zie ik geen activiteit.
De volgende stap is om het adServo programma even buiten gebruik te zetten met /* en */ en dan stap voor stap in gebruik nemen om te zien waar het mis gaat. Wordt vervolgd.
gr. Frits
-
Grr, waarom werkt het dan bij mij niet! >:( Zal morgen nog eens opnieuw de lib downloaden en nog eens een poging doen. Zal ook eens een andere Arduino proberen.
Verder wat ik gezien heb moet het niet heel lastig zijn het te integreren. En als het op basis is van DCC Basic Acc decoder is het logisch dat er geen serial activiteit is.
Voor de rest heb ik vandaag een uurtje aan bezigheidstherapie gedaan en kant en klare zakjes gemaakt met kitjes. Dit moet het versturen een stuk makkelijker maken ;D
Timo
-
Succes met je poging. Je weet nu in ieder geval dat de DCC Monitor en Acc Decoder en adSetvo goed werken. Nu nog een combi van adServo met DCC. Waarom is het logisch dat de DCC Acc Decoder icm adServo geen serial activiteit heeft?
-
Doh!!!! Vandaag even snel MRdirect aangeslingert, opnieuw de MynaBay library gedownload en Arduino geopend. Weer begonnen met de DCCmonitor. Maar helaas, heel af en toe een regel met rommel maar niet gewoon alle pakketjes. Toen voor de grap eens de DCC Basic acc decoder sketch erop gezet. Adres naar 1 aangepast, pin naar 13, digital true en upload. En warempel! Ik kan de led op de Arduino aan en uit zetten! Ik heb dus geeeeen idee waarom de monitor weigert maar de gewone acc decoder werkt! Vanavond eens de code van adServo aanpassen en kijken of we alleen het schakelen van de wissel aan de gang krijgen. Pfff, sorry jongens dat het zo lang heeft geduurd!
@Frits Ik had even gemist dat er nog een serial deel in de basic acc decoder zat. Zag ik nu opeens ook voorbij komen ;D
En wat betreft de hardware, ik heb een tweede batch met printplaten binnen. Ook heb ik gisteravond even bezigheidstherapie gehad en een stapel kant en klare zakjes met kitjes gemaakt. Pakte nu steeds alles zelf als iemand wat wilde. Alleen nu moet ik nieuwe screw terminals bestellen, de eerste 100 zijn op ;D Helaas zijn de Chinezen nu aan het feest vieren. Iets met het jaar van het (makke) schaap...
Ook zijn de laatste kits geleverd met een iets hogere weerstand voor de led. De oorspronkelijke 330ohm was wel erg fel. En ipv de 47uF condensator wordt er nu een 100uF Rubycon condensator geleverd
Timo
-
Ik heb dus geeeeen idee waarom de monitor weigert maar de gewone acc decoder werkt!
Controleer eens welke hardware timers van de Atmel de DCC software / lib gebruikt en welke de Pwm / servo lib.
Kan zijn dat ze beiden dezelfde gebruiken en dan is het door elkaar heen zetten van timers...
Mvg,
Robert
-
Hoi Robert,
Als ik de DCC monitor gebruik heb ik acht alleen die geladen. Dus niets servo library of me eigen code die iets kan doen. Ik laad puur de meegeleverde DCC monitor.
Maar voor later moet dit ook geen probleem zijn. De DCC library gebruikt gewoon micro() en dat wordt door timer0 gedaan net als millis(). Timer waar je dus het liefst niet aan zit. De servo library gebruikt timer1.
Maar bedankt voor het meedenken! :D
Timo
-
Postbode is net langs geweest. 12 januari 10 stuks besteld bij AllExpress. Ze hebben de prognose tussen 3 en 6 weken bij mij waar gemaakt.
(https://images.beneluxspoor.net/bnls/PM_cb.jpg) (https://images.beneluxspoor.net/bnls/PM_cb.jpg)
Komende week eens assembleren en een programmaatje in zetten.
Cees.
-
Hoi Cees,
Altijd leuk om een batch onderdelen te krijgen. ;D Heb jij ook al adServo printjes liggen of ga je zelf aan de slag?
@iedereen ik heb snel even de de basis acc decoder software aangepast en bij de adServo gegooid. En helaas, zelfde resultaat als Frits. Maar ik had al het idee dat dit kon gebeurden. Toen heb ik even alle analoge uitlezing uitgezet en ja hoor! adServo heeft zijn eerste schakelingen digitaal gemaakt! Maar het wil nog wel eens een commando missen. Het feit dat het werkt zonder analoge uitlezing maar nog niet goed genoeg wijst het punt aan waar het probleem zit. De main loop wordt niet vaak genoeg doorlopen. Ik ga, hopelijk dit weekend, de code weer eens uit elkaar trekken en steeds maar 1 servo behandelen (switch readout, positie update enz) ipv alle servo's tegelijk. Hierdoor kan ik na iedere servo weer de dcc update aanroepen en dan doorgaan met de volgende servo. Zo wordt de loop 4 keer zo vaak doorlopen. Maarja, is wel groot deel van de code opnieuw opbouwen...
Timo
-
Aangezien het hier over de Mynabay DCC-library gaat even een vraagje: Kan ik de DCC-input ook op een andere ingangspin aansluiten? Ik heb de hele code doorgespit maar ik kan niet zo 123 iets vinden om die inputpin te veranderen.
Alvast bedankt :)
-
Hey Timo,
Dat is top. Mooi dat je de oorzaak al gevonden hebt. Het klinkt logisch (achteraf). Ik zie de aangepaste software met spanning tegemoet.
Succes en groet, Frits
-
Hoi Servé,
Ja dat kan maar je bent beperkt. Het moet namelijk wel een hardware interrupt pin zijn. Zie hiervoor de attachInterrupt()-pagina (http://arduino.cc/en/Reference/attachInterrupt). De Pro Mini is gewoon een kleine Uno dus deze heeft maar twee hardware interrupts op pin 2 en pin 3 (en in code dus 0 en 1).
In het MynaBay voorbeeld wordt deze bovenaan met een define aangegeven, standaard dus voor pin 3.
#define kDCC_INTERRUPT 0
Maarja, eigenlijk komt het er dus alleen op neer dat je het meegeeft met de functie:
DCC.SetupDecoder( 0x00, 0x00, kDCC_INTERRUPT );
Je kan het ook daar rechtstreeks opgeven.
Timo
-
Ik ga in ieder geval zelf aan de slag, want ik heb ook nog puntstuk polarisatie nodig en iets om de mensen die nog met het oude hcc!m-systeem werken een servobesturing te bieden. Daarvoor moet de bediening iets anders als met 2 knoppen. Ik denk voorlopig aan "maar" 2 servo's en 2 optocouplers als ingang.
Een adServo printje heb ik niet. Ben er wel in geïnteresseerd, maar moet nog even overwegen hoeveel.
Groet, Cees
-
Afgelopen vrijdag de adServo ontvangen van Timo en in elkaar gezet volgens de Digitaal S8 variant. Analoog is niet interessant anno 2015.
Kijk hier even om te zien hoe het eerste testje verlopen is: http://forum.beneluxspoor.net/index.php/topic,63567.msg3221552394.html#msg3221552394
Voor de S8 variant heeft de adservo overigens minder toegevoegde waarde. Aan het ontwerp is te merken dat deze optie pas later is toegepast. De hele instelprocedure voor de twee standen en de snelheid vereist het gebruik van de wisseltoetsen. Deze zijn er eenvoudig niet bij de S8 variant.
Strikt genomen is alleen het DCC-input stukje interessant. Maar dat zijn zo weinig componenten dat je ook een montagebordje kunt gebruiken. Daarop kun je ook female headers plaatsen om de APM verwisselbaar te maken.
Ook de voeding kan achterwege blijven als je gebruikt maakt van een externe 5V voeding voor alles wat 5 Volt nodig heeft. Zelf denk ik daarbij aan een oude computervoeding; daar kun je heel wat stroom uit trekken.
Het voordeel is natuurlijk wel dat het allemaal lekker compact is en je de servo connectors er direct op kunt aansluiten. Verlengkabel nodig?: http://www.dx.com/nl/p/arduino-dupont-4-pin-male-to-female-extension-wire-cable-40cm-10-piece-pack-140523
Eerder is hier de suggestie gedaan om iedere wisselomzetting op te slaan in het EEPROM; daardoor kunnen na een 'power up' van de baan alle wissels in de laatste positie worden gezet. Dat lijkt me een zinnige toevoeging. En als die 100.000 writes 'op' zijn steek je er toch gewoon een nieuwe APM in. 8)
Vraagje hierbij: Als je een nieuw programma upload naar de Arduino is dan het EEPROM weer leeg?
Timo, hoe staat het nu met de DCC implementatie?
Groetjes, Nico
-
Na het uploaden van een nieuw programma is de eeprom nog steeds in de staat als voor het programmeren.. Wordt niet aangepast dus..
Timo, ik heb eerder een wissel decoder gebouwd op basis van een uno en wat servos, zou je graag helpen met het goed krijgen van de code voor de adservo.. Als je me een printje en de componenten stuurt dan zal ik in de komende weken kijken of ik de boel werkend kan krijgen (wil ook best betalen voor de print en componenten)
-
Verlengkabel nodig?:
Het lijkt me beter om 3-aderige verlengkabels te gebruiken. Bijvoorbeeld deze. (http://www.ebay.com/itm/10PCS-500mm-RC-Servo-Extension-Servo-Lead-Cable-Cord-Wire-parts-for-Futaba-JR-/131385450275?pt=LH_DefaultDomain_0&hash=item1e972edf23)
-
@Fritsprt
Dat is inderdaad een nog betere keus ::)
-
Hoi allemaal,
Sorry dat de boel zo op een laag pitje staat. Helaas staat er weer een tentamen aan te komen :/ Ik heb nog wel wat aanpassingen gedaan aan de code maar dit had nog niet volledig het gewenste effect. Er werden toch nog af en toe commando's gemist :/ Maar goed, wat vragen
Eerst het makkelijkste, verlengen. Dit is inderdaad prima te doen maar ik zou niet meer dan één verlengkabel (40 a 50cm) verlengen omdat het servo signaal redelijk storingsgevoelig is.
Voor de S8 variant heeft de adservo overigens minder toegevoegde waarde. Aan het ontwerp is te merken dat deze optie pas later is toegepast.
Ik kan niet ontkennen dat de 8S versie (dus met 4 extra servo's) later is toegevoegd. Het idee was namelijk dat mensen die analoog rijden ook gebruik kunnen maken van een servo. Ook denk ik nog steeds dat je zelden meer dan 4 servo's bij elkaar hebt afgezien van een station/rangeerterein. En tuurlijk kan je dit ook op experimenteerprint maken maar dit kost je echt veel meer tijd. Zelf ben ik ook meer van de digitaal en zal dus ook de 8S versie wel willen gebruiken maar ben wel blij met de print. Met een print soldeer je de boel in een kwartiertje in elkaar, dit ga je echt niet redden met experimenteerprint. Dat is mij het prijsverschil wel waard. Maar dat moet iedereen natuurlijk zelf besluiten.
De hele instelprocedure voor de twee standen en de snelheid vereist het gebruik van de wisseltoetsen. Deze zijn er eenvoudig niet bij de S8 variant.
Dat klopt, maar dat komt omdat er gewoonweg in de laatste versie nog geen spatje DCC zit. Het idee is dat standen ook via CV/POM programmeren in te stellen zijn maar ook via de snelheidsregelaar. Dit naast dat het (voor de eerste 4) ook mogelijk blijft het analoog met de drukknoppen te doen. Volledig hybride dus.
Strikt genomen is alleen het DCC-input stukje interessant. Maar dat zijn zo weinig componenten dat je ook een montagebordje kunt gebruiken. Daarop kun je ook female headers plaatsen om de APM verwisselbaar te maken.
Zoals gezegd, kan tuurlijk. Maar is echt veel meer werk ;)
Ook de voeding kan achterwege blijven als je gebruikt maakt van een externe 5V voeding voor alles wat 5 Volt nodig heeft. Zelf denk ik daarbij aan een oude computervoeding; daar kun je heel wat stroom uit trekken.
Kijk, en hier ben ik het absoluut niet meer eens ;D Het is een hele bewuste keuze geweest de adServo uit te rusten met een spanningregelaar. (En de 7805 is gekozen omdat deze zo goedkoop is.) Servo's kunnen best stroom hongerig zijn. Leg je dus een mooie lange kabel onder de baan kan je dus best af en toe flinke spanningsval over de kabel hebben. Dit zou je terug kunnen zien in de beweging van de servo maar erger, de microcontroller vindt dit echt niet leuk. Hierdoor kan deze behoorlijk onbetrouwbaar worden. Er is dus doelbewust gekozen om er wel een spanningsregelaar in te zetten om het zo betrouwbaar mogelijk te maken.
Vergelijk het met Nederland, daar wordt de 230V uit het stopcontact ook niet zo door Nederland gestuurd. Voor het transport wordt 100kV+ gebruikt om de verliezen klein te houden en het op de bestemming netjes af te kunnen regelen naar 230V zonder last te hebben van de last op andere plaatsten.
Eerder is hier de suggestie gedaan om iedere wisselomzetting op te slaan in het EEPROM; daardoor kunnen na een 'power up' van de baan alle wissels in de laatste positie worden gezet. Dat lijkt me een zinnige toevoeging. En als die 100.000 writes 'op' zijn steek je er toch gewoon een nieuwe APM in. 8)
Dit ga ik er helaas zelf niet in bakken. Zoals gezegd, de code is vrij dus zelf mag je het doen. Maar ik vind de 100.000 cycles echt te weinig. Ook kost dit steeds veel tijd in het programma (EEPROM = traag). Ik heb nog zitten denken om hardware toe te voegen zodat de Arduino de stand bij powerdown op kan slaan maar dit vond ik het uiteindelijk niet waard. Zoals je kunt zien is de ruimte op de print aardig op.
Vraagje hierbij: Als je een nieuw programma upload naar de Arduino is dan het EEPROM weer leeg?
Nee, blijft zoals hij was. Dit is erg handig zodat je de decoder kunt updaten zonder instellingen te verliezen. Alleen bij de eerste keer de code opstarten (dus eerste keer opstarten nadat een kale adServo is voorzien van code) worden de default waarde geladen. Hierbij wordt gekeken of op het eerste EEPROM adres nog de default waarde 0xFF staat.
@Auke
Op basis waarvan heb jij de decoder gemaakt? Was dit op basis van de MynaBay library of een eigen implementatie?
Timo
-
Mijn implementatie was op basis van de mynabay library. Als je wil kan ik je de source ook sturen
-
Vorige week de printjes ontvangen en samengesteld. Een makkie. Probleem was dan het uploaden van de sketch. Ik kreeg steeds een foutmelding van een zekere avrdude ??? :)
Na veel zoeken op het net las ik bij een slimme Indische medemens dat je de rx van de usb naar analoog diende aan te sluiten op de tx van de mini en omgekeerd! En hop alles liep vlot. Hoe had ik dit nunniet gezien?
Ondertussen al de analoge versie getest. Lukt aardig en handig voor een leek. Bedankt om.dit met ons te delen Timo.
-
Hallo Timo,
Nog even over de voeding.
Ik snap dat een lange kabel problemen zou kunnen geven maar als deze dik genoeg is (bv installatiedraad van 2,5 mm2 dan zou het toch moeten kunnen lijkt me. De stroom die een servo trekt is maar van korte duur en je gaat toch niet alle wissels tegelijk omleggen?
Daarnaast kun je de voeding van de APM en de servo apart houden. Alhoewel dat wel lastig zou met de adServo print.
De vergelijking met het lichtnet vind ik een beetje krom. Die hoogspanning wordt primair gebruikt om de stroomsterkte te beperken (en daarmee de warmteontwikkeling) en er toch een hoop vermogen doorheen te kunnen sturen.
Wat vinden anderen hiervan?
Nico
-
Gewoon proberen. Het is toch hobby. Is beetje afhankelijk van je baan, voeding enz. Je kan eerst zonder 7805 e.e.a. aansluiten en als je problemen hebt altijd nog een spanningsregelaar toevoegen en de (ruwe) voedingsspanning verhogen naar 8 a 10V. Wil je het meteen goed doen dan zou ik het op de manier doen zoals Timo zegt. Succes.
gr. Frits
-
De blauwe 'Towerpro' motortjes trekken 200 - 700 mA (vrijlopend - geblokkeerd).
De soortelijke weerstand van koperdraad is 0.017 ohm*mm2/m.
Als je met een dun draadje van 0.15 mm2 een servo aanstuurt op een afstand van 2 meter, dan is het spanningsverlies ongeveer 0.1 V.
(Geen garantie op deze berekening, zit aan een biertje ... :) ).
-
Waarom vroeg ik dat nou van die EEPROM?
Als de inhoud bewaard blijft zou je met een speciale tuning sketch eerst alles kunnen tunen, waarbij de waardes in het EEPROM worden gezet.
Daarna laad je het eigenlijke programma. Dat leest dan meteen de juiste waardes uit. Het bespaart een hoop code die toch maar een enkele keer wordt gebruikt.
-
Het staat je vrij de 7805 te overbruggen, het is zo te doen. Zelfde geldt eigenlijk voor de gelijkrichtbrug. Maar ik hou ze lekker in me design. Ik vind 700mA al redelijk wat en de korte pieken verwacht ik nog wel een stuk hoger. Een uC is erg gevoelig wat betreft spanning. Krijgt al met genoeg rotzooi te doen.
Wat betreft EEPROM en afstellen, dat wordt gewoon in het normale programma gebakken. Of ik het nu los schrijf of in het normale programma verwerk, dat maakt voor de code niet uit. Sterker nog, dat is meer werk. En voor de eindgebruiker ook nog eens. Steeds van sketch moeten wisselen vs de prog knop indrukken. Uit me hoofd gebruikt de adServo code, zelfs als ik de DCC lib laadt ongeveer 20% ROM geheugen, zat over dus.
Timo
-
Het idee is dat standen ook via CV/POM programmeren
Hallo Timo,
Kan jij uitleggen hoe het programmeren via CV werkt? Hoe ziet de DCC code eruit zodat de decoder "weet" dat hij in programmeerstand moet. Hoe gaat vervolgens het programmeren van de CV's?
Alvast bedankt,
groet Frits
-
@Allen, sorry dat er nog even weinig schot in zit. Door het project (analog and digital filter en ADC's en mux ;D) in dit kwartiel is het nogal druk :-\ Ik hoop vanavond weer wat te kunnen gaan testen. Eens even gaan bekijken hoe lang het programma er nu over doet tussen de DCC.loop()'s en wat het maximaal kan hebben. Want ik neem nog steeds aan dat er niet vaak genoeg gepolt wordt.
Hoi Frits,
Hoe dat moet gaan werken, vergelijkbaar met andere decoders. Je zet de decoder in prog mode met het knopje en hij moet gaan luisteren naar DCC prog commando's en POM commando's. Programmeren van decoder is dan hetzelfde als een locdecoder :) Je kan alleen niet uitlezen (is geen hardware voor).
Timo
-
Hallo Timo,
Bedankt voor je antwoord.
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
-
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 (http://www.nmra.org/sites/default/files/s-9.2.1_2012_07.pdf). Manier van ééntjes en nulletjes blijft gelijk.
Timo
-
Bedankt voor de link. Dat is precies de info die ik zocht. Top!
gr. Frits
-
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)
-
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
-
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
-
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
-
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
-
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
-
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 (http://www.banggood.com/4Sets-TowerPro-SG92R-Micro-Digital-Servo-9g-2_5kg-For-RC-Airplane-p-973301.html) 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
-
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
-
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
-
De digitale servo's staan in bestelling. Kijken hoe snel ze leveren.
-
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
-
Aansturing is gewoon gelijk. Zit waarschijnlijk alleen een microcontroller in voor het lezen van de pulsen ipv gewoon een analoge comperator.
Timo
-
Ooo dat is simpel. Dus gewoon onderling uitwisselbaar
Verstuurd vanaf mijn HTC One X met Tapatalk
-
Een tijdje geleden heb ik gezegd, dat ik een ander soort schakeling wilde maken. De print is deze geworden:
(https://images.beneluxspoor.net/bnls/asmps_board.jpg) (https://images.beneluxspoor.net/bnls/asmps_board.jpg)
Voor die schakeling heb ik de AdServo-firmware gebruikt en aangepast (andere en minder pennen in gebruik dan de schakeling van Timo). Daarnaast moest ik relais aansturen t.b.v. puntstukpolarisatie. Hieronder de aanvullende code voor de relais:
define NrRelais sizeof(relaisMap)
.
.
.
const byte relaisMap[] = {7, 8, 12, 11}; // Pins van de relais (2 per servo) CB
.
.
. in setup()
// Maak de pinnen voor de relais OUTPUT - CB
for(byte i = 0; i < NrRelais; i++)
{
pinMode(relaisMap[i], OUTPUT);
}
.
.
. in loop()
servoControl.gotoEndPos(i / 2, 0); //go to position A
digitalWrite(relaisMap[i / 2], LOW); // laat beide relais afvallen
digitalWrite(relaisMap[i / 2 + 1], LOW); // CB
numButtons += 1;
.
.
servoControl.gotoEndPos(i / 2, 1); //go to position B
digitalWrite(relaisMap[i / 2], LOW); // laat beide relais afvallen
digitalWrite(relaisMap[i / 2 + 1], LOW); // CB
numButtons += 1;
.
.
. aan het eind van loop()
// zet juiste relais weer aan
if (servoControl.isAtEndPos(0, 0)) {digitalWrite(relaisMap[0], HIGH);} // werkt
if (servoControl.isAtEndPos(0, 1)) {digitalWrite(relaisMap[1], HIGH);} // werkt
if (servoControl.isAtEndPos(1, 0)) {digitalWrite(relaisMap[2], HIGH);} // werkt
if (servoControl.isAtEndPos(1, 1)) {digitalWrite(relaisMap[3], HIGH);} // werkt niet ???
Alles lijkt naar behoren te werken, echter 1 relais doet niet mee.
Ik vermoed dat het in de firmware zit, want met andere firmware werkt de aansturing van datzelfde relais wel. De boosdoener is:
if (servoControl.isAtEndPos(1, 1)) {digitalWrite(relaisMap[3], HIGH);} // werkt niet ???
Het lijkt erop dat de eindstand niet goed teruggemeld wordt. Ik heb echter nergens iets kunnen vinden in de AdServo code, die dat kan veroorzaken.
Hebben jullie een idee?
m.vr.gr. Cees
P.S. mochten er mensen zijn, die meer over mijn projectje willen weten, laat me dat dan weten per PB dan maak ik daarvoor een apart draadje. Het doel van deze post is uitsluitend de software vraag.
-
Je hebt niet de hele code geplaatst dus weet niet precies wat je wel en niet hebt aangepast. Maar in de originele code zit op die pijn een ledje. Denk dat je daar de code er nog voor in hebt staan en dat dit ook die pin wil aanpassen naar low. Of dat stuk eruit halen of die even op en niet gebruikte pin zetten.
Verder is je plaatje waar lastig te zien. Component contouren en achtergrond hebben weinig contrast. Heb je nog wel wat labels op de print gezet om aansluiten makkelijk te maken?
En als in het goed zie ben je voor 12v relais gegaan, waarom? Op deze manier moet je minimaal 14v aansluiten. Voor de 5v moet je dus 9v opstoken. Bij 100mA is dat al bijna en watt...
En zie ik nu 2 opto's?
Timo
-
@Timo
ik zal je morgen het hele setje sturen: Eagle files van de schakeling, de firmware die ik er zelf voor geschreven heb, de aangepaste AdServo 3.
Misschien is het voor andere BNLS gebruikers ook handig/leuk mijn project te zien. Dan kan ik beter een apart draadje aanmaken om deze draad zuiver te houden. Ik denk aan de naam: "2 servo's aansturen met knoppen of schakelaars"
Ik heb voor die 12 V gekozen omdat ik, in mijn situatie, dit koppel aan andere hardware waarvoor een 15 V voeding gebruikt moet worden. In twee stappen naar beneden leek me beter dan 10 V helemaal wegstoken. Voordeel is m.i. dat de APM en de servo's nu een beter geregelde 5 V hebben. De regelaar heeft dan nog wat ruimte om dipjes door de stroomafname van de relais op te vangen.
Plaatje: ja, je hebt gelijk, die is eigenlijk net zo erg als jouw schema in het begin van deze draad. Als ik een nieuw draadje maak zal ik moeite gaan doen er wat moois van te maken.
2 opto's: die zul je snappen als je mijn eigen code hebt gelezen. Ik heb die voorzien om deze print ook in het HCC!m-systeem te kunnen gebruiken. Daar heb je voor een wissel maar 1 pen op een interface, die 0 of 12 V is. Inmiddels werken er al 2 prints achter een OC32 van een Dinamo systeem.
m.vr.gr. Cees
-
Hoi Cees,
Los draadje is inderdaad goed idee.
Eagle, moet ik dat eerst weer eens gaan opzoeken ;D Ik moet je gelijk geven dat plaatjes van PCB's nooit zo duidelijk zijn, die van mij ook niet. Maar moest het er deze keer mee doen omdat je nog geen schema had geplaatst. Die lezen toch stuk makkelijker ;D
10v weg stoken, ook al is het in twee trappen, is wel veel. Tijdens het aansturen gebruik je zo 400mA (als je ze beide beweegt) en dat is dan 4W. Koellichaam is dan wel verplicht. Je hebt gelijk dat je wel zeker bent van prima regeling bij last maar door de condensatoren ben je dat altijd al wel als je DC stuurt. (Of gaan ze aan een AC bron?) Je zou kunnen overwegen om voor de 5V (immers gaat daar het meeste vermogen zitten) een kleine DC-DC step down (http://www.ebay.nl/itm/390898668631?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649) te gebruiken. Moet je hem alleen niet achter de 12V zetten. En als je dan 5v relais gebruikt kan je helemaal af stappen van de 7812.
Ah, het HCC!m systeem. Dat verklaard. Schakelt deze echt tussen 12v (source) en 0v (sink)? Of schakelt deze 12v in en uit (source only)? In het laatste geval zou ik nog een pull down toevoegen aan de ingang van de opto. Opto heeft niet zo veel nodig en als er een lange kabel aan hangt zou het mogelijk zijn dat de opto iets open wordt gestuurd. En hoe precies stuurt HCC!m 2 wissels aan met één ingang? (Ken het systeem niet precies...) Of gebruik je dan de DCC opto als tweede?
Timo
-
2 opto's: die zul je snappen als je mijn eigen code hebt gelezen. Ik heb die voorzien om deze print ook in het HCC!m-systeem te kunnen gebruiken. Daar heb je voor een wissel maar 1 pen op een interface, die 0 of 12 V is. Inmiddels werken er al 2 prints achter een OC32 van een Dinamo systeem.
De OC32 kan toch gewoon rechtstreeks servo's aansturen, heb je deze hele omweg niet voor nodig.
Groetjes
-
Dat weet ik Wim,
Had ik ook gedaan in een andere situatie als waarvoor ik dit doe.
Waarom?
Ik heb niet alleen Dinamo als besturing op mijn baantje, maar ook een aparte opstelling met handbediening. Kun je hier - in een andere draad - binnenkort meer over gaan vernemen.
groet, Cees
-
@Timo
ik heb bij het antwoorden naar Wim jouw post over het hoofd gezien.
Het draadje gaat er binnenkort komen.
Je hebt goed gezien dat ik de DCC-opto als tweede ingang gebruik/misbruik.
Voor zover ik weet, kan het werken zoals ik het nu gedaan heb omdat de uitgangen bij het HCC!m-systeem C-MOS poorten zijn. Ik heb het getest en (nog) geen problemen ondervonden.
Wat betreft de voeding van het geheel. Ik ben nog niet zo thuis in step-down convertertjes, vandaar de keus voor de "tweetrapsraket".
Ik had je inmiddels een PB gestuurd met een link naar zo ongeveer alle files. Ik hoop dat je daar meer mee uit de voeten kon.
groet, Cees
-
Die DC-DC bordjes zijn zo goedkoop dat het meestal wel uit kan om die op te nemen ipv zelf met een chip en een spoel te klooien. Dan is het verder niet zo spannend, je sluit GND, Vin en Vout aan en gaan. Je zou het drop in kunnen gebruiken voor de 7805 nu (ook al zou ik hem niet achter de 7812 hangen dan ;D).
Op schema is weinig aan te merken, toch ga ik dat nog iets doen ;D De tweede opto is niet beschermd met een diode. Reverse voltage is maar 6V dus verkeerd om aansluiten kan de opto beschadigen. Pull up R2 is niet nodig, mag je weglaten (ook al kan plaatsen geen kwaad :p ). Pin 13 van de arduino gaat naar externe aansluiting k2_2, wat wil je hier op aansluiten? Weet in ieder geval dat deze pin zich slecht als input laat gebruiken doordat de led op de Arduino op deze pin zit.
Wat betreft het board, deze zou je kleiner kunnen maken om de kosten te drukken. Ook zou ik nog een beetje kijken naar de routing van sommige banen. Bijvoorbeeld de rare kronkel naar de rechter transistor, de haakse bocht in de power lijn naar de Arduino en het feit dat je de Arduino best wel via een enorme omweg voedt (en verderop ook nog eens de powervreters van Servo's liggen). En zit de 7805 nu niet in de weg voor de serial interface?
Timo
-
@Timo
Die DC-DC bordjes zijn zo goedkoop dat het meestal wel uit kan om die op te nemen ipv zelf met een chip en een spoel te klooien. Dan is het verder niet zo spannend, je sluit GND, Vin en Vout aan en gaan. Je zou het drop in kunnen gebruiken voor de 7805 nu (ook al zou ik hem niet achter de 7812 hangen dan ;D).
Mee eens, echter die twaalf volt werd ook ingegeven door een grote voorraad 12v relais.
Op schema is weinig aan te merken, toch ga ik dat nog iets doen ;D De tweede opto is niet beschermd met een diode. Reverse voltage is maar 6V dus verkeerd om aansluiten kan de opto beschadigen. Pull up R2 is niet nodig, mag je weglaten (ook al kan plaatsen geen kwaad :p ). Pin 13 van de arduino gaat naar externe aansluiting k2_2, wat wil je hier op aansluiten? Weet in ieder geval dat deze pin zich slecht als input laat gebruiken doordat de led op de Arduino op deze pin zit.
Wat betreft het board, deze zou je kleiner kunnen maken om de kosten te drukken. Ook zou ik nog een beetje kijken naar de routing van sommige banen. Bijvoorbeeld de rare kronkel naar de rechter transistor, de haakse bocht in de power lijn naar de Arduino en het feit dat je de Arduino best wel via een enorme omweg voedt (en verderop ook nog eens de powervreters van Servo's liggen). En zit de 7805 nu niet in de weg voor de serial interface?
Ik ga je opmerkingen in een volgende incarnatie van de print opnemen. De 7805 zit net niet in de weg maar is wel onhandig. Pin13 heb ik in de firmware al aangepast. Extern wil ik de LED ook kunnen zien, dus daar verandert nog iets in het schema. En achteraf zit de prog-knop ook niet handig op de print. Kon bij mij ook wel eens extern gaan worden.
Ik kon de print niet tot 5 x 5 cm verkleinen en heb toen bedacht, dat ik geen moeite ga doen om 'm veel kleiner te maken dan 5 x 10 cm.
Nog een opmerking over mijn firmware versie; er zat een denkfout in, die is er inmiddels uit en het geheel werkt zoals ik verwachtte.
Achteraf nog complimenten voor jouw versie van adServo-firmware. Goed genoeg gedocumenteerd, ik kon goed aanpassen naar mijn print.
Mijn draadje is geworden: Rangeerpuzzel (Inglenook)... (http://forum.beneluxspoor.net/index.php/topic,65057.msg3221575660.html#msg3221575660)
Op die plek ga ik verder en laat jouw draadje met rust.
groet Cees
-
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 (http://www.banggood.com/4Sets-TowerPro-SG92R-Micro-Digital-Servo-9g-2_5kg-For-RC-Airplane-p-973301.html) 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
Ook besteld en inderdaad binnen een week geleverd. In combinatie met de Servoswitch van Rosoft gaat het servo bij opstarten echter braaf naar de middenpositie. Ik dacht dat een digitaal servo dat gewoon niet deed. ???
-
Henk,
Waarom zou die dat dan niet doen?
Maar het is gewoon een kwestie van de firmware in de Servo-Switch, die zegt de Servo dat hij bij Power Up naar de middenstand moet gaan. Alleen zal deze Servo, niet wild heen en weer bewegen, maar netjes naar de middenstand gaan. Mooi toch!
Groetjes
-
Okay, dus het gebeurt in opdracht van de firmware. Met jitter heeft het niks te maken. Helder. Persoonlijk zag ik liever dat de laatste eindstand behouden bleef. Gebeurt dit omdat beide relais nu eenmaal afvallen bij uitschakeling van de stroom en de elektronica niet weet wat de laatste eindstand was?
-
Het is inderdaad de firmware. De SG92 blijft dood stil staan als je alleen de power aansluit in tegenstelling tot de SG90 die altijd een ongecontroleerd sprongetje maakt.
Timo
-
(Ook uit persoonlijk belang:) ik wilde een nieuw draadje opstarten over fabrikanten, types, eigenschappen, kwaliteit en verkrijgbaarheid van servo's.
De info in de laatste 4 berichten zouden goed in dit nieuwe draadje passen. Mee eens als ik dit afsplits?
Gr, Bert
-
@Bert,
Goed idee. Vermeld er dan ook even de precieze maten bij.
Daar zit wat verschil in. Handig bij het maken van servo-beugels.
Grzz, Hans
-
Geen problemen mee. Misschien kan daar dan (als samenhang met de maten) ook verschillende montage methode besproken worden.
Timo
-
Timo,
Mijn Adservo heb ik weliswaar niet voor de servo's gebruikt, maar hij heeft nu toch een bestemming gevonden:
http://forum.beneluxspoor.net/index.php/topic,63567.new.html#new
Nico
-
Ik heb gisteren wat uno's binnen gekregen. Eerst was ik wat huiverig voor adservo-achtige zaken omdat ik dacht dat het erop zetten van code lastig was, maar recente gegoogle leerde mij dat het bij arduino (mits voorzien van een usb aansluiting) heel makkelijk is. Dus ik wil gaan experimenteren met servo's voor wissels/seinen en met de aansturing van ledstrips.
Libraries gebruiken? Ja, goed idee. M'n vraag: hoe kom ik netjes aan de adservo libraries?
Ik zag in een ander draadje de tip "gebruik ServoExtend en ServoControl en Debounce2". Met wat googlen vond ik die laatste op github. De eerste twee waren lastig te googlen en die blijken in adservo zelf te zitten. Ik heb die nu gevonden door ergens op een pagina halverwege dit draadje een zipje te vinden en uit te pakken. Maar of ik de meest recente versie heb gevonden weet ik dus niet :)
Zie ik iets over het hoofd? Ik zocht onder andere op https://github.com/sseptillion ? Staat de source ergens anders?
Als er nog andere tips zijn voor handige niet-meegeleverd-met-arduino libraries is dat uiteraard ook welkom. Ik heb bijvoorbeeld gegoogled op libraries die met een servo je armsein zouden kunnen laten stuiteren. In het engels is dat "bounce", maar dan vind je weer vooral "debounce" wat een andere betekenis heeft in arduino-land. (Of kan ik beter duitse termen gebruiken?)
Reinout
-
-
-
Libraries gebruiken? Ja, goed idee. M'n vraag: hoe kom ik netjes aan de adservo libraries?
De meeste libraries zijn public domain, dus kun je ze netjes downloaded. Waar? Dat is afhankelijk van de maker. Een kwestie van zoeken; bijv. "servo AND arduino AND 'model railroad'". Dat geeft vaak bruikbare resultaten.
Ik zag in een ander draadje de tip "gebruik ServoExtend en ServoControl en Debounce2". Met wat googlen vond ik die laatste op github. De eerste twee waren lastig te googlen en die blijken in adservo zelf te zitten. Ik heb die nu gevonden door ergens op een pagina halverwege dit draadje een zipje te vinden en uit te pakken. Maar of ik de meest recente versie heb gevonden weet ik dus niet :)
Ze zitten alledrie in het adServo pakketje. De laatste versie is m.i. versie 3. Daarover zou een PB aan Timo helderheid kunnen verschaffen.
Zie ik iets over het hoofd? Ik zocht onder andere op https://github.com/sseptillion ? Staat de source ergens anders?
Reinout
Als je in het adServo pakketje kijkt zit daar een map "libraries" bij. Voor iedere afzonderlijke library vind je daarin een aparte map. Daarin vind je de broncode van de library (.cpp-file). Door in je sketch aan het begin bijv. "#include ServoExtend.h" op te nemen, kun je gebruik gaan maken van de in de library gecodeerde mogelijkheden.
groet Cees
-
Even nagekeken: ik heb inderdaad versie 3. En de libraries had ik ook al gevonden en met wat handmatig copy/paste werk krijg ik ze ook wel op de juiste plek.
't Is alleen dat ik qua softwareontwikkeling beroepsmatig gewend ben het bouw/installatieproces te automatiseren. "Stuur een PM" en "zoek halverwege 16 forumpagina's naar een zipje" valt zo slecht in een scriptje te vangen :) Maar goed, ik heb het zipje en dan lukt het verder wel. Eerst maar eens zorgen dat ik überhaupt wat werkends voor elkaar krijg :)
Reinout
-
Hoi allen,
Versie 3 is inderdaad de laatste. Ik ben het met je eens dat het zo tussen 16 pagina's forum inderdaad niet zo handig is. Had ook liever steeds de start post aangepast met de laatste versie. Dat mag helaas niet op Beneluxspoor. Voor de volgende versie wil ik dat graag veranderen en het op GitHub zetten. Voor nu had ik dat nog niet gedaan omdat ik het nog niet af vindt. Ook moet ik me dan eens verdiepen in Submodels om te kijken of ik het daarmee als één pakket op GitHub kan krijgen. Dit omdat de libraries geen subfolders van adServo zijn. Liefst wil ik één download dit je uit kan pakken in je Sketchbook folder en klaar (zoals nu).
Helaas (sorry sorry!!!) heb ik een beetje weinig tijd gehad om verder te gaan. Ik zit nog steeds met het probleem dat ik DCC pakketjes mis als ik ook de knopjes inlees (ookal zou dit amper tijd moeten kosten). Ik wil het nu nog een keer proberen met de NMRA DCC library (https://github.com/mrrwa/NmraDcc). Misschie is dat wel een goede om vandaag eens te proberen. Even me werkbank/bureau overhoop gooien ;D en dan MRdirect weer eens starten.
@Reinout, even ter controle de "juiste plek", daarmee bedoel je de libraries folder in je Sketchbook mee hoop ik? Niet de libraries folder in de Arduino install folder.
Timo
-
In de sketchbook, hoor. Maar zo ver ben ik op het moment niet, ik moet de eerste servo nog aan de praat krijgen. Niet heel veel tijd genomen en ondertussen ook nog twee draadjes omgewisseld (0 en 12V, da's niet de slimste set draadjes om om te wisselen...) :) Dus ik moet wat zaken opnieuw solderen met de tweede arduino :)
Reinout
-
Just checking :D Sommige mensen zetten ze in de libraries folder in de Arduino IDE. Dat werkt wel, tot ze de IDE updaten, dan is opeens alles weg ::)
Maarja, reverse polarity kan veel niet zo goed hebben nee ::) Succes ermee!
Timo
-
Omdat ik behoefte had aan een programma dat servo's met drukknoppen en met DCC kan aansturen heb ik dit oude idee in mijn corona vrij-tijd opgepakt en werkend gekregen.
zie https://www.hcc.nl/forum/servo-aansturing-met-drukknoppen-en-dcc
Gerard