Vraag over de stappenmotor.

Arduino specifieke Software
Berichten: 2
Geregistreerd: 07 Jan 2024, 20:44

Vraag over de stappenmotor.

Berichtdoor f.tempels@gmail.com » 07 Jan 2024, 21:02

Goede avond,

Ik wil een stappenmotor met gebruik van "accelstepper.h" een aantal keer achter elkaar een ''loop'' laten doorlopen met een tijdsvertraging tussen de bewegingen in. Bv draai 360 graden, pauze 120 seconden dan draai weer verder 180 graden enz.

Ook zou ik graag de steppermotor tijdens de pauze spanningsloos willen maken in de tussenliggend pauze dit om het verbruik van de motor te beperken.

Wie kan mij helpen?

De sketch die ik gebruik is deze: (functioneert netjes, versnellen, vertragen, maakt juist aantal omwentelingen, maar om hem na de 1e beweging verder te laten draaien moet ik een loop kunnen maken......ik heb geen idee hoe dit zou moeten.
Ik ben beslist geen deskundig op dit gebied, probeer e.e.a. op internet te vinden en dan te combineren tot ik een werkende sketch heb.

Sketch:
*/

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

#define motorPin1 8 // IN1 pin op de ULN2003A driver
#define motorPin2 9 // IN2 pin op de ULN2003A driver
#define motorPin3 10 // IN3 pin op de ULN2003A driver
#define motorPin4 11 // IN4 pin op de ULN2003A driver


/*
* AccelStepper::FULL2WIRE (2) betekent een 2 wire stepper (2 pins nodig).
* AccelStepper::FULL3WIRE (3) betekent een 3 wire stepper, zoals een harde schijf motor (3 pins nodig).
* AccelStepper::FULL4WIRE (4) betekent een 4 wire stepper (4 pins nodig).
* AccelStepper::HALF3WIRE (6) betekent een 3 wire half stepper, zoals een harde schijf motor (3 pins nodig)
* AccelStepper::HALF4WIRE (8) betekent een 4 wire half stepper (4 pins nodig)
*
* Standaard gebruikt AccelStepper de AccelStepper::FULL4WIRE (4 pins nodig).
*/
AccelStepper stepper(AccelStepper::HALF4WIRE, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
Serial.begin(9600); // stel de seriële monitor in

stepper.setMaxSpeed(1000.0); // stel de maximale motorsnelheid in
stepper.setAcceleration(100.0); // stel de acceleratie in
stepper.setSpeed(200); // stel de huidige snelheid in
stepper.moveTo(400); // geef motor instructie om de motor 360 graden vooruit te bewegen


}

void loop() {

stepper.run();


}

m.vr.gr Frank

Advertisement

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Vraag over de stappenmotor.

Berichtdoor shooter » 08 Jan 2024, 18:16

prima begin, als je in setup de positie 0 geeft en je aat dan naar 400 toe is prima, als je daar bent (zie hiervoor je accelstepper handleiding bijv met ISRUNNING en dan de volgende positie dus pos=-200 bijv. dan weer een RUN. en zo onder elkaar tot je hele programma gedaan is en daar kun je dan met bijv for next loop een aantal aanplakken etc. zo heb ik bijv 2 hijskranen op een schip staan die een lange pijp van het schip op de kant van de wal zetten.
even ter aanvulling wellicht
disableOutputs()
void AccelStepper::disableOutputs ( )
virtual

Disable motor pin outputs by setting them all LOW Depending on the design of your electronics this may turn off the power to the motor coils, saving power. This is useful to support Arduino low power modes: disable the outputs during sleep and then reenable with enableOutputs() before stepping again. If the enable Pin is defined, sets it to OUTPUT mode and clears the pin to disabled.

References setOutputPins().
maar dan moet er wel een rem op de hijsbeweging zitten dus dan moet je even opletten (als het geweicht van de lading meer is dan 500.000 newton
paul deelen
shooter@home.nl

Berichten: 80
Geregistreerd: 02 Nov 2022, 13:03

Re: Vraag over de stappenmotor.

Berichtdoor ThHe » 08 Jan 2024, 21:50

Hier een stukje code om een start te maken:
stepper.moveTo laten vervallen in de setup en een functie move toevoegen.
in de loop gaat de motor 360 graden wacht 120 sec en dan 180 graden en wacht 100 sec en vervolgens weer 360 graden enz..


Code: Alles selecteren
stepper.setSpeed(200); // stel de huidige snelheid in
// stepper.moveTo(400); // geef motor instructie om de motor 360 graden vooruit te bewegen
}

void loop() {

    move(400, 120); // move 360 graden en wait 120 sec
    move(200, 100); // move 180 graden en wait 100 sec
}

void move(long move, long delaySec)
{
    stepper.moveTo(move); // geef motor instructie om de motor te bewegen
    stepper.run();
    delay(delaySec * 1000);  // wait
}


Succes!!

Berichten: 2
Geregistreerd: 07 Jan 2024, 20:44

Re: Vraag over de stappenmotor.

Berichtdoor f.tempels@gmail.com » 08 Jan 2024, 22:21

Goedenavond,

ThHe, veel dank voor je reactie. Om de steppermotor een bepaalde beweging te laten maken en hem tijdelijk te pauzeren, dat lukt wel.
Ik wil echter de stappenmotor laten versnellen en vertragen. Het idee is om zonnepanelen (tijdsgestuurd) mee te laten draaien met de zon.
Omdat er massa achter zit, wil ik versnellen en vertragen; ook omdat het gewoon beter uit ziet.

Wat nu het belangrijkste is waar ik niet uit kom:

Ik wil een stappenmotor met gebruik van "accelstepper.h" een aantal keer achter elkaar een ''loop'' laten doorlopen met een tijdsvertraging tussen de bewegingen in. Bv draai 360 graden, pauze 120 seconden dan draai weer verder 180 graden enz.

Met de tot nu gekregen info kom ik er helaas nog niet uit.

m.vr.gr Frank

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Vraag over de stappenmotor.

Berichtdoor shooter » 09 Jan 2024, 16:52

helaas foutje de run moet heel vaak ofwel direct in de loop gezet worden. en ook geen delay of zo
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 81 gasten