A library for interfacing the ACS712 Hall Effect Current Sensor module with a microcontroller

ACS712.h

Committer:
JRM1986
Date:
2019-10-10
Revision:
0:c0c26e03d080

File content as of revision 0:c0c26e03d080:

#ifndef ACS712_H
#define ACS712_H

#define WAIT 5.0
#include "mbed.h"

/**
    @file   ACS712.h
*   @brief  Library for interfacing ACS712 Hall Effect Current sensor
*
*   @author Josh Marshall
*
*   @date   July 2019
*/


namespace mbed
{
 class   AnalogIn; 
}

class ACS712 
{
    
private:

    mbed::AnalogIn *_aInPin;

public:
    
    /** Constructor */
    ACS712(PinName const outpin);

    /** Destructor */
    ~ACS712();

/** 
*   Initialise all peripherals and configure interrupts 
*   @author Josh Marshall
*   @date   July 2019
*/
void init();


/** 
*   Reads current sensor
*   @returns current sensor value in range 0.0 to 1.0
*   @author Josh Marshall
*   @date   July 2019
*/
double read_current_sensor();


/** 
*   Read current sensor
*   @returns current sensor value in range 0 to 65535 (2^16-1)
*            K64F High‐speed 16‐bit ADC with configurable resolution
*            LPC1768 12-bit Analog-to-Digital Converter (ADC) with input multiplexing among
*            eight pins, conversion rates up to 200 kHz, and multiple result registers. 
*   @author  Josh Marshall
*   @date    July 2019
*/


int read_ain_uint_16();

/** 
*   Read current sensor and convert to amps
*   @param  acs_ffset the value that the current sensor outputs at 0 amps
*   @param  gain from potential divider to map 5v out put of sensor onto 3.3v input
*   @param  sensor type 5,20, or 30 amp 
*   @author Josh Marshall
*   @date   July 2019
*/
void convert_to_amps(float acs_offset, float gain, int type);

/** 
*   If current spike (>1.1*operating current) from motor is detected it returns true flag
*   @param  value of current from ACS712 Hall Effect Current Sensor
*   @prarm  typical operating current
*   @author Josh Marshall
*   @date   July 2019
*/

bool over_current_detection(double operating_current);

/**
*   Returns the value frrom the current sensor
*   @author Josh Marshall
*   @date   July 2019
*/

float get_current_amps();
 
private:
           
    double _current;
    
};

#endif