Măsurarea Turației unei Turbine cu un senzor inductiv și ESP32
Proiectul are ca scop măsurarea turației unei turbine cu 11 pale
folosind un senzor inductiv și un microcontroler ESP32. Turația turbinei
este un parametru esențial în controlul și monitorizarea echipamentelor
industriale și a proceselor care implică mișcarea de rotație.
Senzorul inductiv
Un senzor inductiv este un dispozitiv electronic care detectează obiecte sau schimbări în mediu folosind principiul inductanței electromagnetice. Acesta constă într-o bobină sau o serie de bobine de sârmă înconjurate de un nucleu de ferită sau alt material feromagnetic.
Iată cum funcționează în mod general:
Bobina Inductivă: Senzorul inductiv are o bobină de sârmă în interior, prin care trece un curent electric.
Generarea unui Câmp Magnetic: Atunci când curentul trece prin bobină, se creează un câmp magnetic în jurul acesteia. Mărimea acestui câmp magnetic depinde de intensitatea curentului electric care trece prin bobină.
Detectarea Obiectelor: Atunci când un obiect metalic intră în zona de acțiune a câmpului magnetic generat de senzor, acesta perturbă câmpul magnetic. Această perturbare poate fi detectată de senzor.
Generarea unui Semnal Electric: Senzorul inductiv convertește perturbarea câmpului magnetic într-un semnal electric. Această schimbare în semnal este ulterior utilizată pentru a declanșa o anumită acțiune sau pentru a indica prezența sau absența unui obiect metalic în zona senzorului.
Senzorii inductivi sunt adesea utilizați în aplicații industriale pentru detectarea prezenței sau absenței obiectelor metalice, controlul poziției în procese de fabricație sau chiar în sistemele de alarmă. Un avantaj important al senzorilor inductivi este faptul că pot funcționa fără contact direct cu obiectul detectat, ceea ce îi face durabili și potriviți pentru medii industriale dificile.
Conectarea senzorului
Conectarea unui senzor inductiv NPN - NO (normal deschis) la un ESP32 poate fi realizată folosind un convertor de nivel logic. Iată pașii generali pe care îi poți urma:
Conectarea Senzorului Inductiv la ESP32
Alimentare:
- Conectează pinul de alimentare (Vcc) al senzorului inductiv la o sursă de alimentare de 5-30V. Pentru că acest senzor funcționează și la 5 V eu l-am conecta la VIN de pe placa ESP32. Ar putea fi folosită o tensiune mai mare de la o sursă externă, de exemplu o baterie sau o altă sursă de alimentare care furnizează tensiunea corespunzătoare, dar în cazul acesta ar trebui redusă tensiunea de intra pentru convertorul de nivel logic până la 5V.
Masă (GND):
- Conectează pinul de masă (GND) al senzorului la pinul de masă (GND) al ESP32.
Ieșire (Out):
- Conectează pinul de ieșire (Out) al senzorului inductiv la un pin de intrare de pe placa de conversie logică HV1, iar de la această placă, se va conecta LV1 la un pin (de exemplu eu am folosit pinul 13) de pe ESP32 (vezi poza de mai jos).
Aplicație practică
Calcularea turației unei turbine cu 11 pale din metal folosind un senzor inductiv implica monitorizarea frecventei semnalului generat de acest senzor în timpul funcționarii turbinei. Pentru a măsura turația unei turbine cu un senzor inductiv, se pot urma următorii pași generali:
Montare Senzor Inductiv:
- Se poziționează senzorul inductiv astfel încât să detecteze trecerea fiecărei pale a turbinei. Se montează în așa fel încât pala metalică să perturbe câmpul magnetic al senzorului în timpul rotației.
- Deoarece turbina are 11 pale, trebuie să se configureze corect programul pentru a număra fiecare trecere a unei pale. Acest număr este important pentru a calcula turația.
- Detectarea palelor - am configurat o întrerupere în software care incrementează o variabilă în momentul în care detectează o pală a turbinei , iar acesta se numește un impuls
- Calcularea Turației:
- Poți calcula turația în funcție de numărul de impulsuri (detectări ale trecerii unei pale) într-un interval de timp. Formula de bază este:
- Durata unei rotații complete este suma duratelor celor 11 impulsuri detectate de senzorul inductiv
- Turația în rotații pe minut (rpm) este de fapt de câte ori s-a învârtit turbina într-un minut.
- Deci dacă turbina s-a învârtit o singură dată o să avem 11 impulsuri de senzorul inductiv
Turația poate fi calculata utilizând formula:
Unde:
este frecventa semnalului generat de senzorul inductiv.
reprezinta numărul de impulsuri sau pulsații detectate de senzor în timpul unei rotații complete a turbinei.
Este important sa cunoaștem p deoarece acesta depinde de configurația senzorului inductiv și de numărul de pale ale turbinei. In cazul unei turbine cu 11 pale, numărul de impulsuri pe rotație va fi , unde este numărul de impulsuri generate de senzor în timpul unei rotații complete.
Există mai multe metode pentru calcularea turației unei turbine, iar alegerea depinde adesea de caracteristicile specifice ale senzorului sau dispozitivului folosit pentru a măsura rotația. Iată câteva alternative:
- Măsurare timp între impulsuri:
- Măsurați intervalul de timp dintre două impulsuri consecutive folosind funcții precum
millis()
( returnează timpul în milisecunde) saumicros() (returnează timpul în microsecunde)
în limbajul Arduino - Calculați frecvența semnalului inversul timpului măsurat.
- Apoi utilizați formula pentru a calcula turația.
Contorizare impulsuri într-un interval de timp:
- Utilizez un timer pentru a contoriza numărul total de impulsuri într-un interval de timp fix.
- Acest număr poate fi apoi folosit pentru a calcula turația.
Componente
- Senzor de proximitate inductiv LJ12A3-4-Z/BX NPN OKY3279
- LJ12A3-4-Z/BX LJ12A3-4-Z/BY M12 Inductive Proximity Sensor Detection Switch NPN PNP DC 6V 36V AC 110V 220V NO NC Approach Sensor
- ESP32 Wireless WiFi Bluetooth Dual Core CP2104 - 38 pini
- Convertor de nivel logic cu 4 canale, Elektroweb, 5 V/3.3 V/2.8 V/1.8 V
- 4 Channels IIC I2C Logic Level Switching Shifter Bi-Directional Module Safely Steps Down 3.V to 5V Converter for Arduino
Schema electronică/sistem - Conectare Hardware
Implementare Software
Implementarea acestui algoritm pe un microcontroler ESP32 în limbajul C
implică citirea frecvenței semnalului generat de senzorul inductiv și
utilizarea formulei menționate anterior pentru a calcula turația
turbinei. Iată o schiță a codului în limbajul C pentru platforma ESP32:
#include "Arduino.h"
// Definirea pinului pentru conectarea senzorului inductiv
const int inductiveSensorPin = 13;
// Variabile pentru stocarea frecventei semnalului și turatiei
volatile int signalFrequency = 0;
int pulsePerRotation = 11; // Numarul de impulse pe rotatie pentru o turbina cu 11 pale
void setup() {
Serial.begin(115200);
// Configurarea pinului senzorului inductiv ca intrare
pinMode(inductiveSensorPin, INPUT);
// Attach interrupt pentru a monitoriza schimbarile pe pin
attachInterrupt(digitalPinToInterrupt(inductiveSensorPin), handleInterrupt, FALING);
}
void loop() {
// Calcularea turatiei folosind formula
float rotationSpeed = (float)signalFrequency / pulsePerRotation * 60;
// Afisarea rezultatului
Serial.print("Turatia: ");
Serial.print(rotationSpeed);
Serial.println(" rpm");
// Așteptare pentru a evita afișarea prea rapidă a rezultatelor
delay(1000);
}
// Funcție apelată la fiecare schimbare pe pinul senzorului inductiv
void handleInterrupt() {
// Incrementarea frecvenței semnalului la fiecare schimbare de stare
signalFrequency++;
}
Acest cod folosește funcția attachInterrupt
pentru a detecta schimbările de stare pe pinul senzorului inductiv. Frecvența semnalului este măsurată în funcția handleInterrupt
, iar turația este calculată în funcția loop
pe baza frecvenței semnalului și afișată prin portul serial.
Asigurați-vă că ați setat corect pinul pentru senzorul inductiv (inductiveSensorPin
) în funcția setup
. De asemenea, ajustați variabila pulsePerRotation
în funcție de numărul real de pale ale turbinei.
Documentație proiect
- https://medium.com/@TanakittiSachati/how-to-use-inductive-proximity-sensor-with-raspberry-pi-3-model-b-python-539ecc731bf3
- https://electropeak.com/learn/interfacing-inductive-proximity-sensor-lj12a3-4-z-bx-with-arduino/
- https://mertarauh.com/wp-content/uploads/2018/05/Installing-a-proximity-sensor-using-a-diode-and-external-pull.pdf
- https://mertarauh.com/2017/01/18/dont-trust-the-internet-and-how-to-add-an-inductive-proximity-sensor-to-your-3d-printer-the-proper-and-easiest-way/
- https://espeasy.readthedocs.io/en/latest/Plugin/P003_LJ12A3.html
- https://electronics.stackexchange.com/questions/213806/arduino-input-with-cny17-to-sense-12v-input
- https://electronics.stackexchange.com/questions/323306/determining-speed-of-turbocharger-via-sound
- https://www.asutpp.com/rpm-to-hz.html
- https://www.youtube.com/watch?v=u2uJMJWsfsg
- https://content.kemet.com/datasheets/KEM_SE0209_VS.pdf
- https://deepbluembedded.com/stm32-proteus-library-bluepill-simulation-stm32f103c6/
Afiliere eMag
Linkurile de la secțiunea "Componente" conțin adresa mea de afiliere la eMag.ro, iar dacă cumperi folosind aceste linkuri vei susține blogul meu. Mulțumesc!eMag Genius:
Hai și tu în Genius! Abonează-te la Genius 12 luni și primești beneficii premium și 20 lei card cadou eMAG. Profită acum! eMag Genius
Pentru întrebări și/sau consultanță tehnică vă stau la dispozitie pe blog mai jos în secțiunea de comentarii sau pe email simedruflorin@automatic-house.ro. O zi plăcută tuturor !