Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Toon hier je nieuwe (model-) spooraanwinst(en)... door StefanNL_Plays
Vandaag om 09:21:39
Lima IRM pimpen door 008200
Vandaag om 09:21:16
Piko 2025 door Benelux795
Vandaag om 08:44:21
Onlangs gespot - gefotografeerd, de foto's door R1954
Vandaag om 08:40:10
Roco Plan T door grossraumwagen
Vandaag om 08:33:30
Bahnstrecke 5867 door Jelmer
Vandaag om 08:33:24
Yet Another Servo Decoder door AP3737
Vandaag om 08:31:10
Rhätische Bahn in 0m; van Filisur naar Stuls door Jelmer
Vandaag om 08:22:47
365 "Het is weekend foto's" door Wim Vink
Vandaag om 08:15:28
Ronald doet de Fork Challenge! door Jelmer
Vandaag om 08:13:49
20 jaar BNLS door prutser
Vandaag om 08:08:54
Nederland jaren 50 op basis van mijn roots door spoorijzer
Vandaag om 07:47:50
Piko 51916 NS 1100 blauw botsneus door Quinzeedied
08 July 2025, 23:17:56
Omnummeren Piko 2901 (BR 186) door Traxx
08 July 2025, 23:15:21
Sfeer op je modelbaan door sneek
08 July 2025, 23:05:29
Interessante youtube filmpjes voor het BNLS Kanaal? door Longtall203
08 July 2025, 22:11:33
Philotrain 3737 rijeigenschappen verbeteren door Mar-Cas
08 July 2025, 21:48:07
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door Rick
08 July 2025, 20:57:31
Een nieuw begin door bask185
08 July 2025, 20:38:46
BR-18.6 Schaal-0. door FritsT
08 July 2025, 20:06:47
Br 38 Piko Superen. door Vroeger
08 July 2025, 18:46:10
Roco 290 digtaliseren door Herb73
08 July 2025, 18:20:20
betreft de YD7001 door Ben
08 July 2025, 18:17:43
Artitec DE2 instellingen in Lokpilot 3 .5 MTC decoder door bellejt
08 July 2025, 17:43:37
Mijn eerste H0-modeltreinbaan in aanbouw door RetroJack
08 July 2025, 17:20:07
S88n bus splitsen door Eric v C
08 July 2025, 17:16:19
De Projecten van RetroJack door RetroJack
08 July 2025, 16:43:45
US diorama in H0 door Wim Vink
08 July 2025, 16:39:08
Roco gebogen wissels 2,5 mm door Albert de Heer
08 July 2025, 16:20:42
Toon hier je pas gereed gekomen (model-)spoorbouwsels ... door Gert Arkema
08 July 2025, 15:01:14
  

Auteur Topic: Arduino hulp gezocht  (gelezen 1457 keer)

Hans Mol

  • Offline Offline
  • Berichten: 259
    • Echaztalbahn 2.0
Arduino hulp gezocht
« Gepost op: 30 July 2020, 18:45:40 »
Beste spoorliefhebbers,

Momenteel ben ik me aan het verdiepen in het programmeren van een Stepper middels Arduino aansturing.
Ik heb nu een sketch gemaakt waarbij de stepper door 1 druk op de knop 45 graden vooruit draait en na een 2e druk op de knop 45 graden terug draait.
Op zich werkt dit wel zij het niet dat de stepper, na opnieuw opstarten, vreemd gedrag vertoond.
In plaats van dat hij 45 graden draait bij zijn eerste loop draait hij m.i. maar de helft hiervan. Pas hierna draait hij de aangegeven 45 graden.

Kent iemand de reden van dit gedrag en zo ja hoe kan ik dit voorkomen.
De sketch is bedoeld voor het aansturen van een draaischijf. Door die halve verplaatsing zal de draaischijf nooit goed werken.

Hieronder heb ik de sketch even geplakt.
Ik hoop dat hier op het forum iemand is die mij hierin kan helpen.

Alvast bedankt,

Hans Mol

// TEST steppermotor met 1 button voor- en achteruit
//****************************************************************************************

#include <AccelStepper.h>                         // Gebruikt AccelStepper bibliotheek

//constanten
#define motorPin1  6                              // IN1 pin op de ULN2003A driver
#define motorPin2  7                              // IN2 pin op de ULN2003A driver
#define motorPin3  8                              // IN3 pin op de ULN2003A driver
#define motorPin4  9                              // IN4 pin op de ULN2003A driver

const int buttonPin = 10;                         // drukknop1 pin 10
                           
//variabelen
int buttonState = LOW;                            // waarde van de drukknop1

int stepsPerRevolution = 64;                      // stappen per omwenteling
float degreePerRevolution = 5.625;                // graden per stap

int teller = 0;

/*
* We maken gebruik van een 28BYJ-48 motor. Dit is een halfwire stepper met 4 pins.
* Hierbij dient de volgorde van de pins gewijzigd te worden in 1,3,2,4.
*/
AccelStepper stepper(AccelStepper::HALF4WIRE, motorPin1, motorPin3, motorPin2, motorPin4);

//****************************************************************************************

void setup() {
 
  stepper.setMaxSpeed(800.0);                     // stel de maximale motorsnelheid in
  stepper.setAcceleration(100.0);                 // stel de acceleratie in
  stepper.setSpeed(150);                          // stel de huidige snelheid in
 
  pinMode(buttonPin, INPUT);                      // stel de switch pin1 in als invoer 
}

//****************************************************************************************

void loop() {
 buttonState = digitalRead(buttonPin);
 if (buttonState == HIGH)
 {
   teller++;
//   delay(500);
 }
     if (teller == 1)
       stepper.moveTo(degToSteps(45));
       stepper.run(); 
//       delay(10000);
        if (teller == 2) {
       stepper.moveTo(degToSteps(-45));
       stepper.run();
//       delay(10000);
        } else {
       if (teller > 2)
       teller = 0;
   }
 }

//****************************************************************************************

/*
* Rekent het aantal graden om naar het aantal stappen
* 28BYJ-48 motor heeft 5,625 graden per stap
* 360 graden / 5,625 = 64 stappen per omwenteling
* Voorbeeld van degToSteps(45):
* (64 / 5,625) * 45 = 512 stappen
*/

float degToSteps(float deg) {
  return (stepsPerRevolution / degreePerRevolution) * deg;
}
« Laatst bewerkt op: 30 July 2020, 19:31:31 door Hans Mol »

coldforged

  • Offline Offline
  • Berichten: 138
Re: Arduino hulp gezocht
« Reactie #1 Gepost op: 30 July 2020, 19:09:51 »
Hoi,

waarschijnlijk dat deze link je verder helpt er mee:
http://42bots.com/tutorials/28byj-48-stepper-motor-with-uln2003-driver-and-arduino-uno/

grtz
Martin

meino

  • Offline Offline
  • Berichten: 2317
Re: Arduino hulp gezocht
« Reactie #2 Gepost op: 30 July 2020, 19:12:31 »

ik heb een aantal opmerkingen.
Ten eerste houd je geen rekening met de bounce die kan optreden bij een schakelaar. Dat houdt in, dat op het moment van sluiten (of openen) van een schakelaar er vaak een korte periode is dat er door de schakelaar een serie open- en sluitmomenten zijn. Ik gebruik altijd een timer en pas als de situatie gedurende zeg 10-15ms constant is, besluit ik om daar op te reageren. De Arduino is snel genoeg om op de korte pulsen van de bounce te reageren, dus het kan goed zijn dat hij meerder button pushes ziet.

Een tweede punt is, dat je in de loop functie continue de staat van de button uitleest, dat kan goed gaan als je zo snel bent dat tijdens de volgende iteratie je de buttion al hebt losgelaten. Die kans is uiterst klein. Dus de schets zal continue de stepper laten schakelen tussen 45 en -45 graden. Dus je zult pas naar de andere richting kunnen gaan als de button ook een tijdje af is geweest.

Laatste punt is, je gebruikte stepper kent niet een geheel aantal stapjes per omwenteling. Je lost dat op door met floats te werken, maar wat ik mij herinner van de Accelstepper is dat die met gehele getallen werkt, dus je gaat afrondings verschillen krijgen. In dit voorbeeld heeft dat nog geen grote invloed omdat de afrondingsverschillen naar beide kanten hetzelfde zijn, dus elkaar opheffen. Maar dat zal niet het geval zijn als je met verschillende hoeken gaat werken en de afrondingsverschillen op verschillende manieren kunnen worden opgeteld. Beter is het om een tabel met positities te gebruiken en zorgen dat je nooit deze stepper meer dan 360graden te laten draaien, maar altijd terug te gaan.

Groet Meino

ikbenerevenniet

  • Offline Offline
  • Berichten: 379
Re: Arduino hulp gezocht
« Reactie #3 Gepost op: 30 July 2020, 19:14:44 »
Wil je je code even tussen code-tags zetten? (de knop met het hekje, #) Nu wordt de layout van de hele pagina uit elkaar gedrukt... En: ik denk dat "degreePerRevolution" eigenlijk "degreePerStep" zou moeten heten.

Hans Mol

  • Offline Offline
  • Berichten: 259
    • Echaztalbahn 2.0
Re: Arduino hulp gezocht
« Reactie #4 Gepost op: 30 July 2020, 19:36:58 »
Beste Meino en Erik,

Alvast bedankt voor jullie tips. Hier ga ik mee aan de slag.
Ik heb de code nu tussen ## staan. Dat is inderdaad beter. (wist niet dat dit zo werkte)

Hans

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Arduino hulp gezocht
« Reactie #5 Gepost op: 30 July 2020, 20:59:57 »
Waarom gebruik je zowel #define als const om een I/Opin te declareren? #define wordt afgeraden.

In het programma noemen ze dit een halfwire stepper, van een halfwire heb ik nog nooit gehoord, wel van half step en full step.

Ze noemen 64 stappen/omwenteling (van 360 graden), dan is 45 graden (=360/8) toch ook gewoon 64/8 = 8 stappen? Hoe komen ze dan bij 512 stappen??

Dit programma kijkt of zoekt niet naar een vaste startpositie, het laat de motor draaien vanuit de stand waar die op dat moment staat. Dat hoeft geen probleem te zijn, maar voor een draaischijf of traverse gaat het niet goed werken.

Er zijn ook stepper motor drivers die met 2 I/O pinnen aangestuurd worden, met een A3967 chip ipv ULN2003; 1 pin voor richting (H = linksom, L = rechtsom) en 1 klok pin (iedere L--->H overgang verdraait de motor 1 stap). Dat is eenvoudiger te programmeren, zonder externe library.


 
« Laatst bewerkt op: 30 July 2020, 21:02:34 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

Hans Mol

  • Offline Offline
  • Berichten: 259
    • Echaztalbahn 2.0
Re: Arduino hulp gezocht
« Reactie #6 Gepost op: 30 July 2020, 21:15:52 »
Beste 72sonett

Wat betreft Arduino ben ik een absolute leek. Hetgeen ik nu heb is gemaakt op basis wat ik op internet hierover kan vinden. Daarbij heb ik sketches over push buttons en steppermotor gecombineerd. Voornamelijk komen deze van Bas on Tech.
Wat ik eigenlijk wil is met een Uno een steppermotortje met 4 knoppen een zelfgemaakte draaischijf in 4 posities plaatsen

Druk op knop 1: xxgraden rechts
Druk op knop 2. xxgraden links
Druk op knop 3. 180 graden rechts
Druk op knop 4. 180 graden terug

Helaas bestaan er geen kant en klare sketches hiervoor. Dus maar zelf aan de slag met de info die beschikbaar is.
Je begrijpt dat ik op jouw vragen geen antwoord heb. Daarvoor ontbreekt simpelweg de kennis bij mij. Maar al doende leert men😄

meino

  • Offline Offline
  • Berichten: 2317
Re: Arduino hulp gezocht
« Reactie #7 Gepost op: 30 July 2020, 23:04:49 »
Hans

ik heb nog een paar opmerkingen. Ik weet niet waar je het vandaan hebt dat deze stepper (28BYJ-48) 64 stapjes heeft voor een omwenteling. Volgens de informatie die ik heb heeft de stepper zelf maar 32 stapjes per omwenteling. Echter er zit een vertragingsbakje op die ongeveer een vertraging heeft van 64:1. Ik zeg ongeveer 64:1, omdat het werkelijk 63.68395 : 1 is. Daardoor zijn er 32 x 63.68395 = 2037.8864 stapjes nodig om een volledige rotatie van 360 graden te maken. Iedereen rond dat af tot 2038 stappen voor een 360 graden rotatie. Maar door dat kleine afrondingsverschil kun je niet door gaan met roteren, omdat bij iedere rotatie van 2038 stappen de afwijking groter wordt. Daar moet je dus rekening mee houden in je positionering.
Verder een stappenmotor heeft geen vaste locatie, als hij stroomloos is, dan is hij vrij om te bewegen, bij deze stappenmotor zal de tandwielkast van de vertraging de stand van de motor proberen te blokkeren, maar hij kan nog steeds bewegen, dus bij inschakelen is er geen garantie ddat hij in de stand staat die je verwacht. Dus moet je een soort van calibratie hebben om de stappenmotor weer in een bekende positie te krijgen.

Ik heb een Peco draaischijf met een stappenmotor en een Arduino geautomatiseerd, maar dat is met een NEMA17 motor en een magneet met hallsensor op de draaischijf. Vraagje wat is de grote van de draaischijf, H0 -N. Ik werk in H0 en wilde oorspronkelijk ook dit stappenmotortje gebruiken, maar dat was niet sterk genoeg voor een H0 draaischijf, vandaar de NEMA17 motor met een TMC2130 driver board.
Overigens kun je wel mijn schets krijgen, maar die werkt wel via DCC commando's.

Groet Meino
« Laatst bewerkt op: 30 July 2020, 23:37:03 door meino »

coldforged

  • Offline Offline
  • Berichten: 138
Re: Arduino hulp gezocht
« Reactie #8 Gepost op: 30 July 2020, 23:17:20 »
@meino: ik heb best interesse in die source aangezien dat met dcc gebeurd

meino

  • Offline Offline
  • Berichten: 2317
Re: Arduino hulp gezocht
« Reactie #9 Gepost op: 30 July 2020, 23:34:52 »
Stuur me maar een PB met je mailadres.

Groet Meino

Hans Mol

  • Offline Offline
  • Berichten: 259
    • Echaztalbahn 2.0
Re: Arduino hulp gezocht
« Reactie #10 Gepost op: 31 July 2020, 06:03:31 »
Hoi Meino,

Bedankt voor je reactie echter ik denk dat het aantal stapjes (64) per omwenteling wel klopt.
In de sketch geef ik het aantal graden in van bijv. 180 en dat doet hij dan ook. 
Het klopt wel dat je met een afwijking kan komen te zitten wanneer je verder gaat dan 360 graden. Maar de bedoeling is om of 45 grd of 180 grd te draaien en daarna altijd terug. (In de praktijk ofwel afslag naar locloods ofwel de loc draaien. Dan heft deze het afrondingsverschil weer op.

Ik rijd H0 maar heb, om redenen van ruimtegebrek, zelf een draaischijfje met een diam. van 14 cm gebouwd.  Deze steppenmotor kan deze kleine draaischijf wel aan. Ik rijd overigs alleen met kleine locs.

Helaas kan ik dus niets met jouw sketch.
Maar toch bedankt voor je aanbod.

Inmiddels heb ik de sketch zo ver dat het probleem bij de start (het slechts voor de helft draaien van het aantal opgegeven graden heb opgelost.  Ik vermoed dat dit kwam door de accelstepper.h. Door nu eerst een opdracht te geven om de eerste stap 0 graden te draaien en pas verder in de loop de opdracht te geven voor het gewenste aantal graden reageert de steppermotor nu goed. 
Ik zal, als ik wat verder ben, de actuele sketch plaatsen.

Ik kom wat verder maar ik ben er nog niet.

Groeten

Hans