A library for interfacing the ACS712 Hall Effect Current Sensor module with a microcontroller
ACS712.cpp
- Committer:
- JRM1986
- Date:
- 2019-10-10
- Revision:
- 0:c0c26e03d080
File content as of revision 0:c0c26e03d080:
#include "ACS712.h" #include "mbed.h" // Constructor/Destructor ACS712::ACS712(PinName const outpin) : _aInPin(new AnalogIn(outpin)) {} ACS712::~ACS712() { delete _aInPin; } // ----- Public Methods ----- void ACS712::init() { } double ACS712::read_current_sensor() { double val; val = _aInPin->read(); val *= val; val = sqrt(val); return val; } int ACS712::read_ain_uint_16() { int val = 0; val = _aInPin->read_u16(); return val; } void ACS712::convert_to_amps(float acs_offset, float gain, int type) { double _current_in = read_current_sensor()*3.3; switch(type) { case 5: _current = (acs_offset*gain - _current_in*gain)/.185*gain; break; case 20: _current = (acs_offset*gain - _current_in*gain)/.100*gain; break; case 30: _current = (_current_in*gain - acs_offset*gain)/.066*gain; break; default: _current = 999.9; break; } } bool ACS712::over_current_detection(double operating_current) { bool current_spike_flag = false; if(_current > (1.1*operating_current)) { current_spike_flag = true; } else { current_spike_flag = false; } return current_spike_flag; } float ACS712::get_current_amps() { return _current; }