Kamerastyrning / gimbal

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
UndCon
Inlägg: 79
Blev medlem: 15 januari 2010, 00:07:10

Kamerastyrning / gimbal

Inlägg av UndCon »

Hej!

Jag har en tanke om en gimbal jag försöker använda till ett projekt tillsammans med en Arduino för att kunna styra kamerans rörelser

Jag vill kunna ställa in vissa värden innan start av programmet, dessa sparas som integers.
Ett av dessa värden är hur många gånger en loop skall repeteras - nu kan vi tex skriva 5000

Lite Pseudokod:

int presetLoop 5000; // för att ställa in detta värde "on the fly" så skall sensorn "spela in" värdet

När det är memorerat (spara via knapp?)

Kan vi gå vidare till gimbalkontroll som är PPM.

Nu vill jag kunna ange ett värde för PPMstart och PPMslut dvs hur gimbalen skall röra sig medans Loopen pågår (panorera kameran)

int panoStart 1000; //PPM = 1000-2000
int panoEnd 2000; //PPM = 1000-2000

Dessa värden vill jag då på ett enkelt sätt kunna mata in, kanske öka värdet med 100 vid ett knapptryck och sedan spara värdet med en ny knapp.
Vi är fortfarande i setup-läge på Arduino.

Nu har vi då angett 2st värden , start och slut för panoreringen som skall pågå så länge loopens värde inte är uppfyllt.

Då till min fråga:

Hur ser ex koden ut då för att få in panoreringen i loopen?
en vanlig loop ser ju ut så här:

for(int i = 0; i < 5; i++)
{
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(2000);
}

(i detta fallet är i samma som presetLoop)

Nu skall vi få in PPM signalens justeringar i loopen
Vi har ett startläge (panoStart) - som är satt och det ligger utanför loopen

panoEnd däremot skall uppfyllas i loopen och nu blir det lite matte...då PPMsignalens ändring skall beräknas per interation i loopen.

Hur gör jag det på ett lämpligt sätt?
beräkna antalet PPM?
panoEnd - panoStart = panoDiff.

panoDiff / presetLoop = nyPanoDiff;

slutligen lägga in nyPanoDiff i loopen?

typ:

for(int i = 0; i < presetLoop; i++)
{
nyPanoDiff++;
}

Nu skall ju detta bli en output i PPM

....eller är jag och gör en tankevurpa nu igen.


tacksam för funderingar och tips
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Kamerastyrning / gimbal

Inlägg av vfr »

Vad sjutton menar du med "en gimbal"? Vad är det?

Använd sedan gärna "code"-taggar runt kodesnuttarna som du har insprängda i texten. Då blir allt mycker mer läsbart... :)
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Kamerastyrning / gimbal

Inlägg av Icecap »

PPM? Pulser per minut? PPM-pension?
UndCon
Inlägg: 79
Blev medlem: 15 januari 2010, 00:07:10

Re: Kamerastyrning / gimbal

Inlägg av UndCon »

Ppm är en vanlig signal i RC.
Även PWM används...

Signalen från tex en mottagare till ett servo är från 1000 till 2000.

Signalen ut från Arduino skall vara som RC signaler och den skall in i en gimbal som stabiliserar kameran.


Jag tror jag kan få ihop en lösning på det hela... Kan använda en Arduino Mega för tester men slutresultatet kommer vara en Mini.
Senast redigerad av UndCon 24 april 2016, 23:34:11, redigerad totalt 1 gång.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Kamerastyrning / gimbal

Inlägg av Icecap »

Jag har aldrig sett RC-servo styrpulser nämnt som PPM.
Att de sedan har en pulsvidd på mellan 1000µs och 2000µs (vilket 1000 - 2000 tydligen ska betyda) är ju standard.

Själv hade jag använt en timer till att ge pulserna till servon och en annan timer (med interrupt) för att säkra PRF.

Samma timer som ger PRF kan sedan användas till att stega pulsbredden till servon via en skalningsfunktion.

Jag misstänker att detta kan bli lite svårt att få till att spela med Arduino pga. deras overhead.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Kamerastyrning / gimbal

Inlägg av Wedge »

Det finns redan färdigskrivna servobibliotek för Arduino. De som skrev dem visste nog inte hur svårt det var.
Skriv svar