Multiplexa servon - LÖST!

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43289
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Multiplexa servon

Inlägg av sodjan »

Notera också att deet är en *tumregel*. Sedan får det justeras
utifrån de faktiska omständigheterna... :-)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Multiplexa servon

Inlägg 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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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.
Användarvisningsbild
4kTRB
Inlägg: 21674
Blev medlem: 16 augusti 2009, 19:04:48

Re: Multiplexa servon

Inlägg 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
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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 :-)
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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 :-)
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43289
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Multiplexa servon - LÖST!

Inlägg 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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon - LÖST!

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43289
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Multiplexa servon - LÖST!

Inlägg 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.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Multiplexa servon - LÖST!

Inlägg 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.
Användarvisningsbild
MiaM
Inlägg: 13730
Blev medlem: 6 maj 2009, 22:19:19

Re: Multiplexa servon - LÖST!

Inlägg 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?
Användarvisningsbild
Icecap
Inlägg: 26807
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Multiplexa servon - LÖST!

Inlägg 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.
Skriv svar