وحدة مستشعر جهد AC ‏ZMPT101B

55,00 DH 60,00 DH

التوفر:

102 متوفر في المخزون

رمز المنتج: 0170-A التصنيفات: ,

الوصف

وحدة مستشعر جهد AC ‏ZMPT101B

يوصف هذا المستشعر بأنه وحدة لقياس جهد AC تستخدم محول جهد ودائرة تضخيم لتوفير خرج تناظري يتناسب مع الإشارة المقاسة. ويذكر المصدر إمكانية القياس حتى 250V AC.

المواصفات كما وردت في المصدر

  • الدخل: 0–250V AC (وفق المصدر)
  • الخرج: إشارة تناظرية مذكورة بقيمة 0–5V
  • التغذية: 5–30V DC (وفق المصدر)
  • درجة حرارة التشغيل: من ‎-40 إلى 70°C
  • مقاومة متعددة اللفات لضبط الخرج
  • وحدة مدمجة للتركيب على لوحة الدائرة

تستخدم الوحدة محول جهد لخفض إشارة AC المأخوذة للقياس، ثم تمر الإشارة عبر مقسم مقاومي ومضخم عمليات. وتضبط المقاومة متعددة اللفات الخرج بما يتناسب مع الدخل المقاس.

التطبيقات

  • مراقبة جهد AC
  • مشاريع أتمتة المنازل
  • نماذج أولية لمراقبة الطاقة
  • كشف انقطاع الطاقة
  • تحليل الطاقة والتحكم بها

التوصيلات

  • VCC: تغذية الوحدة (يستخدم مثال التوصيل في المصدر 5V)
  • OUT: خرج تناظري
  • GND: أرضي
  • موصل بطرفين: دخل AC (يسميه مثال المصدر VIN+ وVIN−)

في مثال Arduino Uno، يوصل المصدر VCC بـ5V وGND بالأرضي وOUT بمدخل تناظري مثل A0. ويوصل طرفا AC بالجهد المراد قياسه.

مثال Arduino أساسي

يعرض المصدر المثال التالي لقراءة الوحدة وطباعة قيمة:

#define VOLTAGE_SENSOR_PIN A0


void setup() {
  Serial.begin(9600);
}


void loop() {
  int sensorValue = analogRead(VOLTAGE_SENSOR_PIN);
  float voltage = (sensorValue / 1023.0) * 250.0; // Conversion pour 250V AC
  Serial.print("Voltage: ");
  Serial.print(voltage);
  Serial.println(" V");
  delay(1000);
}

ماذا يفعل المثال الأساسي

يقرأ المدخل التناظري ويحوّل القراءة باستخدام ثابت 250V. هذا تحويل توضيحي فقط؛ فهو لا يحسب قيمة RMS الحقيقية ولا ينشئ قياسًا معايرًا. لا تعتبر القيمة المعروضة قراءة دقيقة لجهد الشبكة أو قراءة معتمدة للسلامة.

مكونات المثال الأساسي

  • Arduino Uno
  • وحدة مستشعر الجهد ZMPT101B
  • أسلاك توصيل

توصيلات المثال الأساسي

  • VCC: طرف 5V في Arduino
  • GND: أرضي Arduino
  • OUT: الطرف A0 في Arduino
  • VIN+ وVIN−: طرفا دخل AC

مثال متقدم مع شاشة I2C LCD

يعرض المصدر أيضًا مثالًا أطول للعرض على شاشة I2C LCD ووحدة الاتصال التسلسلي:

#include <LiquidCrystal_I2C.h> // Inclusion de la bibliothèque pour l'écran LCD I2C

// Constantes
const float V_REF = 5.0; // Tension de référence de l'Arduino
const int ADC_RESOLUTION = 1023; // Résolution de l'ADC de l'Arduino
const float VOLTAGE_RANGE = 250.0; // Plage de tension mesurée par le capteur
const int VOLTAGE_SENSOR_PIN = A0; // Broche de connexion du capteur de tension
const int DELAY_TIME = 1000; // Délai entre les lectures en millisecondes

LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialisation de l'écran LCD I2C avec l'adresse 0x27 et une taille de 16x2

void setup() {
lcd.begin(); // Initialisation de l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
Serial.begin(9600); // Initialisation de la communication série à 9600 bauds
}

// Fonction pour lire la valeur du capteur de tension
void readSensorValue(int& sensorValue) {
sensorValue = analogRead(VOLTAGE_SENSOR_PIN); // Lire la valeur analogique du capteur
}

// Fonction pour calculer la tension mesurée à partir de la valeur du capteur
float calculateVoltage(int sensorValue) {
if (ADC_RESOLUTION == 0) { // Vérification pour éviter la division par zéro
Serial.println("Erreur: ADC_RESOLUTION est zéro.");
return 0.0;
}

float adc_voltage = sensorValue * (V_REF / ADC_RESOLUTION); // Calcul de la tension ADC
float voltage = adc_voltage * VOLTAGE_RANGE / V_REF; // Conversion de la tension ADC à la tension réelle

if (voltage > VOLTAGE_RANGE) { // Vérification si la tension dépasse la plage maximale
Serial.println("Erreur: Tension hors plage.");
return 0.0;
}

return voltage; // Retourne la tension calculée
}

// Fonction pour afficher les valeurs sur l'écran LCD
void displayValuesOnLCD(float voltage) {
static float lastVoltage = -1.0; // Variable pour stocker la dernière valeur de tension affichée

if (voltage != lastVoltage) { // Met à jour l'affichage uniquement si la valeur a changé
lcd.clear(); // Efface l'écran LCD
lcd.setCursor(0, 0); // Positionne le curseur à la première ligne
lcd.print("Voltage: "); // Affiche le texte "Voltage: "
lcd.print(voltage, 2); // Affiche la valeur de la tension avec 2 décimales
lcd.print(" V"); // Affiche l'unité de tension "V"
lastVoltage = voltage; // Met à jour la dernière valeur de tension affichée
}
}

// Fonction pour afficher les valeurs sur la console série
void displayValuesOnSerialConsole(float voltage) {
Serial.print("Voltage: "); // Affiche le texte "Voltage: " sur la console série
Serial.print(voltage, 2); // Affiche la valeur de la tension avec 2 décimales
Serial.println(" V"); // Affiche l'unité de tension "V" et passe à la ligne suivante
}

void loop() {
int sensorValue;
readSensorValue(sensorValue); // Lire la valeur du capteur de tension
float voltage = calculateVoltage(sensorValue); // Calculer la tension réelle
displayValuesOnLCD(voltage); // Afficher la tension sur l'écran LCD
displayValuesOnSerialConsole(voltage); // Afficher la tension sur la console série
delay(DELAY_TIME); // Attendre avant de refaire une lecture
}

الغرض من المثال المتقدم

وفق وصف المصدر، يهيئ الكود شاشة I2C LCD والاتصال التسلسلي، ويقرأ إشارة المستشعر التناظرية، ثم يحسب قيمة جهد ويعرضها ويكرر القراءة. يحتاج الكود وطريقة التحويل إلى مراجعة ومعايرة بحسب الوحدة الفعلية ومرجع ADC وشكل الموجة ومدى الدخل؛ وهذه ليست طريقة موثقة لقياس RMS الحقيقي.

مكونات المثال المتقدم

  • Arduino Uno
  • وحدة مستشعر الجهد ZMPT101B
  • شاشة 1602 I2C LCD
  • أسلاك توصيل

السلامة الكهربائية: قد يؤدي قياس جهد الشبكة إلى صعق كهربائي قاتل أو حريق. أمثلة المصدر ليست تعليمات سلامة. يجب أن يصمم توصيل جهد الشبكة ويتعامل معه شخص مؤهل باستخدام غلاف وعزل ومسافات وفيوزات ومعدات قياس مناسبة ومصنفة. لا تلمس أسلاكًا مكشوفة تحت الجهد ولا توصل دائرة شبكة مكشوفة بحاسوب.

شكرًا لولائك!

AR