rc servo styrning från PC

Robot, CNC, Pneumatik, Hydraulik, mm
peptek
Inlägg: 5
Blev medlem: 9 januari 2011, 21:06:11

rc servo styrning från PC

Inlägg av peptek »

Hej

Antar att detta hör hemma under mekatroniktråden men är egentligen en pc/programmeringsfråga.
Målet är att reglera en shunt på min panna lite lagom exakt från linux efter att ha tankat ner väderrapporten från nätet.

Jag försöker styra en RCservo (futaba s3003)från seriellporten via python på en PC, det går inte riktigt som jag tänkt mig.
Till detta används en gammal hemmabyggd avrprogrammerare för att få ut 0 eller 5 volt till styrsignalen.

DTR dras hög i antingen 0.5 1.5 eller 2.4 mS och sedan väntas det i 20 ms

Om jag fräser på ett tiotal pulser så kan jag få den att röra sig lite höger och vänster men ofta hackigt och inte särskilt snyggt och jämt.
Tyvärr har jag inget oscilloskop att titta på signalen med, men jag misstänker att den inte är snygg.

Har någon annan lyckats med detta?
Min tanke var att jag skulle slippa skriva c eller asm på PC:n alternativt slippa bygga hårdvara eller köpa en arduino.
Söker man på nätet går alla via någon microcontroller men det vore skönt att slippa detta.
Användarvisningsbild
Icecap
Inlägg: 26637
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: rc servo styrning från PC

Inlägg av Icecap »

På min hemsida, under "Freebies" finns det ritning & källkod & hex-fil till en PIC-baserat frunka som styr RC-servon. Man styr den med ett seriellt kommando, beskrivning finns i källkoden.
peptek
Inlägg: 5
Blev medlem: 9 januari 2011, 21:06:11

Re: rc servo styrning från PC

Inlägg av peptek »

tack för länken, men en pic har jag nog inte använt på tio år så det tar nog ett tag att komma igång med den.

Jag börjar misstänka min egen hårdvara och testar att göra om samma sak med parallellporten istället då har jag 5 volt på signalpinnen.
Det finns ju i2c interface som är byggda på bitbanging så det borde ju fungera.
Tänk den som hade ett osciloskop......
Användarvisningsbild
Icecap
Inlägg: 26637
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: rc servo styrning från PC

Inlägg av Icecap »

Pulserna ska komma ett antal gångar efter varandra med runt 20ms mellan för att servon ska kunde köra på plats. Minst ett 20-30 tal om du kör stopp till stopp.
danei
EF Sponsor
Inlägg: 27414
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: rc servo styrning från PC

Inlägg av danei »

Du kommer att behöva en innre reglerlop om det ska funka bra.
peptek
Inlägg: 5
Blev medlem: 9 januari 2011, 21:06:11

Re: rc servo styrning från PC

Inlägg av peptek »

Det var min ruttna seriellports konstruktion som var problemet.
Efter att ha hakat på en pinne på parallellporten så fungerade det "utmärkt"
Precisionen på en servo för 150 spänn är sådär, mittläget är ganska ofta på samma ställe
Först måste man i linux köra rmmod lp för att få access till porten sen är det bara att köra.

Kod: Markera allt

import parallel
import time
p = parallel.Parallel()
tics=5
pulses=[0.0015,0.0005,0.0015,0.0025,0.0015,0.0025,0.0025,0.0015]
for pulse in pulses:
    print pulse
    counter=-1
    while (counter < tics):
        counter=counter+1
        p.setData(0)
        time.sleep(0.020-pulse)
        p.setData(4)
        time.sleep(pulse)
    p.setData(0)
    time.sleep(5)
peptek
Inlägg: 5
Blev medlem: 9 januari 2011, 21:06:11

Re: rc servo styrning från PC

Inlägg av peptek »

Nja det gick ju sådär.

Servon orkar inte riktigt dra i ratten som ibland går riktigt tungt när den ska vända med mitt slarvigt byggda stag.
Eventuellt så är mitt stativ för svagt.
I värsta fall får jag sätta en utväxling mellan ratt och servo. Vet någon vart man kan köpa lämpliga kugghjul i stockholmstrakten?
Eller så köper jag en större servo.

Men styrelektroniken verkar fungera.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: rc servo styrning från PC

Inlägg av Micke_s »

Köp ett FUTABA S3306 istället eller liknande, har 24kg/cm istället för S3003 4.1kg/cm. hobbex har t.ex.

Linux är nog inte helt lyckat att styra en servo, rtlinux hade nog i så fall varit bättre.
Fast hårdvara hade varit bäst tror jag, vill du inte programmera så finns SSC-32 servo controller på electrokit t.ex.
peptek
Inlägg: 5
Blev medlem: 9 januari 2011, 21:06:11

Re: rc servo styrning från PC

Inlägg av peptek »

Nu fungerar det bättre.
Jag byggde om konstruktionen så att axeln från servon driver ratten direkt utan något stag mellan och stabiliserade upp det rejält.
Servon ger 180 graders aktionsradie vilket är perfekt.

Efter att ha mätt pulsernas precision med datorns interna timers så var felmarginalen som mest 0.09 ms vilket eventuellt täcker upp för tiden som det tar i python att fråga vad klockan exakt är och köra en loop.
Detta räcker väl för att styra en servo, dock har jag inte provat att lasta datorn maximalt på alla kärnor och därmed riskera att swappa ut mitt program ur interninnet om jag inte sätter väldigt hög nicelevel på det.
Förmodligen swappas det inte ut mitt i en loop, men någon som kan vet kanske mer.
Det enda tidskritiska är styrpulsen, för att dra i fördelningsventilen på pannan räcker det nog med en timmes precision.

Servon går ibland lite olika tungt så fem pulser kan ibland ge fem grader och ibland 25 så jag behöver förmodligen lite mer feedback eller så får jag kalibrera mot mittpositionen.
Om jag köper en starkare servo och höjer spänningen lite löser det förmodligen också problemet.
Priserna på dealextreme gör att jag kommer undan under en hundring. http://www.dealextreme.com/details.dx/sku.35765
Att slippa ändlägesbrytare var en stark anledning till att välja rc-servon från början.

Jag har också sett lösningar med servos med i2c som har mycket högre precision. Men detta projekt får väl mest betrektas som ett bevis för mig själv att det fungerar och att jag förhoppningsvis inte behöver ränna upp och ner ur pannrummet när temperaturen hoppar tio grader upp och ner under dagen.

Tack för all hjälp alla inblandade.
Skriv svar