Pixhawk ADC 5 and ADC 6 (#2762)

* [actuators] Add randomness to UAVCan telemetry

* [conf] Update Nederdrone

* [boards] Add ADC5 and ADC6 for the pixhawk 4
This commit is contained in:
Freek van Tienen
2021-08-30 20:55:03 +02:00
committed by GitHub
parent 1d3eee4267
commit dcceffe1b4
8 changed files with 56 additions and 23 deletions
+4
View File
@@ -38,6 +38,10 @@
<module name="flight_recorder"/>
<define name="ADC_CURRENT_DISABLE" value="TRUE"/>
<module name="adc_generic">
<configure name="ADC_CHANNEL_GENERIC1" value="ADC_5"/>
<configure name="ADC_CHANNEL_GENERIC2" value="ADC_6"/>
</module>
<define name="RADIO_TH_HOLD" value="RADIO_AUX1"/> <!-- Throttle hold in command laws -->
<define name="RADIO_FMODE" value="RADIO_AUX2"/> <!-- Throttle curve select -->
+1
View File
@@ -17,6 +17,7 @@
</header>
<makefile target="ap">
<file name="actuators_uavcan.c" dir="subsystems/actuators"/>
<file name="pprz_random.c" dir="math"/>
</makefile>
</module>
+2
View File
@@ -41,6 +41,7 @@
<message name="AHRS_BIAS" period="7.5"/>
<message name="HOVER_LOOP" period="0.3"/>
<message name="GUIDANCE_H_REF_INT" period="0.31"/>
<message name="GUIDANCE_INDI_HYBRID" period="0.4"/>
<message name="HYBRID_GUIDANCE" period="0.4"/>
<message name="ESC" period="0.5"/>
<!--message name="WINDTUNNEL_MEAS" period="0.1"/-->
@@ -219,6 +220,7 @@
<message name="AHRS_REF_QUAT" period="0.01"/>
<message name="GUIDANCE_H_REF_INT" period="0.02"/>
<message name="GUIDANCE_INDI_HYBRID" period="0.02"/>
<message name="HYBRID_GUIDANCE" period="0.02"/>
<message name="ESC" period="0.02"/>
<message name="STAB_ATTITUDE_INDI" period="0.002"/>
<message name="PPM" period="0.05"/>
+4 -4
View File
@@ -288,12 +288,12 @@
<aircraft
name="Nederdrone4"
ac_id="14"
airframe="airframes/tudelft/nederdrone4_tem.xml"
airframe="airframes/tudelft/nederdrone4.xml"
radio="radios/crossfire_sbus.xml"
telemetry="telemetry/highspeed_rotorcraft.xml"
flight_plan="flight_plans/tudelft/nederdrone_cyberzoo.xml"
flight_plan="flight_plans/tudelft/nederdrone_valkenburg.xml"
settings="settings/rotorcraft_basic.xml"
settings_modules="modules/air_data.xml modules/gps.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml"
settings_modules="modules/air_data.xml modules/gps.xml modules/gps_ubx_ucenter.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/nav_survey_rectangle_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml"
gui_color="blue"
release="c52a0b7e581c74b42ecc9f9d712324e3ab1fcc5e"
/>
@@ -305,7 +305,7 @@
telemetry="telemetry/highspeed_rotorcraft.xml"
flight_plan="flight_plans/tudelft/nederdrone_valkenburg.xml"
settings="settings/rotorcraft_basic.xml"
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/gps.xml modules/gps_ubx_ucenter.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml"
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/gps.xml modules/gps_ubx_ucenter.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/nav_survey_rectangle_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml"
gui_color="blue"
release="c52a0b7e581c74b42ecc9f9d712324e3ab1fcc5e"
/>
@@ -81,7 +81,7 @@ PA00 ADC1 ADC ADC1_IN0 # BAT1_V
PA01 ADC2 ADC ADC1_IN1 # BAT1_I
PA02 ADC3 ADC ADC1_IN2 # BAT2_V
PA03 ADC4 ADC ADC1_IN3 # BAT2_I
PA04 ADC1_SPARE2 ADC ADC1_IN4
PA04 ADC5 ADC ADC1_IN4 # ADC1_SPARE2
PA05 FMU_CAP1 PASSIVE
PA06 SPI1_MISO SPI AF:SPI1_MISO
PA07 HEATER PASSIVE
@@ -112,7 +112,7 @@ PC00 SCALED_V5 ADC ADC1_IN10
PC01 SCALED_3V3_SENSORS ADC ADC1_IN11
PC02 HW_VER_SENSE ADC ADC1_IN12
PC03 HW_REV_SENSE ADC ADC1_IN13
PC04 ADC1_SPARE1 ADC ADC1_IN14
PC04 ADC6 ADC ADC1_IN14
PC05 DRDY4_ICM20602 PASSIVE
PC06 LED2 LED # LED_GREEN
PC07 LED3 LED # LED_BLUE
+16 -16
View File
@@ -53,7 +53,7 @@
#define PA01_ADC2 1U
#define PA02_ADC3 2U
#define PA03_ADC4 3U
#define PA04_ADC1_SPARE2 4U
#define PA04_ADC5 4U
#define PA05_FMU_CAP1 5U
#define PA06_SPI1_MISO 6U
#define PA07_HEATER 7U
@@ -87,7 +87,7 @@
#define PC01_SCALED_3V3_SENSORS 1U
#define PC02_HW_VER_SENSE 2U
#define PC03_HW_REV_SENSE 3U
#define PC04_ADC1_SPARE1 4U
#define PC04_ADC6 4U
#define PC05_DRDY4_ICM20602 5U
#define PC06_LED2 6U
#define PC07_LED3 7U
@@ -243,7 +243,7 @@
#define LINE_ADC2 PAL_LINE(GPIOA, 1U)
#define LINE_ADC3 PAL_LINE(GPIOA, 2U)
#define LINE_ADC4 PAL_LINE(GPIOA, 3U)
#define LINE_ADC1_SPARE2 PAL_LINE(GPIOA, 4U)
#define LINE_ADC5 PAL_LINE(GPIOA, 4U)
#define LINE_FMU_CAP1 PAL_LINE(GPIOA, 5U)
#define LINE_SPI1_MISO PAL_LINE(GPIOA, 6U)
#define LINE_HEATER PAL_LINE(GPIOA, 7U)
@@ -276,7 +276,7 @@
#define LINE_SCALED_3V3_SENSORS PAL_LINE(GPIOC, 1U)
#define LINE_HW_VER_SENSE PAL_LINE(GPIOC, 2U)
#define LINE_HW_REV_SENSE PAL_LINE(GPIOC, 3U)
#define LINE_ADC1_SPARE1 PAL_LINE(GPIOC, 4U)
#define LINE_ADC6 PAL_LINE(GPIOC, 4U)
#define LINE_DRDY4_ICM20602 PAL_LINE(GPIOC, 5U)
#define LINE_LED2 PAL_LINE(GPIOC, 6U)
#define LINE_LED3 PAL_LINE(GPIOC, 7U)
@@ -414,7 +414,7 @@
PIN_MODE_ANALOG(PA01_ADC2) | \
PIN_MODE_ANALOG(PA02_ADC3) | \
PIN_MODE_ANALOG(PA03_ADC4) | \
PIN_MODE_ANALOG(PA04_ADC1_SPARE2) | \
PIN_MODE_ANALOG(PA04_ADC5) | \
PIN_MODE_INPUT(PA05_FMU_CAP1) | \
PIN_MODE_ALTERNATE(PA06_SPI1_MISO) | \
PIN_MODE_INPUT(PA07_HEATER) | \
@@ -431,7 +431,7 @@
PIN_OTYPE_PUSHPULL(PA01_ADC2) | \
PIN_OTYPE_PUSHPULL(PA02_ADC3) | \
PIN_OTYPE_PUSHPULL(PA03_ADC4) | \
PIN_OTYPE_PUSHPULL(PA04_ADC1_SPARE2) | \
PIN_OTYPE_PUSHPULL(PA04_ADC5) | \
PIN_OTYPE_OPENDRAIN(PA05_FMU_CAP1) | \
PIN_OTYPE_PUSHPULL(PA06_SPI1_MISO) | \
PIN_OTYPE_OPENDRAIN(PA07_HEATER) | \
@@ -448,7 +448,7 @@
PIN_OSPEED_SPEED_VERYLOW(PA01_ADC2) | \
PIN_OSPEED_SPEED_VERYLOW(PA02_ADC3) | \
PIN_OSPEED_SPEED_VERYLOW(PA03_ADC4) | \
PIN_OSPEED_SPEED_VERYLOW(PA04_ADC1_SPARE2) | \
PIN_OSPEED_SPEED_VERYLOW(PA04_ADC5) | \
PIN_OSPEED_SPEED_VERYLOW(PA05_FMU_CAP1) | \
PIN_OSPEED_SPEED_HIGH(PA06_SPI1_MISO) | \
PIN_OSPEED_SPEED_VERYLOW(PA07_HEATER) | \
@@ -465,7 +465,7 @@
PIN_PUPDR_FLOATING(PA01_ADC2) | \
PIN_PUPDR_FLOATING(PA02_ADC3) | \
PIN_PUPDR_FLOATING(PA03_ADC4) | \
PIN_PUPDR_FLOATING(PA04_ADC1_SPARE2) | \
PIN_PUPDR_FLOATING(PA04_ADC5) | \
PIN_PUPDR_PULLDOWN(PA05_FMU_CAP1) | \
PIN_PUPDR_FLOATING(PA06_SPI1_MISO) | \
PIN_PUPDR_PULLDOWN(PA07_HEATER) | \
@@ -482,7 +482,7 @@
PIN_ODR_LEVEL_LOW(PA01_ADC2) | \
PIN_ODR_LEVEL_LOW(PA02_ADC3) | \
PIN_ODR_LEVEL_LOW(PA03_ADC4) | \
PIN_ODR_LEVEL_LOW(PA04_ADC1_SPARE2) | \
PIN_ODR_LEVEL_LOW(PA04_ADC5) | \
PIN_ODR_LEVEL_HIGH(PA05_FMU_CAP1) | \
PIN_ODR_LEVEL_HIGH(PA06_SPI1_MISO) | \
PIN_ODR_LEVEL_HIGH(PA07_HEATER) | \
@@ -499,7 +499,7 @@
PIN_AFIO_AF(PA01_ADC2, 0) | \
PIN_AFIO_AF(PA02_ADC3, 0) | \
PIN_AFIO_AF(PA03_ADC4, 0) | \
PIN_AFIO_AF(PA04_ADC1_SPARE2, 0) | \
PIN_AFIO_AF(PA04_ADC5, 0) | \
PIN_AFIO_AF(PA05_FMU_CAP1, 0) | \
PIN_AFIO_AF(PA06_SPI1_MISO, 5) | \
PIN_AFIO_AF(PA07_HEATER, 0))
@@ -620,7 +620,7 @@
PIN_MODE_ANALOG(PC01_SCALED_3V3_SENSORS) | \
PIN_MODE_ANALOG(PC02_HW_VER_SENSE) | \
PIN_MODE_ANALOG(PC03_HW_REV_SENSE) | \
PIN_MODE_ANALOG(PC04_ADC1_SPARE1) | \
PIN_MODE_ANALOG(PC04_ADC6) | \
PIN_MODE_INPUT(PC05_DRDY4_ICM20602) | \
PIN_MODE_OUTPUT(PC06_LED2) | \
PIN_MODE_OUTPUT(PC07_LED3) | \
@@ -637,7 +637,7 @@
PIN_OTYPE_PUSHPULL(PC01_SCALED_3V3_SENSORS) | \
PIN_OTYPE_PUSHPULL(PC02_HW_VER_SENSE) | \
PIN_OTYPE_PUSHPULL(PC03_HW_REV_SENSE) | \
PIN_OTYPE_PUSHPULL(PC04_ADC1_SPARE1) | \
PIN_OTYPE_PUSHPULL(PC04_ADC6) | \
PIN_OTYPE_OPENDRAIN(PC05_DRDY4_ICM20602) | \
PIN_OTYPE_PUSHPULL(PC06_LED2) | \
PIN_OTYPE_PUSHPULL(PC07_LED3) | \
@@ -654,7 +654,7 @@
PIN_OSPEED_SPEED_VERYLOW(PC01_SCALED_3V3_SENSORS) | \
PIN_OSPEED_SPEED_VERYLOW(PC02_HW_VER_SENSE) | \
PIN_OSPEED_SPEED_VERYLOW(PC03_HW_REV_SENSE) | \
PIN_OSPEED_SPEED_VERYLOW(PC04_ADC1_SPARE1) | \
PIN_OSPEED_SPEED_VERYLOW(PC04_ADC6) | \
PIN_OSPEED_SPEED_VERYLOW(PC05_DRDY4_ICM20602) | \
PIN_OSPEED_SPEED_VERYLOW(PC06_LED2) | \
PIN_OSPEED_SPEED_VERYLOW(PC07_LED3) | \
@@ -671,7 +671,7 @@
PIN_PUPDR_FLOATING(PC01_SCALED_3V3_SENSORS) | \
PIN_PUPDR_FLOATING(PC02_HW_VER_SENSE) | \
PIN_PUPDR_FLOATING(PC03_HW_REV_SENSE) | \
PIN_PUPDR_FLOATING(PC04_ADC1_SPARE1) | \
PIN_PUPDR_FLOATING(PC04_ADC6) | \
PIN_PUPDR_PULLDOWN(PC05_DRDY4_ICM20602) | \
PIN_PUPDR_FLOATING(PC06_LED2) | \
PIN_PUPDR_FLOATING(PC07_LED3) | \
@@ -688,7 +688,7 @@
PIN_ODR_LEVEL_LOW(PC01_SCALED_3V3_SENSORS) | \
PIN_ODR_LEVEL_LOW(PC02_HW_VER_SENSE) | \
PIN_ODR_LEVEL_LOW(PC03_HW_REV_SENSE) | \
PIN_ODR_LEVEL_LOW(PC04_ADC1_SPARE1) | \
PIN_ODR_LEVEL_LOW(PC04_ADC6) | \
PIN_ODR_LEVEL_HIGH(PC05_DRDY4_ICM20602) | \
PIN_ODR_LEVEL_LOW(PC06_LED2) | \
PIN_ODR_LEVEL_LOW(PC07_LED3) | \
@@ -705,7 +705,7 @@
PIN_AFIO_AF(PC01_SCALED_3V3_SENSORS, 0) | \
PIN_AFIO_AF(PC02_HW_VER_SENSE, 0) | \
PIN_AFIO_AF(PC03_HW_REV_SENSE, 0) | \
PIN_AFIO_AF(PC04_ADC1_SPARE1, 0) | \
PIN_AFIO_AF(PC04_ADC6, 0) | \
PIN_AFIO_AF(PC05_DRDY4_ICM20602, 0) | \
PIN_AFIO_AF(PC06_LED2, 0) | \
PIN_AFIO_AF(PC07_LED3, 0))
@@ -115,6 +115,24 @@
#endif
#endif
#if defined(LINE_ADC5)
#if USE_ADC_5
#define AD1_5_CHANNEL ADC_CHANNEL_IN4
#define ADC_5 AD1_5
#define ADC_5_GPIO_PORT PAL_PORT(LINE_ADC5)
#define ADC_5_GPIO_PIN PAL_PAD(LINE_ADC5)
#endif
#endif
#if defined(LINE_ADC6)
#if USE_ADC_6
#define AD1_6_CHANNEL ADC_CHANNEL_IN14
#define ADC_6 AD1_6
#define ADC_6_GPIO_PORT PAL_PORT(LINE_ADC6)
#define ADC_6_GPIO_PIN PAL_PAD(LINE_ADC6)
#endif
#endif
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
#ifndef ADC_CHANNEL_VSUPPLY
#define ADC_CHANNEL_VSUPPLY ADC_1
@@ -26,6 +26,7 @@
#include "actuators_uavcan.h"
#include "subsystems/electrical.h"
#include "math/pprz_random.h"
/* By default enable the usage of the current sensing in the ESC telemetry */
#ifndef UAVCAN_ACTUATORS_USE_CURRENT
@@ -102,7 +103,11 @@ static void actuators_uavcan_send_esc(struct transport_tx *trans, struct link_de
float energy = telem[i].energy;
pprz_msg_send_ESC(trans, dev, AC_ID, &telem[i].current, &electrical.vsupply, &power,
&rpm, &telem[i].voltage, &energy, &esc_idx);
esc_idx++;
// Randomness added for multiple transport devices
if (rand_uniform() > 0.05) {
esc_idx++;
}
if (esc_idx >= max_id) {
esc_idx = 0;
@@ -182,6 +187,9 @@ void actuators_uavcan_init(struct uavcan_iface_t *iface __attribute__((unused)))
// Set initialization
actuators_uavcan_initialized = true;
// Initialize Random (for telemetry)
init_random();
}
/**