stappenmotor aansturen vanuit C

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

Plaats reactie
trix
Berichten: 30
Lid geworden op: 06 jun 2007 19:36
Locatie: oss

stappenmotor aansturen vanuit C

Bericht door trix »

een goedendag,
ik ben bezig met het aansturen van een stappen motor (nema 34 met een DM556).
en dit doe ik vanuit een AVR geprogrameerd in C.

niet zo heel belangrijk, het gaat mij meer hoe je dit het best electrisch aanstuurt.
je stuurt pulsen, nu heb ik het zo dat de "duty cycle" altijd 50% is, ongeacht de freq.
is dit goed, of is het beter om een vaste puls lengte te gebruiken en dus de pauzes tussen deze pulsen te vergroten wanneer de snelheid moet afnemen ?

ik ben nu met het accelereren en deccelereren bezig, wellicht iemand een goede tip.
eigenwijs is ook wijs
Gebruikersavatar
DaBit
Donateur
Berichten: 11014
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: stappenmotor aansturen vanuit C

Bericht door DaBit »

Mag allebei, de drive reageert toch op de flank van de puls. Het is voornamelijk zaak om de puls niet korter te maken dan wat de datasheet van de drive zegt.

Acceleratie/deceleratie: er is een maximum snelheid die je ineens mag doen vanaf 0, maar dat is laag (staat in de datasheet van de motor als het goed is). In de praktijk moet je dus de snelheid opvoeren vanaf 0 naar de gewenste over een bepaalde tijd en vice versa. De stijlheid van die snelheidstoename is je acceleratie.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
trix
Berichten: 30
Lid geworden op: 06 jun 2007 19:36
Locatie: oss

Re: stappenmotor aansturen vanuit C

Bericht door trix »

1e punt is duidelijk, bedankt daar voor.

het principe van acc & dec ken ik wel, maar hoe giet je dat in een C programma ???????????
eigenwijs is ook wijs
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: stappenmotor aansturen vanuit C

Bericht door Kjelt »

Wat is je ingangs protocol ?
Eerst maximale versnelling bepalen en daar flink onder gaan zitten, dat is dan max pulsen per seconde, die van de driver zijn theoretisch met jouw systeem wil je de echte max versnelling bepalen.
Als je weet waar je met de motorpositie bent en weet waar je naartoe gaat dan kun je toch uitrekenen hoeveel pulsen nodig zijn? Als je ook nog een tijdstip voor die bepaalde afstand meegeeft kun je uitrekenen welkesnelheid je nodig hebt, de bijbehorende versnelling en vertraging om goed uit te komen en evt aantal voorberekende lookup tabellen maken met bepaalde versnellingen.
trix
Berichten: 30
Lid geworden op: 06 jun 2007 19:36
Locatie: oss

Re: stappenmotor aansturen vanuit C

Bericht door trix »

look up tabbelen is inderdaad een optie.
ik ben er net mee begonnen om de acc. & dec. te programeren. je hebt een hoop variabelen.
het is voor het sturen van een as met een begin en een eind pos. (dus geen motor die een const. toerental draait).
je hebt b.v. de nom. snelheid, en hoever voor de eind pos. begin ik met decc. (wat weer afhankelijk is van de nom. snelheid)
je hebt decc. vanuit software gestuurde beweging (dan weet je de eind pos.) en decc. vanuit de handbediening (je weet dan alleen wanneer je de knop los laat, en dan ga je pas decc.).

maar van 1 ding ben ik overtuigd, ik ben niet de eerste die dit gaat doen 8) ik hoop ergens een goed voorbeeld in C te vinden en het liefst geprogrameerd op een AVR Atmega 128.
eigenwijs is ook wijs
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: stappenmotor aansturen vanuit C

Bericht door Kjelt »

Dan zou ik voor enkele afstanden een LUT maken.
Zit je tussen twee entries dan neem je de kortere en verleng je het aantal pulsen als je op de constante snelheid zit.
Entries zijn dan:
- Afstand
- Acceleratie is # pulsen in zeer kort tijdbestand kun je door bv een timer peripheral uit laten voeren.
- constante snelheid houden is # pulsen / tijdseenheid gedurende bepaalde tijd
- Decceleratie is afbouwen van # pulsen tot 0 gedurende een bepaalde tijdseenheid.
trix
Berichten: 30
Lid geworden op: 06 jun 2007 19:36
Locatie: oss

Re: stappenmotor aansturen vanuit C

Bericht door trix »

LUT is dan een loock up tabel, ga er eens over nadenken...bedankt.
eigenwijs is ook wijs
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: stappenmotor aansturen vanuit C

Bericht door Kjelt »

Ik heb het nog niet gedaan maar zo zou ik het doen.
De LUT is dan speciaal voor dat systeem.

Als je servos zou hebben kon je het met een drievoudige PID regeling doen maar dat is een heel stuk complexer en je hebt geen servos.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: stappenmotor aansturen vanuit C

Bericht door hugo stoutjesdijk »

Het lijkt me dat daar toch meer dan genoeg over te vinden is.
1e hit: 'stepper acceleration'
http://www.ti.com/lit/an/slyt482/slyt482.pdf
2e: https://www.instructables.com/id/Step-M ... of-Stroke/
en de rest geloof ik wel.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: stappenmotor aansturen vanuit C

Bericht door Kjelt »

hugo stoutjesdijk schreef: 06 sep 2019 19:27 2e: https://www.instructables.com/id/Step-M ... of-Stroke/
en de rest geloof ik wel.
Ik heb er nooit op gezocht maar wel eens over nagedacht. Maar die 2e ahum.
Zo wil je het echt niet doen iedere pin met een GPIO hoog en na een delay weer laag trekken.
Daar heb je de timer peripherals voor die je gewoon verteld hoeveel pulsjes en welke frequentie en PWM er uit moeten komen rollen 8)
Maar goed als je een bare bone microcontroller hebt kun je inderdaad alleen bitbangen.
Firehunter
Donateur
Berichten: 340
Lid geworden op: 30 aug 2012 20:03
Locatie: Oost-Groningen
Contacteer:

Re: stappenmotor aansturen vanuit C

Bericht door Firehunter »

Je zou eens naar de AccelStepper library voor Arduino kunnen kijken. Daar zit accel/decel in.

https://www.airspayce.com/mikem/arduino/AccelStepper/
Gebruikersavatar
Storm100210
Berichten: 78
Lid geworden op: 29 mar 2013 16:55
Locatie: Berkel en Rodenrijs

Re: stappenmotor aansturen vanuit C

Bericht door Storm100210 »

Je kan natuurlijk ook in de source van Marlin kijken dat is open source en alles wat je nodig hebt zit daar in en in ook nog voor de Atmega geschreven.
hfjbuis
Donateur
Berichten: 3056
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: stappenmotor aansturen vanuit C

Bericht door hfjbuis »

Storm100210 schreef: 07 sep 2019 07:55 Je kan natuurlijk ook in de source van Marlin kijken dat is open source en alles wat je nodig hebt zit daar in en in ook nog voor de Atmega geschreven.
Marlin en vele anderen komen in de basis allemaal van GRBL. Dat is een knap programma voor de arduino uno dat m.b.v. timers een keurige jitter vrije acceleratie en deceleratie doet. De code laat zich met arduino IDE compileren, maar ook in atmel studio.
Daarvoor kun je de make file in een project omzetten via tools|create project from makefile. Daarna
- Bij Build het vinkje "use external makefile" weghalen
- voeg in de Toolchain|General|TargetDevice aan de regel -mmcu=atmega328 -B "$(PackRepoDir)\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega328" voor het instellen van de kloksnelheid deze regel toe: - "-DF_CPU=16000000" toe en je kunt debuggen en compileren in atmel studio.
In de directory grbl vind je allerlei bestanden (bibliotheken) waarvan de planner, motion control en stepper de afloop van de moves bepalen.
Er is ook een versie voor de arduino mega 2560
Plaats reactie