[Home]RC Servo Test

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

No diff available--this is the first major revision. (no other diffs)

RC Servo Test

Place servotest.hal, servotest.xml, and optionally, autosave.halscope into a directory such as:

 /home/my_user_name/emc2/configs/RCservotest
The application can be started by making the above directory the current directory:
 cd ~/emc2/configs/RCservotest/ 
Then invoke with:
 halrun -I servotest.hal 
Which should give you something like this:
upload:servopyvcp-1a.png

This link may help with connecting the servo to a parallel port pin:
http://www.horrorseek.com/home/halloween/wolfstone/Motors/svoint_RCServos.html

My test used pin 16 on the mother board parallel port. The servo input pulls a fair amount of current so the pin should be buffered. A parallel port break-out-board should be okay.

servotest.hal

##### RC Servo Test Configuration - servotest.hal #####

loadrt threads name1=fast period1=10000 name2=slow period2=1000000 # fast period of
    # 10000 gives 1 degree per period, or 1 degree resolution, but many PC's may
    # crash with this setting. 20000 gives 2 degrees per fast period, or 2 degree resolution.

loadrt hal_parport cfg="0x0378"  # Change as needed
loadrt pwmgen output_type=0

#loadusr -Wn mypanel pyvcp -g 250x500+800+0 -c mypanel mypanel.xml  # Sample from doc's
loadusr -Wn servopyvcp pyvcp -g 700x80+50+50 -c servopyvcp servotest.xml

# FUNCTIONS #########################################
addf  parport.0.read       fast
addf  pwmgen.update        slow
addf  pwmgen.make-pulses   fast
addf  parport.0.write      fast

# CONNECTIONS #######################################
setp  pwmgen.0.min-dc      0.06  #float rw, -90 degrees at .6 ms (center - .9ms),
    # tries to keep the servo output shaft off of the hardware limit stop

setp  pwmgen.0.max-dc      0.24  #float rw, 90 degrees at 2.4 ms, (center + .9ms),
    # tries to keep the servo output shaft off of the hardware limit stop

#setp  pwmgen.0.offset      0.15  #float rw, center position at 1.5ms
setp  pwmgen.0.offset      0.153  #float rw, center position at 1.53ms, this line is
    # tweaked but servo should be adjusted to center on 1.5ms

#setp  pwmgen.0.scale    1000.00  #float rw
setp  pwmgen.0.scale    1120.00  #float rw, tweaked a little for a particular servo
setp  pwmgen.0.pwm-freq  100.00  #float rw, frequency can be changed as needed,
    # but affects other parameters

setp  pwmgen.0.enable TRUE  # could be connected to a pyVCP button

net PWMcmd  servopyvcp.anaout-f  pwmgen.0.value        #float
net PWMout  pwmgen.0.pwm         parport.0.pin-16-out  #bit

#########################################
# start real-time threads
start
# start HALscope
loadusr halscope

servotest.xml

<!-- servotest.xml -->

<pyvcp>
	<vbox>
		<scale>
			<font>("Helvetica",14)</font><width>"40"</width><halpin>"anaout"</halpin>
			<resolution>0.1</resolution><orient>HORIZONTAL</orient>
			<initval>0</initval><min_>-90</min_><max_>90</max_>
		</scale>
<!--	Commented out because scale works better
		<dial>
			<size>200</size><cpr>100</cpr><min_>-90</min_><max_>90</max_><text>"Dial"</text>
			<initval>0</initval><resolution>0.1</resolution><halpin>"anaout"</halpin>
    		<dialcolor>"yellow"</dialcolor><edgecolor>"green"</edgecolor><dotcolor>"black"</dotcolor>
		</dial> -->
	</vbox>
</pyvcp>

autosave.halscope

THREAD fast
MAXCHAN 4
HMULT 1
HZOOM 2
HPOS 7.007245e-01
CHAN 1
PIN parport.0.pin-16-out
VSCALE -1
VPOS 0.300971
VOFF 0.000000e+00
CHAN 2
PIN servopyvcp.anaout-f
VSCALE 5
VPOS 0.699029
VOFF 0.000000e+00
TSOURCE 1
TLEVEL 0.500000
TPOS 0.500000
TPOLAR 1
TMODE 0
RMODE 1

(Started page on 2011/04/14 Kirk Wallace)

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited April 14, 2011 9:12 pm by Kirk Wallace (diff)
Search:
Published under a Creative Commons License