
Funciones
Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente retornan un valor. Esta definición proviene de la definición de función matemática la cual posee un dominio y un rango, es decir un conjunto de valores que puede tomar y un conjunto de valores que puede retornar luego de cualquier operación.

Código de Funciones con Parámetros
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<conio.h>
using namespace std;
float M,r,en,ep,r1,l,i1,i2,r2,i11,r3,I,D,N;
void datos1();
float compgravt(float x,float y);
void datos2();
float campelct(float x,float y,float z);
void datos3();
float fucamag(float x,float y,float z,float a);
void datos4();
float decamag(float x,float y);
void datos5();
float camagelcim(float x,float y,float z);
int main (){
int opcion;
do{
cout<<"*************Electromagnetismo*************";
cout<<endl;
cout<<"1) Campo Gravitatorio\n";
cout<<"2) Campo Electrico\n";
cout<<"3) Fuerza del Campo Magnetico\n";
cout<<"4) Densidad de Campo Magnetico\n";
cout<<"5) Campo Magnetico en Electroiman\n";
cout<<endl;
cin>>opcion;
if(opcion>0,opcion<6){
switch (opcion){
case 1:{
cout<<"*******Campo Gravitatorio*******\n";
datos1();
compgravt(M,r);
cout<<endl;
break;
}
case 2:{
cout<<"*******Campo Electrico*******\n";
datos2();
campelct(en,ep,r1);
cout<<endl;
break;
}
case 3:{
cout<<"*******Fuerza del Campo Magnetico*******\n";
datos3();
fucamag(i1,i2,r2,l);
cout<<endl;
break;
}
case 4:{
cout<<"*******Densidad de Campo Magnetico*******\n";
datos4();
decamag(r3,i11);
cout<<endl;
break;
}
case 5:{
cout<<"*******Campo Magnetico en Electroiman*******\n";
datos5();
camagelcim(I,D,N);
cout<<endl;
break;
}
}
}else
cout<<"Opcion no existente";
cout<<endl;
}while (opcion!=0);
system("pause");
return(0);
}
void datos1(){
cout<<"Ingrese la Masa: ",cin>>M;
cout<<"Ingrese el Radio: ",cin>>r;
}
float compgravt(float x,float y){
float Cg=0.000000000066*(x/(y*y));
cout<<"El Campo Gravitatorio es: "<<Cg<<endl;
}
void datos2(){
cout<<"Carga Electron p: ",cin>>en;
cout<<"Carga Electron n: ",cin>>ep;
cout<<"Radio del electron: ",cin>>r1;
}
float campelct(float x,float y,float z){
float Ce=(1/(4*3.14159*y*x))*((x+y)/(z*z));
cout<<"El Campo Electrico es: "<<Ce<<endl;
}
void datos3(){
cout<<"Ingrese la Intesidad Cable 1: ",cin>>i1;
cout<<"Ingrese la Intesidad Cable 2: ",cin>>i2;
cout<<"Ingrese la Longitud de Separacion de los Cables: ",cin>>r2;
cout<<"Ingrese la Longitud de lo Cables: ",cin>>l;
}
float fucamag(float x,float y,float z,float a){
float F=0.0000012566*a*((x*y)/z);
cout<<"La Fuerza del Campo Magnetico: "<<F<<endl;
}
void datos4(){
cout<<"Ingrese la Longitud de Separacion de los Cables: ",cin>>r3;
cout<<"Ingrese la Intensidad de la Intensidad 1: ",cin>>i11;
}
float decamag(float x,float y){
float B=0.0000012566*(y/x);
cout<<"La Densidad del Campo Magnetico: "<<B<<endl;
}
void datos5(){
cout<<"Ingrese la Intensidad Electrica: ",cin>>I;
cout<<"Ingrese el Diametro de la Bobina: ",cin>>D;
cout<<"Ingrese el Numero de Espiras: ",cin>>N;
}
float camagelcim(float x,float y,float z){
float B1=0.0000012566*((x*z)/y);
cout<<"El Campo Magnetico del Electroiman: "<<B1<<endl;
}
Sistema de Control Automático
Resistencia del Termistor NTC
Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente retornan un valor. Esta definición proviene de la definición de función matemática la cual posee un dominio y un rango, es decir un conjunto de valores que puede tomar y un conjunto de valores que puede retornar luego de cualquier operación.

siendo:
Rt= Rntc, el valor de la resistencia a la temperatura T (en grados Kelvin. 0ºC=273,15ºK).
A = una constante que depende del termistor NTC, y representa el valor de la resistencia del termistor NTC cuando la temperatura es supuestamente infinita.
e= Numero de Euler=2,71828
B = es la resistencia característica del material de que está hecho el termistor NTC. Su valor esta comprendido entre 2000ºK y 4000ºK.
Calculo de las constantes A y B
Los fabricantes no suelen dar los valores de A y B por lo que hay que calcularlos según los valores de la resistencia RT a diferentes temperaturas. Para ello se realiza la siguiente consideración:

de donde igualando A para dos valores de R0 y T0 se obtiene:

de donde despejando B:

siendo R1 y R2 las resistencias del termistor NTC a las temperaturas T1 y T2 respectivamente. Una vez conocido B se puede calcular el valor de A sin más que sustituirlo en la ecuación (2) para una temperatura y resistencia de referencia (R0 y T0 a 25ºC, o 0ºC por ejemplo).
Resistencia del Sensor de Temperatura RTD

donde:
-
R=Rrtd
-
R0 es la resistencia a la temperatura de referencia a T0
-
(Dif_Temp) es la desviación de temperatura respecto a
-
(Alpha) es el coeficiente de temperatura del conductor especificado a 0 °C, interesa que sea de gran valor y constante con la temperatura
Cálculo de la distancia con el Sensor Ultrasonico
La distancia se puede calcular con la siguiente fórmula:
​
Distancia L = 1/2 × T × C
​
donde:
L es la distancia, T es el tiempo entre la emisión y la recepción, y C=Vel_Son es la velocidad del sonido. (El valor se multiplica por 1/2 ya que T es el tiempo de recorrido de ida y vuelta).
Tiempo de Intermitencia de Luminaria con Sensor de Movimiento PIR

T= Tiempo
R= Resistencia
C= Capacitancia
Programación en C++
#include <iostream>
#include <math.h>
using namespace std;
//DECLARACION VARIABLES PUBLICAS
double NTC,RTD,UTS,PIR,x,y,z,xp,Rntc,A,a,e=2.72,B,b,T,T0,R0,R1,R2,T1,T2,Rrtd,Dif_Temp,Tf,Alpha,Vel_Son=343.2,Dist,T_e_r,Inicial,Final,R,C;
//FUNCION 1
double Resist_NTC(double T);
//FUNCION 2
double Resist_RTD(double R0,double Alpha,double Dif_Temp);
//FUNCION 3
double Dist_Uts(double T_e_r);
//FUNCION 4
double T_Int_PIR(double R, double C);
int opcion;
int main()
{
cout<<" MENU "<<endl;
cout<<"*******************************************************"<<endl;
cout<<"1. RESISTENCIA DEL TERMISTOR NTC CON FORMULAS ANIDADAS"<<endl;
cout<<"2. RESISTENCIA DEL SENSOR DE TEMPERATURA RTD"<<endl;
cout<<"3. CALCULO DE LA DISTANCIA CON EL SENSOR ULTRASONICO"<<endl;
cout<<"4. TIEMPO DE INTERMITENCIA DE LUMINARIA CON SENSOR DE MOV. PIR"<<endl;
cout<<"**************************************************************"<<endl;
cout<<"SELECCIONA UNA FORMULA: "<<endl;
cin>>opcion;
switch(opcion)
{
case 1:
{
cout<<"1. RESISTENCIA DEL TERMISTOR NTC CON FORMULAS ANIDADAS"<<endl;
cout<<"*****************************************************"<<endl;
cout<<"FORMULA ANIDADA 1: CALCULANDO LA CONSTANTE A:"<<endl;
cout<<"***********************************************"<<endl;
cout<<"Ingrese la Resistencia 1: "; cin>>R1;
cout<<"Ingrese la Resistencia 2: "; cin>>R2;
cout<<"Ingrese la Temperatura 1: "; cin>>T1;
cout<<"Ingrese la Temperatura 2: "; cin>>T2;
//ANIDADO 1
x=log(R1)-log(R2);
y=(1/T1)-(1/T2);
B=x/y;
cout<<"La Constante B es: "<<B<<endl;
{
cout<<"FORMULA ANIDADA 2: CALCULANDO LA CONSTANTE B:"<<endl;
cout<<"***********************************************"<<endl;
cout<<"Ingrese la Resistencia Inicial: "; cin>>R0;
cout<<"Ingrese la Temperatura Inicial: "; cin>>T0;
//ANIDADO 2
xp=-B/T0;
A=R0*pow(e,xp);
cout<<"La Constante A es: "<<A<<endl;
cout<<"CALCULANDO LA RESISTENCIA DEL TERMISTOR NTC:"<<endl;
cout<<"********************************************"<<endl;
cout<<"Ingrese la Temperatura Expuesta del Sensor: "; cin>>T;
//PROCESO
Rntc=Resist_NTC(T);
//RESULTADO
cout<<"EL RESULTADO ES:"<<endl;
cout<<"********************************************"<<endl;
cout<<"La Resistencia del Termistor NTC es: "<<Rntc<<endl;
}
};break;
case 2:
{
cout<<"2. RESISTENCIA DEL SENSOR DE TEMPERATURA RTD"<<endl;
cout<<"*********************************************"<<endl;
cout<<"Ingrese la Resistencia Final de Referencia a T0: "; cin>>Final;
cout<<"Ingrese la Resistencia Inicial de Referencia a T0: "; cin>>Inicial;
cout<<"Ingrese la Temperatura Inicial: "; cin>>T0;
cout<<"Ingrese la Temperatura Final: "; cin>>Tf;
cout<<"Ingrese la Coeficiente de Temperatura: "; cin>>Alpha;
Dif_Temp=Tf-T0;
for(R0=Inicial;R0<=Final;R0=R0+15)
{
//PROCESO
Rrtd=Resist_RTD(R0,Alpha,Dif_Temp);
//RESULTADO
cout<<"EL RESULTADO ES:"<<endl;
cout<<"********************************************"<<endl;
cout<<"El Resistencia del Sensor de Temperatura RTD es: "<<Rrtd<<endl;
}
};break;
case 3:
{
cout<<"3. CALCULO DE LA DISTANCIA CON EL SENSOR ULTRASONICO"<<endl;
cout<<"******************************************************"<<endl;
cout<<"Ingrese el Tiempo entre la Emision y la Recepcion (Seg): "; cin>>T_e_r;
cout<<"La Velocidad de la Luz:343,2 m/s en la Atmosfera Terrestre "<<endl;
//PROCESO
Dist=Dist_Uts(T_e_r);
//RESULTADO
cout<<"EL RESULTADO ES:"<<endl;
cout<<"********************************************"<<endl;
cout<<"La distancia del Objeto sensado al Sensor Ultrasonico es(m): "<<Dist<<endl;
};break;
case 4:
{
cout<<"4. TIEMPO DE INTERMITENCIA DE LUMINARIA CON SENSOR DE MOV. PIR"<<endl;
cout<<"***************************************************************"<<endl;
cout<<"Ingrese la Resistencia: "; cin>>R;
cout<<"Ingrese la Capacitancia: "; cin>>C;
//PROCESO
T=T_Int_PIR(R,C);
//RESULTADO
cout<<"EL RESULTADO ES:"<<endl;
cout<<"********************************************"<<endl;
cout<<"El Tiempo de Intermitencia de Luminaria con Sensor de Movimiento PIR: "<<T<<endl;
};break;
}
}
// ZONA DE FUNCIONES
double Resist_NTC(double T)
{
z=B/T;
NTC=A*pow(e,z);
return NTC;
}
double Resist_RTD(double R0,double Alpha,double Dif_Temp)
{
RTD=R0*(1+Alpha*Dif_Temp);
return RTD;
}
double Dist_Uts(double T_e_r)
{
UTS=(T_e_r*Vel_Son)/2;
return UTS;
}
double T_Int_PIR(double R, double C)
{
PIR=log(3)*R*C;
return PIR;
}