Spørsmål:
Sakte ned minstorms EV3-motoren slik at målposisjonen ikke blir overskredet
Eric Leschinski
2015-05-19 21:01:17 UTC
view on stackexchange narkive permalink

Jeg har Debian jesse installert på en minstorms EV3, og jeg bruker ev3.lego biblioteket: https://github.com/topikachu/python-ev3

Jeg vil være i stand til å bremse motoren når den når målet, for hvis den går for fullt når den kommer dit, overskrider den målet proporsjonalt med hvor raskt det gikk.

Eksempel på Python-kode: Når jeg bruker denne koden til å spinne motoren:

  fra ev3.lego importerer Motorb = Motor (port = Motor.PORT.B ) b.run_position_limited (position_sp = 100, speed_sp = 300)  

Motoren spinner til posisjon 100 på turtelleren med hastighet på 300.

Når den kommer til sin mål, fører fremdriften til posisjon 125 eller så. Så neste gang jeg ber den gå til posisjon 100. Den snurrer opp, så skyver den over til posisjon 75.

Hva er den beste måten å prøve å minimere denne feilen, slik at jeg kan fortelle motoren å flytte til posisjon 100, og den bremser enten før den når målet, eller fryser motoren på annen måte når den når målet?

En svar:
Eric Leschinski
2015-05-19 21:07:08 UTC
view on stackexchange narkive permalink

Det er to attributter i python ev3dev Motorklassen kalt:

  ramp_down_spramp_up_sp  

Link til dokumentasjon: http: // ddemidov. github.io/ev3dev-lang-python/

ramp_down_sp Ramp Down SP: read / skriv

Writing setter rampen ned setpoint. Lesing returnerer gjeldende verdi. Enhetene er i millisekunder. Når den er satt til en verdi> 0, vil motoren rampe kraften som sendes til motoren fra 100% driftssyklus ned til 0 i løpet av dette innstillingspunktet når motoren stoppes. Hvis startdriftssyklusen er mindre enn 100%, vil rampetiden være mindre enn hele spennpunktet for innstillingsverdien.

ramp_up_sp Ramp Up SP: read / write

Skriving angir rampepunktet. Lesing returnerer gjeldende verdi. Enhetene er i millisekunder. Når den er satt til en verdi> 0, vil motoren øke effekten som sendes til motoren fra 0 til 100% driftssyklus i løpet av dette innstillingspunktet når motoren startes. Hvis den maksimale driftssyklusen er begrenset av duty_cycle_sp eller hastighetsregulering, vil den faktiske rampetiden være mindre enn innstillingsverdien.

Eksempel:

  fra ev3.lego import Motorb = Motor (port = Motor.PORT.B) b.ramp_up_sp = 1000b.ramp_down_sp = 1000b.run_position_limited (position_sp = 0, speed_sp = 300)  

Hva ramp_down_sp gjør er når motoren er 1000 millisekunder unna målet (gjør sine egne estimater), og deretter reduserer du effekten fra 100% til 0% over nøyaktig 1000 millisekunder.

ramp_up gjør en lignende ting, bortsett fra å øke effekten fra 0% til 100% over 1000 millisekunder.

Dette bidrar til å unngå unødvendig belastning på motorene for applikasjoner der det er viktig å bygge opp fremdrift.



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...