RC-servon flyttar sig vid start.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

RC-servon flyttar sig vid start.

Inlägg 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.
Senast redigerad av JimmyAndersson 28 december 2007, 21:50:48, redigerad totalt 1 gång.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg 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?
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 544
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Inlägg av Greve Hamilton »

Testa att fördröja matningen till servona. RC-nät eller liknande.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
Senast redigerad av JimmyAndersson 28 juli 2006, 12:58:49, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ett oscilloskop vore bra för att "se" vad som händer....
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Ja tack. :D
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Jimmy:Dags att göra klart ljudkortsoscillot då kanske :D
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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. :)
Skriv svar