1 van 2

vergelijking

Geplaatst: za 30 dec 2023, 18:50
door trix
hallo, ik weet niet of dit de juiste plek is voor mijn vraag, anders verneem ik het wel :D

ik ben bezig een micro controller te programmeren die een stappen motor aanstuurt, en wel met:
accelereren -> constante snelheid -> deccelereren.
bij dat acc.& decc. loop ik vast.

die stappen motor stuur ik aan met pulsen (stapjes) 1000 pulsen = 100 mm, en die moet ik in 1 sec afleggen (X-as).
1 sec. = elke millisec. een puls (stapje) = 1000 Hz (Y-as).
eerst een plaatje voor de beeldvorming:
Afbeelding
ik krijg op een input pulsen binnen afkomstig v/d stappen motor die tel ik: 1 t/m 1000 ( = 100 mm)
aan de hand van die pulsen ga ik de snelheid v/d zelfde stappen motor regelen,....in Hertz.

dus je zou zeggen y = x
alleen gaat dit niet omdat de acc. dan veel langer duurt dan 1 sec. omdat:
puls 1 = dan 1 Hz ---> 1 sec
puls 2 = dan 2 Hz ---> 0,5 sec.
puls 3 = dan 3 Hz---> 0,33 sec.
enz...enz.
die tijden opgeteld tot je aan de 1000 pulsen bent is natuurlijk veel meer dan 1 sec.
dus ik moet een andere vergelijking hebben......maar ik weet niet goed hoe dit aan te pakken :?:

ik hoop dat iemand hier dit wel weet,
alvast bedankt voor de input.

Re: vergelijking

Geplaatst: za 30 dec 2023, 19:00
door Xilvo
Het is me nog niet helemaal duidelijk wat de bedoeling is.
Je wil versnellen naar een eindsnelheid. Hoe groot is die snelheid? 100 mm/s?
Hoe lang moet die versnelling duren?
Welke weg wil je afgelegd hebben tijdens die versnelling?

Misschien zitten daar strijdige eisen tussen.

Re: vergelijking

Geplaatst: za 30 dec 2023, 20:38
door trix
Xilvo schreef: za 30 dec 2023, 19:00 Het is me nog niet helemaal duidelijk wat de bedoeling is.
Je wil versnellen naar een eindsnelheid. Hoe groot is die snelheid? 100 mm/s?
inderdaad 100 mm/sec. dit komt overeen met 1000 pulsen (stapjes) per sec. (= 1000 Hz)
Hoe lang moet die versnelling duren?
1 sec.
Welke weg wil je afgelegd hebben tijdens die versnelling?
1000 pulsen (stapjes) dit komt overeen met 100 mm.
Misschien zitten daar strijdige eisen tussen.
ik zal in de tekening nog wat aanpassingen doen.
Afbeelding

Re: vergelijking

Geplaatst: za 30 dec 2023, 20:45
door Xilvo
Die eisen zijn inderdaad strijdig.
Je wil tijdens de 1 s durende versnelling dezelfde weg afleggen als gedurende 1 s bij de constante eindsnelheid. Dat is niet mogelijk.
Als de versnelling eenparig is, is de gemiddelde snelheid gedurende de periode van versnelling de helft van de eindsnelheid.
Je zal dan in die eerste seconde 50 mm afleggen.

Re: vergelijking

Geplaatst: za 30 dec 2023, 21:23
door trix
dat "strijdige" begon ik al te vermoeden. ik kon het alleen niet beredeneren. zelfs nu moet ik er heel goed over nadenken.
als ik de de tijd v/d versnelling verleng van 1 naar 2 sec.
is het dan wel mogelijk ?

Re: vergelijking

Geplaatst: za 30 dec 2023, 21:26
door Xilvo
Als je 2 s lang eenparig versnelt naar een eindsnelheid van 100 mm/s leg je in die eerste 2 s inderdaad ook 100 mm af.

Re: vergelijking

Geplaatst: za 30 dec 2023, 21:32
door trix
Xilvo schreef: za 30 dec 2023, 20:45 Die eisen zijn inderdaad strijdig.
Je wil tijdens de 1 s durende versnelling dezelfde weg afleggen als gedurende 1 s bij de constante eindsnelheid. Dat is niet mogelijk.
kwartje valt nu :)

Re: vergelijking

Geplaatst: za 30 dec 2023, 21:52
door trix
bedankt voor je hulp,
ik ga er nog eens goed over nadenken.

Re: vergelijking

Geplaatst: za 30 dec 2023, 21:53
door Xilvo
Succes!

Re: vergelijking

Geplaatst: za 30 dec 2023, 23:28
door RedCat
Alternatief:
In plaats van uit te gaan van een v-x-diagram zou je ook uit kunnen gaan van een v-t-diagram, bijvoorbeeld:
Je wil vanuit rust in t = 1 seconde naar een snelheid v = 100 mm/s
Je versnelling is dan (100 mm/s) / (1 s) = 100 mm/s²
De afgelegde afstand in die seconde = ½⋅a⋅t² = ½∗100∗1 = 50 mm (zie ook Xilvo hierboven)

Je stappenmotor geeft per kloktik 0.1 mm verplaatsing (want bij 1000 Hz is de snelheid 100 mm/s)

De 50 mm van de eerste seconde moet je dus verdelen over 500 kloktikken.
Uit
\(\small x_t = 50t^2\)
volgt:
\(\small t=\sqrt{\frac{x_t}{50}}\)

De eerste kloktik t1 hebben we nodig bij x = 0.1 mm, dus
\(\small t_1=\sqrt{\frac{0.1}{50}} \approx 0.044721 s\)
De tweede kloktik t2 hebben we nodig bij x = 0.2 mm, dus
\(\small t_2=\sqrt{\frac{0.2}{50}} \approx 0.06324555 s\)
De derde kloktik t3 hebben we nodig bij x = 0.3 mm, dus
\(\small t_3=\sqrt{\frac{0.3}{50}} \approx 0.0774596669 s\)
etc.

Voor de klokfrequenties van je stappenmotor geldt dan:
de eerste periodetijd = t1 - 0 = 0.044721 s ≡ 1 / 0.044721 = 22.36 Hz
de tweede periodetijd = t2 - t1 = 0.06324555 - 0.044721 s = 0.018524 s ≡ 53.98 Hz
de derde periodetijd = t3 - t2 = 0.014214 s ≡ 70.35 Hz
etc.

Wellicht kan je zoiets gebruiken.

Re: vergelijking

Geplaatst: zo 31 dec 2023, 09:42
door Nesciyolo
trix schreef: za 30 dec 2023, 21:23 dat "strijdige" begon ik al te vermoeden. ik kon het alleen niet beredeneren. zelfs nu moet ik er heel goed over nadenken.
als ik de de tijd v/d versnelling verleng van 1 naar 2 sec.
is het dan wel mogelijk ?
Moet je alle snelheden doorlopen (dus 1 Hz, 2 Hz, 3 HZ ... 1000 Hz) of mag je snelheden overslaan? Als je voor elke stap minimaal 1 puls moet uittrekken kom je er nooit in 2 seconden. Want dan 1s + 1/2s + 1/3s + 1/4s > 2s
Als je stappen mag overslaan of niet de hele puls af hoeft te maken dan kan je anders rekenen. Je kan bijvoorbeeld terug gaan tellen vanaf 1000Hz totdat je bij 2s totaal uitkomt of de tijd opdelen in 1000 delen. Dan zet je op t=0,002s 1Hz, op t=0,004s 2Hz, op t=0,006s 3Hz enz.

We gaan er dan vanuit dat de motor ook direct op het commando reageert en zonder vertraging de aangegeven snelheid aanneemt. Dat lijkt me in de praktijk niet haalbaar maar voor de opdracht misschien niet relevant.

Re: vergelijking

Geplaatst: zo 31 dec 2023, 12:30
door trix
zo...even wat leesvoer erbij, ga ik bekijken eerst antwoord op 2 vragen
Nesciyolo schreef: zo 31 dec 2023, 09:42 Moet je alle snelheden doorlopen (dus 1 Hz, 2 Hz, 3 HZ ... 1000 Hz) of mag je snelheden overslaan?
ik mag frequenties overslaan, dan krijg je nog steeds een soepele acceleratie.
Nesciyolo schreef: zo 31 dec 2023, 09:42 We gaan er dan vanuit dat de motor ook direct op het commando reageert en zonder vertraging de aangegeven snelheid aanneemt. Dat lijkt me in de praktijk niet haalbaar maar voor de opdracht misschien niet relevant.
motor reageert direct, geen vertraging.

Re: vergelijking

Geplaatst: zo 31 dec 2023, 12:46
door trix
in mijn vraagstelling schetste ik de situatie dat in in 1000 stappen van 0 -> 100 mm/sec.
dat mag ook in b.v. 100 of 50 stappen zijn.
dan accelereert de stappen motor nog steed soepel.

Re: vergelijking

Geplaatst: zo 31 dec 2023, 12:51
door Xilvo
Dan kun je, met aangepaste waardes, nog steeds het verhaal van RedCat gebruiken om de tijdtippen van de pulsen te berekenen.
Over frequenties (Hz) spreken heeft niet zoveel zin bij een niet-periodiek signaal.

Re: vergelijking

Geplaatst: zo 31 dec 2023, 12:54
door Nesciyolo
Als je frequenties mag overslaan maar wel hele stappen moet maken kan je ook berekenen wanneeer je welke frequentie moet instellen door uit te gaan van het hierboven door mij genoemde tijdpad.
Als je gedurende \(0s<=t<0,002s\) \( 1Hz\) draait dan maak je \(\frac{1}{500}\) omwenteling.
Als je gedurende \(0,002s<=t<0,004s\) \( 2Hz\) draait dan maak je \(\frac{2}{500}\) omwenteling.
Als je gedurende \(0,004s<=t<0,006s\) \( 3Hz\) draait dan maak je \(\frac{3}{500}\) omwenteling.
\(1+2+3+....+n \approx 500\)
\(\frac {n(n+1)}{2} \approx 500\)
\(n \approx 31,126729205\)
Dus zou je in \(31,126729205 * 0,002s \approx 0,06225345841s \) je eerste omwenteling hebben.
Dat is vergelijkbaar met \(\frac{1}{0,06225345841} \approx 16 Hz\)
Dus he 1e omwenteling zou 16 Hz moeten zijn.

Zou je daarna doorgaan in dezelfde trant vanaf \(t=31*0,002s\) dan zou de berekening:
\(\frac {n(n+17)}{2} \approx 500\) moeten zijn. Dat leidt to ongeveer 20,6 Hz. Laten we zeggen 21 Hz.

Enzovoort

Disclaimer: Ik heb het niet tot het einde doorgerekend. Maar als je deze redenering volgt kom je wel ergens. Als het niet uitkomt op 2s dan kan je de stapgrootte van t variëren.

Een simpeler oplossing voor een redelijk soepele acceleratie zou zijn dat je in stappen van 16 Hz verder gaat: i puls 16 Hz, 2 pulsen 32 Hz, 3 pulsen 48 Hz enz. Dan krijg je ook een lineaire acceleratie.