Sida 2 av 3

Re: Multiplexa servon

Postat: 26 mars 2013, 14:24:45
av hanzibal
Såg det men tyckte ändå det lät mkt. Servot drar inte i närheten av en ampere så jag klarar mig väsentligen mindre. Det är ganska klena servo jag har, det kraftigaste har 12kgcm i vrid vid 6V.

Re: Multiplexa servon

Postat: 26 mars 2013, 14:33:18
av sodjan
Notera också att deet är en *tumregel*. Sedan får det justeras
utifrån de faktiska omständigheterna... :-)

Re: Multiplexa servon

Postat: 26 mars 2013, 15:05:34
av Andax
Servona kan dra ganska mycket när de rör sig mycket. Strömmen vid stillastående är säkert < 10% av vad de drar max.

Re: Multiplexa servon

Postat: 26 mars 2013, 15:39:00
av hanzibal
Skall mäta upp ström och annat ikväll men märkligt att det funkar bra med 2 std servon men inte när jag byter ut ett av dem till ett mikro-servo och då är det inte bara mikrot som knasar utan båda.

Kan inte se ngn skillnad i skopet. Har dem på varsin kanal, kan se lite cross-talk men det är inte mer än annars och kvalificerar inte som en puls.

Re: Multiplexa servon

Postat: 26 mars 2013, 16:33:46
av hanzibal
När jag tänker efter så finns ju inget som säger att det lilla skit-servot (49 kr på Conrad) inte reagerar på den lilla överhörningen som ändå finns. Om det då börjar "gnugga" blir det kanske ström av det och då blir det andra servot nervöst av spänningsfallet. När man kör lilla ensamt finns ju ingen överhörning och då går det bra.

Re: Multiplexa servon

Postat: 26 mars 2013, 17:43:21
av 4kTRB
Det kan finnas något grunläggande om servos du missat
så mitt tips är att ögna igenom en tutorial om servos:

http://www.horrorseek.com/home/hallowee ... ervos.html

Re: Multiplexa servon

Postat: 26 mars 2013, 18:17:12
av hanzibal
Tack, skall läsa med största intresse, har känt lite att något inte riktigt stämmer till 100%. Tills för en vecka sedan hade bara sett servo på bild :-)

Re: Multiplexa servon

Postat: 27 mars 2013, 05:44:05
av hanzibal
Nja, den där artikeln verkar inte tillförlitlig. T.ex. säger man att pulsen skall variera mellan 0,6ms och 2,4ms (center blir då 1,5ms) vilket motsvarar -45 till +45 grader, d.v.s. ett spann på 90 grader. Sedan säger man en skillnad på ca 10us motsvarar en grads utslag vilket dock är fel eftersom (2400 - 600) / 90 = 1800 / 90 = 20us. Vidare skulle jag köra sönder mina servon om jag lät pulsbredden gå ända upp till 2,4ms eftersom deras mekaniska gräns tycks ligga vid 0,8ms resp. 2,2ms. Detta baserat på vad jag ser på oscilloskopet.

Kanske gör jag fel men tror faktiskt inte det. Dock är ju det ena servot inte det andra likt. I dessa tester har jag använt lite "finare" (dyrare) servon, det ena är digitalt med växellåda av metall, det andra är analogt. Dyrt är inte nödvändigtvis bra men sannolikheten för detta är i allmänhet större :-)

Re: Multiplexa servon

Postat: 28 mars 2013, 04:28:45
av hanzibal
Saken är biff, problemen berodde på en kombination av flera misstag. Jag hade råkat koppla en enable till en MCU-ingång, på ett ställe hade jag glömt "pull down" på emittern och så uppstod ibland överlapp pga dålig timing (nästa servo fick lite av föregående puls och vice versa). Dessa saker är nu fixade och det fungerar bra att köra 4 servon.

Om man klarar sig med 90 graders arbetsområde på alla så får jag lätt plats med 8 st, sen kan man ju sänka frekvensen lite och få in fler. I en verklig applikation skulle det nog gå bra med 10 servon "för det mesta" eftersom ju inte alla lär stå på max pulsbredd samtidigt. Man skulle också kunna trixa med någon slags adaptiv modell med prio och sånt, alltså att man hoppar över ett servo en och annan puls fördelat mellan låg-prioservos.

Körde alla 4 på en automatiserad slinga med slumpning av servovinklar och ljudet är mycket enerverande så man orkar inte lyssna på det någon längre stund :P Utan last klarar sig allt under 1A (såklart) men om man börjar hålla emot ett par stycken så sticker det såkart snabbt iväg.

Jag är nöjer mig såhär, tack för all hjälp.

Re: Multiplexa servon - LÖST!

Postat: 28 mars 2013, 10:28:47
av sodjan
Med flera servon så kan man ju köra pulserna parallellt.
Slå på alla samtidigt och ha separata räknare för var och en
och slå av pulsen när resp räknare har nått noll. Antalet
servon begränsas enbart av I/O-pinnar samt hur många
räknare som koden hinner med att hantera.

Re: Multiplexa servon - LÖST!

Postat: 28 mars 2013, 11:39:21
av hanzibal
Jag har bara en PWM-utgång och gpio-toggling har latens på ca 1ms (!!). Jag måste alltså vänta tills en puls är "klar" innan jag kan muxa in nästa kanal.

Jag kommer delvis runt latensproblemet genom att "påbörja" mux för nästa kanal innan föregående puls är klar. Tror det är ganska optimalt nu om jag inte missförstår dig förstås.

Re: Multiplexa servon - LÖST!

Postat: 28 mars 2013, 11:42:18
av sodjan
Ja, OK, då blir det ju max ca 10 servon (10 st
2.0 ms pulser inom 20 ms). Notera också att
man normalt inte använder vanlig PWM för
servostyrning.

Re: Multiplexa servon - LÖST!

Postat: 28 mars 2013, 11:50:30
av hanzibal
Precis men för mig finns alltsåinga alternativ i detta fall.

Det är rätt kul att leka med, tänkte göra en pryl som kan rita på ett papper, lyfta pennan och fara runt. Görs bättre med stegmotorer men bara som applikation med det lib jag gjort här.

Re: Multiplexa servon - LÖST!

Postat: 31 mars 2013, 23:56:48
av MiaM
Synd att det är krav på att grejerna ska finnas i bra-att-ha-lådan, annars är väl en klassisk lösning att låta pulserna stega fram vilket servo som ska styras.

Alltså i princip en 4017 vars utgångar dessutom AND'as med klockpulsen. Kombinera med antingen en i/o-port för reset, eller "modell-radiostyrning-mässigt" med en funktion som reset'ar räknaren efter tillräcklig paus.

P.S. finns det ringräknare/johnsonräknare med output enable-ingång?

Re: Multiplexa servon - LÖST!

Postat: 1 april 2013, 08:30:26
av Icecap
MiaM: Behövs det? I detta hade ett skiftregister fungerat utmärkt. Det behövs då 2 ledningar till att styra det:
* Data
* Klocka

Data ska slå på vid första bit och sedan vara noll.
Klockan sköter sedan att "rulla ut" varje bit.

Man kan koppla fler skiftregister efter varandra utan att använda fler pinnar att styra med, det som kan hända är att uppdateringshastigheten på servon kan bli lidande. Men de 20ms är ju bara rekommenderat periodtid, ingen fast lag. Så med t.ex. 2 st 8 bit skiftregister kan uppdateringstiden som mest komma upp på 32ms om man använder alla 16 möjliga utgångar.

Och styrningen av det kan bli extremt enkel:
Skapa en tabell med värde för varje utgång.
Skapa en index-räknare.
Definiera kortaste pulslängd.
Använd en timer som kan styra detta. Behöver inte vara hårdvara-utgång.
Sedan ser man till att för varje timer-interrupt att:
* Knäppa ut en puls på skiftutgången.
* Ladda in timern med det förberedda värdet för pulslängden.
* Räknar upp index-räknaren.
* Kollar mot använda antal utgångar. Ska den nollställas ser man till att sätta Data-utgången till '1', annars sätts den till '0'.
* Hämta tiden från tabellen via Index-räknaren och addera kortaste pulslängden.
* Kolla mot maximala pulslängden och begränsa om det behövs.
* Klart.

Denna förberedelse som sker efter att pulsen har skickats ut gör att svarstiden på interrupten blir stabil och timingen blir bra.