Thanks for your help!
As spending some time with machinekit I am getting more comfortable, begin
to understand the whole concept of the hal-structure and start to really
like that concept.
It all makes sense now.
@ TJoseph Powderly: Thanks for your explanation, this also makes sense. But
for now I will be alright having two people drive the car.
I created a .comp-File for the RCServo and edited the .ini- and .hal-File.
Everything works fine, or at least it seems so to me ;)
Could you guys please check if I could improve any of the code?
I designed the RCServo.comp file the way that it can be used with any
RCServo. The timing parameters are set in the .ini-File and therefore can
easily be changed.
Question: Should i set the functions of the RCServo as servo-threads or
base-threads?
*.INI-File:[AXIS_3]################################################################################
A-Axis
(RC-Servo)###############################################################################TYPE
= ANGULARMAX_VELOCITY = 50MAX_ACCELERATION =
100MIN_LIMIT = -90MAX_LIMIT = 90# Is this relevant
for the Servo or only used by stepgen?BACKLASH = 0.000FERROR =
1.0MIN_FERROR = 0.25# RC-Servo timing
parametersSERVO_CYCLETIME = 20000SERVO_TIME_MIN =
900SERVO_TIME_MAX = 2100 .HAL-File:#
#################################### Core EMC/HAL Loads#
###################################loadrt RCServo#
################################################# THREADS#
################################################# Servo- or
Base-Threads?addf RCServo.0.period servo-threadaddf
RCServo.0.convert servo-thread# ################# A [3] Axis#
################# get Command from motion controller and send it to
RCServonet rcservo.pos-cmd <= axis.3.motor-pos-cmdnet rcservo.pos-cmd =>
RCServo.0.axis-pos-cmd# Putting the Command of the motion controller
directly as the # Feedback, to avoid errors net rcservo.pos-cmd =>
axis.3.motor-pos-fb# Get pwm Command from RCServo and send it to pwmgennet
emcmot.03.pos-cmd <= RCServo.0.motor-pos-cmdnet emcmot.03.pos-cmd =>
hpg.pwmgen.00.out.00.value### timing parameters #### This specifies the PWM
period, in nS. # For the RC-Servo: 20000000 ns = 0.02 s = 50 Hznet
motor.03.pwm-period <= RCServo.0.pwm-periodnet motor.03.pwm-period =>
hpg.pwmgen.00.pwm_period setp RCServo.0.pwm-cycletime
[AXIS_3]SERVO_CYCLETIMEsetp RCServo.0.pwm-min
[AXIS_3]SERVO_TIME_MINsetp RCServo.0.pwm-max
[AXIS_3]SERVO_TIME_MAX# If true, the pwmgen will output pulses. # If
'enable' is false, pwmgen will not output any signals.setp
hpg.pwmgen.00.out.00.enable 1# 20000ms cycleTimesetp
hpg.pwmgen.00.out.00.scale [AXIS_3]SERVO_CYCLETIME# P8.13 PWM.out1setp
hpg.pwmgen.00.out.00.pin 813RCServo.compcomponent RCServo "Machinekit
HAL component for driving a RCServo";pin in float axis-pos-cmd "Commanded
position from motion";pin out float motor-pos-cmd "Commanded position for
Servo";pin out u32 pwm-period "Set Period for pwmgen";pin in u32
pwm-cycletime "RCServo Cycletime in ms";pin in u32 pwm-min "-90 degrees in
ms";pin in u32 pwm-max "+90 degrees in ms";variable float
pwm_middle;function period fp "Calculate the pwmgen Period";function
convert fp "Convert degrees into pwm-signal";license
"GPL";;;FUNCTION(period) { pwm_period = pwm_cycletime *
1000;}FUNCTION(convert) { pwm_middle = pwm_min + (pwm_max - pwm_min) /
2; motor_pos_cmd = (pwm_max - pwm_middle) / 90 * axis_pos_cmd +
pwm_middle;}*
--
website: http://www.machinekit.io blog: http://blog.machinekit.io github:
https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.