Difference between revisions of "Subsystem/actuators"
Karlito139 (talk | contribs) |
m |
||
Line 109: | Line 109: | ||
== Dual PWM Supervision == | == Dual PWM Supervision == | ||
This | This driver allows you to generate dual pulses to control for example double servos like those : | ||
[[File:Dual linear servos.jpg]] | [[File:Dual linear servos.jpg]] | ||
Line 121: | Line 121: | ||
* the first 2 with a total period of 16ms. During that part we generate the second pulse that is going to control for exemple the second servo. | * the first 2 with a total period of 16ms. During that part we generate the second pulse that is going to control for exemple the second servo. | ||
=== How to use the | === How to use the driver === | ||
<span style="color:#FF0000">'''CAUTION!'''</span> <b>This module is only implemented on the lisa M and lisa S boards at the time of writing this documentation (28 mars 2014)</b> | <span style="color:#FF0000">'''CAUTION!'''</span> <b>This module is only implemented on the lisa M and lisa S boards at the time of writing this documentation (28 mars 2014)</b> |
Revision as of 10:54, 3 April 2014
This subsystem only needs be explicitly specified for rotorcrafts where there are several different actuators implementations and you have to add the correct one depending on the ESCs you use.
Currently possible actuators subsystems are
- mkk
- asctec
- asctec_v2
- pwm_supervision
- skiron
- heli
- ardrone2
MKK
Mikrokopter ESCs
File: conf/airframes/myplane.xml |
<firmware name="rotorcraft">
...
<subsystem name="actuators" type="mkk">
<configure name="MKK_I2C_SCL_TIME" value="50"/> <!-- only LPC21xx, optional, 150 is default, use 50 for 8 motors-->
</subsystem>
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/> <!-- default is 8, increase to 10 or more for 8 motors-->
</firmware>
|
- MKK_I2C_SCL_TIME is specific to LPC21x based boards (e.g. booz) and has no effect for STM32 based boards (e.g. Lisa/M/L)
XML configuration
required defines in section ACTUATORS_MKK:
- NB: number of motors
- ADDR: the I2C addresses of your motors
File: conf/airframes/myplane.xml |
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
|
The order of addresses in the list defines the numbering of motors! Warn on this during motor mixing!
You also need the matching Motor Mixing section. MKK specific values for SUPERVISION defines:
- STOP_MOTOR : 0, optional, as the default is already 0
- MIN_MOTOR : 3
- MAX_MOTOR : 200
Asctec v1
These controllers already to the mixing themselves, so the Motor Mixing section section is not needed.
File: conf/airframes/myplane.xml |
<firmware name="rotorcraft">
...
<subsystem name="actuators" type="asctec"/>
</firmware>
|
Asctec v2
File: conf/airframes/myplane.xml |
<firmware name="rotorcraft">
...
<subsystem name="actuators" type="asctec_v2"/>
</firmware>
|
XML configuration
You need the matching Motor Mixing section.
PWM Supervision
Only for stm32 based autopilot boards (eg. Lisa/M, Lisa/L)
File: conf/airframes/myplane.xml |
<firmware name="rotorcraft">
...
<subsystem name="actuators" type="pwm_supervison">
<define name="SERVO_HZ" value="400"/>
</subsystem>
</firmware>
|
The define SERVO_HZ sets a higher update frequency for the pwm controllers which is needed for good response times.
XML configuration
File: conf/airframes/myplane.xml |
<servos min="0" neutral="0" max="0xff">
<servo name="FRONT" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="BACK" no="1" min="1000" neutral="1000" max="2000"/>
<servo name="LEFT" no="2" min="1000" neutral="1000" max="2000"/>
<servo name="RIGHT" no="3" min="1000" neutral="1000" max="2000"/>
</servos>
|
You also need the matching Motor Mixing section. Example PWM specific values for SUPERVISION defines:
- STOP_MOTOR : 800
- MIN_MOTOR : 1000
- MAX_MOTOR : 2000
Dual PWM Supervision
This driver allows you to generate dual pulses to control for example double servos like those :
The signal we want to generate look like that :
During the time of a regular pwm pulse (20ms) we got two parts :
- the first 1 with a total period of 4ms. During that part we generate the first pulse that is going to control for exemple the first servo.
- the first 2 with a total period of 16ms. During that part we generate the second pulse that is going to control for exemple the second servo.
How to use the driver
CAUTION! This module is only implemented on the lisa M and lisa S boards at the time of writing this documentation (28 mars 2014)
First of all you are going to need to add the subsystem that is going to generate those pulses :
File: conf/airframes/myplane.xml |
<firmware name="fixedwing">
<target name="ap" board="lisa_s_0.1">
...
</target>
...
<subsystem name="actuators" type="dualPwm">
<define name="DUAL_PWM_ON"/>
</subsystem>
</firmware>
|
XML configuration
Then we will be able to add a servo block into the airframe file (in the same way we would for regular servos). But we have to specify the driver that we are using for thoses servos :
File: conf/airframes/myplane.xml |
...
<servos driver="DualPwm">
<servo name="SWITCH" no="3" min="1100" neutral="1500" max="1900"/>
<servo name="pitchator" no="2" min="1100" neutral="1500" max="1900"/>
</servos>
...
|
CAUTION! The tricky part about this module is that it requires the use of the full timer (that was previously shared between multiple regular pwm). In order to reduce the wast of pins we can only put that type of servos on specifics pins :
- lisa S (version 0.1) : on the servos 2 and 3 (as shown above). The dual PWM will then but outputted on the 5th pin (yes that is not logical).
- lisa M (version 2.0) : on the servos 4 and 5. The dual PWM will be outputted on the 4th pin.