mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-10-02 12:23:17 +08:00
Actuator Faulhaber (#3283)
* Actuator Faulhaber code style activate fix test * Update conf/modules/actuators_faulhaber.xml * try to fix * Update conf/modules/actuators_faulhaber.xml * 16-bit code
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
<define name="RADIO_FMODE" value="RADIO_AUX2"/>
|
||||
<define name="RADIO_FBW_MODE" value="RADIO_AUX3"/>
|
||||
<define name="RADIO_CONTROL_THRUST_X" value="RADIO_AUX4"/>
|
||||
<define name="RADIO_PARACHUTE" value="RADIO_AUX6"/>
|
||||
|
||||
<!-- EKF2 configure inputs -->
|
||||
<define name="INS_EKF2_GYRO_ID" value="IMU_PIXHAWK2_ID"/>
|
||||
@@ -41,8 +42,6 @@
|
||||
|
||||
<!-- Log in high speed (Remove for outdoor flights) -->
|
||||
<!-- <define name="IMU_LOG_HIGHSPEED" value="TRUE"/> -->
|
||||
|
||||
<define name="SERVO_ROTATION_MECH_IDX" value="0"/> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!! FIXMEEE !!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
@@ -106,6 +105,8 @@
|
||||
<configure value="TRUE" name="UAVCAN_USE_CAN1"/>
|
||||
<configure value="TRUE" name="UAVCAN_USE_CAN2"/>
|
||||
</module>
|
||||
<!-- Rotation mechanism actuator on UART -->
|
||||
<module name="actuators" type="faulhaber"/>
|
||||
|
||||
<!-- Control -->
|
||||
<module name="stabilization" type="indi">
|
||||
@@ -179,6 +180,10 @@
|
||||
<servo no="6" name="BSERVO_RUDDER" min="-3250" neutral="0" max="3250"/>
|
||||
</servos>
|
||||
|
||||
<servos driver="Faulhaber">
|
||||
<servo no="0" name="ROTATION_MECH" min="29" neutral="1707" max="3385"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
@@ -221,6 +226,9 @@
|
||||
<set servo="BAIL_LEFT" value="($servo_hold? RadioControlValues(RADIO_ROLL) : actuators_pprz[6])"/>
|
||||
<set servo="BFLAP_LEFT" value="($servo_hold? RadioControlValues(RADIO_ROLL) : actuators_pprz[7])"/>
|
||||
<set servo="BPARACHUTE" value="RadioControlValues(RADIO_AUX6)"/-->
|
||||
|
||||
<!-- Rotation mechanism -->
|
||||
<set servo="ROTATION_MECH" value="rotwing_state_skewing.servo_pprz_cmd"/>
|
||||
</command_laws>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_faulhaber" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
Actuators Driver for the Faulhaber controller
|
||||
</description>
|
||||
<configure name="FAULHABER_DEV" value="UARTX" description="UART port (default UART4)"/>
|
||||
</doc>
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings NAME="Faulhaber">
|
||||
<dl_setting var="faulhaber.mode" min="0" step="1" max="4" shortname="mode" module="modules/actuators/actuators_faulhaber" handler="SetMode"/>
|
||||
<dl_setting var="faulhaber.setpoint_position" min="0" step="1000" max="3600000"/>
|
||||
<dl_setting var="faulhaber.real_position" min="0" step="1000" max="3300000"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
|
||||
<dep>
|
||||
<depends>uart</depends>
|
||||
<provides></provides>
|
||||
</dep>
|
||||
<header>
|
||||
<file name="actuators_faulhaber.h"/>
|
||||
</header>
|
||||
<init fun="actuators_faulhaber_init()"/>
|
||||
<periodic fun="actuators_faulhaber_periodic()" freq="50"/>
|
||||
<event fun="actuators_faulhaber_event()" />
|
||||
<makefile target="!sim">
|
||||
<configure name="FAULHABER_DEV" default="UART4" case="upper|lower"/>
|
||||
<define name="FAULHABER_DEV" value="$(FAULHABER_DEV_LOWER)"/>
|
||||
<define name="USE_$(FAULHABER_DEV_UPPER)"/>
|
||||
<define name="$(FAULHABER_DEV_UPPER)_BAUD" value="B115200"/>
|
||||
<file name="actuators_faulhaber.c"/>
|
||||
<test>
|
||||
<define name="USE_UART4"/>
|
||||
<define name="PERIODIC_FREQUENCY" value="500"/>
|
||||
<define name="FAULHABER_DEV" value="uart4"/>
|
||||
<define name="get_servo_min_FAULHABER" value=""/>
|
||||
<define name="get_servo_max_FAULHABER" value=""/>
|
||||
<define name="get_servo_idx_FAULHABER" value=""/>
|
||||
</test>
|
||||
</makefile>
|
||||
</module>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (C) Freek van Tienen <freek.v.tienen@gmail.com>
|
||||
*
|
||||
* This file is part of paparazzi
|
||||
*
|
||||
* paparazzi is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* paparazzi is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with paparazzi; see the file COPYING. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file "modules/actuators/actuators_faulhaber.h"
|
||||
* @author Freek van Tienen
|
||||
* Serial Connection module between ap and a faulhaber motor controller
|
||||
*/
|
||||
|
||||
#ifndef ACTUATORS_FAULHABER_H
|
||||
#define ACTUATORS_FAULHABER_H
|
||||
|
||||
#include "std.h"
|
||||
|
||||
enum faulhaber_modes_t {
|
||||
FH_MODE_INIT,
|
||||
FH_MODE_IDLE,
|
||||
FH_MODE_HOME,
|
||||
FH_MODE_POSITION,
|
||||
FH_MODE_ENABLE
|
||||
};
|
||||
|
||||
struct faulhaber_t {
|
||||
enum faulhaber_modes_t mode;
|
||||
uint8_t state;
|
||||
|
||||
int32_t setpoint_position;
|
||||
int32_t target_position;
|
||||
int32_t real_position;
|
||||
};
|
||||
extern struct faulhaber_t faulhaber;
|
||||
|
||||
extern void actuators_faulhaber_init(void);
|
||||
extern void actuators_faulhaber_periodic(void);
|
||||
extern void actuators_faulhaber_event(void);
|
||||
extern void actuators_faulhaber_SetMode(uint8_t mode);
|
||||
|
||||
|
||||
#if USE_NPS
|
||||
#define ActuatorsFaulhaberInit() {}
|
||||
#define ActuatorFaulhaberSet(_i, _v) {}
|
||||
#define ActuatorsFaulhaberCommit() {}
|
||||
#else
|
||||
#define ActuatorsFaulhaberInit() actuators_faulhaber_init()
|
||||
#define ActuatorFaulhaberSet(_i, _v) { faulhaber.setpoint_position = ((get_servo_max_FAULHABER(0)-_v) + get_servo_min_FAULHABER(0))*1000.0f; }
|
||||
#define ActuatorsFaulhaberCommit() {}
|
||||
#endif
|
||||
|
||||
#endif /* ACTUATORS_FAULHABER_H */
|
||||
@@ -503,6 +503,10 @@
|
||||
#define ACT_FEEDBACK_RPM_SENSOR_ID 4
|
||||
#endif
|
||||
|
||||
#ifndef ACT_FEEDBACK_FAULHABER_ID
|
||||
#define ACT_FEEDBACK_FAULHABER_ID 5
|
||||
#endif
|
||||
|
||||
/*
|
||||
* IDs of THRUST increment calculation (message 16)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user