MicroPython: Mesure de courant et puissance avec les produits National Control Device

Bonjour à tous,

Cela fait un petit moment que nous nous sommes penchés sur la connectique NCD (National Control Device) qui permet de brancher très facilement des cartes I2C, avec une large gamme proposée sur le site de National Control Device.

Cette fois, c'est un pilote MicroPython pour la mesure de courant qui à été développé.

Mesure de courant / puissance
Cette fois, nous nous sommes penchés sur les cartes DLCT27C10 et OPCT16AL pour mesurer des courants. Ces cartes existent en multi-capteurs avec capteurs sur carte et capteurs déportés.
Carte OPCT16AL avec capteur déporté

Carte DLCT27C10 avec capteur intégré à la carte
Les deux modèles testés sont prévus pour une gamme de courant de 30A et charge résistive/inductive. 

N'hésitez pas consulter la gamme DLCT chez NCD.io, il y a l'embarras du choix.

Adaptateur NCD
Nous avons déjà abordé la mise en place de connecteur sur NCD sur des plateformes ESP8266 et connecteur NCD sur la Pyboard.
Cette fois, nous allons travailler avec une MicroPython Pyboard, le schéma de l'adaptateur est donc le suivant:
Source: NCD sur le GitHub de MCHobby
N'hésitez pas à consulter ce GitHub pour plus de détails, liste d'achat, etc.

brancher
Vient ensuite le moment du branchement... forcement très simple.
Source: bibliothèque/pilote PECMAC pour MicroPython - GitHub MCHobby

Source: bibliothèque/pilote PECMAC pour MicroPython - GitHub MCHobby
Bibliothèque
Une fois la bibliothèque pecmac.py et les exemples disponibles sur GitHub installer sur la carte, un simple import test dans la session REPL permet de tester le pilote.

Tester
Le code d'exemple est relativement simple

from machine import I2C, Pin
from pecmac import PECMAC, PECMAC_SENSOR_TYPES
import time

# Créer le bus I2C en fonction de la plateforme.
# Pyboard: SDA sur Y9, SCL sur Y10. Voir branchement NCD sur https://github.com/mchobby/pyboard-driver/tree/master/NCD
#         Vitesse de bus réduit à 100 Khz pour test.
i2c = I2C( 2, freq=100000 )
# Feather ESP8266 & Wemos D1: sda=4, scl=5.
# i2c = I2C( sda=Pin(4), scl=Pin(5) )
# ESP8266-EVB
# i2c = I2C( sda=Pin(6), scl=Pin(5) )

# Ajouter le parametre "address" si necessaire
board = PECMAC( i2c )
print( 'Type de capteur: %d (%s)' % (board.sensor_type, PECMAC_SENSOR_TYPES[board.sensor_type]) )
print( 'Courent Max    : %d' % board.max_current )
print( 'Canaux         : %d' % board.channels    )

print( '' )
print( 'Lecture de la calibration des canauxn :' )
for ch in range(1, board.channels+1 ):
 print( 'Canal %s = %i' % (ch, board.read_calibration(ch)) )

# board.raw_values retournera une entrée par canal
# raw_values est plus approprié pour le calcul
print( '' )
print( 'Lecture brute (RAW) des canaux (floats):' )
print( board.raw_values )

print( '' )
print( 'Lecture des valeurs Human Friendly (info textuelle):')
while True:
 # board.values retourne une valeur par canal
 print( board.values )
 time.sleep(1)


Testé avec le  fer à repasser valeur de maison AKA "FaitChaud-ALaValeur" ;-)
j'ai obtenu les relevés suivants:
Sensor Type : 2 (DLCT27C10)
Max current : 30
Channels    : 2

Read Channels Calibration :
Channel 1 = 855
Channel 2 = 855

Reading Channels RAW value (floats):
(0.0, 0.0)

Human Friendly values (textual):
('0.000A', '0.000A')
('0.000A', '0.000A')
('0.000A', '3.513A')  --> Démarrage du fer
('0.000A', '9.418A')  --> Activation du générateur de vapeur
('0.000A', '9.418A')
('0.000A', '9.330A')
('0.000A', '9.300A')
('0.000A', '9.330A')
('0.000A', '9.330A')
('0.000A', '9.300A')
('0.000A', '9.330A')
('0.000A', '9.300A')
('0.000A', '9.330A')
('0.000A', '9.300A')
('0.000A', '9.300A')
('0.000A', '9.300A')
('0.000A', '9.300A') --> Vapeur générée
...
('0.000A', '3.484A') --> Chauffe encore la semelle du fer
('0.000A', '3.484A')
('0.000A', '3.484A')
...
('0.000A', '0.000A') --> Complètement chaud
('0.000A', '0.000A')
('0.000A', '3.484A') --> Ajuster la température sur le fer à souder
...

Conclusion
Très simple à utiliser avec la bibliothèque MicroPython, les cartes senseur de courant (PECMAC) permettent de faire des relevés très facilement.



La semaine prochaine, j'utilise l'OPCT16AL et une carte MicroPython ESP8266 pour ajouter de la mesure de consommation au projet "La-Maison-Pythonic" (cfr Livre "Python, Raspberry Pi et Flask: capturez des données télémétriques et réalisez des tableaux de bord web").

Aucun commentaire