Gå til innhold

elektronikk i RC-servo


Anbefalte innlegg

Er det noen som vet hvordan elektronikken inni en RC-servo ser ut (kretsskjema)?

 

Det jeg har fått med meg er:

servoen får en puls inn ca hvert 20 millisekund. Denne pulsen er fra ca 1 ms til ca 2 ms hvor 1,5 ms er servoens nøytral mens pulser som er lenger enn dette beveger servoens posisjon lenger til den ene siden og pulser som er kortere til de andre siden. Lærte det på denne siden

Men det jeg lurer på er altså hvordan denne kretsen som styrer motoren fungerer.

 

Jeg prøvde forresten og tegne en slik krets men vet ikke om den ville fungere bra. Ihvertfall så er denne kretsen her:

servo-krets.jpg?t=1197081242

 

måten denne kretsen fungerer på er:

kondensator C2 og C3 lades opp så lenge pulsen er "på" og etter pulsen er gått "av" vil denne spenningen som C2 og C3 har blitt ladet opp til overføres til C8 og C9.

når så neste puls kommer vil C2 og C3 igjenn lades opp osv.

Etter denne "pulsvidde til spenning" kretsen har jeg en opamp som sammenligner denne "referanse" -spenningen med spenningen over skrupotensiometeret og denne forskjellen går ut til det siste trinnet som vel er en slags H-bridge som styrer motoren (ja jeg vet at denne i virkeligheten skal være girt ned med en girboks.

 

Problemene jeg kan se med denne kretsen er at kondensatorene ikke har en lineær oppladningskurve og at vinkelutslaget til servoen derfor ikke vil være lineært. det andre problemet er at transistorene her fungerer som brytere = skrur motoren på eller av istedenfor og gi den mye spenning når det er et stort avvik og redusere spenningen etterhvert som avviket blir mindre.

Jeg kan heller ikke skjønne at det kan være så mange transistorer og kondensatorer inne i en RC-servo

 

Så er det noen som vet hvordan en virkelig servo-krets ser ut?

Og evt påpeke hva som er galt med den jeg har tegnet eller foreslå forbedringer?

 

Lurer litt på dette for å evt lage en servo som kan kontrolleres med RC-kontroller men med en mye større og kraftigere motor i tillegg til å lære hvordan en servo fungerer seff.

 

 

EDIT:

her er siste forslag til krets for dere andre som leser tråden (det ser ut som er ganske mange):

servo-krets3.jpg?t=1197175174

Endret av flesvik
Lenke til kommentar
Videoannonse
Annonse

Problemet du har med at kretsen blir ulineær er at ditt første opamp steg er feil. du må koble det som en integrator slik at strømmen lader opp en kondensator lineært. når det er gjort kan du flytte denne ladningen som er lagret over integrator kondensatoren over til en annen kondensator som kan brukes som referanse til utgangssteget.

 

et problem vil være at du må nullstille integratoren mellom hver gang, og siden du bare har et kontrollsignal (servo pulse) må du nullstille samtidig som du overfører ladningen til en annen kondensator. akkurat hvordan det skal gjøres har jeg ikke helt klart for meg enda, kanskje jeg kommer på noe.

 

i en vanlig servo er nok hele dette systemet integrert på en IC vil jeg tippe.

 

om du har litt erfaring med mikrokontrollere har jeg sett flere prosjekter der ute som bruker AVR til dette formålet. en benytter da en timer/counter og en kjent klokke hastighet til må måle hvor lang pulsen er og så gjøre "noe" ut i fra det

Lenke til kommentar

skissert en mulig løsning nå, men har ikke simulert den (og det kan hende jeg har bytta innganger på opampene slik at ting blir invertert...), eller noe annet jeg ikke har tenkt på... verdiene på komponentene må nok også justeres siden jeg ikke gadd å bry meg om de nå.

 

Men tanken er som følger:

anta at inngangen (input) er lav; dette nullstiller integrasjons-kondensatoren (C1) via Q1. Q3 er av og Q2 på slik at spenningen på C3 overføres til C2.

anta så at inngangen går høy; Q1 skrus av og integrasjon starter. Q3 skrus også på hvilket vil gjøre at spenningen på C3 vil følge spenningen på C1 (opamp AR3 sørger for å isolere C3 fra C1 slik at forrige verdi på C3 ikke vil påvirke den nye). Q2 er av slik at forandringene som skjer andre steder ikke påvirker utgangen (siden spenningen over C3 kan falle og så stige i samme periode ville dette ført til at utgangen skiftet mye unødvendig).

 

Ble litt flere opamp steg, men dette kommer av at du bare har et kontrollsignal (input og input_invertert, samme signal bare motsatt verdi...) og at alt må skje på en periode.

 

Du kan prøve å simulere denne kretsen hvis du har mulighet for det.

 

Ditt andre problem; hvorfor skal dette være et problem? Om det var slik du foreslo vil det jo fort føre til at når servoen er nesten framme i posisjonen sin får den så liten spenning at den ikke klarer å flytte seg lengre og dermed aldri kommer fram til posisjonen sin...

post-51478-1197142120_thumb.png

Lenke til kommentar

Takker for svar :)

 

Det jeg mente det andre problemet mitt var med variabel vs "av og på" spenning er at jeg tenkte at det ville bli mye oscillasjon/ustabilhet rundt den posisjonen den skal være pga tregheten i systemet og stort pådrag = den kjører for fullt ene veien og skrur av når den kommer til riktig posisjon men går litt lenger pga tregheten også kjører den for fullt andre vegen og det samme skjer og sånn vil den stå og "riste" litt framm og tilbake.

men jeg ser jo problemet som kan komme av for liten spennning nærme "referansen" også da.

 

Nei jeg har ikke noe erfaring med AVR prosessorene og har heller ikke noen programmerer til disse.

Men jeg vil gjerne lære meg da :). jeg kan programmere litt i C++ men vet ikke helt hvor likt det blir.

 

EDIT: Jeg så jo nå at jeg hadde glemt og nullstille de første kondensatorene mine ja.

Endret av flesvik
Lenke til kommentar

ah, det kan jo også bli et problem ja.

 

det betyr jo at både mitt og ditt forslag i prinsippet står og driver motoren den ene eller andre veien hele tiden slik det er nå og det er antagelig ikke en ønsket situasjon (unødvendig strøm bruk), selv om det er et reguleringssystem som i prinsippet virker.

 

må kanskje ha en terskelverdi i avvik før den skal begynne å drive motoren eller noe. dette kan selvfølgelig løses med enda flere opamper (summere eller trekke spenninger fra hverandre og så bruke dette som utgang signaler). Blir fort mange opamper av dette... og mye som kan gå galt og som må kalibreres...

 

kan være vanskelig nok å få løsningen jeg skisserte til å virke godt siden det er kritisk når transistorene/bryterne skrus av/på, og legge til mer kompleksitet gjør det jo ikke enklere.

 

trur jeg ville gått for en mikrokontroller løsning (spesielt siden jeg har litt erfaring med mikrokontrollere), eventuelt tatt en vanlig servo (billig) og plukket den i fra hverandre og brukt elektronikken fra den og lagt til et nytt utgangsteg for å drive 12Volts motoren (blir nok fort billigere).

Lenke til kommentar

Jepp. ser ut til at det kan bli litt vel innviklet ja.

Men det kan vel umulig være så innviklet i en ordenklig RC-servo?

Det er litt kjipt at jeg ikke finner noen skjemaer til hvordan elektronikken i en slik servo ser ut på internett.

det er jo ikke kunn å få det til å virke jeg er interessert i men også å lære hvordan det virker. Derfor vil jeg egenklig ikke plukke deler fra en ferdig RC-servo.

Pluss at det kan være vanskelig og komme til der man vil i elektronikken på en servo (kan vel kansje bare sette en forsterker på signalet til motoren) og det potensiometeret som sitter der kan jo være vanskelig å bruke på en større og ikke minst hjemmelaget servo.

 

Når det gjelder AVR microcontrollere, kan du annbefale meg noen nettsider eller bøker for å lære og programmere disse?

og hvor mye koster det for en slik programmerer til disse og hvor kjøpes denne?

Endret av flesvik
Lenke til kommentar

avrfreaks.net er en bra plass å starte. programmerer kan du bygge selv veldig billig, eller så finnes det veldig mange der ute som en kan kjøpe rimelig billig.

 

btw:

en slik effekt med lavere spenning ved mindre differanse i avvik vil kreve litt mer fancy programmering med en mikrokontroller pga at utgangen fra den er enten av eller på.

 

men før vi går den veien; bahhh; trenger jo ikke være så vanskelig like vell; bare gjøre ting litt annerledes;

http://content.answers.com/main/content/im...16600FG0010.gif

Ved å gjøre det slik vil utgangen også ha lavere spenning når du er nære slutt posisjonen, og dette er en mye bedre regulerings sløyfe enn den jeg lagde i utgangspunktet (som var en ping-pong regulator (av/på)).

(en stund siden jeg hold på med reguleringsteknikk :p )

 

vil nok kreve en del opamper denne også, men den vil kunne gjøre alt du vil den skal gjøre, spørsmålet nå er hvordan de forskjellige delene her skal lages for å få motoren til å kunne gå begge veier (spørs om en vil trenge to forsterkere hvor den ene er invertert i forhold til den andre og utgangen fra de er koblet til motoren)

Lenke til kommentar

Ja dette blir jo riktig, men jeg ser ikke helt hvordan dette kan realiseres på en enklest mulig måte med opamper og transistorer.

 

problemet med å få motoren til å gå begge veger løste jeg på den første tegningen min (eller tenkte at det skulle løses slik) ved og mate sammenligningsopampen med pluss/minus 5V på de to strømmforsyningspinnene istedenfor pluss 5V og GND som bare ville gitt bevegelse den ene vegen.

 

Jeg er egenklig ikke ute etter noen avangsert reguleringssløyfe, bare noe som funker greit.

Jeg skal ikke ha en PID regulator med div forsterkere og slikt liksom, bare en enkel elektrisk krets med enkle opamp-koblinger.

 

Edit. med en microcontroller kan man vel bruke flere utganger med en D/A converter for å få variabel analog spenning ut istedenfor "av og på" spenning

Endret av flesvik
Lenke til kommentar

ok, er nok fort en PID regulator som brukes regner jeg med (muligens med litt ekstra stasj). hvis du bruker +-5V så er det jo ikke mye problem å få motoren til å gå begge veier.

 

i mitt eksempel bruker jeg jo 3 opamper for å gjøre om fra puls til spenning, og en opamp som ping-pong regulator. bytte denne med en differanse forsterker og du har det du vil ha. (kan hende du må ha noen spenningsfølgere for ikke å belaste kondensatoren og referansen fra poten i servoen da (maks to opamper til :p ), kommer ann på hvor mye de tåler å bli belastet.

 

http://www.allaboutcircuits.com/vol_3/chpt_8/9.html

Endret av Dr_VingTor
Lenke til kommentar

Ok takker for innputs :thumbup:

 

Her er mitt siste forslag til krets som er basert mye på din. (jeg har lagt til en differanseforsterker og moddet H-bridg'en litt pga at det ikke lenger er en "av/på" krets men har variabel spenning):

servo-krets3.jpg?t=1197175174

 

Komm gjerne med kritikk hvis du ser noe som er feil her.

 

ps. jeg har ikke giddet å regne ut verdiene til komponentene enda nei :)

 

ps2.

6 opamper, 4 transistorer, 3 mosfeter, 3 kondensatorer og masser av motstander ble jo ganske mye da. men man får vel alle opampene i en IC og sikkert også H-bridg'en i en IC så da tar det jo litt mindre plass og blir litt mindre rot på kretskortet alikevel da.

 

ps3.

en PID regulator er vel veldig dyr? så det er nokk ikke aktuellt og bruke dette.

Endret av flesvik
Lenke til kommentar

litt usikker på om h-bru koblingen din virker, men det finner du vell ut av. regulator delen ser nå i alle fall rett ut synes jeg, men det kan jo hende at den vil trenge noen ekstra komponenter for å kalibreres slik at den virker tilfredsstillende.

 

du får flere opamper i en pakke og h-bru i pakke så det bør ikke være noe problem.

 

en pid regulator trenger ikke være dyr. kan jo enkelt lage dette fra opamper også.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...