Final Upload

This commit is contained in:
Pedro Jose Romero Gombau 2025-04-03 14:06:05 +02:00
parent 7b0373e1ed
commit fab9752add
3 changed files with 56 additions and 0 deletions

50
README.md Normal file
View File

@ -0,0 +1,50 @@
# Proceso de Ajuste Automático de la Curva B-H para Simulación en MotorCAD
Este documento resume el procedimiento automatizado desarrollado para identificar la curva B-H que mejor representa el comportamiento magnético de un material dentro del contexto de un motor síncrono. El flujo consiste en comparar los resultados de simulaciones realizadas en MotorCAD con datos experimentales, ajustando iterativamente la curva B-H hasta minimizar el error en la tensión inducida.
## 1. Obtención de datos experimentales
A partir de ensayos en vacío, cortocircuito y carga, se determinan los parámetros eléctricos fundamentales del motor:
- **Ensayo en vacío:** se mide la constante de tensión inducida \(k_e\) como \(k_e = V / f\).
- **Ensayo en cortocircuito:** se calcula la inductancia \(L\) mediante la expresión:
\[ x = \sqrt{\left(\frac{k_e f}{I}\right)^2 - R^2} \]
- **Ensayo en carga:** se estima la tensión inducida \(E\) como:
\[ E = I \cdot \sqrt{(R + \frac{V}{I})^2 + (2\pi f L)^2} \]
Estos resultados proporcionan las tensiones inducidas experimentales de referencia para diferentes frecuencias.
## 2. Generación de curvas B-H
Se construye una curva B-H como una serie de pares \((H, B)\), donde \(H\) es el campo magnético y \(B\) la densidad de flujo:
\[ B = \mu_0 H + \text{offset} \]
Este offset se ajusta iterativamente. Los valores generados se exportan a un archivo `.mdb` compatible con MotorCAD.
## 3. Simulación electromagnética en MotorCAD
Para cada curva B-H generada, se realiza una simulación con corriente cero y velocidad fija en MotorCAD. Se extrae la tensión inducida \(E\) como resultado, replicando las condiciones del ensayo experimental.
## 4. Bucle iterativo de ajuste
Se sigue el siguiente algoritmo:
1. Inicializar un valor de offset.
2. Generar la curva B-H con ese offset.
3. Simular y obtener las tensiones inducidas \(E_{\text{sim}}\).
4. Calcular el error relativo medio respecto a \(E_{\text{exp}}\):
\[ \text{error} = \frac{E_{\text{sim}}}{E_{\text{exp}}} \]
5. Si el error está dentro del margen, detener.
6. Si no, ajustar el offset con:
\[ \delta = |\tanh(\text{error} - 1)| \]
y repetir desde el paso 2.
## 5. Objetivo
Determinar automáticamente la curva B-H que reproduce el mismo comportamiento que el material real, sin necesidad de caracterizarlo completamente por separado.
---
> **Nota:** Este README resume la lógica implementada en cuatro scripts principales: `ensayos_motor.py`, `genCurvas.py`, `motorcad.py` y `fluxControl.py`. Cada uno se encarga de una parte específica del proceso.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -19,6 +19,9 @@ with open(rutaPLA, 'r') as f:
if linea.startswith("BValue["): bPLAcond.append(float(linea.split("=")[1]))
if linea.startswith("HValue["): hPLAcond.append(float(linea.split("=")[1]))
hPLAcond = np.array(hPLAcond)
bPLAcond = np.array(bPLAcond)
bM800 = []
hM800 = []
@ -26,6 +29,9 @@ with open(rutaMetal, 'r') as f:
for linea in f.readlines():
if linea.startswith("BValue["): bM800.append(float(linea.split("=")[1]))
if linea.startswith("HValue["): hM800.append(float(linea.split("=")[1]))
bM800 = np.array(bM800)
hM800 = np.array(hM800)
plt.figure()
plt.plot(hPLA, bPLA, label = 'PLA')