Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions MIDAS/lib/ADS7138Q1/ads7138-q1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ static AdcError adc_reg_write(uint8_t address, uint8_t reg_address, uint8_t data
return AdcError::NoError;
}

AdcReadResult adcAnalogRead(ADCAddress pin){
AdcReadResult adcAnalogRead(ADCAddress pin){
if(pin.pin_id < 0 || pin.pin_id >= 8){
return AdcReadResult{.value=0, .error=AdcError::InvalidPinError};
}
Expand All @@ -58,7 +58,7 @@ AdcReadResult adcAnalogRead(ADCAddress pin){
}
int high = WIRE.read();
int low = WIRE.read();
uint16_t value = (high << 4) + (low >> 4);
uint16_t value = (high << 8) + low;
return AdcReadResult{.value=value, .error=AdcError::NoError};
}

Expand Down
2 changes: 0 additions & 2 deletions MIDAS/src/data_logging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ constexpr ReadingDiscriminant get_discriminant();

ASSOCIATE(IMU, ID_IMU)
ASSOCIATE(Barometer, ID_BAROMETER)
ASSOCIATE(Continuity, ID_CONTINUITY)
ASSOCIATE(Voltage, ID_VOLTAGE)
ASSOCIATE(GPS, ID_GPS)
ASSOCIATE(Magnetometer, ID_MAGNETOMETER)
Expand Down Expand Up @@ -87,7 +86,6 @@ void log_data(LogSink& sink, RocketData& data) {
log_from_sensor_data(sink, data.imu);
log_from_sensor_data(sink, data.hw_filtered);
log_from_sensor_data(sink, data.barometer);
log_from_sensor_data(sink, data.continuity);
log_from_sensor_data(sink, data.voltage);
log_from_sensor_data(sink, data.gps);
log_from_sensor_data(sink, data.magnetometer);
Expand Down
6 changes: 0 additions & 6 deletions MIDAS/src/errors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,6 @@ void update_error_LED(ErrorCode error) {
digitalWrite(LED_ORANGE, LOW);
digitalWrite(LED_RED, HIGH);
break;
case ContinuityCouldNotBeInitialized:
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_ORANGE, HIGH);
digitalWrite(LED_RED, HIGH);
break;
case CannotConnectBNO:
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, HIGH);
Expand Down
1 change: 0 additions & 1 deletion MIDAS/src/errors.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ enum ErrorCode {
GyroCouldNotBeInitialized = 8,
PyroGPIOCouldNotBeInitialized = 9,
GPSCouldNotBeInitialized = 10,
ContinuityCouldNotBeInitialized = 11,
RadioInitFailed = 12,
RadioSetFrequencyFailed = 13,
CannotConnectBNO = 14,
Expand Down
89 changes: 0 additions & 89 deletions MIDAS/src/hardware/Continuity.cpp

This file was deleted.

94 changes: 74 additions & 20 deletions MIDAS/src/hardware/Voltage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
#include <Wire.h>

#define VOLTAGE_DIVIDER (5.0 / (5.0 + 20.0))
#define PYRO_VOLTAGE_DIVIDER (18.0/(100.0+18.0))
#define PYRO_BATT_VOLTAGE_DIVIDER (100.0/(100.0+560.0))
#define BATT_VOLTAGE_DIVIDER (100.0/(100.0+100.0))
#define VOLTAGE_SCALE 3.3
#define VOLTAGE_REG_WIDTH (1<<16)

int read_board_pwr_monitor_register(int reg, int bytes) {
Wire1.beginTransmission(0x44);
Expand Down Expand Up @@ -39,23 +44,72 @@ ErrorCode VoltageSensor::init() {
* @return The scaled voltage given by the voltage sensor
*/
Voltage VoltageSensor::read() {
Voltage v_battery;
int voltage = read_board_pwr_monitor_register(0x5, 2);
int16_t current = read_board_pwr_monitor_register(0x7, 2);

float voltage_normalized = voltage * 3.125 / 1000.0;
float absolute_current = current * 1.2 / 1000.0;

// Serial.print("Voltage: ");
// Serial.println(voltage_normalized);
// Serial.print("Current: ");
// Serial.println(current);

v_battery.voltage = voltage_normalized;
v_battery.current = absolute_current;
// Serial.print("Raw voltage reading: ");
// Serial.print(v_battery.voltage);
// Serial.println("");
//* 3.3f / 4095.f / VOLTAGE_DIVIDER;
return v_battery;
}
Voltage voltage;

//CHECK PINS
ADCAddress pinA;
ADCAddress pinB;
ADCAddress pinC;
ADCAddress pinD;
ADCAddress pinBat;
ADCAddress pinPyro;
pinA.pin_id = 0;
pinB.pin_id = 1;
pinC.pin_id = 4;
pinD.pin_id = 5;
pinBat.pin_id = 7;
pinPyro.pin_id = 2;
Comment thread
MuhammadAli8209 marked this conversation as resolved.

//Getting ADC values
AdcReadResult sensorA = adcAnalogRead(pinA);
AdcReadResult sensorB = adcAnalogRead(pinB);
AdcReadResult sensorC = adcAnalogRead(pinC);
AdcReadResult sensorD = adcAnalogRead(pinD);
AdcReadResult sensorBat = adcAnalogRead(pinBat);
AdcReadResult sensorPyro = adcAnalogRead(pinPyro);

//Converts ADC value to voltage for each pin
if(sensorBat.error == AdcError::NoError){
float Bat_voltage = ((static_cast<float>(sensorBat.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE) / BATT_VOLTAGE_DIVIDER;
voltage.v_Bat = Bat_voltage;
Serial.print("VBAT: ");
Serial.println(Bat_voltage);
}

if(sensorPyro.error == AdcError::NoError){
float Pyro_voltage = ((static_cast<float>(sensorPyro.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE)/(PYRO_BATT_VOLTAGE_DIVIDER); //Accounting for voltage divider on MIDAS mini
voltage.v_Pyro = Pyro_voltage;
Serial.print("PYRO: ");
Serial.println(Pyro_voltage);
}

if(sensorA.error == AdcError::NoError){
float A_voltage = ((static_cast<float>(sensorA.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE) / PYRO_VOLTAGE_DIVIDER;
voltage.continuity[0] = A_voltage;
Serial.print("A: ");
Serial.println(A_voltage);
}

if(sensorB.error == AdcError::NoError){
float B_voltage = ((static_cast<float>(sensorB.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE) / PYRO_VOLTAGE_DIVIDER;
voltage.continuity[1] = B_voltage;
Serial.print("B: ");
Serial.println(B_voltage);
}

if(sensorC.error == AdcError::NoError){
float C_voltage = ((static_cast<float>(sensorC.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE) / PYRO_VOLTAGE_DIVIDER;
voltage.continuity[2] = C_voltage;
Serial.print("C: ");
Serial.println(C_voltage);
}

if(sensorD.error == AdcError::NoError){
float D_voltage = ((static_cast<float>(sensorD.value) / VOLTAGE_REG_WIDTH) * VOLTAGE_SCALE) / PYRO_VOLTAGE_DIVIDER;
voltage.continuity[3] = D_voltage;
Serial.print("D: ");
Serial.println(D_voltage);
}

return voltage;
}
25 changes: 0 additions & 25 deletions MIDAS/src/hardware/sensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,6 @@ struct BarometerSensor {
Barometer read();
};

/**
* @struct Continuity interface
*/
struct ContinuitySensor {
ErrorCode init();
Continuity read();
};

/**
* @struct Voltage interface
*/
Expand All @@ -48,23 +40,6 @@ struct VoltageSensor {
Voltage read();
};

// /**
// * @struct BNO interface
// */
// struct OrientationSensor {
// Orientation initial_orientation;
// Quaternion initial_quaternion;
// uint8_t initial_flag;

// float prev_x = 0;
// float prev_y = 0;
// float prev_z = 0;
// float prev_tilt = 0;

// ErrorCode init();
// Orientation read();
// };

/**
* @struct GPS interface
*/
Expand Down
7 changes: 0 additions & 7 deletions MIDAS/src/hilsim/sensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,6 @@ struct BarometerSensor {
// LowGLSM read();
// };

/**
* @struct Continuity interface
*/
struct ContinuitySensor {
ErrorCode init();
Continuity read();
};

/**
* @struct Voltage interface
Expand Down
10 changes: 0 additions & 10 deletions MIDAS/src/hilsim/sensors/Continuity.cpp

This file was deleted.

5 changes: 0 additions & 5 deletions MIDAS/src/hilsim/sensors/sensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@ struct BarometerSensor {
Barometer read();
};

struct ContinuitySensor {
ErrorCode init();
Continuity read();
};

struct VoltageSensor {
ErrorCode init();
Voltage read();
Expand Down
3 changes: 0 additions & 3 deletions MIDAS/src/log_format.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@
enum ReadingDiscriminant {
ID_IMU = 1,
ID_BAROMETER = 2,
ID_CONTINUITY = 3,
ID_VOLTAGE = 4,
ID_GPS = 5,
ID_MAGNETOMETER = 6,
ID_ORIENTATION = 7,
ID_KALMAN = 8,
ID_FSM = 9,
ID_PYRO = 10,
Expand Down Expand Up @@ -43,7 +41,6 @@ struct LoggedReading {
IMU imu;
IMU_SFLP hw_filt;
Barometer barometer;
Continuity continuity;
Voltage voltage;
GPS gps;
Magnetometer magnetometer;
Expand Down
2 changes: 0 additions & 2 deletions MIDAS/src/rocket_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,10 @@ struct RocketData {
BufferedSensorData<IMU, 16> imu;
SensorData<IMU_SFLP> hw_filtered;
BufferedSensorData<Barometer, 16> barometer;
SensorData<Continuity> continuity;
SensorData<PyroState> pyro;
SensorData<FSMState> fsm_state;
SensorData<GPS> gps;
SensorData<Magnetometer> magnetometer;
//SensorData<Orientation> orientation;
SensorData<Voltage> voltage;
SensorData<CameraData> cam_data;

Expand Down
13 changes: 3 additions & 10 deletions MIDAS/src/sensor_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,23 +80,16 @@ struct Barometer {
Barometer(float t, float p, float a) : temperature(t), pressure(p), altitude(a) {}
};

/**
* @struct Continuity
*
* @brief data about pyro continuity
*/
struct Continuity {
float pins[4];
};

/**
* @struct Voltage
*
* @brief data about battery voltage
*/
struct Voltage {
float voltage = 0;
float current = 0;
float continuity[4];
float v_Bat = 0;
float v_Pyro = 0;
};

/**
Expand Down
Loading