Sida 1 av 1

Dead bandwidthtid för RC-servo

Postat: 11 mars 2011, 15:22:25
av Thuren
Hej Svenska Elektronikforumet, nyfrälst elektroniker här ;)

Jag köpte nyligen ett RC-servo (TowerPro SG-5010) från electrokit, de anger DBW till 4 ms, tillverkaren anger 20 us och i övrigt ger googlande både 4 ms och 4 us i lika delar samt någon gång 20 us, vad ska man tro egentligen?

Har en atmega 168 som jag tänkte styra servot med.

Min plan var ju att fuska lite och köra NOPar manuellt till en början mest för att det är kul att få liv i servot, för att sedan sätta mig med näsan i dokumentationen och köra PWM på riktigt, men det blir ju svårt om tiden är i storleksordningen mikrosekunder eftersom nopar inte ger tillräckligt bra "upplösning" sas.

Re: Dead bandwidthtid för RC-servo

Postat: 11 mars 2011, 15:57:59
av Gimbal
Standard är väl en puls var 20ms som är ca 1-2ms lång.

Re: Dead bandwidthtid för RC-servo

Postat: 11 mars 2011, 16:16:08
av Icecap
Och det är inte PWM, det är pulsbredd-styrning.

Re: Dead bandwidthtid för RC-servo

Postat: 11 mars 2011, 16:28:22
av bearing
Det kommer ju behövas tusentals NOP för att göra pulsen - verkar lite opraktiskt. ATmega168 har ju en 16-bitars PWM-modul. Med den kan man få mikrosekundupplösning på både pulsen och perioden, om man vill.

Re: Dead bandwidthtid för RC-servo

Postat: 12 mars 2011, 00:31:27
av LHelge
Det kan vara så att jag är ute och cyklar nu, men jag tror du blandar ihop två olika saker. Till ett analogt servo ska du inte skicka pulser oftare än var 20:e millisekund, annars blir det överbelastat på något sätt.

Det du pratar om DBW är i min värd en slags hysteres kring nuvarande arbetspunkt. Ett exempel:

DBW = 4 us
servots nuvarande position motsvarar en pulslängd på 1,5 ms = 1500 us
Du skickar kontinuerligt pulser på exakt 1500 us, allt är frid och fröjd
Helt plötsligt ändras belastningen och servot flyttar sig motsvarande 1 us till pulslängd 1,501 ms alternativt du börjar skicka pulser på 1,501 ms och servot behåller sin position. Då denna förändring ligger inom +- 2 us (total bandbredd 4 us) från den sanna positionen/pulslängden så skiter servot i denna avvikelse och fortsätter som inget har hänt. Tills det att felet blir större än 2 us.

Detta för att det inte ska uppstå oscillationer kring mittpunkten som belastar servot mer än nödvändigt.

Som jag sa tidigare så kan det hända att jag bara yrar nu, jag har ingen källa på detta utan det är bara något jag antingen läst någonstans för länge sedan eller bara hittat på själv.