Sida 1 av 1

RC-servon flyttar sig vid start.

Postat: 27 juli 2006, 22:05:43
av JimmyAndersson
Jag har anslutit 2st servon direkt på utgångarna RB2 och RB3 på en PIC18F1320.
När jag startar labbagget så flyttar sig servoaxlarna lite. Åt samma håll varje gång. Jag har avstörningskondingar på labbplattan. Även några större kondingar som håller spänningen över PIC'en i ca 2 sekunder efter man stängt av labbagget.

Om jag däremot resetar PIC-kretsen ('duttar' MCLR-pinnen mot jord) så håller sig däremot servona lugna. Likaså om jag håller den resetad när jag startar labbagget. Därför drar jag slutsatsen att det inte är något i själva koden som orsakar detta fenomen. Har jag fel?


Det finns säkert något genialt sätt att få servoaxlarna att stå stilla vid start av PIC-kretsen. Hur gör man? :)

edit: Ändrade rubriken.

Postat: 27 juli 2006, 22:22:45
av oJsan
Det måste bero på att en "servopuls" genereras på portarna vid uppstart...
Det känns som nått spänningsproblem, dvs att koden börjar köras innan spänningen är stabiliserad... eller att PIC:en börjar köras innan servonas interna spänningar stabiliserats...
Det här kanske skulle funka:
[VCC]-[R]-(MCLR)--[GND]
Koppla reset i mitten, då borde den hållas resetad tills kondensatorn har laddats upp.. (aktivt låg reset på PIC va?)
På AVR finns det en inställning för hur många klockcykler som ska "skippas" efter uppstart, innan allt har stabiliserats... kanske finns något liknande för PIC?

Postat: 27 juli 2006, 22:40:02
av bearing
Använder du PWRT?
I 16-serien håller den enheten i RESET i 72 ms efter uppstart. Verkar vara något liknande för din krets. Läs 2.9 i databladet.

Postat: 27 juli 2006, 22:52:35
av sodjan
> När jag startar labbagget...

Matar det även servona ?
Blir det någon skillnad om du helt kopplar bort
servona från PICen ?

Notera att pinnaran vid reset är ingångar och alltså
väldigt hög impedans, i princip "öppna".

Kanske en pullup eller pulldown på linjen mellan
PIcen och servona skulle hålla linjen i ett "känt" läge
under uppstarten.

> Det måste bero på att en "servopuls" genereras på portarna vid uppstart...

Eller att servona *tror* att det kommer en servopuls.
Den behöver inte komma från PICen.

Jag har för mig att vanliga servon "rycker" lite när
man lägger på spänning på dom...

Postat: 28 juli 2006, 12:03:56
av Greve Hamilton
Testa att fördröja matningen till servona. RC-nät eller liknande.

Postat: 28 juli 2006, 12:35:34
av JimmyAndersson
Nu har jag testat lite mer. Det är förresten moddade servon som kan rotera flera varv.

Labbagget matar även servona. Om jag kopplar bort servona från PICen så flyttar de sig inte lika mycket vid start av labbagget. Om jag resetar PICen när den är igång (och servona är anslutna till den) så flyttar sig inte servona. Om jag håller PICen resetad vid start av labbagget så är de lugna, som jag skrev tidigare. Däremot flyttar sig servona när jag släpper reseten.

Så: Servona flyttar sig alltså av två orsaker. Dels kommer ett litet hopp som kommer när de får spänning. Dels kommer ett litet hopp när PICen startar. Startar man labbagget med allt inkopplat så flyttar sig därför servona ganska mycket.

Tyvärr hjälpte det inte med pullup/down på pinnarna dit servona är anslutna. En konding i reset-kedjan var en bra idé, men tyvärr var det samma resultat där. Servona rör sig, men inte lika mycket. Det blir ändå ett litet hopp när servona får spänning. Hur löser man det?


Tills vidare får det bli en liten fusk-lösning:
Servona rör sig lika mycket vid varje uppstart. Därför kan jag lägga in lite kod som flyttar tillbaka servona.

Det ena servots "start-hopp" verkar motsvara 2st pulser på 1ms (med paus mellan). Det andra servots hopp verkar motsvara 3st pulser på 1ms (med paus mellan.) Har inte testat om det stämmer, men enligt koordinaterna är det så.

Greve Hamilton: Servona ville inte vara med alls när jag testade RC-nät. (Provade både låg och högpass för att vara säker.) Men någon sådan lösning borde nästan fungera. Ska se om jag hittar något på nätet. Eller om någon här har ett liten trevlig koppling som fungerar?


edit: Testade ett RC-nät igen:

Kod: Markera allt

+5V------[10ohm]---+----[10µF]-----GND
                   |
              Till servo
Det fungerade nästan. Servona flyttade sig *mycket* mindre än vad jag lyckats med tidigare, men ändå för mycket. Med 17ohm gick servona trögt. Över 100ohm gick de inte alls. En annan konding gav ingen skillnad, bortsett från lite längre urladdning. Blev tyvärr ingen skillnad om jag testade något annat trick (som nämnts tidigare) samtidigt.

Postat: 28 juli 2006, 12:58:05
av sodjan
Ett oscilloskop vore bra för att "se" vad som händer....

Postat: 28 juli 2006, 12:59:27
av JimmyAndersson
Ja tack. :D

Postat: 28 juli 2006, 13:24:57
av v-g
Jimmy:Dags att göra klart ljudkortsoscillot då kanske :D

Postat: 28 juli 2006, 13:33:02
av JimmyAndersson
Jo jag ska fixa det. Men det ligger ganska långt fram i tiden. Jag och Grym håller ju på med en lite kraftigare pryl baserat på ett PC-LabCard. :)