Doel:€250.00
Donaties:€130.00

Per saldo:€-120.00

Steun ons nu!

Laatst bijgewerkt
op 24-04-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

19 Toen door defender
Vandaag om 19:11:14
Laag-Baarlo door Mark Lin
Vandaag om 19:02:20
Raadplaatje door Arjen52
Vandaag om 18:54:32
Rheinburg, TP V/VI door Dave.......
Vandaag om 18:28:50
Schrootplaats door IJmc
Vandaag om 18:07:28
Les Billards du Vivarais door Hans1963
Vandaag om 17:51:03
Gewoon wat busfoto's door Joost O
Vandaag om 17:47:03
Toon hier je (model)TRAM foto's. door Keska
Vandaag om 17:39:07
Toon hier je nieuwe (model-) spooraanwinst(en)... door Ronald69
Vandaag om 17:16:38
Piko lok digitaal rijdt direct weg door Ronaldk
Vandaag om 17:15:48
Kortsluiting bij wissels door Voske
Vandaag om 16:57:37
Bouw van tijdperk 1 HSM en SS rijtuigen door MathynK
Vandaag om 16:48:56
Meedhuizen in H0 door Scratchbuilt
Vandaag om 16:31:17
diorama, voor lange treinen. door FritsT
Vandaag om 16:29:17
Amerikaanse "old timer" rijtuigen in spoor 1 door sncf231e
Vandaag om 15:37:10
EifelBurgenBahn door Reinout van Rees
Vandaag om 15:29:26
NS 6000 (in schaal 0) door FritsT
Vandaag om 15:26:45
"Nederlandse" modellen door spoorijzer
Vandaag om 15:14:16
Bahnbetriebswerk "Altendorf" door AlbertG
Vandaag om 13:26:02
RhB H0m, Albulisch door R.C.Grootveld
Vandaag om 12:59:03
h0 diorama USA “The Paintshops” door Mudhen
Vandaag om 11:58:57
Doornvliet door mass am see
Vandaag om 11:44:10
BNLS modules: de groeten uit Berkel door Hans van de Burgt
Vandaag om 11:42:40
03-05-2024 - afscheidsrit NS ICMm 4011 door Modellbahnwagen
Vandaag om 11:34:24
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 11:14:38
Kleine Baan in H0 (≤ 0.5m²) door Jack Black (NS1220)
Vandaag om 11:14:03
Alt Wutachbahn - Sau-Schwänzle-bahn Weizen - Zollhaus - Blumberg door Eric v C
Vandaag om 10:42:29
20 en 21 april MobExpo door MOVisser
Vandaag om 09:52:38
Baan 'begroenen', hoe, wat en waarmee? door RBlok
Vandaag om 09:52:13
2nd Dutch US Convention, DRU Ulft NL 6/7 april 2024 door D_Loc
Vandaag om 09:38:55
  

Auteur Topic: Servo's aansturen met Arduino uno en PCA9685.  (gelezen 1995 keer)

haes

  • Offline Offline
  • Berichten: 825
  • Hellendoorn en NAM Schoonebeek in FiNe
Servo's aansturen met Arduino uno en PCA9685.
« Gepost op: 23 mei 2021, 18:44:17 »
Hallo,

Ik ben bezig om mijn wissels en seinen via arduino en de PCA9685 te laten bewegen. Ik zie filmpjes op U tube om via JMRI en soortgelijke de seinen te verbinden en de wissels om te zetten. Maar, ik wil op mijn fremo modules de wissels en seinen omzetten met een schakelaar. Kan dat maw zijn er misschien bibliotheken voor ergens(adafruit of arduino). Wie o wie heeft ervaring hiermee en weet raad

Groet, Hans
Hellendoorn station en Schoonebeek Olieverlading in FiNescale/Fremo N normen

Ronaldk

  • Offline Offline
  • Berichten: 8680
    • Bouw Endstation der Linie: Bahnhof Poggendam
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #1 Gepost op: 23 mei 2021, 19:35:56 »
Ja, waarom zou dat niet mogelijk zijn? Je kan de knopjes op de arduino aansluiten en deze als input gebruiken voor de opdrachten.

Groet Ronald.
Zijn we aan het bouwen? Ja! We zijn aan het bouwen: Ronald’s nieuwe project: Endstation der Linie: Bahnhof Poggendam!

haes

  • Offline Offline
  • Berichten: 825
  • Hellendoorn en NAM Schoonebeek in FiNe
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #2 Gepost op: 23 mei 2021, 20:07:08 »
Ronald, je kan idd tot 3 servo's aansluiten met knoppen op de arduino, maar ik gebruik de PCA9685 erbij(daarmee krijgen de servo's een aparte 5 volt aansluiting) en kan ik er meer verbinden. De knoppen moet ik die dan op de analoge kant van de arduino aansluiten of op de PCA 9685?
Ik kan het nergens vinden helaas. Een schema zou welkom zijn

Gr Hans
Hellendoorn station en Schoonebeek Olieverlading in FiNescale/Fremo N normen

PaulRoman

  • Offline Offline
  • Berichten: 165
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #3 Gepost op: 23 mei 2021, 21:21:20 »
Hallo Hans,

Als ik me goed herinner kun je op een PCA9685 16 servo's aansluiten. Communicatie via I2C: SDA (A4) en SCL (A5). Je hebt dan op een Arduino Uno nog 4 analoge ingangen over. Hier kun je tig schakelaars op aansluiten. Zie dit draadje: https://forum.beneluxspoor.net/index.php?topic=93603.msg3222130131#msg3222130131

Groet,

Paul
Schäßburg an der Kokel

Overet

  • Offline Offline
  • Berichten: 704
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #4 Gepost op: 23 mei 2021, 21:23:37 »
Misschien heb je er gewoon plezier in om dit uit te zoeken, maar anderen hebben dat ook al gedaan en bieden een werkende oplossing aan tegen een vriendenprijs. Zoek eens naar Arcomora of Mardec. Niet bedoelt om je iets op te dringen, gewoon een tip.

Tom
Plannen voor baan tijdperk III naar DB-voorbeeld. Roco Multi-maus/Maus2/MausR3, Z21, Mardec, Koploper of Rocrail?

Hans1963

  • Offline Offline
  • Berichten: 309
  • Spoor 0, dat wordt wel wat!
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #5 Gepost op: 23 mei 2021, 23:42:04 »
Hallo naamgenoot,

bekijk onderstaand filmpje van Tom Kvichak eens.
dit is denk ik wat je bedoeld, de servo's aansturen met drukknop of schakelaar. (incl arduino code)

https://www.youtube.com/watch?v=EUd4Fqot1Mc


vr. groet,  Hans

bask185

  • Offline Offline
  • Berichten: 4068
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #6 Gepost op: 24 mei 2021, 08:36:09 »
Ronald, je kan idd tot 3 servo's aansluiten met knoppen op de arduino,
Nee, je kan tot wel 12 servo's aansturen met arduino's servo library, maar dan heb je geen genoeg ingangen meer voor alle schakelaars. Je hebt wel genoeg pinnen om op een Uno of Nano 10 servo's aan te sturen en om de schakelaars op aan te sluiten.


De knoppen moet ik die dan op de analoge kant van de arduino
Nee, maar het mag wel. De analoge pinnen kunnen ook als digitale pinnen fungeren. Je mag in principe elke pin gebruiken. Alleen A4 en A5 zijn nodig voor de PCA9685 zoal Paul opmerkte

aansluiten of op de PCA 9685?
Nee dit is niet mogelijk. De PCA9685 is alleen voor voor outputs zoals servomotors of leds bestemd.

Citaat
..maar anderen hebben dat ook al gedaan en bieden een werkende oplossing...
En precies daarom is de PCA een goede oplossing. Het aansluiten is makkelijk en adafruit heeft een goede library er voor geschreven.

Je hebt dan op een Arduino Uno nog 4 analoge ingangen over. Hier kun je tig schakelaars op aansluiten. Zie dit draadje: https://forum.beneluxspoor.net/index.php?topic=93603.msg3222130131#msg3222130131
Ja en nee. Dat hangt van je implentatie af. Sonnets schema is alleen bruikbaar voor moment schakelaars. Als je blijvende wipwap schakelaars wilt gebruiken kan je dat niet gebruiken. Je kan dus wel iets laten toggelen met een momentschakelaars, een push button oid. Wat je wel kan doen, is om de schakelaars te gaan multiplexen. Voor 12 schakelaars heb je dan 4 + 3 = 7 pinnen nodig. Maar persoonlijk vind ik dat moeilijk doen daar het simpelweg niet nodig is.

@Haes.
Nu je weet dat je tot 12 servo's op een arduino kan aansluiten. Heb je nu nog steeds behoefte om de PCA9685 te gebruiken? Het is geenzins een slechte keuze maar je moet even nagaan of je alle servo's op 1 centraal punt wilt aansluiten of dat je simpelweg meerdere arduino's gebruik. Ik heb namelijk nog nooit gezien dat iemand daadwerkelijk 16 servo's heeft aangesloten op 1 PCA voor praktisch gebruik.

Ik heb er thuis 1 gebruikt voor deze baan. Ik heb 7 wissels en ze liggen allemaal op elkaar gepropt. Ik heb dus nog 9 servo locaties beschikbaar. Achteraf gezien had ik de servo's ook direct met de nano kunnen aansturen.


Dan heb ik nog een vraagje. Is een schakelaar per wissel een vereiste? Je kan namelijk ook drukknopjes gebruiken om hele wisselstraten mee te leggen. Dan kan je met 1 knopje meerdere servo's tegelijk bedienen.  Je kan ook aan een NX manier van bediening denken waarbij je werkt met start en stop knopjes. En je kan ook seinen bijvoorbeeld automatisch op rood laten springen als een wissel verkeerd ligt. En je kan bijvoorbeeld ook nog iets doen met een bezetmelder die dan via de arduino een sein op rood kan zetten.

Voor een arduino Nano kan je dit base shield kopen waar je ook direct servo's op kan aansluiten. ( ff googlen op nano servo base oid)


We kunnen je nog beter advies geven als je je layout kan tonen met wissels en alle seinlocaties ed. Als je code vragen ben je bij mij igg bij het goede adres maar ik ben natuurlijk niet de enige  :P

Mvg,

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

haes

  • Offline Offline
  • Berichten: 825
  • Hellendoorn en NAM Schoonebeek in FiNe
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #7 Gepost op: 24 mei 2021, 09:17:34 »


Hierbij mijn modulaire opzet. A en b zijn uitrij vleugelseinen en de 8 wissels die alle met servo's bediend moeten gaan worden. Op de zijkanten van de modules zou ik graag knoppen hebben om de wissels mee te bedienen

Gr Hans
Hellendoorn station en Schoonebeek Olieverlading in FiNescale/Fremo N normen

bask185

  • Offline Offline
  • Berichten: 4068
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #8 Gepost op: 24 mei 2021, 12:06:04 »
Ik zou hier 2 arduino's gebruiken. Maar dat kan natuurlijk op meer dan 1 manier. De servo van module 1 zou ik met een verlengkabel doortrekken naar module 2. Module 2 en 3 krijgen dan elk hun eigen arduino. En wat ik hier dan gedaan heb, is dat ik module 2 en 3 heb verbonden via de Rx/Tx lijnen. Zo kunnen ze met elkaar informatie uitwisselen en in Arduino gaat dat heel makkelijk. Het schakelpaneel zou je dan alleen op module 2 aan kunnen sluiten. Dat is 1 manier. De andere manier is dat je je schakelpaneel naar beide bakken bekabeld. Maar het is lood om oud ijzer..



Wat ook van belang is, is hoe je je schakelpaneel voor ogen heb? Wil je een paneel(en) in je bakken bouwen? Of wil je een externe bouwen die je kan aansluiten met bijvoorbeeld een Rj45 of Rj12 kabeltje of zo'n veel-polige sub-D kabel?

En wil je ook nog ledjes in je schakelpaneel inbouwen.. niet omdat het moet maar omdat het kan  ;)

Mvg,

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

haes

  • Offline Offline
  • Berichten: 825
  • Hellendoorn en NAM Schoonebeek in FiNe
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #9 Gepost op: 24 mei 2021, 16:41:05 »
Ja dat zou zeker kunnen, maar ik wil geen bedieningspaneel voor de bakken. Ik wil slechts een schakelaar die de wissels schakelt(aan de zijkant van de bakken) Dus W 1 heeft een schakelaar en op de middenbak zijn er 4. Naast een arduino heb ik ook van DTS een analoge servo aansturing. Die werkt wel met schakelaars, dus waarschijnlijk ga ik die gebruiken, als het met de arduino niet lukt

Bedankt voor het meedenken
Groet, Hans
Hellendoorn station en Schoonebeek Olieverlading in FiNescale/Fremo N normen

spock

  • Offline Offline
  • Berichten: 653
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #10 Gepost op: 24 mei 2021, 17:24:39 »
Als je servo's met de PCA9685 wilt aansturen kun je de servo easing library gebruiken

https://github.com/ArminJo/ServoEasing

mvg spock

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #11 Gepost op: 24 mei 2021, 18:30:55 »
Als je servo's met een schakelaar wilt aansturen, kun je een aangepaste servotester gebruiken.
« Laatst bewerkt op: 24 mei 2021, 18:42:34 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

bask185

  • Offline Offline
  • Berichten: 4068
Re: Servo's aansturen met Arduino uno en PCA9685.
« Reactie #12 Gepost op: 24 mei 2021, 18:58:52 »
Citaat
Die werkt wel met schakelaars, dus waarschijnlijk ga ik die gebruiken, als het met de arduino niet lukt
Het zijn simpele programma's voor die arduino's. Stelt niet veel voor, kan ik ook zo voor je in elkaar flansen. Ik heb ook prima library gemaakt om servo's langzaam te laten bewegen.

Je kan om te beginnen deze sketch proberen.
#include <Servo.h>

//#define module2     // nu doen we module 2, als je module 3 wilt flashen, moet je de // tekens verplaatsen van 3 naar 2
#define module3

#if defined module2                                                           // deze lijsten worden gebruikt voor module 2
const int nServo = 4 ;                                                        // of hoeveel je er ook hebt.   
Servo point[nServo] ;                                                         // array met servo objecten
const int servoPin[nServo]          = { 3,4,5,6 } ;                           // pinnen voor de servo motors
const int inputPin[nServo]          = { A0, A1, A2, A3 } ;                    // pinnen voor de schakelaars
const int servoMinPositions[nServo] = {  80,  80,  80,  80 } ;                // mininum posities
const int servoMaxPositions[nServo] = { 100, 100, 100, 100 } ;                // maximum posities


#elif defined module3                                                         // deze lijsten worden gebruikt voor module 3
const int nServo = 6 ;                                                        // of hoeveel je er ook hebt.
Servo point[nServo] ;                                                         // array met servo objecten
const int servoPin[nServo]          = { 3,4,5,6,7,8 } ;                       // pinnen voor de servo motors
const int inputPin[nServo]          = { A0, A1, A2, A3, A4, A5 } ;            // pinnen voor de schakelaars
const int servoMinPositions[nServo] = {  80,  80,  80,  80,  80,  80 } ;      // mininum posities
const int servoMaxPositions[nServo] = { 100, 100, 100, 100, 100, 100 } ;      // maximum posities
#endif


void setup()
{
    for( int i ; i < nServo ; i ++ )
    {
        pinMode( inputPin[i], INPUT_PULLUP ) ;                                // initialiseer input pinnen
        point[i].attach( servoPin[i] ) ;                                      // initialiseer servomotors
    }
}

void loop()
{
    for( int i ; i < nServo ; i ++ )
    {
        byte minPos = servoMinPositions[ i ] ;
        byte maxPos = servoMaxPositions[ i ] ;
       
        if( digitalRead( inputPin[i] ) ) point[i].write( minPos ) ;           // input hoog -> servo min positie
        else                             point[i].write( maxPos ) ;           // input laag -> servo max positie
    }

    delay( 100 );
}

Het is geen eindproduct, maar deze sketch heeft geen externe libraries nodig en werkt verder 100%. Deze code kan je zo in de arduino IDE kopieren plakken en dan kan je met schakelaars servo's aansturen. Als je dan de posities of pinnen wilt aanpassen, hoef je alleen maar een getalletje in de lijsten aan te passen. De schakelaars kan je tussen input pin en ground verbinden. Je hebt geen extra weerstanden oid nodig.

Deze code is tevens geschikt voor zowel module 2 als module 3.

Mvg,

Bas

Train-Science.com
Train-Science github
It ain't rocket science ;-)