Sida 1 av 1

Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 17:44:15
av mattswe
Hej!
Jag ska styra ett servo (9g SG90) med hjälp av en Arduino. Servot styr en indikatornål, vilket innebär att det bara får vrida sig inom spannet 90-140 grader. Problemet är att när jag ansluter servon så börjar den alltid med att vrida sig till ändläge, 180 grader, och först därefter till det värde jag programmerat. Jag får känslan av att den vill kalibrera sig innan den låter sig styras. Fungerar alla servon på det sättet? Kan jag hitta ett annat servo som inte uppför sig så? Eller har jag missat något i C++-biblioteket som jag använder? (Jag använder Arduinos standardbibliotek för servon, men jag har tittat i dess kod och kan inte se någon kodrad som explicit säger att den ska kalibrera.)
Tacksam för lite hjälp.
/Mattias

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 17:50:34
av rvl
Går det att vrida servot, så att ändläget kommer med i "tillåtet område"? (En offset i koden borde i alla fall inte vara nåt problem.)

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 17:56:54
av Icecap
De servo jag har lekt med gör inget utan att det kommer pulser.

Så om den går till ena ytterläge måste det vara för att pulserna som kommer är till det läge.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 18:32:05
av Gimbal
Precis, gå till ändläge är inte normalt. Det går förmodligen ut någon felaktig puls i början av koden.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 19:11:03
av pi314
Är det inte så enkelt att servot strömsätts innan Arduinon startats upp?

Ingen signal alls på servots signalingång betyder väl gå till ändläget? Motsvarande pulslängd noll.

Om det finns ett pulståg med 1500 µs pulser på signalingången till servot när det strömsätts så skulle jag tro att det centrerar direkt.

Dom flesta servon har ju en pot för att identifiera läge. Så någon vända till ett ändläge för kalibrering behövs inte.

Servon som har någon mer avancerad givare för position än en pot förekomer. Här är t.ex. ett servo med hall-sensor.
Jag vet inte om dom bär sig annorlunda åt vid uppstart.

https://www.espritmodel.com/kst-ms825-h ... servo.aspx

/Pi

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 19:14:17
av MadModder
Har aldrig varit med om att ett servo gör något över huvud taget innan det matas in ett pulståg på ingången.
Finns det inte en watchdog även i allra simplaste servot som kollar om där finns ett 20ms-pulståg eller inte?
Om det är ett otroligt knasigt servo som inte kollar det så borde konstant jord göra att servot vrider sig längst åt vänster, och konstant 5V att det vrider sig längst åt höger.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 19:46:14
av Gimbal
Inget pulståg brukar betyda att servoloopen stängs av, dvs den står still med motorn avslagen.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 21:09:21
av Henry
Har själv använt det servot till grejer och aldrig haft problem. Servot skall inte röra sig såvida inte exakt pulsbredds signal kommer in i det som säger att den skall det, den rör sig inte annars så en viss pulsbredd kommer ut från arduinon som gör att den rör sig så och hade du haft ett oscilloskop så hade du även sett det. Bara att lusläsa programmet och se och hittas inget så är det något annat som är fel.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 15 januari 2023, 22:36:38
av sodjan
Kan vara att pulslängds variabeln i applikationen har ett start/default värde som kan vara ena ändläget
som används innan huvuddelen i applikationen har satt det önskade värdet (t.ex. ena ändläget på skalan).

Re: Börjar servon alltid med att gå till ändläget?

Postat: 16 januari 2023, 06:50:28
av Icecap
Då jag dissikrerade en servo var det ganska enkelt.

Det kommer en puls och framkanten trigger en intern timer som ger dn puls med längde beroende på det inbyggda potentiometers position.

Skillnaden i dessa tider gav strömpulser till motorn.

Så ingen puls ger ingen motordrivning.

En enkel startpuls ger ett ryck bara. Så om servon går till ändläget är det ett antal pulser som kommer - och det måste vara programmet som skickar detta.

Funktionssättet betyder också att en enkel puls inte ställer servon i mål, det ska ett antal till.

Re: Börjar servon alltid med att gå till ändläget?

Postat: 17 januari 2023, 16:04:41
av Nerre
Brukar man inte för vissa applikationer ha ett failsafe-läge där servot går till ett ändläge om man tappar signalen? Det är dock kanske inget som sitter i servot utan kanske främst i mottagaren?

Re: Börjar servon alltid med att gå till ändläget?

Postat: 17 januari 2023, 16:24:40
av pi314
Nerre:

Den funktionen sitter i mottagaren eller eventuellt i flight controller eller gyro, om man har sådant.

Den viktigaste och vanligaste delen brukar vara att stänga av motorn om radion inte längre får signal från sändaren. Som en säkerhetsåtgärd. Så att inte en skenande farkost går in i människor eller egendom med motorn på full effekt.

Drönare brukar man vilja att dom flyger "hem", dvs. åter till startplatsen, om dom tappar inkommande radiosignal.

/Pi

Re: Börjar servon alltid med att gå till ändläget?

Postat: 18 januari 2023, 03:30:14
av Hobbyisten
Jag har inte heller haft det problemet.