Konvertering af servodrevet til konstant rotation med revers. Arduino servoer SG90, MG995, MG996: tilslutningsdiagram og kontrol

De enkleste robotter er 2-hjulede eller 4-hjulede. Sådan en robot kunne være baseret på et chassis fra en radiostyret bil, men det er måske ikke alle, der har den ved hånden, eller det kan være en skam at spilde den. Du kan også lave chassiset selv, men at placere hjulene direkte på motoren er ikke en særlig god løsning, at motoren skal bremse, hvilket kræver en gearkasse. At få et færdiglavet chassis eller gearkasse eller en motor med gearkasse viste sig ikke at være så let en opgave i modsætning til servoer. Næsten ethvert servodrev kan nemt omdannes til en motor med gearkasse.

Hjul kan limes direkte til vippen på en sådan motor, og servokroppen er praktisk til montering.

OPMÆRKSOMHED! Designet af andre servoer kan variere, og derfor er denne manual kun delvis.

Den enkleste og billigste servo blev taget som grundlag:

Lad os først skille det ad.

Først fjerner vi unødvendig elektronik, bider føreren af ​​og styrer motoren direkte. Lad os derefter fortsætte med at ændre mekanikken, fjerne det første gear med den udvendige aksel og fjerne rejsestoppet fra det.

Vi tager modstanden ud og bider begrænseren ud på dens krop.

Vi samler alle mekanikerne igen og tjekker, at alt bevæger sig godt.

Det næste trin er at lodde ledningen til motoren.

Vi samler den tidligere servo til en ny motor med gearkasse.

Alt er klar, hvis du ikke har lavet nogen fejl, kan du nyde dit arbejde.

Denne artikel diskuterer servoer: deres design, formål, tips om tilslutning og styring, typer af servoer og deres sammenligning. Lad os gå videre og begynde med, hvad en servo er.

Servo koncept

Et servodrev forstås oftest som en mekanisme med en elektrisk motor, som kan blive bedt om at dreje til en given vinkel og holde denne position. Dette er dog ikke en fuldstændig fuldstændig definition.

For at være mere præcis er et servodrev et drev, der styres gennem negativ feedback, hvilket tillader præcis kontrol af bevægelsesparametre. Et servodrev er enhver form for mekanisk drev, der indeholder en sensor (position, hastighed, kraft osv.) og en drevstyringsenhed, der automatisk vedligeholder de nødvendige parametre på sensoren og enheden i henhold til en given ekstern værdi.

Med andre ord:

    Servodrevet modtager værdien af ​​styreparameteren som input. For eksempel rotationsvinklen.

    Styreenheden sammenligner denne værdi med værdien på sin sensor.

    Baseret på sammenligningsresultatet udfører drevet en handling: for eksempel at dreje, accelerere eller decelerere, så værdien fra den interne sensor kommer så tæt som muligt på værdien af ​​den eksterne kontrolparameter.

De mest almindelige er servoer, der holder en given vinkel og servoer, der opretholder en given rotationshastighed.

En typisk hobbyservo er vist nedenfor.

Hvordan er servoer designet?

Servodrevenhed

Servodrev har flere komponenter.

Drev - elmotor med gearkasse. For at konvertere elektricitet til mekanisk rotation skal du bruge elektrisk motor. Imidlertid er motorens omdrejningshastighed ofte for høj til praktisk brug. Bruges til at reducere hastigheden gearkasse: en gearmekanisme, der overfører og konverterer drejningsmoment.

Ved at tænde og slukke for elmotoren kan vi rotere udgangsakslen – servoens sidste gear, som vi kan fastgøre noget, som vi vil styre. Men for at positionen kan styres af enheden, er det nødvendigt feedback sensor - indkoder, som vil konvertere rotationsvinklen tilbage til et elektrisk signal. Et potentiometer bruges ofte til dette. Når du drejer skyderen på potentiometeret, ændres modstanden proportionalt med rotationsvinklen. Således kan den bruges til at bestemme den aktuelle position af mekanismen.

Ud over elmotoren, gearkassen og potentiometeret har servodrevet elektroniske komponenter, der er ansvarlige for at modtage en ekstern parameter, læse værdier fra potentiometeret, sammenligne dem og tænde/slukke motoren. Hun er ansvarlig for at opretholde negativ feedback.

Der går tre ledninger til servoen. To af dem er ansvarlige for at drive motoren, den tredje leverer et styresignal, som bruges til at indstille enhedens position.

Lad os nu se, hvordan man styrer en servo eksternt.

Servo kontrol. Styresignalgrænseflade

For at angive den ønskede position til servomotoren skal der sendes et styresignal gennem den til dette formål beregnede ledning. Styresignalet er impulser med konstant frekvens og variabel bredde.

Hvilken position servoen skal indtage afhænger af længden af ​​pulserne. Når et signal kommer ind i styrekredsløbet, producerer impulsgeneratoren i det sin egen impuls, hvis varighed bestemmes gennem et potentiometer. Den anden del af kredsløbet sammenligner varigheden af ​​to impulser. Hvis varigheden er anderledes, tænder elmotoren. Rotationsretningen bestemmes af, hvilken af ​​impulserne der er kortere. Hvis pulslængderne er ens, stopper elmotoren.

Oftest producerer hobbyservere pulser med en frekvens på 50 Hz. Det betyder, at der udsendes og modtages en puls hver 20. ms. Typisk betyder en pulsvarighed på 1520 µs, at servoen skal indtage midterpositionen. Forøgelse eller formindskelse af pulslængden vil få servoen til at dreje henholdsvis med uret eller mod uret. I dette tilfælde er der øvre og nedre grænser for pulsvarigheden. I Servo-biblioteket til Arduino er følgende pulslængder indstillet som standard: 544 μs for 0° og 2400 μs for 180°.

Bemærk venligst, at din specifikke enhed muligvis ikke har fabriksindstillinger. Nogle servoer bruger en pulsbredde på 760 µs. Midterpositionen svarer til 760 μs, svarende til hvordan i konventionelle servoer svarer midterpositionen til 1520 μs.

Det er også værd at bemærke, at disse blot er almindeligt accepterede længder. Selv inden for den samme servomodel kan der være fremstillingstolerancer, der får driftsområdet for pulslængder til at variere en smule. For nøjagtig drift skal hver specifik servo kalibreres: gennem eksperimentering er det nødvendigt at vælge det korrekte område specifikt for det.

Noget andet, der er værd at være opmærksom på, er forvirringen i terminologi. Ofte kaldes metoden til at styre servoer PWM/PWM (Pulse Width Modulation) eller PPM (Pulse Position Modulation). Dette er ikke sandt, og brug af disse metoder kan endda beskadige drevet. Det korrekte udtryk er PDM (Pulse Duration Modulation). I den er længden af ​​pulserne ekstremt vigtig, og frekvensen af ​​deres forekomst er ikke så vigtig. 50 Hz er normalt, men servoen vil fungere korrekt ved både 40 og 60 Hz. Det eneste, du skal huske på, er, at hvis frekvensen er stærkt reduceret, kan den fungere rykkende og med reduceret effekt, og hvis frekvensen øges kraftigt (f.eks. 100 Hz), kan den overophedes og svigte.

Servo Drive-egenskaber

Lad os nu finde ud af, hvilke typer servoer der er, og hvilke egenskaber de har.

Moment og svinghastighed

Lad os først tale om to meget vigtige egenskaber ved et servodrev: o drejningsmoment og om drejehastighed.

Kraftmomentet eller drejningsmomentet er en vektorfysisk størrelse svarende til produktet af radiusvektoren trukket fra rotationsaksen til punktet for påføring af kraften og vektoren af ​​denne kraft. Karakteriserer rotationsvirkningen af ​​en kraft på et fast legeme.

Kort sagt viser denne karakteristik, hvor tung en belastning servoen kan holde i hvile på et håndtag af en given længde. Hvis drejningsmomentet på servodrevet er 5 kg×cm, betyder det, at servodrevet vil holde et håndtag på 1 cm, i hvis frie ende 5 kg er ophængt, i vandret position. Eller tilsvarende et håndtag på 5 cm, hvorfra 1 kg er ophængt.

Servohastigheden måles ved den tid, det tager for servoarmen at rotere 60°. En karakteristik på 0,1 s/60° betyder, at servoen roterer 60° på 0,1 s. Ud fra det er det nemt at beregne hastigheden i en mere kendt værdi, omdrejninger i minuttet, men det sker, at når man beskriver servoer, bruges en sådan enhed oftest.

Det er værd at bemærke, at der nogle gange er en afvejning mellem disse to egenskaber, da hvis vi vil have en pålidelig, kraftig servo, skal vi være forberedt på, at denne mægtige enhed drejer langsomt. Og hvis vi vil have et meget hurtigt drev, så vil det være relativt nemt at fjerne det fra sin ligevægtsposition. Ved brug af samme motor bestemmes balancen af ​​gearets konfiguration i gearkassen.

Selvfølgelig kan vi altid tage en enhed, der bruger mere strøm, det vigtigste er, at dens egenskaber opfylder vores behov.

Formfaktor

Servoer varierer i størrelse. Og selvom der ikke er nogen officiel klassificering, har producenter længe holdt sig til flere størrelser med et generelt accepteret arrangement af fastgørelseselementer. De kan opdeles i:

    lille

    standard

De har følgende karakteristiske dimensioner:

Der findes også såkaldte "special type" servoer med dimensioner, der ikke falder ind under denne klassifikation, men procentdelen af ​​sådanne servoer er meget lille.

Intern grænseflade

Servodrev er enten analoge eller digitale. Så hvad er deres forskelle, fordele og ulemper?

Eksternt er de ikke anderledes: elektriske motorer, gearkasser, potentiometre er de samme, de adskiller sig kun i den interne kontrolelektronik. I stedet for et specielt analogt servomikrokredsløb har den digitale modpart en mikroprocessor på kortet, der modtager impulser, analyserer dem og styrer motoren. I det fysiske design er den eneste forskel i metoden til at behandle impulser og styre motoren.

Begge typer servodrev accepterer de samme styreimpulser. Den analoge servo beslutter derefter, om positionen skal ændres, og sender et signal til motoren, hvis det er nødvendigt. Dette sker normalt med en frekvens på 50 Hz. Således får vi 20 ms - minimum reaktionstid. På dette tidspunkt kan enhver ekstern påvirkning ændre servodrevets position. Men dette er ikke det eneste problem. I hvile påføres der ingen spænding til den elektriske motor i tilfælde af en lille afvigelse fra ligevægt, sendes et kort laveffektsignal til den elektriske motor. Jo større afvigelse, jo stærkere signal. Ved små afvigelser vil servodrevet således ikke være i stand til hurtigt at rotere motoren eller udvikle et stort drejningsmoment. "Døde zoner" dannes i tid og afstand.

Disse problemer kan løses ved at øge modtagefrekvensen, signalbehandling og elmotorstyring. Digitale servoer bruger en speciel processor, der modtager styreimpulser, behandler dem og sender signaler til motoren med en frekvens på 200 Hz eller mere. Det viser sig, at det digitale servodrev er i stand til at reagere hurtigere på ydre påvirkninger, hurtigt udvikle den nødvendige hastighed og drejningsmoment, hvilket betyder, at det er bedre at holde en given position, hvilket er godt. Det bruger selvfølgelig også mere strøm. Også digitale servoer er sværere at fremstille og koster derfor væsentligt mere. Faktisk er disse to ulemper alle de ulemper, som digitale servoer har. I tekniske termer besejrer de ubetinget analoge servoer.

Gear materialer

Gear til servoer kommer fra forskellige materialer: plastik, kulstof, metal. Alle af dem er meget udbredt, valget afhænger af den specifikke applikation og hvilke egenskaber der kræves i installationen.

Gear af plast, oftest nylon, er meget lette, ikke udsat for slid, og er mest almindelige i servoer. De tåler ikke store belastninger, men hvis belastningerne forventes at være lette, så er nylongear det bedste valg.

Carbongear er mere holdbare, slides praktisk talt ikke og er flere gange stærkere end nylongear. Den største ulempe er de høje omkostninger.

Metalgear er de tungeste, men de kan modstå maksimale belastninger. De slides ret hurtigt, så man skal skifte gear næsten hver sæson. Titanium gear er favoritten blandt metal gear, både hvad angår tekniske egenskaber og pris. Desværre vil de koste dig ret meget.

Børstede og børsteløse motorer

Der er tre typer servomotorer: almindelig kernemotor, kerneløs motor og børsteløs motor.

En konventionel kernemotor (til højre) har en tæt jernrotor med en trådvikling og magneter omkring den. Rotoren har flere sektioner, så når motoren roterer, får rotoren motoren til at vibrere lidt, når sektionerne passerer magneterne, hvilket resulterer i en servo, der vibrerer og er mindre præcis end en servo med en kerneløs motor. Den hule rotormotor (venstre) har en enkelt magnetisk kerne med en cylinder eller klokkeformet vikling omkring magneten. Det kerneløse design er lettere i vægt og har ingen sektioner, hvilket resulterer i hurtigere respons og jævn, vibrationsfri drift. Disse motorer er dyrere, men de giver et højere niveau af kontrol, drejningsmoment og hastighed sammenlignet med standardmotorer.

Servodrev med børsteløse motorer er dukket op for relativt nylig. Fordelene er de samme som ved andre børsteløse motorer: Der er ingen børster, hvilket betyder, at de ikke skaber rotationsmodstand og ikke slides, hastigheden og drejningsmomentet er højere med et strømforbrug svarende til børstede motorer. Børsteløse motorservoer er de dyreste servoer, men de giver bedre ydeevne end servoer med andre typer motorer.

Opretter forbindelse til Arduino

Mange servoer kan tilsluttes Arduino direkte. For at gøre dette kommer en løkke af tre ledninger fra dem:

    rød - ernæring; tilsluttes til 5V pin eller direkte til strømforsyning

    brun eller sort - jord

    gul eller hvid - signal; tilsluttes Arduinos digitale udgang.

For at oprette forbindelse til Arduino vil det være praktisk at bruge et portudvidelseskort såsom Troyka Shield. Selvom du med et par ekstra ledninger kan forbinde servoen via brødbrættet eller direkte til Arduino-stifterne.

Det er muligt selv at generere kontrolimpulser, men det er så almindelig en opgave, at der er et standard Servo-bibliotek til at forenkle det.

Kostbegrænsninger

Et typisk hobbyservodrev bruger mere end 100 mA under drift. Samtidig er Arduino i stand til at levere op til 500 mA. Derfor, hvis du skal bruge et kraftigt servodrev i et projekt, giver det mening at tænke på at adskille det i et kredsløb med ekstra strøm.

Lad os se på eksemplet med tilslutning af et 12V servodrev:

Begrænsning af antallet af tilsluttede servoer

På de fleste Arduino-kort understøtter Servo-biblioteket styring af maksimalt 12 servoer på Arduino Mega, dette tal stiger til 48. Der er dog en lille bivirkning ved at bruge dette bibliotek: hvis du ikke arbejder med en Arduino Mega; , så bliver det umuligt at bruge analogWrite()-funktionen på 9 og 10 ben, uanset om servoer er forbundet til disse ben eller ej. På Arduino Mega kan vi forbinde op til 12 servoer uden at forstyrre PWM/PWM funktionaliteten, hvis vi bruger flere servoer vil vi ikke kunne bruge analogWrite() på ben 11 og 12.

Servo bibliotek funktionalitet

Servo-biblioteket tillader softwarekontrol af servoer. Til dette oprettes en variabel af typen Servo. Ledelsen varetages af følgende funktioner:

    attach() - vedhæfter en variabel til en specifik pin. Der er to syntaksmuligheder for denne funktion: servo.attach(pin) og servo.attach(pin, min, max) . I dette tilfælde er pin nummeret på den pin, som servodrevet er forbundet til, min og max er pulslængderne i mikrosekunder, ansvarlige for rotationsvinklerne på 0° og 180°. Som standard er de indstillet til henholdsvis 544 μs og 2400 μs.

    write() - kommanderer servoen til at acceptere en eller anden parameterværdi. Syntaksen er: servo.write(angle) hvor vinkel er den vinkel servoen skal dreje igennem.

    writeMicroseconds() - giver en kommando til at sende en puls af en vis længde til servodrevet, det er en analog på lavt niveau af den forrige kommando. Syntaksen er: servo.writeMicroseconds(uS) , hvor uS er pulslængden i mikrosekunder.

    read() - læser den aktuelle værdi af den vinkel, hvor servoen er placeret. Syntaksen er som følger: servo.read() returnerer en heltalsværdi mellem 0 og 180.

    Attached() - kontrollerer, om en variabel er blevet knyttet til en bestemt pin. Syntaksen er som følger: servo.attached() , returnerer logisk sand, hvis variablen var knyttet til en pin, ellers false.

    detach() - udfører den modsatte handling af attach() , det vil sige, at den adskiller variablen fra den pin, den blev tildelt. Syntaksen er: servo.detach() .

Alle Servo2-biblioteksmetoder er de samme som Servo-metoder.

Eksempel på brug af Servo-biblioteket

I stedet for en konklusion

Servodrev er anderledes, nogle er bedre - andre er billigere, nogle er mere pålidelige - andre er mere nøjagtige. Og før du køber en servo, er det værd at huske på, at den måske ikke har de bedste egenskaber, så længe den passer til dit projekt. Held og lykke i dine bestræbelser!

I denne artikel vil vi tale om servoer i Arduino-projekter. Det er takket være servomotorer, at almindelige elektroniske projekter bliver robotiske. Tilslutning af en servo til et Arduino-projekt giver dig mulighed for at reagere på sensorsignaler med nogle præcise bevægelser, for eksempel åbne en dør eller dreje sensorer i den ønskede retning. Artiklen diskuterer spørgsmål om styring af servoer, mulige ordninger til at forbinde servoer til Arduino samt eksempler på skitser.

Et servodrev er en type drev, der præcist kan styre bevægelsesparametre. Med andre ord er det en motor, der kan rotere sin aksel gennem en bestemt vinkel eller opretholde kontinuerlig rotation i en præcis periode.

Servodrevets driftskredsløb er baseret på brugen af ​​feedback (et lukket kredsløb, hvor indgangs- og udgangssignalerne ikke matches). Servodrevet kan være enhver form for mekanisk drev, som inkluderer en sensor og en styreenhed, der automatisk vedligeholder alle de parametre, der er indstillet på sensoren. Servodrevet består af en motor, en positionssensor og et styresystem. Hovedopgaven for sådanne enheder er implementering inden for servomekanismer. Også servodrev bruges ofte inden for områder som materialebearbejdning, produktion af transportudstyr, træforarbejdning, metalpladeproduktion, byggematerialeproduktion og andre.

I Arduino-robotprojekter bruges servo ofte til simple mekaniske handlinger:

  • Drej afstandsmåleren eller andre sensorer til en bestemt vinkel for at måle afstanden i et snævert synsfelt af robotten.
  • Tag et lille skridt med foden, bevæg dit lem eller hoved.
  • At skabe robotmanipulatorer.
  • At implementere styremekanismen.
  • Åbn eller luk en dør, klap eller anden genstand.

Selvfølgelig er anvendelsesområdet for servo i rigtige projekter meget bredere, men de angivne eksempler er de mest populære ordninger.

Ordning og typer af servoer

Driftsprincippet for et servodrev er baseret på feedback fra et eller flere systemsignaler. Udgangsindikatoren føres til indgangen, hvor dens værdi sammenlignes med indstillingshandlingen, og de nødvendige handlinger udføres - for eksempel slukkes motoren. Den enkleste implementeringsmulighed er en variabel modstand, som styres af akslen - når parametrene for modstanden ændres, ændres parametrene for den strøm, der forsyner motoren.

I rigtige servoer er kontrolmekanismen meget mere kompleks og bruger indbyggede controller-chips. Afhængigt af den anvendte type feedback-mekanisme er der analog Og digital servoer. Førstnævnte bruger noget, der ligner et potentiometer, sidstnævnte bruger controllere.

Hele servostyrekredsløbet er placeret inde i huset, styresignaler og strøm forsynes som regel gennem tre ledninger: jord, forsyningsspænding og styresignal.

Kontinuerlig rotationsservo 360, 180 og 270 grader

Der er to hovedtyper af servomotorer - med kontinuerlig rotation og med en fast vinkel (oftest 180 eller 270 grader). Forskellen mellem servo begrænset rotation ligger i de mekaniske elementer i designet, der kan blokere bevægelsen af ​​akslen uden for de vinkler, der er specificeret af parametrene. Efter at have nået en vinkel på 180, vil akslen påvirke begrænseren, og den vil give en kommando om at slukke for motoren. Servomotorer med kontinuerlig rotation har ikke sådanne begrænsere.

Servo gear materialer

For de fleste servoer er forbindelsesleddet mellem akslen og udvendige elementer et tandhjul, så det er meget vigtigt, hvilket materiale det er lavet af. Der er to mest overkommelige muligheder: metal eller plast gear. I dyrere modeller kan du finde elementer lavet af kulfiber og endda titanium.


Plastmuligheder er naturligvis billigere, nemmere at fremstille og bruges ofte i billige servoer. For uddannelsesprojekter, hvor servoen laver et par bevægelser, er dette ikke en stor sag. Men i seriøse projekter er brugen af ​​plastik umulig på grund af det meget hurtige slid af sådanne gear under belastning.

Metalgear er mere pålidelige, men det påvirker selvfølgelig både prisen og vægten af ​​modellen. Sparsomme producenter kan lave nogle dele plastik og nogle metal, dette skal også huskes. Og naturligvis i de billigste modeller er selv tilstedeværelsen af ​​et metalgear ikke en garanti for kvalitet.

Titanium eller carbon gear er den mest foretrukne mulighed, hvis du ikke er begrænset af budgettet. Lette og pålidelige, sådanne servoer bruges i vid udstrækning til at skabe modeller af biler, droner og fly.

Fordele ved servomotorer

Den udbredte brug af servodrev skyldes, at de har stabil drift, høj modstandsdygtighed over for interferens, lille størrelse og en bred vifte af hastighedskontrol. Vigtige funktioner ved servoer er evnen til at øge kraften og give informationsfeedback. Og det følger, at i fremadgående retning er kredsløbet en sender af energi, og i den modsatte retning er det en sender af information, der bruges til at forbedre kontrolnøjagtigheden.

Forskelle mellem en servo og en konventionel motor

Ved at tænde eller slukke for en konventionel elektrisk motor, kan vi generere en roterende bevægelse og få hjul eller andre genstande, der er fastgjort til akslen, til at bevæge sig. Denne bevægelse vil være kontinuerlig, men for at forstå, i hvilken vinkel akslen har drejet, eller hvor mange omdrejninger den har lavet, skal du installere yderligere eksterne elementer: indkodere. Servodrevet indeholder allerede alt, hvad der er nødvendigt for at få information om de aktuelle rotationsparametre og kan slukke uafhængigt, når akslen roterer til den ønskede vinkel.

Forskelle mellem servo- og stepmotor

En vigtig forskel mellem en servomotor og en stepmotor er evnen til at arbejde med høje accelerationer og under variable belastninger. Også servomotorer har højere effekt. Stepmotorer har ikke feedback, så effekten af ​​tab af trin kan observeres i servomotorer, tab af trin er udelukket - alle overtrædelser vil blive registreret og rettet. Med alle disse åbenlyse fordele er servomotorer dyrere enheder end stepmotorer, har et mere komplekst forbindelses- og kontrolsystem og kræver mere kvalificeret vedligeholdelse. Det er vigtigt at bemærke, at stepmotorer og servoer ikke er direkte konkurrenter - hver af disse enheder har sit eget specifikke anvendelsesområde.

Hvor kan man købe populære servoer SG90, MG995, MG996

Den mest overkommelige servomulighed SG90 1.6KG Servo-drev SG90 og MG90S til Arduino til en pris under 70 rubler
En anden mulighed for SG90 Pro 9g servoen fra en betroet leverandør på Ali Servo SG90 fra pålidelig leverandør RobotDyn
Servotester Flere muligheder for servo testere
Beskyttet servodrev med et moment på 15 kg Servo JX DC5821LV 21KG Fuld vandtæt Kerne mental gear 1/8 1/10 RC bil Scaler Buggy Crawler TRAXXAS RC4WD TRX-4 SCX10 D90
Servo MG996R MG996 Servo Metal Gear til Futaba JR Servo 13KG 15KG Servoer Digital MG995 MG996 MG996R Servo Metal Gear

Den afgørende faktor ved styring af servodrev er styresignalet, som består af impulser med konstant frekvens og variabel bredde. Pulslængde er en af ​​de vigtigste parametre, der bestemmer servoens position. Denne længde kan indstilles manuelt i programmet ved hjælp af hjørnevalgsmetoden eller ved hjælp af bibliotekskommandoer. For hvert enhedsmærke kan længden være forskellig.

Når signalet kommer ind i styrekredsløbet, afgiver generatoren sin puls, hvis varighed bestemmes ved hjælp af et potentiometer. I en anden del af kredsløbet sammenlignes varigheden af ​​det påførte signal og signalet fra generatoren. Hvis disse signaler er forskellige i varighed, tændes den elektriske motor, hvis rotationsretning bestemmes af, hvilken af ​​impulserne der er kortere. Når pulslængderne er ens, stopper motoren.

Standardfrekvensen, ved hvilken der gives impulser, er 50 Hz, det vil sige 1 impuls hvert 20. millisekund. Ved disse værdier er varigheden 1520 mikrosekunder, og servoen er i midterpositionen. Ændring af pulslængden fører til rotation af servodrevet - når varigheden øges, er rotationen med uret, og når den falder, drejes den mod uret. Der er varighedsgrænser - i Arduino i Servo-biblioteket, for 0° er pulsværdien sat til 544 μs (nedre grænse), for 180° - 2400 μs (øvre grænse).

(Billede brugt fra amperka.ru)

Det er vigtigt at overveje, at indstillingerne på en bestemt enhed kan afvige lidt fra de generelt accepterede værdier. For nogle enheder kan den gennemsnitlige pulsposition og -bredde være 760 µs. Alle accepterede værdier kan også variere lidt på grund af fejl, der kan opstå under produktionen af ​​enheden.

Drevstyringsmetoden kaldes ofte fejlagtigt PWM/PWM, men det er ikke helt korrekt. Styring afhænger direkte af pulslængden, hyppigheden af ​​deres forekomst er ikke så vigtig. Korrekt drift vil blive sikret ved både 40 Hz og 60 Hz kun et stærkt fald eller stigning i frekvensen vil bidrage. Hvis der er et kraftigt fald, vil servodrevet begynde at fungere i ryk, hvis frekvensen øges til over 100 Hz, kan enheden overophedes. Derfor er det mere korrekt at kalde det PDM.

Baseret på den interne grænseflade kan der skelnes mellem analoge og digitale servoer. Der er ingen ydre forskelle - alle forskellene er kun i den interne elektronik. Det analoge servodrev indeholder en speciel chip indeni, mens det digitale servodrev indeholder en mikroprocessor, der modtager og analyserer impulser.

Ved modtagelse af et signal bestemmer den analoge servo om positionen skal ændres eller ej, og leverer om nødvendigt et signal med en frekvens på 50 Hz til motoren. I løbet af reaktionstiden (20 ms) kan der forekomme ydre påvirkninger, der ændrer servodrevets position, og enheden vil ikke nå at reagere. Et digitalt servodrev bruger en processor, der leverer og behandler signaler med en højere frekvens – fra 200 Hz, så den kan reagere hurtigere på ydre påvirkninger og hurtigt udvikle den ønskede hastighed og drejningsmoment. Derfor vil den digitale servo bedre kunne holde den indstillede position. Samtidig kræver digitale servodrev mere elektricitet for at fungere, hvilket øger deres omkostninger. Kompleksiteten af ​​deres produktion bidrager også i høj grad til prisen. Høje omkostninger er den eneste ulempe ved digitale servoer teknisk set, de er meget bedre end analoge enheder.

Tilslutning af en servomotor til Arduino

Servodrevet har tre kontakter, som er malet i forskellige farver. Den brune ledning fører til jord, den røde ledning fører til +5V strømforsyningen, og den orange eller gule ledning fører til signalledningen. Enheden er forbundet til Arduino via et brødbræt på den måde, der er vist på figuren. Den orange ledning (signal) er forbundet til den digitale pin, den sorte og røde ledning er forbundet til henholdsvis jord og strøm. For at styre servomotoren behøver du ikke at forbinde specifikt til shim-stifter - vi har allerede beskrevet princippet om servostyring tidligere.

Det anbefales ikke at tilslutte kraftige servoer direkte til kortet, fordi... de skaber en strøm til Arduino-strømkredsløbet, der ikke er kompatibel med livet - du vil være heldig, hvis beskyttelsen virker. Oftest er symptomerne på overbelastning og forkert strømforsyning til servoen servoens "ryk", en ubehagelig lyd og brættet genstart. Til strømforsyning er det bedre at bruge eksterne kilder, sørg for at kombinere grundene til de to kredsløb.

Skitse til styring af en servo i Arduino

At styre en servo direkte ved at ændre pulsvarigheden i skitsen er en ret ikke-triviel opgave, men heldigvis har vi et fremragende Servo-bibliotek indbygget i Arduino-udviklingsmiljøet. Vi vil overveje alle nuancerne ved programmering og arbejde med servoer i en separat artikel. Her giver vi et simpelt eksempel på brug af Servo.

Betjeningsalgoritmen er enkel:

  • Først forbinder vi Servo.h
  • Opret et objekt af Servo-klassen
  • I opsætningsblokken angiver vi, hvilken pin servoen er tilsluttet
  • Vi bruger objektets metoder på den sædvanlige C++ måde. Den mest populære er skrivemetoden, hvortil vi leverer en heltalsværdi i grader (for en 360 servo vil disse værdier blive fortolket forskelligt).

Et eksempel på en simpel skitse til arbejde med et servodrev

Et eksempel på et projekt, hvor vi straks først indstiller servomotoren til nul vinkel og derefter roterer den 90 grader.

#omfatte Servo servo; // Opret et objekt void setup() ( servo.attach(9); // Angiv til et objekt af Servo-klassen, at servoen er knyttet til pin 9 servo1.write(0); // Indstil startpositionen ) void loop() ( servo.write (90); // Roter servoen med 90 graders forsinkelse(1000); delay(100); delay(1000); ; )

Skitse til to servoer

Og i dette eksempel arbejder vi med to servoer på én gang:

#omfatte Servo servo1; // Første servodrev Servo servo2; // Second servo void setup() ( servo1.attach(9); // Angiv til Servo-klasseobjektet, at servoen er forbundet til pin 9 servo2.attach(10); // Og denne servo er forbundet til pin 10 ) void loop() ( // Indstil positionerne servo1.write(0); servo2.write(180); delay(20); // Skift positionerne servo2.write(0); servo1.write(180); )

Servostyring ved hjælp af potentiometer

I dette eksempel roterer vi servoen afhængigt af værdien modtaget fra potentiometeret. Vi aflæser værdien og konverterer den til en vinkel ved hjælp af kortfunktionen:

//Fragment af et standardeksempel på brug af Servo-biblioteket void loop() ( val = analogRead(A0); // Læs værdien fra den pin, som potentiometret er forbundet til val = map(val, 0, 1023, 0, 180); // Konverter tallet i området fra 0 til 1023 til det nye område - fra 0 til 180. servo.write(val);

Karakteristika og tilslutning af SG-90

Skal du købe det billigste og enkleste servodrev, så vil SG 90 være den bedste mulighed. Denne servo bruges oftest til at styre små letvægtsmekanismer med en rotationsvinkel fra 0° til 180°.

SG90 specifikationer:

  • Kommandoudførelseshastighed 0,12s/60 grader;
  • Strøm 4,8V;
  • Driftstemperaturer fra -30C til 60C;
  • Dimensioner 3,2 x 1,2 x 3 cm;
  • Vægt 9 g.

Beskrivelse SG90

Trådfarver er standard. Servodrevet er billigt og giver ikke præcise indstillinger for start- og slutpositioner. For at undgå unødvendige overbelastninger og den karakteristiske knitrende lyd i 0 og 180 graders position, er det bedre at indstille yderpunkterne til 10° og 170°. Når enheden betjenes, er det vigtigt at overvåge forsyningsspændingen. Hvis denne indikator er stærkt overvurderet, kan de mekaniske elementer i gearmekanismerne blive beskadiget.

Servo driver MG995 og MG996 tower pro

MG995-servoen er den næstmest populære servomodel, der oftest er forbundet med Arduino-projekter. Det er relativt billige servomotorer med meget bedre ydeevne end SG90.

Specifikationer MG995

Udgangsakslen på MG995 roterer 120 grader (60 i hver retning), selvom mange sælgere angiver 180 grader. Enheden er anbragt i en plastikkasse.

  • Vægt 55 g;
  • Moment 8,5 kg x cm;
  • Hastighed 0,2s/60 grader (ved 4,8V);
  • Arbejdseffekt 4,8 – 7,2V;
  • Driftstemperaturer – fra 0C til -55C.

Beskrivelse MG995

Forbindelsen til Arduino sker også via tre ledninger. I princippet er det for amatørprojekter muligt at forbinde MG995 direkte til Arduino, men motorstrømmen vil altid skabe en farlig belastning på kortets indgange, så det anbefales stadig at strømforsyne servoen separat, ikke at glemme at forbinde jorden af begge strømkredsløb. En anden mulighed, der gør livet lettere, ville være at bruge færdige servocontrollere og skjolde, som vi vil gennemgå i en separat artikel.

MG996R ligner MG995 i sine egenskaber, kun det kommer i en metalkasse.

Konvertering af et servodrev til en servo med kontinuerlig rotation

Som beskrevet ovenfor styres servoen af ​​impulser med variabel bredde, der indstiller rotationsvinklen. Den aktuelle position aflæses fra potentiometeret. Hvis du frakobler akslen og potentiometeret, vil servomotoren indtage positionen af ​​potentiometerskyderen som ved midtpunktet. Alle disse handlinger vil føre til, at feedback fjernes. Dette giver dig mulighed for at styre hastigheden og rotationsretningen via signaltråden, og skabe en kontinuerlig rotationsservo. Det er vigtigt at bemærke, at en servo med konstant rotation ikke kan rotere gennem en bestemt vinkel og lave et strengt specificeret antal omdrejninger.

For at udføre ovenstående trin skal du skille enheden ad og foretage ændringer i designet.

I Arduino IDE skal du lave en lille skitse, der placerer vippen i midterpositionen.

#omfatte Servo myservo; void setup())( myservo.attach(9); myservo.write(90); ) void loop())( )

Herefter skal enheden tilsluttes Arduino. Når den er tilsluttet, begynder servoen at rotere. Det er nødvendigt at opnå dets fuldstændige stop ved at justere modstanden. Når rotationen stopper, skal du finde akslen, trække det fleksible element ud af det og installere det tilbage.

Denne metode har flere ulemper - at sætte modstanden til et fuldstændigt stop er ustabil med det mindste stød/opvarmning/afkøling, det justerede nulpunkt kan gå tabt. Derfor er det bedre at bruge metoden til at erstatte potentiometeret med en trimmer. For at gøre dette skal du fjerne potentiometeret og erstatte det med en trimmermodstand med samme modstand. Nulpunktet skal justeres ved hjælp af en kalibreringsskitse.

Enhver metode til at konvertere en servo til en servo med kontinuerlig rotation har sine ulemper. For det første er det svært at justere nulpunktet. For det andet er kontrolområdet lille - med en lille ændring i pulsbredden kan hastigheden ændre sig markant. Du kan udvide rækkevidden programmatisk i Arduino.

Konklusion

Servoer spiller en meget vigtig rolle i mange Arduino-projekter, lige fra robotteknologi til smart home-systemer. Alt relateret til bevægelse kræver traditionelt specialviden, og det er ikke en let opgave at skabe et fuldgyldigt, velfungerende drive. Men ved hjælp af servomotorer kan opgaven i mange tilfælde forenkles, hvorfor servo konstant bruges selv i entry-level projekter.

I denne artikel forsøgte vi at dække forskellige aspekter af at bruge servoer i Arduino-projekter: fra forbindelse til at skrive skitser. Ved at vælge den enkleste servomodel (f.eks. sg 90) kan du nemt gentage de givne eksempler og lave dine første projekter, hvor noget bevæger sig og ændrer sig. Vi håber, at denne artikel vil hjælpe dig med dette.

For at adskille vores servodrev skal vi bruge en skruetrækker. Fordi Jeg er ved at skille et meget lille servodrev ad, så jeg skal bruge en tilsvarende skruetrækker. Personligt bruger jeg skruetrækkere fra et eller andet billigt kinesisk sæt. Jeg købte den i en kiosk i den underjordiske passage for omkring $5, så den er ikke særlig dyr.

For at åbne servodrevet behøver du kun at skrue fire skruer af. De er placeret på bunddækslet. Skru af:

Ved at fjerne dækslet kan du undersøge kontrolenheden. Jeg vil ikke gå i detaljer, jeg vil alligevel fjerne det herfra. Du kan også se den motor, som to ledninger fører til.

Der er også et dæksel på toppen, efter afmontering kan man se gearkassens gear. Det er værd at bemærke, at to af dem er fastgjort til potentiometeret - dette er ret vigtigt, da for at gearkassen skal fortsætte med at udføre sin funktion, skal vi faktisk bryde potentiometeret - vi vil simpelthen bruge det som en akse for gearene.

Faktisk skal du fjerne alle gearene fra servodrevet og lægge dem til side i et stykke tid. Vi tager potentiometeret ud (forresten, det er også en variabel modstand) fra huset ved forsigtigt at skubbe det fra undersiden af ​​servoen med en skruetrækker.

Nu er i virkeligheden tidspunktet for point of no return ankommet. Det vil selvfølgelig altid være muligt at lodde alt sammen igen, men det er sværere. Så - potentiometeret bider af.

Derefter adskiller vi styrekortet med strøm- og signalledninger ved hjælp af samme metode.


Så bider vi ledningerne af motoren. Vær forsigtig her og bid ikke kontakterne af selve motoren - hvis du ikke er sikker, er det bedre at forlade ledningen med en reserve. Så kan den afloddes. Jeg bider tråden helt ned til kontakten.

Lad os tage en opgørelse.

Alt ser ud til at være på plads. Lad os nu hente vores potentiometer.

Faktum er, at den nu også kun roterer i en bestemt vinkel. Og da det er aksen, og det største tandhjul er fastgjort til den, som vi faktisk sætter hjulet på senere, skal vi sørge for, at det roterer konstant. Vi tager to metalplader ud, der forhindrer dette. Vi får:

Jeg håber, at billedet viser, hvad jeg gjorde. Jeg rev den ud med en lille tang, da der ikke var noget mere passende ved hånden.
Nu skal du skære begrænseren af ​​på selve gearet. Det ligner et fremspring fra bunden af ​​gearet. Det er nemt at finde, det ser sådan ud.

Vi skærer den.

Og derefter kan du begynde at samle gearkassen tilbage i huset. Vi indsætter den akse, vi lavede tidligere, fra potentiometeret.

Dernæst ét ​​gear ad gangen, begyndende med det mindste. Vær forsigtig, når du indsætter det sidste gear - det er specielt fastgjort til aksen på det tidligere potentiometer, da spidsen af ​​aksen er lavet i form af et bogstav D. Dette fremspring skal passe ind i udsparingen i gearet. Det viser sig noget, der ligner det følgende billede.

Vi sætter topdækslet på gearkassen, så det ikke falder fra hinanden under det videre arbejde.

Nå, der er ikke meget tilbage. Vi tager ledningen med det stik, som vi tidligere har bidt af fra brættet, og adskiller ledningerne i det. Du bør ikke adskille dem over en lang afstand, faktisk er en centimeter ganske nok.

Vi rydder to af dem (stort set alle, men jeg brugte rød og grøn). Det er nok at afskære omkring 3 mm isolering. Til vores formål - mere end.

Vi bøjer simpelthen den resterende ustrippede ledning, så den ikke forstyrrer os.

Lad os gå videre til de varme ting. Det er tid til at varme loddekolben op. Mens loddekolben varmede op, gjorde jeg servodrevet i grebet mere behageligt.

Den første ting, vi skal gøre, er at fjerne resterne af gammelt loddemateriale, der forbliver på motorkontakterne. Jeg gør dette ved hjælp af en aflodningspumpe, efter at have forvarmet kontakten med et loddekolbe til en sådan tilstand, at loddet smelter. Det vigtigste her er ikke at overdrive det - motorens bagside er stadig af plastik og kan ikke lide at varme op i lang tid. Processen ser nogenlunde sådan ud:

Jeg forstår, at det måske ikke er særlig mærkbart, hvad jeg gjorde, men der var praktisk talt ikke noget loddemiddel tilbage på kontakterne, hvilket jeg gerne ville have.

Der er vidunderlige artikler om lodning i DI HALT. Han er generelt et geni, synes jeg. Link til hans blog, der er faktisk en masse ting udover lodning.
Kort sagt, for at kunne lave en god lodning, skal du altid af med den gamle lodning først.
Det er tilbage at lodde to ledninger. Enhver, der er bekendt med lodning, kan gøre det på 5 sekunder. For en som mig, der normalt tog en loddekolbe for anden gang i mit liv, vil det tage lidt mere tid, men stadig - det er meget enkelt, alle kan gøre det.
Ved lodning bruger jeg flux, som ganske vist gør arbejdet meget nemmere og kvaliteten af ​​lodning er meget nemmere at sikre med det. Personligt, efter råd fra, igen, DI HALT, blev jeg allerede forelsket i LTI-120 på hans blog, jeg har den i sådan en moderigtig krukke med en børste.

Spænd de fire skruer.

Det er alt, modifikationen af ​​servoen er forbi. Efter at have sat servodrevet mere komfortabelt og fast i grebet igen, kan du begynde at teste.

Denne gang vil jeg ikke blive fancy med controlleren, men vil blot påføre 5V spænding fra strømforsyningen til de grønne og røde ledninger. Bemærk, i videoen er der en ret høj lyd fra drevet.

Som du kan se, forhindrer intet nu vores servo i at rotere uden at stoppe. Lyden produceret af drevet er faktisk ikke stille, men i princippet tåler den. Det var nok alt for i dag.

Servoer har typisk en begrænset rotationsvinkel på 180 grader. I dette tilfælde vil vi overveje en "modificeret" servo med en ubegrænset akserotationsvinkel.


Ydelsesegenskaber fra sælgers side

Størrelse: 40*20*37,5+5 mm drivaksel
vægt: 38 g
ledningslængde: 320mm

Hastighed: 0,19 sek/60 grader (4,8V)
0,22 sek/60 grader (6 V)
hastighederne er højst sandsynligt blandet, servoen skal være 6 volt hurtigere
drejningsmoment: 5 kg. cm. ved (4,8 V)
5,5 kg.cm.at (6 V)
spænding: 4,8V-6V

Standard leveringssæt

4 gyngestole i forskellige former
4 bøsninger, 4 gummidæmpere og 4 skruer til fastgørelse af servoen
og en anden lille skrue til at fastgøre vippen til akslen undslap fra billedet :)

Udseendet inspirerer til selvtillid, berøringen er også okay, små afstøbninger er kun i området for monteringsørerne, klistermærket er sat lidt skævt på (en tautologi, ja!). Tråden er blød, stikket passer godt på stifterne.

Nå, nu obduktionen:

Hvem vidste ikke, hvordan det fungerer: i tilfældet er der en motor, et kontrolkort og en variabel modstand, baseret på hvilken position servoen bestemmer aksens vinkel.
Gearkassen i denne servo er plastik, levetiden er mindre end en metal og kan ikke lide tunge belastninger. Bøsningen til den centrale akse er kobber eller en slags legering. Der er et leje på udgangsakslen. Smøremidler kan tilsættes

Elektrisk del

Hjerner, der styrer rotationsretningen og -hastigheden, variabel hastighed og elektrisk motor.

Og nu, opmærksomhed, et "life hack", hvordan man forvandler en almindelig servo til en konstant rotationsservo

I originalen sidder variablen med dens akse fast i udgangsakslen inde fra servoen i den modificerede version, akslen blev bidt af/brækket af, tilsyneladende på montagestadiet, er modstanden indstillet til midterpositionen akslen roterer ikke i hvile. Hvis du går længere, kan du smide det helt ud og erstatte det med 2 identiske konstante modstande, det er praktisk at sætte noget SMD på kontrolkortet.

I alt:
Serva som serva, ikke rum, men heller ikke forbrugsgoder,
kan findes billigere og med metal gearkasse

PS
Som korrekt bemærket i kommentarerne glemte jeg helt at nævne, hvordan servoen styres med 5-6 volt og et ppm-signal via den tredje ledning.

De mest almindelige kontrolmuligheder:
1) tilslut strømmen på den ene side, på den anden side udgangen til 3 "forbrugere" (servere, motorer osv.) strøm og PPM signal, du kan bruge håndtaget til at justere servoens hastighed og rotationsretning
2) RC-udstyr ved modtagerens udgange er det samme ppm-signal.
3) styr med en arduino

Video

Pps
Som et resultat af "modifikationen" har servoen mistet feedback, hjernen kender ikke den reelle position af akslen og rotationsretningen, tag dette punkt i betragtning, hvis du skal købe det.

Jeg planlægger at købe +17 Tilføj til favoritter Jeg kunne godt lide anmeldelsen +31 +56