38
Electrónica de Potencia Profesor M.C. Bernardo Haro Martínez Proyecto de Riego y Ventilación Automatizado 21 DE AGOSTO DE 2015 JAVIER FERNANDO MÁRQUEZ FRANCO VÍCTOR HUGO MEDINA JIMÉNEZ JUAN JOSÉ GARCÍA TREJO

Invernadero con microcontrolador

Embed Size (px)

Citation preview

  

 

   

 

Electrónica de Potencia Profesor M.C. Bernardo Haro Martínez 

  

 

Proyecto de Riego y Ventilación Automatizado 

    

21 DE AGOSTO DE 2015 

JAVIER FERNANDO MÁRQUEZ FRANCO VÍCTOR HUGO MEDINA JIMÉNEZ 

JUAN JOSÉ GARCÍA TREJO 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

Introducción  

La  agricultura  es  una  actividad  primordial  de  la  sociedad  humana,  y  la 

automatización puede ser una herramienta muy útil para su desempeño eficiente, 

es por esto que el propósito de nuestro proyecto es utilizar un micro‐controlador 

para medir parámetros tales como humedad y temperatura,  y de esta manera saber 

que estos se encuentren dentro de los limites adecuados para la mejor utilización de 

los recursos y al recibir esta información el programa del micro, si fuera necesario 

activara dispositivos periféricos para modificar estos parámetros. 

 

Mediante  un  sensor  de  humedad  en  el  suelo  y  uno  de  temperatura, 

programamos un firmware para nuestro micro, para que una vez que estos detecten 

ciertos  valores  establecidos,  los  cuales  pueden  ser  modificados  según  las 

necesidades específicas, se activen nuestro módulos de potencia, los cuales al recibir 

la señal del micro, activaran un ventilador para reducir la temperatura y una bomba 

de agua para regar la tierra y aumentar la humedad en el suelo. 

 

Lo  más  importante  de  este  proyecto  es  el  conocimiento  alcanzado  en  la 

cuestión  de  la  tecnología  de  los  sistemas  embebidos,  tema  extenso  y  nada  fácil, 

sumado a el conocimiento adquirido en lenguaje de programación en C++, todo esto 

nace de la inquietud despertada en la materia de Electrónica de Potencia y las clases 

tan interesantes impartidas por el Profesor Bernardo Haro. 

 

Aunado  a  esto  integramos  un  circuito  de  alimentación  de  energía  solar, 

mediante la instalación de un mini panel FV, el cual regulamos a un voltaje adecuado 

para alimentar nuestro micro‐controlador, esto como parte de la integración de lo 

que  realmente  es  nuestro  fin,  la  energía  renovable  y  su  utilización  de  manera 

práctica. 

 

  A continuación se definen las partes que componen este proyecto así como 

su programación C++ en el programa ATMEL Studio 6.2 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

MICROCONTROLADOR ATMEL ATmega328P 

 

1.  Configuración de Pin  

 

 

1.1  Descripción de Pin 

 

1.1.1  VCC 

  Alimentación de voltaje. 

 

1.1.2  GND 

  Tierra. 

 

1.1.3  Puerto B (PB7:0) XTAL1/XTAL2/TOSC1/TOSC2 

  El  Puerto  B  es  un  puerto  de  Entradas  y  Salidas  (I/O)  bidireccional  de  8  bits  con 

resistores internos tipo pull‐up (de levantamiento; seleccionados para cada bit). Los buffers 

(reguladores) de salida del Puerto B tienen características de control simétricas, tanto con 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

alto sink (drenaje; en este tipo, el negativo de la fuente se usa como común para todas las 

entradas y el positivo se envía a los elementos de campo) como con capacidad de source 

(fuente; en este tipo, el positivo se usa como común para todas las entradas y el negativo 

se envía a los elementos de campo). Como entradas, los pin del Puerto B que son atraídos 

a nivel bajo tendrán corriente de la fuente si los resistores pull‐up son activados. Los pin del 

Puerto B son tri‐estado (permite a los puertos de salida tener valores de 0, 1 o Hi‐Z) cuando 

en  una  condición  de  reset  (reinicio)  se  activan,  incluso  si  el  temporizador  no  está 

funcionando.  

Hi‐Z o alta impedancia, es el estado lógico, en el que el pin no tiene relevancia en el 

circuito con el fin de permitir a varios circuitos compartir el mismo bus o línea de salida, o 

permitir  monitorear  señales  sin  afectarlas,  tal  es  el  caso  en  un  convertidor  de  señal 

analógica a señal digital. 

  Dependiendo de la selección en la configuración de fusibles del reloj, PB6 puede ser 

utilizado  como  entrada  al  amplificador  de  oscilación  invertida  y  de  entrada  al  circuito 

operativo del reloj interno. 

  Dependiendo de la selección en la configuración de fusibles del reloj, PB7 puede ser 

utilizado como salida desde el amplificador de oscilación invertida. Si el oscilador RC interno 

y  calibrado  es  usado  como  fuente de  reloj  para  el  chip,  PB7…6 es  usado  como entrada 

TOSC2…1 para el Contador Temporal Asíncrono 2 si el bit AS2 se establece en ASSR. 

 

1.1.4  Puerto C (PC5:0) 

  El Puerto C es un puerto bidireccional de I/O de 7 bit con resistores internos tipo 

pull‐up (seleccionados para cada bit). Los bufers de salida de PC5…0 tienen características 

de control simétrico tanto con alto sink (drenaje; en este tipo, el negativo de la fuente se 

usa como común para todas las entradas y el positivo se envía a los elementos de campo) 

como con capacidad de source (fuente; en este tipo, el positivo se usa como común para 

todas las entradas y el negativo se envía a los elementos de campo). Como entradas, los pin 

del Puerto C que son externamente atraídos a nivel bajo tendrán corriente de la fuente si 

los  resistores  pull‐up  son  activados.  Los  pin  del  Puerto  C  son  tri‐estado  (permite  a  los 

puertos de salida tener valores de 0, 1 o Hi‐Z) cuando en una condición de reset (reinicio) 

se activan, incluso si el temporizador no está funcionando. 

Hi‐Z o alta impedancia, es el estado lógico, en el que el pin no tiene relevancia en el 

circuito con el fin de permitir a varios circuitos compartir el mismo bus o línea de salida, o 

permitir  monitorear  señales  sin  afectarlas,  tal  es  el  caso  en  un  convertidor  de  señal 

analógica a señal digital. 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

1.1.5  PC6 / RESET 

  Si el fusible RSTDISBL está programado, PC6 es utilizado como pin de I/O. Note que 

las características eléctricas de PC6 difiere del resto de  los pin del Puerto C. Si el  fusible 

RSTDISBL está desprogramado, PC6 es utilizado como una entrada de Reset (Reinicio). Un 

nivel bajo para este pin tan  largo como la  longitud del pulso mínimo generara un Reset, 

incluso si el reloj no está corriendo. 

La longitud del pulso mínimo esta dado en la siguiente tabla. Pulsos más cortos no 

garantizan que se genere un Reset. 

 

 

Nota:   

1. Los valores mostrados en la tabla anterior son solo una guía. 

2. El Reset del Encendido no trabajará a menos que el voltaje de suministro este por 

debajo de VPOT (falling). 

 

1.1.6  Puerto D (PD7:0) 

  El Puerto D es un puerto bidireccional de I/O de 8 bit con resistores internos tipo 

pull‐up (seleccionados para cada bit). Los bufers de salida del Puerto D tienen características 

de control simétrico tanto con alto sink (drenaje; en este tipo, el negativo de la fuente se 

usa como común para todas las entradas y el positivo se envía a los elementos de campo) 

como con capacidad de source (fuente; en este tipo, el positivo se usa como común para 

todas las entradas y el negativo se envía a los elementos de campo). Como entradas, los pin 

del Puerto D que son externamente atraídos a nivel bajo tendrán corriente de la fuente si 

los resistores pull‐up son activados. 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

Los pin del Puerto D son tri‐estado (permite a los puertos de salida tener valores de 

0, 1 o Hi‐Z) cuando en una condición de reset (reinicio) se activan, incluso si el temporizador 

no está funcionando. 

Hi‐Z o alta impedancia, es el estado lógico, en el que el pin no tiene relevancia en el 

circuito con el fin de permitir a varios circuitos compartir el mismo bus o línea de salida, o 

permitir  monitorear  señales  sin  afectarlas,  tal  es  el  caso  en  un  convertidor  de  señal 

analógica a señal digital. 

 

1.1.7  AVCC 

  AVCC es el pin de voltaje de suministro para el Conversor A/D, PC3:0, y ADC7:6. Debe 

ser conectado externamente a VCC, incluso si el ADC no está en uso. Si el ADC esta siendo 

utilizado, debe de ser conectado a VCC a través de un filtro pasa bajos. Note que PC6…4 

utilizan un suministro de voltaje digital, VCC. 

 

1.1.8  AREF 

  AREF es el pin de referencia analógica para el Conversos A/D. 

  

 

 

 

 

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

2.  USART0 

 

2.1  Generalidades   El  Transmisor‐Receptor  Serial  Síncrono‐Asíncrono  Universal  (USART  ‐  Universal 

Synchronous  and  Asynchronous  Serial  Receiver  and  Transmitter)  es  un  dispositivo  de 

comunicación serial altamente flexible. A continuación se presenta un diagrama a bloques 

simplificado del Transmisor USART. Los registros de I/O y pin de I/O accesibles al CPU se 

muestran en letra bold. 

2.1.2  Diagrama de Bloques 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

2.2  Descripción de Registros 

 

2.2.1  UDR0 – Registro de Datos de I/O de USART 

  El  registro  del  buffer  de  transmisión  de  datos  USART  y  el  registro  del  buffer  de 

recepción de datos USART comparten la misma dirección de I/O denominado como Registro 

de Datos USART o UDRn. El registro del buffer de transmisión (TXB) será el destino de los 

datos  escritos  en  la  ubicación  del  registro UDRn.  Al  leer  la  ubicación  del  registro UDRn 

regresará el contenido del registro del buffer de datos recibidos (RXB). 

 

 

 

2.2.2  UCSRnA – Registro A de Control y Estado  de USART  

 

 

Bit 7 – RXCn: Recepción Completa de USART 

Este bit de bandera se activa cuando hay datos ilegibles en el buffer receptor y se 

limpia  cuando  el  buffer  receptor  esta  vacío.  Si  el  receptor  esta  deshabilitado,  el 

buffer  receptor  será eliminado y  consecuentemente el bit RXCn  se  convertirá en 

cero. La bandera RXCn puede ser utilizado para generar una interrupción completa  

de recepción. 

Bit 6 – TXCn: Transmisión completa de USART 

Este bit de bandera se activa cuando el marco completo del registro de intercambio 

del transmisor ha sido desplazado fuera y no se tienen nuevos datos presentes en el 

buffer de transmisión (UDRn). El bit de bandera TXCn se  limpia automáticamente 

cuando  una  interrupción  completa  de  transmisión  es  ejecutada,  o  puede  ser 

liberada por escribir un uno a su bit de dirección. La bandera TXCn puede generar 

una interrupción completa de transmisión. 

Bit 5 – UDREn: Registro de Datos Vacío de USART 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

La  bandera  UDREn  indica  si  la  memoria  intermedia  de  transmisión  (UDRn)  está 

preparado para recibir nuevos datos. Si UDREn es Uno, la memoria intermedia está 

vacía, y por lo tanto lista para escribir en ella. La bandera UDREn puede generar una  

interrupción de registro de datos vacío. UDREn se establece después de un reset 

para indicar que el transmisor está listo. 

Bit 1 – U2Xn: Doblar la velocidad de Transmisión del USART 

Este  bit  solo  tiene  efecto  para  la  operación  asíncrona.  Escribir  Cero  en  este  bit 

cuando  se  utilicen  operaciones  síncronas.  Escribir  Uno  en  este  bit  reducirá  la 

velocidad de baudios en una división efectiva de 16 a 8, doblando la velocidad de 

transmisión para la comunicación asíncrona. 

Bit 0 – MPCMn: Modo de comunicación multiproceso 

Este bit habilita el modo de comunicación multiproceso. Cuando al bit MPCMn se le 

escribe Uno, todos los marcos entrantes que son recibidos por el Receptor USART 

que no contienen información direccionada serán ignorados. 

 

2.2.3  UCSRnB ‐ Registro B de Control y Estado de USART   

 

 

Bit 7 – RXCIEn: Habilitación de interrupción de RX completada. 

Escribiendo  un  Uno  en  este  bit  permitirá  interrumpir  en  la  bandera  RXCn.  Una 

interrupción  completa  de  recepción  USART  se  genera  sólo  si  al  bit  RXCIEn  se  le 

escribe un Uno, el indicador global de interrupción en SREG se escribirá en Uno y el 

bit RXCn se establecerá en UCSRnA. 

Bit 6 – TXCIEn: Habilitación de interrupción de TX completada. 

Escribiendo  un  Uno  en  este  bit  permitirá  interrumpir  en  la  bandera  TXCn.  Una 

interrupción completa de transmisión USART se genera sólo si al bit TXCIEn se  le 

escribe un Uno, el indicador global de interrupción en SREG se escribirá en Uno y el 

bit TXCn se establecerá en UCSRnA. 

Bit 5 – UDRIEn: Habilitación de interrupción del registro de datos vacío de USART. 

Escribiendo  un  Uno  en  este  bit  permitirá  interrumpir  en  la  bandera  UDREn.  Un 

registro de datos de interrupción vacío se genera sólo si al bit UDRIEn se escribe un 

Uno, al indicador global de interrupción en SREG se le escribe un Uno y el bit UDREn 

se fijará en UCSRnA. 

Bit 4 – RXENn: Habilitación de Receptor. 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

Escribiendo un Uno en este bit habilitará el Receptor USART. El Receptor anulará la 

operación normal del puerto para el pin RxDn cuando está activado. La desactivación 

del Receptor vaciará el búfer de recepción invalidando las Banderas FEn, DORn, y 

UPEn. 

Bit 3 – TXENn: Habilitación de Transmisor. 

Escribiendo un Uno en este bit habilita el Transmisor USART. El Transmisor anulará 

la  operación  normal  del  puerto  para  el  pin  TxDn  cuando  está  activado.  La 

desactivación del Transmisor (escrito TXENn a Cero) no será efectiva hasta que se 

completen las transmisiones en curso y pendientes, es decir, cuando la transmisión 

de  registro  en  y  el  Registro  del  Buffer  de  Transmisión  no  contengan  datos  a 

transmitir. Cuando está desactivado, el Transmisor ya no anulará el puerto TxDn. 

Bit 2 – UCSZn2: Tamaño de Palabra. 

El bit UCSZn2 combinado con los bits UCSZn1:0 en UCSRnC fijaran el número de bits 

de datos (Tamaño de Palabra) en un marco utilizado por el Receptor y el Transmisor. 

Bit 0 – TXB8n: Transmisor de datos Bit 8 (Noveno Bit). 

TXB8n es el noveno bit de datos en los caracteres a ser transmitidos cuando se opera 

con marcos seriales con nueve bits de datos. Debe ser escrito antes de disminuir los 

bits escritos en UDRn. 

 

2.2.4  UCSRnC ‐ Registro C de Control y Estado de USART  

 

 

Bit 7:6 – UMSELn1:0 _ Modo de selección de USART. 

Estos bits  seleccionan el modo de operación del USART  tal  y  como se muestra a 

continuación: 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

Bit 5:4 – UPMn1:0 _ Modo de Paridad de Datos. 

Estos bits habilitan y fijan el tipo de generación y revisión de paridad. Si se habilita, 

el  Transmisor  automáticamente  generará  y  fijará  la  paridad  de  los  bits  de  datos 

transmitidos junto con cada marco. El Receptor generará un valor de paridad para 

los datos entrantes y  los comparará con  la configuración UPMn. Si  se detecta un 

desajuste, la bandera UPEn se fijará en UCSRnA. 

 

 

 

Bit 3 – USBSn _ Selección de Bit de Paro (Stop). 

Este bit selecciona el número de bits de paro a ser insertados por el Transmisor. El 

Receptor ignora esta configuración. 

 

 

 

Bit 2:1 – UCSZn1:0 _ Tamaño de palabra. 

Los bits UCSZn1:0 combinados con el bit UCSRnB fijan el número de bits de datos 

(Tamaño de Palabra) en un marco que utiliza en Receptor y Transmisor. 

 

 

 

Bit 0 – UCPOLn _ Polaridad del reloj. 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

Este bit  se utiliza  solamente para el modo sincronizado. Escribir Cero en este bit 

cuando se utilice el modo asíncrono. El bit UCPOLn fija la relación entre el cambio 

de datos de salida y el muestreo de datos de entrada, así como el  reloj síncrono 

(XCKn). 

 

2.2.5  UBRRnL and UBRRnH ‐ Registro de Velocidad en Baudios de USART  

 

 

Bit 11:0 – UBRR [11:0] Registro de  Velocidad en Baudios de USART. 

Este es un registro de 12 bits los cuales contienen el USART de velocidad en baudios. 

El UBRRnH contiene los cuatro bits más significativos, y el UBRRnL contiene los ocho 

bits  restantes del USART de velocidad en baudios. Transmisiones salientes por el 

Transmisor y Receptor estarán corruptas si  la velocidad de baudios es cambiada. 

Escribir  en  UBRRnL  disparará  una  actualización  inmediata  en  la  pre  escala  de  la 

velocidad en baudios. 

 

 

 

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

3.  Convertidor Analógico a Digital (ADC)  

3.1  Generalidades   El ATmega328P cuenta con un ADC de aproximación sucesiva de 10 bits. El ADC está 

conectado a un multiplexor analógico de 8 canales que permite ocho entradas de un solo 

extremo de voltaje construidas a partir de  los pin del puerto A. Las entradas de un solo 

extremo  de  voltaje  se  refieren  a  0V  (GND).  El  ADC  contiene  un  circuito  de muestreo  y 

retención que asegura que el voltaje de entrada al ADC se mantenga a un nivel constante 

durante la conversión. 

  El ADC convierte un voltaje de entrada analógica a un valor digital de 10 bits a través 

de la aproximación sucesiva. El valor mínimo representa GND y el valor máximo representa 

el  voltaje  en  el  pin  AREF  menos  1  LSB.  Opcionalmente,  AVCC  o  un  voltaje  interno  de 

referencia de 1.1V se pueden conectar al pin AREF escribiendo a los bits REFSn en el Registro 

ADMUX.  La  referencia  de  voltaje  interno  puede  por  lo  tanto  ser  desacoplado  por  un 

condensador externo en el pin AREF para mejorar la inmunidad al ruido. 

 

3.2  Diagrama Esquemático de Operación El canal de entrada analógica se selecciona por escrito a los bits MUX en ADMUX. 

Cualquiera de los pines de entrada ADC, así como GND y una referencia de voltaje fija de la 

banda  prohibida,  se  pueden  seleccionar  como  entradas  asimétricas  al  ADC.  El  ADC  se 

habilita activando el bit ADC Enable, ADEN en ADCSRA. Selecciones de referencia de voltaje 

y  los  canales  de  entrada  no  entrarán  en  vigor  hasta  que  ADEN  esté  activo.  El  ADC  no 

consume energía cuando ADEN se borra, por lo que se recomienda apagar el ADC antes de 

entrar en los modos de suspensión de ahorro de energía. 

  El ADC genera un resultado de 10 bits que se presenta en los registros de datos del 

ADC,  ADCH  y  ADCL.  Por  defecto,  el  resultado  se  presenta  ajustado  a  la  derecha,  pero 

opcionalmente  se  puede  presentar  ajustado  a  la  izquierda  activando  el  bit  ADLAR  en 

ADMUX. 

  Si el resultado se deja ajustado a la izquierda y no se requiere precisión de más de 8 

bits, es más que suficiente para leer ADCH. De lo contrario, ADCL debe leerse primero, a 

después ADCH, para asegurar que el  contenido de  los  registros de datos pertenece a  la 

misma conversión. Una vez sea leído ADCL, se bloquea el acceso a los registros de datos 

ADC. Esto significa que si ADCL ha sido leído, y una conversión se completa antes de leer 

ADCH, el registro no se actualiza y el resultado de la conversión se pierde. Cuando se lee 

ADCH, el acceso ADC a los registros ADCH y ADCL se vuelve a habilitar. 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

  El ADC tiene su propia interrupción que puede ser activada cuando una conversión 

se completa. Cuando se prohíbe el acceso ADC para los registros de datos entre la lectura 

de ADCH y ADCL, la interrupción se disparará incluso si el resultado se pierde. 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

3.3  Descripción de los Registros del ADC 

 

3.3.1  ADMUX – Registro Multiplexor de Selección del ADC  

 

 

Bit 7:6 – REFS [1:0] _ Bits de Selección de Referencias. 

Estos bits seleccionan el voltaje de referencia para el ADC, como se muestra en la 

Tabla siguiente. Si se cambian estos bits durante una conversión, el cambio no va a 

surtir efecto hasta que la conversión sea completa (ADIF en ADCSRA está fijo). Las 

opciones de referencia de voltaje  interno no pueden ser utilizadas si se aplica un 

voltaje de referencia externa al pin AREF. 

 

 

 

Bit 5 – ADLAR _ Ajuste del Resultado del ADC a la Izquierda. 

El  bit  ADLAR  afecta  a  la  presentación  del  resultado  de  la  conversión  ADC  en  el 

registro de datos ADC. Escribir un Uno en bit ADLAR ajusta el resultado a la izquierda. 

De  lo  contrario,  el  resultado  se  ajusta  a  la  derecha.  Al  cambiar  el  bit  ADLAR  se 

afectará  el  registro  de  datos  ADC  de  inmediato,  independientemente  de  las 

conversiones en curso. 

Bits 3:0 – MUX [3:0] _ Bits de Selección de Canal Analógico. 

El valor de estos bits selecciona qué entradas analógicas están conectadas al ADC. 

Ver Tabla siguiente para obtener más información. Si se cambian estos bits durante 

una conversión, el cambio no va a surtir efecto hasta que la  conversión sea completa 

(ADIF en ADCSRA está fijo). 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

 Nota:  1. Para sensor de temperatura. 

 

3.3.2  ADCSRA – Registro A de Control y Estado de ADC  

 

 

Bit 7 – ADEN _ Habilitación de ADC. 

Escribiendo un Uno en este bit habilitará al ADC. Al escribir un Cero, el ADC está 

desactivado. Desactivando el ADC  mientras una conversión está en curso, terminará 

esta conversión. 

Bit 6 – ADSC _ Inicio de Conversión de ADC. 

En el modo de conversión  individual, escribir un Uno en este bit comenzará cada 

conversión. En el modo de funcionamiento libre, escribir un Uno en este bit iniciará 

la primera conversión.  La primera conversión una vez que se ha escrito en ADSC 

después de que el ADC ha sido activado, o si el ADSC es escrito en el mismo tiempo 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

que el ADC se activa, tomará 25 ciclos de reloj del ADC en lugar del tiempo normal 

que es de 13. Esta primera conversión realiza la inicialización de la ADC. 

Bit 5 – ADATE _ Habilitación de Auto Disparo de ADC. 

Cuando se escribe un Uno a este bit, el Auto Disparo del ADC se habilita. El ADC 

iniciará una conversión en un flanco positivo de la señal de disparo seleccionada. La 

fuente de disparo se selecciona ajustando los bits ADC Selección de Disparo, ADTS 

en ADCSRB. 

Bit 4 – ADIF _ Bandera de Interrupción de ADC. 

Este bit se fija cuando una conversión ADC es completada y los registros de datos se 

actualizan. La Interrupción de Conversión Completada del ADC se ejecuta si el bit 

ADIE y el I‐bit en SREG se fijan. ADIF se borra por el hardware al ejecutar el vector 

de  manejo  de  interrupciones  correspondiente.  Alternativamente,  ADIF  se  borra 

escribiendo  un  Uno  lógica  en  la  bandera.  Ten  en  cuenta  que  si  hace  un  Leer‐

Modificar‐Escribir en ADCSRA, una interrupción pendiente se puede desactivar. Esto 

también se aplica si se utilizan las instrucciones SBI y la CBI. 

Bit 3 – ADIE _ Habilitación de Interrupción de ADC. 

Cuando se escribe un Uno en este bit y el  I‐bit en SREG se fija,  la  interrupción de 

Conversión Completada del ADC se activa. 

Bits 2:0 – ADPS [2:0] _ Bits de Selección Pre escalar de ADC. 

Estos bits determinan el factor de división entre la frecuencia del reloj del sistema y 

la entrada del reloj al ADC. 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

3.3.3  ADCSRB – Registro B de Control y Estado de ADC  

 

 

Bit 6 – ACME _ Habilitación del Multiplexor para Comparación Analógica. 

Cuando  a  este  bit  se  le  escribe  un Uno  lógico  y  el  ADC  está  apagado  (ADEN  en 

ADCSRA  es  Cero),  el  multiplexor  ADC  selecciona  la  entrada  negativa  hacia  el 

comparador analógico. Cuando a este bit se le escribe un Cero lógico, AIN1 se aplica 

a la entrada negativa del comparador analógico. 

Bit 2:0 – ADTS [2:0] _ Fuente de Auto Disparo de ADC. 

Si ADATE en ADCSRA se le escribe Uno, el valor de estos bits selecciona qué fuente 

disparará una conversión en el ADC. Si ADATE se borra, los ajustes en ADTS [2: 0] no 

tendrán ningún efecto. Una conversión será accionada por el flanco ascendente de 

la  bandera  de  interrupción  seleccionada.  Note  que  el  cambio  de  una  fuente  de 

disparo que se ha borrado a una fuente de disparo que está establecida, generará 

un  flanco positivo en  la  señal de disparo.  Si ADEN en ADCSRA se establece, esto 

comenzará una conversión. Cambiar al modo de funcionamiento libre (ADTS [2: 0] = 

0) no causará un evento de disparo, incluso si la interrupción de la bandera de ADC 

se establece. 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

3.3.4  DIDR0 – Registro 0 de Entrada Digital Deshabilitada  

 

 

Bit 5:0 – ADC5D…ADC0D: ADC5…0 Deshabilitación de Entrada Digital. 

Cuando a este bit se  le escribe un Uno lógico,  la memoria  intermedia de entrada 

digital  en  el  pin  ADC  correspondiente  se  desactiva.  El  bit  del  Registro  PIN 

correspondiente siempre se leerá como Cero cuando se establece este bit. Cuando 

se aplica una señal analógica al pin ADC5...0 y la entrada digital de este pin no se 

necesita, este bit debe ser escrito en Uno lógico para reducir el consumo de energía 

en el buffer de entrada digital. Note que los pins ADC7 y ADC6 del ADC no tienen 

buffers  de  entrada  digital,  y  por  ello  no  requieren  de  bits  de  Deshabilitación  de 

Entrada Digital. 

 

 

 

 

 

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

SENSOR DE HUMEDAD DEL SUELO 

1.  Diagrama Esquemático 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

2.  Código de Programación en Lenguaje C++ (ATMEL Studio)  

2.1  Monitoreo por Comunicación Serial a Puerto USB de Computadora  

/*  * Humedad.c  *  * Created: 19/08/2015 13:26:55 p.m.  *  Author: Electrónica de Potencia  *      Márquez Franco, Javier Fernando  *      Medina Jiménez, Víctor Hugo  *      García Trejo, Juan José  */   /* ===================== Declaración de velocidad de CPU ===================== */  #define F_CPU 14745600   /*Orden que define la velocidad del reloj del procesador*/  /* ===================== Declaración de Librerias ===================== */  #include <avr/io.h>   /*libreria que hace referencia a todas las palabras reservadas para   el control de los puertos de entrada y salida*/ #include <string.h>   /*libreria que contiene la definición de macros, constantes, funciones y   tipos y algunas operaciones de manipulación de memoria*/ #include <stdio.h>   /*"standar input‐ouput header", es la libreria que contiene las   declaraciones de funciones de la biblioteca estándar del lenguaje C para   hacer operaciones de entrada y de salida así como la definición de tipos,   necesarias para dichas operacones*/ #include <stdlib.h>   /*"standard library", es la libreria que contiene los prototipos de   funciones C para la gestión de memoria dinámica, control de procesos*/ #include <avr/interrupt.h>   /*libreria que hace referencia a la manipulación global de las banderas   de interrupción*/ #include <util/delay.h>   /*libreria que hace referencia a funciones de bucles de retardo/espera*/  /* ===================== Declaración de Variables ===================== */  unsigned int adc_valor=0;   /*"unsigned integers", variables similares a los ints en la forma de que   almacenan un valor de 2 byte, sin embargo no almacenan números negativos,   solamente positivos y cuenta con un rango de uso desde Cero hasta 65,535*/   /*int: variables enteras que almacenan números enteros (tanto positivos   como negativos) dentro de los límites de cada uno de sus tamaños, toma   valores desde ‐2,147,483,648 hasta 2,147,483,647*/    char printbuff[100];   /*char: Tipo de datos que ocupa 1 byte de memoria que almacena un valor   de carácter, números muy pequeños y juego de caracteres ASCII*/ 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

  /*printbuff: Variable en stream que muestra 'x'número de líneas en un   búfer. Cada línea rota integra 2 grupos de caracteres hexadecimales(HEX)   seguidos por 2 grupos de caracteres ASCII*/  /* ===================== Declaración de Funciones ===================== */  void ports_setup(); void USART_setup(); void ADC_setup();   /*void: palabra clave que especifica que la función no devuelve ningún   valor.  Cuando se utiliza para la lista de parámetros de una función,   void especifica que la función no toma ningún parámetro. Cuando se   utiliza en la declaración de un puntero, void especifica que el puntero   es "universal"; en este caso, void especifíca tres punteros de   forma universal*/  int printCHAR(char character, FILE *stream); FILE uart_str = FDEV_SETUP_STREAM(printCHAR, NULL, _FDEV_SETUP_RW);   /*la función print envía el formato de salida especificado a la salida   estándar, en este caso ejerce la función para impresión de datos en puerto   serial, se da de alta aquí para poder hacer uso de ella en cualquier otra   parte de este programa*/  /* ===================== Subrutinas de Funciones ===================== */  void ports_setup() //Definición de puertos a utilizar {   DDRC = 0x00; //Habilitación de ADC de Puerto C como entrada, con Ceros    DDRD = 0x02; /*Habilitación de Comunicación Serial en Puerto D como Salida            (RX‐entrada y TX‐salida)*/   DDRB = 0x3F;   PORTB = 0x00; }  void USART_setup() //Configuración de Registros de Comunicación Serial {   UCSR0A = (0<<TXC0)|(0<<U2X0)|(0<<MPCM0);     /*Registro UCSR0A:     TXC0  ‐ Bit de transmisión completa;     U2X0  ‐ Doblar la velocidad de transmisión;     MPCM0  ‐ Modo de Comunicación Multiproceso*/   UCSR0B = (0<<RXCIE0)|(0<<TXCIE0)|(0<<UDRIE0)|(1<<RXEN0)|(1<<TXEN0)|        (0<<UCSZ02)|(0<<TXB80);     /*Registro UCSR0B:     RCCIE0 ‐ Habilitación de interrupción de RX completada;     TXCIE0 ‐ Habilitación de interrupción de TX completada;     UDRIE0 ‐ Habilitación de interrupción del registro de datos           vacíos de USART;     RXEN0  ‐ Habilitación de Receptor;     TXEN0  ‐ Habilitación de Transmisor;     UCSZ02 ‐ Tamaño de Palabra, combinado con UCSZ01 y UCSZ00;     TXB80  ‐ Transmisor de datos Bit 8 (noveno bit)*/   UCSR0C = (0<<UMSEL01)|(0<<UMSEL00)|(0<<UPM01)|(0<<UPM00)|(0<<USBS0)|        (1<<UCSZ01)|(1<<UCSZ00)|(0<<UCPOL0);     /*Registro UCSR0C:     UMSEL0[1:0]  ‐ Modo de selección síncrona o asíncrona; 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

    UPM0[1:0]  ‐ Modo de selección de paridad de datos;     USBS0    ‐ Selección de bit de paro (stop);     UCSZ0[1:0]  ‐ Tamaño de palabra, combinado con UCSZ02;     UCPOL0   ‐ Polaridad del reloj*/        UBRR0 = 95;       /*UBRR0 ‐ Registro USART de  Velocidad en Baudios, se elige a 9600     baudios por segundo  con el código 0d71[0x47] de acuerdo a la     velocidad del reloj dado de alta al inicio de la compilación*/ }  void ADC_setup() //Configuración de Convertidor Analógico a Digital {   ADMUX = (0<<REFS1)|(1<<REFS0)|(0<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|         (1<<MUX0);     /*Registro AMUX:     REFS[1:0]  ‐ Bits de Selección de Referencias;     ADLAR    ‐ Ajuste del Resultado del ADC, Uno ajusta a la             Izquierda,             Cero a la derecha;     MUX[3:0]  ‐ Bits de Selección de Canal Analógico*/   ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(0<<ADIF)|(1<<ADIE)|(1<<ADPS2)|        (1<<ADPS1)|(0<<ADPS0);     /*Registro ADCSRA:     ADEN    ‐ Habilitación de ADC;     ADSC    ‐ Inicio de la Conversión del ADC;     ADATE    ‐ Habilitación de Auto Disparo de ADC;     ADIF    ‐ Bandera de Interrupción de ADC;     ADIE    ‐ Habilitación de Interrupción de ADC;     ADPS[2:0]  ‐ Bits de Selección Pre escalar de ADC*/   ADCSRB = (0<<ACME)|(0<<ADTS2)|(0<<ADTS1)|(0<<ADTS0);     /*Registro ADCSRB:     ACME    ‐ Habilitación del Multiplexor para Comparación             Analógica;     ADTS[2:0]  ‐ Fuente de Auto Disparo de ADC*/   DIDR0 = (0<<ADC5D)|(0<<ADC4D)|(0<<ADC3D)|(0<<ADC2D)|(0<<ADC1D)|(0<<ADC0D)     /*Registro DICR0:     ADC5D...ADC0D ‐ Deshabilitación de Entrada Digital para ahorro               de energía*/ }  ISR(ADC_vect,ISR_NAKED) /*Interrupt Service Routines, habilita las     interrupciones y permitir la generación de interrupción para     periféricos seleccionados, en este caso es una interrupción     para el ADC, que es donde se toa la medida del sensor y se     imprime la medida del mismo*/ {   adc_valor = ADC; //Variable 'x' a la cual se le asigna el valor del ADC      dtostrf(adc_valor, 5, 0, printbuff); /*Comando dtostrf convierte un dato     entero en stream para poder imprimirlo. Formato:     (Entero a convertir, número de dígitos antes del punto, número de     dígitos después del punto, variable en stream que representa     la salida)*/      fprintf( &uart_str, "Sensor de Humedad:"); //Valor a imprimir 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

  fprintf( &uart_str, printbuff);      f (adc_valor > 1020) /*Bucle de comparaciones y valoración a               imprimir de acuerdo a medida*/   {     fprintf( &uart_str, "   Se necesita muestra de tierra");     PORTB=0x00;   }     else if ((adc_valor > 700) & (adc_valor < 999))   {     fprintf( &uart_str, "   Tierra Seca, si regar");     PORTB=0x01;   }   else if ((adc_valor > 350) & (adc_valor < 700))   {     fprintf( &uart_str,"   Tierra Humeda, no regar");     PORTB=0x00;   }   else if (adc_valor <= 350)   {     fprintf( &uart_str,"   Demasiada agua");     PORTB=0x00;   }      fprintf( &uart_str, "\r\n" ); //Imprsión de línea y avance de renglón      _delay_ms(1000); // Retraso de 1.5 segundos para su lectura      reti();     /*Retorno desde una rutina de interrupción, habilitando     interrupciones globales; este debe ser el útimo comando ejecutado     antes de salir de una ISR definida con el atributo ISR_NAKED.     Esta macro se compila en una sola línea de ensamble, así que no     hay sobrecarga en su llamado*/ }  int printCHAR(char character, FILE *stream) /*Función para impresión de                       datos en puerto serial*/ {   while ((UCSR0A & (1 << UDRE0)) == 0) {}; /*UDREn: Registro de Datos                            Vacío de USART                        //UCSR0A: Registro A de                            Control y Estado                            de USART*/   UDR0 = character; //UDR0 – Registro de Datos de I/O de USART    return 0; }  /* ===================== Rutina de Principal ===================== */  

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

int main(void) /*Rutina principal en la cual se llaman a todas las subrutinas         de las funciones*/ {   ports_setup();   ADC_setup();   USART_setup();      sei();     /*Habilita interrupciones  estableciendo una máscara de interrupción     global. Esta macro se compila en una sola línea de ensamble, así     que no hay sobrecarga en su llamado. Sin embargo, la macro implica     también una barrera de memoria que puede causar una pérdida     de optimización*/      while(1)   {        } }  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

2.2  Monitoreo por Pantalla LCD de 16x2 Segmentos  

/*  * Humedad_Suelo_Pot_LCD.c  *  * Created: 20/08/2015 01:38:12 p. m.  * Author:  Electrónica de Potencia  *      Márquez Franco, Javier Fernando  *      Medina Jiménez, Víctor Hugo  *      García Trejo, Juan José  */   /* ===================== Declaración de velocidad de CPU ===================== */  #define F_CPU 14745600   /*Orden que define la velocidad del reloj del procesador*/  /* ===================== Declaración de Librerias ===================== */  #include <avr/io.h>   /*libreria que hace referencia a todas las palabras reservadas para   el control de los puertos de entrada y salida*/ #include <string.h>   /*libreria que contiene la definición de macros, constantes, funciones y   tipos y algunas operaciones de manipulación de memoria*/ #include <stdio.h>   /*"standar input‐ouput header", es la libreria que contiene las   declaraciones de funciones de la biblioteca estándar del lenguaje C para   hacer operaciones de entrada y de salida así como la definición de tipos,   necesarias para dichas operacones*/ #include <stdlib.h>   /*"standard library", es la libreria que contiene los prototipos de   funciones C para la gestión de memoria dinámica, control de procesos*/ #include <avr/interrupt.h>   /*libreria que hace referencia a la manipulación global de las banderas   de interrupción*/ #include <util/delay.h>   /*libreria que hace referencia a funciones de bucles de retardo/espera*/ #include "HD44780.h"   /*libreria que define la programación de la pantalla LCD de 16x2   segmentos*/    /* ===================== Declaración de Variables ===================== */  unsigned int adc_valor=0;   /*"unsigned integers", variables similares a los ints en la forma de que   almacenan un valor de 2 byte, sin embargo no almacenan números negativos,   solamente positivos y cuenta con un rango de uso desde Cero hasta 65,535*/   /*int: variables enteras que almacenan números enteros (tanto positivos   como negativos) dentro de los límites de cada uno de sus tamaños, toma   valores desde ‐2,147,483,648 hasta 2,147,483,647*/  /* ===================== Declaración de Funciones ===================== */  

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

void ports_setup(); void ADC_setup();   /*void: palabra clave que especifica que la función no devuelve ningún   valor.  Cuando se utiliza para la lista de parámetros de una función,   void especifica que la función no toma ningún parámetro. Cuando se   utiliza en la declaración de un puntero, void especifica que el puntero   es "universal"; en este caso, void especifíca tres punteros de   forma universal*/  /* ===================== Subrutinas de Funciones ===================== */  void ports_setup() //Definición de puertos a utilizar {   DDRC = 0x00; //Habilitación de ADC de Puerto C como entrada, con Cero   DDRD = 0x3F; /*Habilitación de Puerto D como salida, con Unos, para          pantalla LCD de 16x2 segmentos*/   DDRB = 0x01; /*Habilitación de Puerto B como salida para control de          potencia*/   PORTB = 0x00;//Limpieza a Ceros de Puerto B para evitar ruido }  void ADC_setup() //Configuración de Convertidor Analógico a Digital {   ADMUX = (0<<REFS1)|(1<<REFS0)|(0<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|         (1<<MUX0);     /*Registro AMUX:     REFS[1:0]  ‐ Bits de Selección de Referencias;     ADLAR    ‐ Ajuste del Resultado del ADC, Uno ajusta a la             Izquierda, Cero a la derecha;     MUX[3:0]  ‐ Bits de Selección de Canal Analógico*/   ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(0<<ADIF)|(1<<ADIE)|(1<<ADPS2)|        (1<<ADPS1)|(0<<ADPS0);     /*Registro ADCSRA:     ADEN    ‐ Habilitación de ADC;     ADSC    ‐ Inicio de la Conversión del ADC;     ADATE    ‐ Habilitación de Auto Disparo de ADC;     ADIF    ‐ Bandera de Interrupción de ADC;     ADIE    ‐ Habilitación de Interrupción de ADC;     ADPS[2:0]  ‐ Bits de Selección Pre escalar de ADC*/   ADCSRB = (0<<ACME)|(0<<ADTS2)|(0<<ADTS1)|(0<<ADTS0);     /*Registro ADCSRB:     ACME    ‐ Habilitación del Multiplexor para Comparación             Analógica;     ADTS[2:0]  ‐ Fuente de Auto Disparo de ADC*/   DIDR0 = (0<<ADC5D)|(0<<ADC4D)|(0<<ADC3D)|(0<<ADC2D)|(0<<ADC1D)|(0<<ADC0D)     /*Registro DICR0:     ADC5D...ADC0D ‐ Deshabilitación de Entrada Digital para ahorro               de energía*/ }  ISR(ADC_vect,ISR_NAKED) /*Interrupt Service Routines, habilita las     interrupciones y permitir la generación de interrupción para     periféricos seleccionados, en este caso es una interrupción     para el ADC, que es donde se toa la medida del sensor y se     imprime la medida del mismo*/ { 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

  adc_valor = ADC; //Variable 'x' a la cual se le asigna el valor del ADC        if (adc_valor > 1020)  /*Bucle de comparaciones y valoración a           mostrar en LCD de acuerdo a medida sensada*/   {     LCD_Clear(); //Limpieza de caracteres de LCD     LCD_Goto(0,0); //Cambio a línea 1 de LCD     LCD_Message("Poner muestra"); //Impresión de mensaje     LCD_Goto(0,1); //Cambio a línea 2 de LCD     LCD_Message("       de tierra"); //Impresión de mensaje     PORTB=0x00; /*Envio de Cero a Puerto B,           no activando etapa de potencia*/   }     else if ((adc_valor > 700) & (adc_valor < 999))   {     LCD_Clear();     LCD_Goto(0,0);     LCD_Message("  Tierra Seca  ");     LCD_Goto(0,1);     LCD_Message("  == REGAR ==  ");     PORTB=0x01;   }   else if ((adc_valor > 350) & (adc_valor < 700))   {     LCD_Clear();     LCD_Goto(0,0);     LCD_Message(" Tierra Humeda ");     LCD_Goto(0,1);     LCD_Message(" == NO REGAR == ");     PORTB=0x00;   }   else if (adc_valor <= 350)   {     LCD_Clear();     LCD_Goto(0,0);     LCD_Message(" Demasiada Agua");     LCD_Goto(0,1);     LCD_Message(" ** WARNING ** ");     PORTB=0x00;   }      _delay_ms(1000); //Retardo de 1 segundo      reti();     /*Retorno desde una rutina de interrupción, habilitando     interrupciones globales; este debe ser el útimo comando ejecutado     antes de salir de una ISR definida con el atributo ISR_NAKED.     Esta macro se compila en una sola línea de ensamble, así que no     hay sobrecarga en su llamado*/ }  /* ===================== Rutina de Principal ===================== */  int main(void)  /*Rutina principal en la cual se llaman a todas las subrutinas         de las funciones*/ { 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

  ports_setup(); //Llamado de función   ADC_setup(); //Llamado de función      LCD_Init();  //Llamado a inicio de Pantana LCD   LCD_Message("ELECTRONICA");   LCD_Goto(0,1);   LCD_Message("    DE POTENCIA");   msDelay(4000);   LCD_Clear();   LCD_Goto(0,0);   LCD_Message("SENSOR");   LCD_Goto(0,1);   LCD_Message("    DE HUMEDAD");   msDelay(4000);   LCD_Clear();      sei();     /*Habilita interrupciones  estableciendo una máscara de interrupción     global. Esta macro se compila en una sola línea de ensamble, así     que no hay sobrecarga en su llamado. Sin embargo, la macro implica     también una barrera de memoria que puede causar una pérdida     de optimización*/      while(1)   {     //Empty   }        } 

 

 

 

 

 

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

SENSOR DE TEMPERATURA Y HUMEDAD RELATIVA 

1.  Diagrama Esquemático 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

2.  Código de Programación en Lenguaje C++ (ATMEL Studio)  

2.1  Monitoreo por Comunicación Serial a Puerto USB de Computadora  

/*  * Sensor de Temperatura y Humedad Relativa.c  *  * Created: 21/08/2015 12:39:23 p.m.  *  Author: Electrónica de Potencia  *      Marquéz Franco, Javier Fernando  *      Medina Jiménez, Víctor Hugo  *      García Trejo, Juan José  */    #define F_CPU 14745600 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h>  #include "dht11.c"  void ports_setup(); void USART_setup();  void ports_setup() {   DDRD = 0x02;   DDRB = 0x3F;   PORTB = 0x00; }  void USART_setup() {   UCSR0A = (0<<TXC0)|(0<<U2X0)|(0<<MPCM0);   UCSR0B = (0<<RXCIE0)|(0<<TXCIE0)|(0<<UDRIE0)|(1<<RXEN0)|(1<<TXEN0)|(0<<UCSZ02)|(0<<TXB80);   UCSR0C = (0<<UMSEL01)|(0<<UMSEL00)|(0<<UPM01)|(0<<UPM00)|(0<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00)|(0<<UCPOL0);   UBRR0 = 0x5F; }  int printCHAR(char character, FILE *stream) {   while ((UCSR0A & (1 << UDRE0)) == 0) {};    UDR0 = character;    return 0; } 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

 FILE uart_str = FDEV_SETUP_STREAM(printCHAR, NULL, _FDEV_SETUP_RW);  int main(void) {      char printbuff[100];    ports_setup();   USART_setup();      sei();    int8_t temperature = 0;   int8_t humidity = 0;    for (;;)   {     humidity = dht11_gethumidity();     temperature = dht11_gettemperature();      itoa(temperature, printbuff, 10);     fprintf( &uart_str, "Temperatura: "); fprintf( &uart_str, printbuff);fprintf( &uart_str, " \370C"); fprintf( &uart_str, "\r\n");      itoa(humidity, printbuff, 10);     fprintf( &uart_str, "Humedad: "); fprintf( &uart_str, printbuff); fprintf( &uart_str, " %%RH"); fprintf( &uart_str, "\r\n");      fprintf( &uart_str, "\r\n");              if (temperature > 30)       {         PORTB = 0x01;       }     else if (temperature <= 28)       {         PORTB = 0x00;       }      _delay_ms(1500);   }        return 0; }  

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

FUENTE DE ALIMENTACIÓN EXTERNA (POR PANEL 

FOTOVOLTAICO DE 12V Y/O BATERÍA DC 12V) 

 

1.  Diagrama Esquemático  

 

 

 

2.  Objetivo de fuente externa   

Mediante  este  circuito  en  el  cual  estamos  utilizando  un  LM317T,  regulamos  el 

voltaje entregado por el panel, el cual a su máxima capacidad nos envía 12 V DC,  con un 

potenciómetro podemos regular el voltaje de salida, alimentando de esta manera nuestro 

circuito eléctrico que requiere de 5 V en DC para su correcto funcionamiento. 

También  es  posible  alimentarlo  directamente  desde  el  puerto  USB  de  una 

computadora  y  así  tener  comunicación  serial  con  ella  y  monitoreo  de  valores  de  la 

Temperatura y Humedad Relativa. 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

EVIDENCIA FOTOGRÁFICA DE CIRCUITOS Y SENSORES  

 

1.  Fotografías de sistema  

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES 

  

 

 

 

 

 

 

 

ELCTRÓNICA DE POTENCIA MAESTRÍA EN ENERGÍAS RENOVABLES