Add general purpose Analog wrapper for isense

Add ADC_GAIN and SHUNT_RESISTOR values to plasma for configuring Analog current sense.
pull/181/head
Phil Howard 2021-08-12 15:47:59 +01:00
rodzic 6ce80cd289
commit eb91f04129
2 zmienionych plików z 26 dodań i 1 usunięć

Wyświetl plik

@ -52,6 +52,12 @@ const mp_obj_type_t PlasmaWS2812_type = {
.locals_dict = (mp_obj_dict_t*)&PlasmaWS2812_locals_dict,
};
typedef struct _mp_obj_float_t {
mp_obj_base_t base;
mp_float_t value;
} mp_obj_float_t;
mp_obj_float_t shunt_resistor = {{&mp_type_float}, 0.015f};
/***** Globals Table *****/
STATIC const mp_map_elem_t plasma_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_plasma) },
@ -69,6 +75,9 @@ STATIC const mp_map_elem_t plasma_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_GBR), MP_ROM_INT(0x03) },
{ MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_BRG), MP_ROM_INT(0x04) },
{ MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_BGR), MP_ROM_INT(0x05) },
{ MP_ROM_QSTR(MP_QSTR_SHUNT_RESISTOR), MP_ROM_PTR(&shunt_resistor) },
{ MP_ROM_QSTR(MP_QSTR_ADC_GAIN), MP_ROM_INT(50) },
};
STATIC MP_DEFINE_CONST_DICT(mp_module_plasma_globals, plasma_globals_table);

Wyświetl plik

@ -1,5 +1,21 @@
import time
from machine import Pin, PWM
from machine import Pin, PWM, ADC
class Analog:
def __init__(self, pin, amplifier_gain=1, resistor=0):
self.gain = amplifier_gain
self.resistor = resistor
self.pin = ADC(pin)
def read_voltage(self):
return self.pin.read_u16() * 3.3 / 65535 / self.gain
def read_current(self):
if self.resistor > 0:
return self.read_voltage() / self.resistor
else:
return self.read_voltage()
class Button: