Loading...
 

OM32, OC32 and LichtOrgel


OC32: Continuous rotation servos en Events

Netherlands

Hallo allemaal,

Ik heb een test opstelling gemaakt met een servo voor een kermisattractie met een continue ronddraaiende servo. Ik maak gebruik van 3 aspecten waarmee ik de servo langzaam kan laten aanlopen, stoppen en de andere kant op kan laten draaien. Nu wil ik graag met events op de OC32 de attractie laten starten en de aspecten een voor een laten afwerken.

Ik heb momenteel de aspecten 0,1,2 en 3 gedefinieerd en alle aparte aspecten werken perfect behalve 3 want dat is mijn automaat.
Als ik event-ingang 0 gebruik dan heb ik die gekoppeld aan aspect 3 waar ik een setAspect1 met Time 1 heb gedefinieerd. Na het drukken van de schakelaar loopt de servo langzaam aan en blijft ronddraaien maar wat ik ook probeer, ik krijg het niet voor elkaar dat na bv. 10-15sec. de servo de andere aspecten gaat gebruiken. (langzaam stoppen en de andere kant op draaien (Aspect2)). Aspect0=stop.
Alles is met dynamische parameters in OC32config en een fade geprogrammeerd.

Kan iemand mij a.u.b. op weg helpen met de Event handlers?

Oja... misschien een vraagje voor Leon: hoe vaak mag en kan je de OC32 'programmeren' (data er heen schrijven) voordat hij dit niet meer accepteert? Door het testen schrijf je nogal vaak gegevens in de OC32 voordat je weer kan testen.

Alvast bedankt voor het meedenken!
Fokko

Netherlands

hoe vaak mag en kan je de OC32 programmeren
Volgens Atmel 10.000 keer

De rest van je verhaal kan ik niet volgen. Ik snap niet wat je wilt bereiken noch hoe het het aan het doen bent.

Mvg,
Leon

Netherlands

Dankjewel, Leon, dan kan ik nog even vooruit met data naar de OC32 schrijven...biggrin

Wat de opmerking betreft:
Ik wil bereiken dat wanneer er een Event afgaat de servo(s) automatisch met een instelbare tijd de Aspecten 1, 2 en 0 afwerken en dan weer wachten op het volgende Event. (Event = bezoeker die op een drukknop drukt)
Dit wil ik bereiken door voorgeprogrammeerde Aspecten op te roepen:
- Ingesteld Aspect0= Instruction #0 - Servo staat stil (+ *fade option),
Aspect1= Instruction #1 - linksom draaien (+ *fade option),
Aspect2= Instruction #2 - rechtsom draaien (+ *fade option).
Alle Aspecten met OC32Config (dyn) parameters ingesteld voor Pin0 en deze Aspecten werken correct!
Inzetten *Fade = langzaam stoppen en langzaam starten van de servo(s).
- Drukknop is aangesloten op de eerste EventIngang P0 en als optie Input0 Aspect3 geselecteerd.
- In Aspect3 (Pin0) allereerst de instructie #0 SetAspect0 gekozen met Time 1 anders gebeurt er niks.
(dit is volgens de beschrijving - dit is ook correct!)
- Aspect3 heeft de instructie stap #1 - SetServo&Wait (waarden 0,7,15,2)
- Wanneer ik nu op de drukknop druk gaat de servo langzaam draaien tot ingestelde waarde(7)
(SetAspect1). Dit is correct!
- Nu zou na verloop van tijd (~20sec) Aspect2 moeten worden geselecteerd.
(hoe kan je dit nu het beste in een instructie (#2) kunnen vatten?
(Functie: servo langzaam stoppen en andere laten opdraaien)
- Daarna zou na verloop van tijd (~20sec) Aspect0 weer moeten worden geselecteerd.
(langzaam stoppen en wachten op volgende event)

Zoals ik het nu kan beoordelen zou een optie "SetAspect&Wait" +Fade optie en/of SetServo&Wait met +Fade optie zoals SetServo ook een %22Fade%22 optie heeft een uitkomst zijn. De eerstgenoemde optie hebben echter geen Fade instelling.

Als dit nog niet duidelijk is zou ik screenshots of een bestand(en) kunnen uploaden!

Mvg,
Fokko


Netherlands

Zoals ik het nu kan beoordelen zou een optie "SetAspect&Wait" +Fade optie en/of SetServo&Wait met +Fade optie zoals SetServo ook een "Fade" optie heeft een uitkomst zijn. De eerstgenoemde optie hebben echter geen Fade instelling

De eerste mogelijkheid die je noemt (SetAspect + Fade), hoe stel je je dat voor? Langzaam een bepaalde aspect starten? Dat is net zoiets als langzaam een klap op een spijker geven.

De tweede mogelijkheid: SetServo&Wait + Fade: dat is al zo. SetServo&Wait gebruikt de dynamische parameters, althans, dat weet ik 95% zeker.
Wil je controle hebben over wel of geen dynamische parameters kun je SetServo en Wait simpelweg als 2 opeenvolgende instructies gebruiken. Voor alles is een oplossing.

Wat je wilt is eenvoudigweg met 1 aspect te doen en 3 opeenvolgende instructies
SetServo & Wait
SetServo & Wait
SetServo & Wait(0)

Mocht ik me toch vergissen dan kan het met 5 instructies:

SetServo
Wait
SetServo
Wait
SetServo

Mvg,
Leon


Netherlands

Leon... nu ik je uitleg even beter op me laat inwerken m.b.t. Fade en de bedoeling achter SetAspect tot me door laat dringen, heb je gelijk! Zie wel in wat je daarmee bedoeld. Mijn fout!
Met SetServo&Wait weet ik het even niet. Momenteel heb ik namelijk zoveel testen gedaan dat ik geen zinvol antwoord kan geven. Alleen maar aannames en daar is niemand mee geholpen.
Ik ga het opnieuw proberen en opschrijven/screenshots maken van mijn test-waarden en hun resultaten.
Ik koppel dit naar het forum terug!
Bedankt voor je tijd en de geleverde feedback!
Mvg,
Fokko


Netherlands

Nog even voor de duidelijkheid:

  • SetAspect(n,t)
  • SetServo&Wait(p,t)

werkt niet. SetAspect zet de timer voor de betreffende pin met als bijbehorende actie: SetAspect(n). De SetServo&Wait overschrijft vervolgens diezelfde timer met een nieuwe actie: volgende instructie. De SetAspect(n) zal dus nooit worden uitgevoerd.

  • SetAspect(n,t)
  • SetServo(p)

werkt wel en de volgorde van de instructies is in dit geval niet relevant. SetServo (zonder Wait) doet niets met de timer, die blijft dus gewoon lopen.

Maar het gebruik van meerdere aspects om een sequence te maken is pre-2.0 Vanaf 2.0 heb je Sequence Instructions en die maken dit veeel gemakkelijker.

Mvg,
Leon

Netherlands

Dat is een slecht-, en heel goed nieuws- bericht biggrin
Ik zal kijken wat ik nu nog doen kan met de mogelijkheden die de huidige versie OC32 nu biedt maar wellicht moet ik ook wachten op V2.0.
Wil je ook kwijt wanneer deze versie beschikbaar komt?
Mvg,
Fokko


Netherlands

Wil je ook kwijt wanneer deze versie beschikbaar komt?

Een half jaar geleden?
Dus waar is het slechte nieuws?

Mvg,
Leon


Netherlands

hahahaha lekker adhoc. Het is geen aanval, hoor!!!
Werd getriggerd door "Vanaf 2.0 heb je Sequence Instructions en die maken dit veeel gemakkelijker"
Dus ik dacht, verkeerd dus, dat komt nog!
Zit namelijk op mijn werk en heb niet alle relevante info bij de hand.
Slecht nieuws was dat ik de beschreven opties niet kon gebruiken zoals je aangaf omdat de timers werden overschreven. Ik zal proberen mijn doelstellingen met de opties SetAspect(n,t) en SetServo(p) te behalen.
En niet onverstandig... je raad opvolgen (OC32 beschrijving) en paragraaf 9.8.3 t/m 9.8.5 nog eens aandachtig doorlezen voor meer informatie.
Ik hoop alleen dat we (ik) het forum zo niet vervuilen, een PM'tje zou misschien meer van toepassing zijn geweest.
Mvg,
Fokko


Netherlands

Hallo Fokko,

Werd getriggerd door "Vanaf 2.0 heb je Sequence Instructions en die maken dit veeel gemakkelijker". Dus ik dacht, verkeerd dus, dat komt nog!

Ik schreef ook "vanaf 2.0 heb je ..." en niet "vanaf 2.0 krijg je ..."mrgreen

Ik zal proberen mijn doelstellingen met de opties SetAspect(n,t) en SetServo(p) te behalen.

Dat kan, maar is dus de moeilijke pre-2.0 manier. Gemakkelijker is

  • SetServo(p1)
  • Wait(t1)
  • SetServo(p2)
  • Wait(t2)
  • SetServo(p0)

Of nog simpeler 3 x SetServo&Wait(p,t) als dat ook dynamisch werkt (ja, ik zou dat moeten weten en volgens de sourcecode werkt het ook zo, maar ik heb op dit moment geen testopstelling staan om het te verifieren)

Mvg,
Leon


Netherlands

Hallo Allemaal,
De pre-2.0 opties nog even uitgeprobeerd en die werken ook wel maar de opties die Leon aangeeft voor v2.0 and beyond zijn echt zoveel eenvoudiger. In drie stappen... Bedankt Leon!

Voor diegene die geïnteresseerd zijn heb ik een bestand geüpload met de waarden die ik bij de test heb gebruikt. Misschien onnodig maar hierbij ook een beetje uitleg van de gebruikte parameters:
- De 7 en -7 zijn de draairichting en snelheid van de servo.
- De parameters 14 - 2 (Time -Base)zijn de tijdinstellingen welke de servo draait tot de volgende stap.
- Bij de laatste Step (0) omdat hier de actie stopt.
- De 1/Mass is de massa en dus hoog ingezet
- Maxspeed is de snelheid waarin de acceleratie plaatsvind.
- MaxAcc is de parameter waarin de mate van versnellen plaatsvind, langzaam dus.
Op deze wijze worden onze Preiserleins niet al te veel aan verschrikkelijke krachten blootgesteld.lol
Bij deze bedanken we (Modelspoorgroep Nienoord) Leon voor zijn geduld en ondersteuning!
(Geduld is wellicht vaak de grootste uitdaging! razz)
M.v.g.,
Fokko

P.S. Het beloofde bestand staat onder 'User Galleries' - Mijn naam omdat hij te groot was om hier te plaatsen.


 
Dutch (Nederlands, nl)English British (British English, en-uk)German (Deutsch, de)