1rotatie van stepper motor 28BYJ-48

Hardware die niet past in bovenstaande onderwerpen
Berichten: 5
Geregistreerd: 15 Aug 2018, 15:27

1rotatie van stepper motor 28BYJ-48

Berichtdoor diedhert » 22 Jun 2022, 19:58

Allen

Ik heb een stepper motor 28BYJ-48 verbonden aan een 'wiel' en wil die herhaaldelijk exact een halve toer laten draaien (elke 10 seconden).
Echter, als ik onderstaande code een aantal keer laat draaien, dan merk ik dat de stepper motor na een aantal omwentelingen een beetje voor of achter loopt. Met andere woorden, na een 20-tal omwentelingen start hij niet van zijn initiële startpositie.
Kan dat opgelost worden? Kan de motor geprogrammeerd worden dat hij teruggaat naar een exacte, welbepaalde positie?
Of is er iets in mijn code fout?

Code: Alles selecteren
#include <Stepper.h>
#define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)
Stepper stepper(STEPS, 8, 10, 9, 11);

int opentoe;

void setup() {
  // nothing to do
  Serial.begin(9600);
  stepper.setSpeed(10); // 1 rpm
    opentoe=0;
}
void loop() {
Serial.println(opentoe);
delay(10000);
stepper.step(1019);

}

Advertisement

Berichten: 117
Geregistreerd: 26 Aug 2015, 11:57

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor Frits1956 » 22 Jun 2022, 20:52

In fullstep mode zijn het 2048 stappen voor een volledige omwenteling. In de declaratie staat 2038 Wellicht is dat het probleem.
Daarbij kan een delay ook verstoring veroorzaken. Een delay vertelt de controller dat deze gedurende de delay helemaal niets mag doen. Als de stepperdriver nog bezig is kan ik me voorstellen dat deze ook niet meer de juiste info krijgt. Een timer is daar beter voor geschikt. Kijk maar eens naar het voorbeeld blink without delay.
Wat ook van invloed kan zijn is de voeding van de steppermotor. Heel veel problemen ontstaan door een niet goed afgestemde voeding. De spanning en het vermogen moeten goed bij de motor passen.
De variabele opentoe heeft de waarde 0 en wordt steeds op de serial monitor afgedrukt maar verandert niet. Een niet logische manier lijkt mij.
Als je steeds iets wil afdrukken hoeft dat geen variabele te zijn.
suc7 (altijd meer dan zes)

Berichten: 39
Geregistreerd: 04 Sep 2021, 08:31

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor RobGood » 23 Jun 2022, 07:43

Beste, ja die getallen kloppen niet 2048 voor een hele en 1024 voor een halve draai lijkt me. Verder bij aanzetten weet de stepper niet waar het is gebruikelijk is een home switch die eerst wordt gezocht om het beginpunt te bepalen. En slippen als je mechaniek te zwaar loopt kan ook nog een issue zijn. Jezelf aanleren nooit delays te gebruiken is zowiezo altijd een goed plan...Rob

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

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor shooter » 23 Jun 2022, 17:54

motortje is maar 5 volt en je kunt de getallen die frits en rob roepen gebruiken, verder kun je kijken welke ledjes aan zijn op de driver, en vooral goed kijken hoe dat moet met step zie de handleiding. Je kunt ook accelstepper gebruiken die is wat veelzijdiger.
verder een delay moet je echt niet gebruiken lees maar eens blink without delay.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 15 Aug 2018, 15:27

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor diedhert » 24 Jun 2022, 08:51

Allen

Dank voor de toelichtingen. Ik had op verschillende sites gevonden dat het 2038 steps waren, vandaar de fout.
De variabele opentoe komt omdat ik de code van een ander projectje had gebruikt, en ik liet die waarde op de seriele monitor afgedrukt om te kijken of hij de verschillende stappen die ik beoogde, wel doorliep.

Jullie opmerkingen over de delays begrijp ik niet echt.
Ik wil dat de steppermotor een halve toer draait, dan een halve minuut stil staat, en dan opnieuw een halve toer draait, een halve minuut stilstaat, etc... (dit moet dus in een loop komen).
Waarom is een delay dan niet goed? En welk beter commando/code zou ik dan moeten gebruiken om bijv. 30seconden te wachten of niets te doen?

Vriendelijke groeten
Diederik

Berichten: 5
Geregistreerd: 15 Aug 2018, 15:27

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor diedhert » 24 Jun 2022, 09:36

Ik heb ook nog een verdere vraag. Als ik de code ga uploaden, branden voortdurend 2 leds van de stepper motor (Led C en D). Als de motor draait, lichten de 4 leds op (A, B, C, D). Wat betekenen het oplichten van de LEDS (of anders, waarom branden twee leds als de motor niet draait)? Ik ben al een uurtje aan het zoeken maar ik vind daar geen informatie over.

Berichten: 39
Geregistreerd: 04 Sep 2021, 08:31

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor RobGood » 24 Jun 2022, 14:20

Hallo Diederik, Als de posities van het wiel voor en na een draai niet uitmaakt, als het maar een halve draai is, maakt het geheel makkelijker, het vaststellen van de beginpositie is dan niet nodig. Het gebruiken van delay is af te raden omdat dit alle processen in de loop stil zet. Is er maar 1 proces...zoals in veel arduino voorbeelden, dan kan het wel. Wel is dan de werking van eventueel gebruikte libraries (programma delen die iemand anders al heeft gemaakt) van belang, vaak moet dan in de loop een proces in deze library worden gestart, dan een delay in de loop maakt dat de library het niet doet. Maar ook zelf gemaakte extra processen, denk in jouw voorbeeld aan een drukknopje om de draai te starten, zullen niet werken als er een delay in de loop staat.
Dus echt moeten is in jouw voorbeeld niet nodig maar als je straks iets erbij wilt dan gaat het mis.
Beter maak je gebruik van timers, de meest simpele...

Unsigned int tijd;

Loop(){
If(millis()-tijd >30000){
tijd=millis();
Doeiets1xper30secondes();
}
Anderproces();
}

Die leds op dat driverboardje geven aan wanneer stroom op een spoel van het motertje staat. 4 spoelen dus 4 leds.
Stappenmotoren worden vaak ook gebruik als rem....dus op 1 of meerdere spoelen blijft stroom staan zodat de motor vast zit en niet kan bewegen. Hoe precies hangt af hoe die library dat doet, is gemaakt. Een betere library met meer functie ook om de spoelen uit te zetten is die eerder genoemde accelstepper... maar zelf dat stukje code maken om die stepper aan te sturen is heel goed te doen.





}

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

Re: 1rotatie van stepper motor 28BYJ-48

Berichtdoor shooter » 25 Jun 2022, 18:57

Rob wil je wel even uitleggen hoe stepper.step werkt, dat je die heel veel moet aanroepen en die beslist zelf wel of een stap gezet moet worden.
paul deelen
shooter@home.nl

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten