Doel:€250.00
Donaties:€0.00

Per saldo:€-250.00

Steun ons nu!

Laatst bijgewerkt
op 03-12-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

ByPass Junction, een Amerikaanse modelbaan in N door RBlok
Vandaag om 01:10:37
Mijn eerste H0-modeltreinbaan in aanbouw door Peter J K
Vandaag om 00:50:31
Diorama Memburg Klütjenfelderkai door neudalhausenstadbahn
Vandaag om 00:06:23
Rondom Charlois door Alewijn
05 December 2025, 23:46:51
Trix 22128 EETC 1200 - 175 Jaar spoorwegen DCC Sound - Decoder plots dood. door Bahn-AG
05 December 2025, 23:33:09
Modelspoorfabrikanten en hun "fantasiemodellen" door grossraumwagen
05 December 2025, 22:59:17
Wat voor trein is dit? Kan nergens een afbeelding vinden. door Jelmer
05 December 2025, 22:44:38
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
05 December 2025, 22:42:09
Altburg. een analoge, opklapbare Märklinbaan door Jelmer
05 December 2025, 22:38:53
Probleem bij inbouw decoder door Jelmer
05 December 2025, 22:36:32
Aachenau West door Jelmer
05 December 2025, 22:15:56
Piko 2025 door Menno de Vries
05 December 2025, 22:11:19
De bouw van een DE-3 als versterking voor de DE-5 door Rob Bennis
05 December 2025, 22:06:59
Toon hier je nieuwe (model-) spooraanwinst(en)... door Huup
05 December 2025, 21:57:25
Extra functie in Zimo MS450P22 door robschuurhof
05 December 2025, 20:42:59
Roco AC modellen door Martijn193
05 December 2025, 20:12:45
Ervaringen met bezorgdiensten (PostNL, DHL, etc) door René 4312
05 December 2025, 20:11:46
19 Toen door Benelux795
05 December 2025, 19:50:24
BNLS modulebaan: Werkspoor-Kathedraal 3.5 door NS264
05 December 2025, 19:06:01
Lodewickshaven door Ronald Halma
05 December 2025, 19:05:52
De bouw van een modulebaan met Nederlands landschap. door Anton Maris
05 December 2025, 19:04:26
Alternatieven voor de messing lagers van een Fleischmann rondmotor door Jelle1969
05 December 2025, 18:22:52
interface RocRail en fysiek rijweg gestuurd bedieningspaneel door Eric v C
05 December 2025, 17:20:36
Cornfield Junction / Boulder Crossing - Afsluiten Topic door Edsko Hekman
05 December 2025, 17:03:50
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door Daafs128
05 December 2025, 16:54:16
PB Models, ICR-rijtuigen door Arjan6511
05 December 2025, 16:45:51
Ombouw/Pimpen Bolle neuzen door bollen neus
05 December 2025, 16:05:11
Rondje door Lissabon met Lijn 28 door Basmans
05 December 2025, 15:57:41
Wat is dit voor component door bellejt
05 December 2025, 15:31:15
De overeenkomst tussen een Ovaalramer en een Motorpost. door Edwin2121992
05 December 2025, 14:59:26
  

Auteur Topic: Rolbrug aangestuurd m.b.v. Arduino  (gelezen 3307 keer)

Ajean

  • Offline Offline
  • Berichten: 89
Rolbrug aangestuurd m.b.v. Arduino
« Gepost op: 05 August 2013, 16:45:15 »
Hallo,

Ik ben van plan mijn rolbrug te laten bewegen m.b.v. een spindel die aangedreven wordt door een stappenmoter. De stappenmoter wordt aangestuurd door een arduino en steppermotor drivershield.
Voor de aansturing heb ik de volgende Arduino sketch gevonden:

//////////////////////////////////////////////////////////////////
//©2011 bildr
//Released under the MIT License - Please reuse change and share
//Using the easy stepper with your arduino
//use rotate and/or rotateDeg to controll stepper motor
//speed is any number from .01 -> 1 with 1 being fastest -
//Slower Speed == Stronger movement
/////////////////////////////////////////////////////////////////


#define DIR_PIN 2
#define STEP_PIN 3

void setup() {
  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);
}

void loop(){

  //rotate a specific number of degrees
  rotateDeg(360, 1);
  delay(1000);

  rotateDeg(-360, .1);  //reverse
  delay(1000);


  //rotate a specific number of microsteps (8 microsteps per step)
  //a 200 step stepper would take 1600 micro steps for one full revolution
  rotate(1600, .5);
  delay(1000);

  rotate(-1600, .25); //reverse
  delay(1000);
}



void rotate(int steps, float speed){
  //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);

  digitalWrite(DIR_PIN,dir);

  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
  }
}

void rotateDeg(float deg, float speed){
  //rotate a specific number of degrees (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (deg > 0)? HIGH:LOW;
  digitalWrite(DIR_PIN,dir);

  int steps = abs(deg)*(1/0.225);
  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
  }
}

Naar aanleiding van deze sketch heb ik een tweetal vragen:

1) De stappenmoter maak maar één omwenteling (360 graden). Dit is te weinig om de rolbrug de gewenste afstand te laten aflegen. Hoe kan ik de stappenmoter meer omwentelingen laten maken?

2) ik zou graag d.m.v. een knop de stappenmoter starten, na de gewenste omwentelingen laten stoppen en met een tweede druk op de knop de stappenmoter weer naar zijn beginpunt laten draaien.
Hoe definieer en programmeer ik deze functieknop?

Omdat mijn arduinokennis nog niet zo groot is is alle hulp welkom.

Alvast bedankt.

Ajean
< = >

Remunj

  • Offline Offline
  • Berichten: 8087
Re: Rolbrug aangestuurd m.b.v. Arduino
« Reactie #1 Gepost op: 05 August 2013, 18:48:57 »
Mijn programmeer ervaring is een beetje roestig maar zoals ik de listing nog begrijp geef je het aantal graden als parameter mee.
Nu staat er dus als voorbeeld 360 (1 omwenteling). Pas je dat aan naar bv 400 dan draait de srappenmoter 1 omwenteling + 40 graden extra.
Geen idee wat de maximumwaarde mag zijn. Daar zul je mee moeten spelen binnen wat de arduino aankan.

Over het toevoegen van de schakelaar denk ik dat je een extra ingang moeten definiëren die de schakelaar stand inleest.

Gr.
Eric
Gr.
Eric

Jeronimos

  • Now everything seems so faded and jaded.
  • Offline Offline
  • Berichten: 8626
Re: Rolbrug aangestuurd m.b.v. Arduino
« Reactie #2 Gepost op: 05 August 2013, 19:28:15 »
Ik geef toe dat ik niet echt programmeer erv. heb of elektro-(technisch) kennis, maar haal uit verschillende info op sites dat je een unipolaire als een bipolaire motor hebt en ook dat het aantal draden aan de motor uitmaakt. Misschien dat je daarover hier wat meer info plaatst.

Misschien vindt je hier  meer info. Staat volgns mij hetzelfde progje in wat jij ook plaatst.
Jeroen

Tukker

  • Offline Offline
  • Berichten: 11
    • BliksemSnel
Re: Rolbrug aangestuurd m.b.v. Arduino
« Reactie #3 Gepost op: 07 August 2013, 12:14:03 »
Hallo Ajean,

Antwoord op vraag 1:
kijk naar het aantal stappen wat je stappenmotor kan maken.
In deze sketch gaan ze er van uit dat je een 200 stap stappenmotor gebruikt, deze heeft 1600 stapjes nodig voor een volledige omwenteling.
Wil jij dus meerdere omwentelingen verhoog dan de 1600 met het aantal omwentelingen die je nodig bent.

Hieronder de sketch met 2 knoppen er in.
Ik heb het graden gedeelte weg gelaten en alleen het aantal stappen voor rotatie er in gelaten. Hier heb je lijkt mij voldoende aan.

#define DIR_PIN 2
#define STEP_PIN 3
const int buttonLinks = 6;
const int buttonRechts = 7;
int statusRechts = 0;
int statusLinks = 0;


void setup() {
  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);
  pinmode(buttonLinks, INPUT);
  pinmode(buttonRechts, INPUT);
}

void loop(){
  // status van de knoppen
  statusRechts = digitalRead(buttonRechts);
  statusLinks = digitalRead(buttonLinks);
  //rotate a specific number of microsteps (8 microsteps per step)
  //a 200 step stepper would take 1600 micro steps for one full revolution
  if (statusLinks == HIGH && statusRechts == LOW) // Beide knoppen bekijken op waarde, bij per ongeluk 2 knoppen indrukken mag er niets gebeuren!!
  {
    rotate(1600, .5);
    delay(1000);
  }
  if (statusLinks == LOW && statusRechts == HIGH) // Beide knoppen bekijken op waarde, bij per ongeluk 2 knoppen indrukken mag er niets gebeuren!!
  {
    rotate(-1600, .5); //reverse
    delay(1000);
  }
}

void rotate(int steps, float speed){
  //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);

  digitalWrite(DIR_PIN,dir);

  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(usDelay);
  }
}

Groetjes Tukker

Een dag niet gehobbyd is een dag niet geleefd!

Ajean

  • Offline Offline
  • Berichten: 89
Re: Rolbrug aangestuurd m.b.v. Arduino
« Reactie #4 Gepost op: 07 August 2013, 15:00:41 »
Eric, Jeroen en Tukker,

Hartelijk dank voor jullie reactie's. Ik kan nu weer verder.

Adri
< = >