Mostrando entradas con la etiqueta Ahorrar energía. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ahorrar energía. Mostrar todas las entradas

Obtener parametros de los paneles solares










Partiendo de los siguientes datos: (se obtienen de la hoja de características del fabricante de los módulos fotovoltaicos)



Intensidad de cortocircuito (Isc).
Tensión de circuito abierto (Voc).
Tensión PMP (Vm).
Intensidad PMP (Im).
Porcentaje de eficiencia.
Temperatura operación nominal (TONC) en grados Kelvin.

El software calcularía los siguientes:

Factor de forma (FF).
Temperatura de célula (Tc) en grados kelvin.
Área (Ac) en metros cuadrados.
Máxima potencia (Pm).
Resistencia para PMP (Rm).


Pulsando el botón "Calcular datos irradiancia G" la aplicación obtendrá los siguientes datos en condiciones de irradiancia G:

Temperatura célula (Tc2).
Tensión (Voc2).
Intensidad cortocircuito (Isc2).
Máxima potencia (Pm2).
Eficiencia con G.

Codigo fuente


Autor: ajpdsoft

Fuente:  http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=439



Ejemplo:

Cálculo para un sistema básico fotovoltaico




Corrección: E4=E1xE2xE3, E3 es la cantidad de horas de uso.

Cálculo de la corriente requerida


A1 Carga total diaria (sumar la columna E4)                                      273
watts-hora/día


A2 Tensión CD del sistema (generalmente 12 ó 24 V)                       12 voltios


A3 Carga diaria corriente (A1/A2)                                                     
22.8 amperios-hora


A4 Multiplicar con el factor de seguridad 20% (para
compensar


las pérdidas en las baterías y otros componentes)                           1.2


A5 Carga diaria corriente corregida (A4*A3)                                     27.3
amperios-hora


A6 Promedio de horas de sol por día.                                               
4 horas


A7 Amperaje que el sistema tendrá que producir (A5/A6)                 6.8 amperios



Cálculo del número de paneles



B1 Amperaje máximo del modulo solar seleccionado


(según especificaciones del fabricante)                                            
3.9 amperios


B2 Divida la línea A7 entre la B1 para obtener el número


de módulos que se necesita                                                             
1.75


B3 Redondee al número completo inmediato superior                       2





Cálculo del número de baterías


C1 Carga total diaria (A5)                                                                  
27.3 amperios-hora


C2 Días de reserva (este es el tiempo que el


sistema tiene que estar funcionando sin sol)                                     3


C3 Capacidad nominal del banco de baterías (C1*C2)                       81.9 amperios-hora


C4 Factor de profundidad de descarga (generalmente 80%,


significa que siempre se deja un 20% de reserva en las
baterías)    0.8


C5 Capacidad corregida del banco de baterías (C3/C4)                    102.4 amperios-hora


C6 Capacidad nominal de batería


(según especificaciones del fabricante)                                             
120 amperios-hora


C7 Número de baterías       
(C5/C6)                                                   0.9


C8 Número de baterías (redondear C7)                                              1














Wake On Lan

Todas las tarjetas de red actuales soportan WOL, para ello es necesario que en la Bios activen la función Wake On Lan (en algunas tarjetas de red hay que conectar un cable a la placa base del equipo)
Para encender un equipo es suficiente con enviar por red el paquete mágico que es de la forma 6 x "FF" seguido de 16 x dirección MAC de la máquina a despertar.

Ej: (procedente de un sniffer)
-----------------------------
ff ff ff ff ff ff 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9
c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40
e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62
00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62 00 40 e3 e9
c8 62 00 40 e3 e9 c8 62 00 40 e3 e9 c8 62

Las tarjetas de red están permanentemente escuchando, de tal forma que cuando reciben el paquete mágico es igual que pulsar el botón de encendido

Descarga del programa que envía el paquete mágico


Cómo configurar el PC para WOL:
http://www.vicente-navarro.com/blog/2007/06/03/wake-on-lan/




Apagar monitor pulsando una tecla



El siguiente software muestra la forma de utilizar hooks de teclado para apagar el monitor (pulsando la tecla "Pause" en este caso). Éste se volverá a encender cuando se pulse una tecla o se mueva el ratón.

Lo que hace el programa es:
- Hacer una llamada a LoadLibrary para cargar la Dll (MonitorOffDll).
LibHandle:=LoadLibrary('MonitorOffDLL.dll')

- Llama a GetProcAddres para conseguir la dirección de la DLL.
HookProcAddress:=GetProcAddress(LibHandle, pchar(1) ); InitializeHook:=GetProcAddress(LibHandle,pchar(2) );

- Llama a SetWindowsHookEx especificando WH_KEYBOARD como tipo de hook y con la dirección obtenida en el punto anterior. El parámetro ThreadID se pone a cero para indicar que es un hook global.
CurrentHook:=SetWindowsHookEx(WH_KEYBOARD,HookProcAddress,LibHandle,0);

- Llama al procedimiento de inicialización del DLL para pasar el handle asignado al hook.
InitializeHook(CurrentHook, Extractfilepath(application.exename));

(Pruebas realizadas en Delphi 7)

Link:
http://www.delphiforfun.org/Programs/Download/MonitorOffSource.zip






Detectar inactividad en el sistema


Aquí os dejo un programa que he realizado para apagar la pantalla del ordenador cuando se detecte inactividad a nivel del sistema.

Para ello he utilizado la función GetLastInputInfo presente en el WinAPI desde Windows 2000 que devuelve el tiempo desde el último evento de entrada en el sistema en la sesión del usuario actual.


El siguiente código arranca un tTimer al inicio y cuando detecta que el usuario no ha tecleado nada y tampoco ha movido el ratón procede a apagar la pantalla pasados 10 segundos.



UNIT Unit1;

INTERFACE

USES
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

TYPE
TForm1 = CLASS(TForm)
Button1: TButton;
Timer1: TTimer;
Label1: TLabel;
PROCEDURE Timer1Timer(Sender: TObject);
PROCEDURE FormCreate(Sender: TObject);
PROCEDURE FormDestroy(Sender: TObject);
PRIVATE
{ Private declarations }
PUBLIC
{ Public declarations }
END;

VAR
Form1: TForm1;
MonitorApagado: boolean;

IMPLEMENTATION

{$R *.dfm}

//Función que detecta la inactividad del sistema
FUNCTION SecondsIdle: DWord;
VAR
liInfo: TLastInputInfo;
BEGIN
liInfo.cbSize := SizeOf(TLastInputInfo);
GetLastInputInfo(liInfo);
Result := (GetTickCount - liInfo.dwTime) DIV 1000;
END;

PROCEDURE apagarMonitor;
BEGIN
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
END;

PROCEDURE TForm1.Timer1Timer(Sender: TObject);
VAR
segundos: integer;
BEGIN
segundos := SecondsIdle;
label1.Caption := IntTostr(segundos);
IF segundos > 10 THEN
BEGIN
IF NOT MonitorApagado THEN
BEGIN
ApagarMonitor;
MonitorApagado := true;
END;
END;
END;

PROCEDURE TForm1.FormCreate(Sender: TObject);
BEGIN
MonitorApagado := false;
timer1.enabled := true;
END;

PROCEDURE TForm1.FormDestroy(Sender: TObject);
BEGIN
timer1.enabled := false;
END;

END.







Apagar servidor de red cuando se apaguen los terminales

-






Continuando con los posts sobre ahorro de energía os presento este software. Su función es ir comprobando continuamente el estado (ON, OFF) de cada uno de los equipos y en el momento que detecta que todos ellos están OFF ejecutará la acción de apagado del servidor que se haya definido (por defecto "shutdown -s").



Desde el archivo "parametros.ini" podemos configurar las variables necesarias para su funcionamiento (ip del servidor, acción de apagado, intervalo de comprobación, IPs de los equipos de red). Hay que tener en cuenta que este programa se deberá iniciar desde el servidor de red.


Seguramente en vuestro trabajo como administradores de redes tendréis momentos en los que están todos los terminales de red apagados y sin embargo está encendido el servidor por lo que evidentemente es un gasto energético innecesario, por tanto si aplicamos este software ahorraremos energía, evitaremos emisiones de CO2, y se amplia la vida útil del equipo al estar encendido menos horas. Un servidor de red consume aprox. 250 watios/hora por lo que el ahorro energético acumulado en un año podría llegar a ser muy importante.



Link para su descarga (código fuente en Delphi y ejecutable)

http://JJavierPareja.googlepages.com/Apagarservidor.zip




Ahorrar energía con Delphi

A continuación os presento una serie de funciones para ahorrar energía en vuestros equipos.



//pasar monitor a modo de ahorro de energía

procedure modoAhorroDeEnergia;

begin SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

end;



//apagar monitor

procedure apagarMonitor;

begin SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

end;



//Encender monitor:

procedure encenderMonitor;

begin SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

end;





//Apagar equipo (requiere permisos administrativos)

PROCEDURE apagarEquipo;

begin

IF NOT (ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE, 0)) then

showmessage('No puedo apagar el equipo');

end;



//Reiniciar equipo

PROCEDURE ReiniciarEquipo;

begin

IF NOT (ExitWindowsEx(EWX_REBOOT, 0)) then

showmessage('No puedo reiniciar el equipo');

end;



//Devuelve TRUE si el sistema puede Hibernar

FUNCTION TForm1.SystemCanHibernate(): boolean;

RESOURCESTRING

rsDll = 'powrprof.dll';

rsFunc = 'IsPwrHibernateAllowed';

TYPE

TFunc = FUNCTION: boolean; stdcall;

VAR

func: TFunc;

hDll: THandle;

BEGIN

result := false;

hDll := LoadLibrary(PChar(rsDll));

IF (hDll <> 0) THEN

TRY

@func := GetProcAddress(hDll, PChar(rsFunc));

result := Assigned(func) AND func();

FINALLY

FreeLibrary(hDll);

END;

END;





//Devuelve TRUE si el sistema puede ser suspendido

FUNCTION tform1.SystemCanSuspend(): boolean;

RESOURCESTRING

rsDll = 'powrprof.dll';

rsFunc = 'IsPwrSuspendAllowed';

TYPE

TFunc = FUNCTION: boolean; stdcall;

VAR

func: TFunc;

hDll: THandle;

BEGIN

result := false;

hDll := LoadLibrary(PChar(rsDll));

IF (hDll <> 0) THEN

TRY

@func := GetProcAddress(hDll, PChar(rsFunc));

result := Assigned(func) AND func();

FINALLY

FreeLibrary(hDll);

END;

END;






Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...