You are on page 1of 15

SUMRIO

1. INTRODUO...................................................................................................................2
2. JUSTIFICATIVA................................................................................................................2
3. OBJETIVO..........................................................................................................................3
3.1. OBJETIVO GERAL............................................................................................................3
3.2. OBJETIVO ESPECFICO...................................................................................................3
4. DESCRIO GERAL.........................................................................................................4
5. DESCRIO DE FUNCIONAMENTO............................................................................4
5.1. CHAVE LIGA/DESLIGA...................................................................................................4
5.2. SINALIZAO..................................................................................................................4
5.3. MICRO CONTROLADOR.................................................................................................5
5.4. LINGUAGEM DE PROGRAMAO...............................................................................5
5.5. LGICA DE FUNCIONAMENTO....................................................................................5
6. CONCLUSO.......................................................................................................................5
7. CRONOGRAMA..................................................................................................................6
8. BIBLIOGRAFIA...................................................................................................................6
9. ANEXOS................................................................................................................................6
9.1. DIAGRAMA DE BLOCOS................................................................................................6
9.1.1. DIAGRAMA DE BLOCOS PIC TRANSMISSOR......................................................
9.1.2. DIAGRAMA DE BLOCOS PIC RECEPTOR..............................................................
9.2. PROGRAMAO UTILIZADA NO PIC.........................................................................
9.2.1. PROGRAMAO DO TRANSMISSOR (TX)...............................................................
9.2.2. PROGRAMAO DO RECEPTOR (RX).......................................................................
9.3. QUADRO DE CUSTOS.....................................................................................................6
9.4. FIGURAS DOS PRINCIPAIS COMPONENTES.............................................................7
9.5. FOTOS: LTIMOS DETALHES.......................................................................................7

1. INTRODUO

Neste relatrio explicaremos a idia bsica do projeto de fsica utilizando o


arduino. Ser a presentado o circuito esquemtico do projeto e tambm todo o
material necessrio para sua fabricao.
2. PROJETO PROPOSTO

O projeto proposto coniste de um relgio solar. o projeto simular um relgio


que d as horas baseado na posio relativa do sol em relao a um monumento
que produz uma sombra. Na prtica, o relgio consistir de um pequeno
monumento central que ser envolto por um arco com leds percorrendo seu
permetro, formando um semicrculo que simular todas as posies que o sol
pode ocupar durante um perodo de 24 horas.
Os leds sero controlados por microcontroladores para acederem ou apagarem, o
arco ser composto de 48 leds, de forma que para cada hora teremos 2 leds
acessos. Os 48 leds sero controlados por 3 microcontroladores, de forma que
cada um controlar 16 leds. Para converter a posio relativa dos leds acessos
em horas do dia ser utilizado o sensor RTC. Tanto o RTC quanto os 3
microcontroladores estaram ligados ao arduino. O arduino servir para controlar
os microcontroladores

e transmitir a sida deste para o RTC fazendo a

converso para horas do dia.


O projeto formado no total por 4 circuitos. Trs dos circuitos so os dos
microcontroladores que controlam os leds, sendo estes 3 cicrcuitos idnticos
entre s. O quarto circuito o circuito formado pelo RTC integrado ao arduino.

O projeto pronto ser a integrao desses 4 circuitos. Segue abaixo a simulao


no proteus do circuito dos microocntroladores controlando os leds e o circuito
do RTC integrado ao pic do arduino.

3. MICROCONTROLADOR CONTROLANDO OS 16 LEDS

Este o circuito de simulao no Proteus do controle dos leds no arco solar.

4. RTC INTEGRADO AO PIC DO ARDUINO

5. LISTA DE MATERIAIS

O custo final ficou em R$ 97,00 o que viabiliza um trabalho futuro para tornar realizvel a sua
comercializao.
5. CRONOGRAMA
4

Visto a complexidade da proposta aqui apresentada, observamos a necessidade de se


montar um cronograma das atividades que seriam realizadas conforme a evoluo do
projeto.
PERODO UTILIZADO
JANEIRO de FEVEREIRO
ATIVIDADE DESENVOLVIDA
OUTUBRO
NOVEMBRO
DEZEMBRO
2010
DE 2010
05/10 19/10- 02/11- 16/11- 30/11- 21/12- 01/01- 25/01- 01/02- 15/02-16/10 30/10 13/11 27/11 18/12 31/12 22/01 29/01 12/02 24/02
Brenkstorne
x
Escolha do tema a ser desenvolvido
x
Pesquisando o tema
x
Desenvolvendo o prottipo
x
x
x
x
x
Teste de funcionamento do prottipo
x
x
x
x
Ajustes no prottipo
x
x
x
x
Projeto escrito
x
Ajustes do projeto escrito
x
Entrega do projeto escrito
x
Frias
x
x

6. REFERNCIAS BIBLIOGRFICAS

Apostila CEDTEC mdulo II de tcnico em automao industrial, controle de processo


Apostila CEDTEC mdulo III de tcnico em automao industrial, sistemas de automao
Microchip PIC 16F87X
Vidal projetos personalizados. Eng Vidal Pereira da Silva Junior
Trabalho e capitalismo monopolista: a degradao do trabalho no sculo XX. Braverman,
Harry e Zahar.
7. ANEXOS
9.1. DIAGRAMA DE BLOCOS
9.1.1. DIAGRAMA DE BLOCOS PIC TRANSMISSOR

9.1.2. DIAGRAMA DE BLOCOS PIC RECEPTOR

9.2. PROGRAMAO UTILIZADA NO PIC

9.2.1. PROGRAMAO DO TRANSMISSOR (TX)


#include <16f876A.h>
// Diretivas de compilao: PIC 16f876A
#device adc=10
#fuses HS,NOWDT,NOPROTECT,PUT
// Cristal 8 MHz, sem watchdog, etc.
#use delay(clock=8000000)
// Clock para as rotinas de delay
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#include <lcdt.c>
//#use fixed_io(c_outputs=PIN_C6)
#use rs232(baud=2400, xmit=PIN_C6, parity=N, rcv=PIN_C7)
#use i2c (master, slow, sda=pin_c4, scl=pin_c3)
6

VOID LER_RTC (INT *data_hora);


// Rotina de leitura de data e hora
VOID ESCREVE_RTC (INT *data_hora); // Rotina de escrita de data e hora
VOID MAIN()
{
//Declarao de Variveis
INT seg, data_hora[7] = {52,8,15,4,24,02,10};
short flag_aut=0, man_aut=0;
int16 temp_dig,t;
float temp_an;
char b=223;
set_tris_a (0b11111111);
set_tris_b (0b11110111);
set_tris_c (0b10111111);
setup_adc_ports (ALL_ANALOG);
// Define as entradas analgicas
setup_adc (adc_clock_internal); // Define clock da converso A/D igual ao interno
lcd_init();

// Inicializao do LCD

//Mensagem Inicial
printf (lcd_putc,"\fJardim");
printf (lcd_putc,"\nAutomatizado");
delay_ms (2000);
// O vetor data_hora tem 7 bytes, a saber:
// data_hora[0] -> armazena valor dos segundos
// data_hora[1] -> armazena valor dos minutos
// data_hora[2] -> armazena valor da hora
// data_hora[3] -> armazena valor do dia da semana
// data_hora[4] -> armazena valor do dia
// data_hora[5] -> armazena valor do ms
// data_hora[6] -> armazena valor do ano
//
// Como exemplo, neste programa com os valores setados acima em data_hora teremos:
// Data: 25/02/10
// Hora: 15:50:00
ESCREVE_RTC (& data_hora[0]); //Escreve a hora no RTC
set_adc_channel (0);
// Define o canal a ser utilizado para a prxima converso A/D
while (TRUE)
{
temp_dig = read_adc();
// Realiza leitura da entrada analgica
temp_an = (float)temp_dig*0.488; //Clculo da temperatura
t = (int16)temp_an;
//Converte o valor da temperatura analgica em digital
delay_ms(100);
LER_RTC (& data_hora[0]);

// Realiza leitura do RTC. O vetor data_hora


7

if (seg != data_hora[0])
// Escreve novo valor no LCD somente quando
{
// houver mudana no valor dos segundos. Isso
seg = data_hora[0];
// evita que o LCD fique tremulando.
printf (lcd_putc,"\fTemp
%lu%1cC ",t,b);
printf (lcd_putc,"\nHora: %02u:%02u:%02u",data_hora[2],data_hora[1],data_hora[0]);
}
delay_ms (100);
// Intervalo entre leituras no RTC
if(input(pin_a4))
{
man_aut = !man_aut;
delay_ms(300);
}
if(man_aut==0) //Se o controle for manual
{
lcd_gotoxy(10,1);
printf (lcd_putc,"M");
if(input(pin_c2)) //Acionar bomba1
{
putc('a');
delay_ms (300);
}
if(input(pin_c1)) //Acionar Bomba2
{
putc('b');
delay_ms (300);
}
}
if(man_aut==1) //Se for Automtico
{
lcd_gotoxy(10,1);
printf (lcd_putc,"A");
if(data_hora[0]==00 && data_hora[1]==9 && data_hora[2]==15 && !flag_aut) //Se
a hora for igual a hora programada as bombas sero ligadas
{
lcd_gotoxy(7,1);
printf (lcd_putc,"L");
delay_ms(300);
putc('c');
flag_aut = !flag_aut; //Inverte a flag para no ficar enviando 'c' durante todo o
perodo relativo a 1s
}
if(data_hora[0]==10 && data_hora[1]==9 && data_hora[2]==15 && flag_aut) //Se a
hora for igual a hora programada as bombas sero desligadas
{
8

lcd_gotoxy(7,1);
printf (lcd_putc,"D");
delay_ms(300);
printf (lcd_putc,"\b ");
putc('d');
flag_aut=!flag_aut;
}
}
}
}
//**************************************************************************
***
// Rotina de Leitura no Relgio
*
//**************************************************************************
***
VOID LER_RTC (INT *data_hora)
{
INT i, aux;
// No RTC os bytes esto endereados da seguinte forma:
//
// Byte 00 -> endereo dos segundos
// Byte 01 -> endereo dos minutos
// Byte 02 -> endereo das horas
// Byte 03 -> endereo do dia da semana
// Byte 04 -> endereo do dia
// Byte 05 -> endereo do ms
// Byte 06 -> endereo do ano
for (i=0; i<7; i++)
// Lao para leitura de data e hora
{
i2c_start();
// Processador indica incio de comunicao com RTC
i2c_write(0xd0);
// Define escrita para um RTC sendo perifrico "0".
i2c_write(i);
// Aponta para o endereo desejado
i2c_stop();
// Processador encerra comunicao
i2c_start();
// Processador indica incio de comunicao com RTC
i2c_write(0xd1);
// Define leitura do RTC sendo perifrico "0".
aux = i2c_read(0);
// L dados e devolve NACK
i2c_stop();
// Processador encerra comunicao
data_hora[i] = ((aux & 0x0f) + (((aux & 0xf0) >> 4) * 10)); // Converte BCD para binrio
}
// e preenche o vetor data_hora
}
//**************************************************************************
***
// Rotina de Escrita no Relgio
*
//**************************************************************************
***
VOID ESCREVE_RTC (INT *data_hora)
{
9

INT i, aux;
// No RTC os bytes esto endereados da seguinte forma:
//
// Byte 00 -> endereo dos segundos
// Byte 01 -> endereo dos minutos
// Byte 02 -> endereo das horas
// Byte 03 -> endereo do dia da semana
// Byte 04 -> endereo do dia
// Byte 05 -> endereo do ms
// Byte 06 -> endereo do ano
// O vetor data_hora vem preenchido com os valores a serem escritos no RTC
for (i=0; i<7; i++)
{
aux = ((((data_hora[i] / 10) << 4) & 0xf0) | (data_hora[i] % 10)); // Converte binrio
para BCD
i2c_start();
// Processador indica incio de comunicao com RTC
i2c_write(0xd0);
// Define escrita para um RTC sendo perifrico "0"
i2c_write(i);
// Aponta para o endereo desejado
i2c_write(aux);
// Escreve valor de dat ou hora
i2c_stop();
// Processador encerra comunicao
}
}
9.2.2. PROGRAMAO DO RECEPTOR (RX)
#include <16f876A.h>
#fuses Hs,NOWDT,NOPROTECT,PUT
#use delay(clock=8000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#include <lcdt.c>
#use rs232(baud=2400, xmit=PIN_C6, parity=N, rcv=PIN_C7)
#DEFINE lig output_high
#DEFINE des output_low
#DEFINE esp delay_ms
CHAR dado;
#INT_RDA
VOID INT_RECEBER()
{
dado = getc();
}
VOID MAIN()
10

{
//declaracao de varfiaveis
short flagbomba=0,flagbomba2=0;
disable_interrupts (GLOBAL);
set_tris_a (0x11111100);
set_tris_c (0b11111111);
enable_interrupts (GLOBAL);
enable_interrupts(int_rda);
//desativar todas as saidas
output_low(pin_a1);
output_low(pin_a0);
lcd_init();

// Inicializao do LCD

//Mensagem Inicial
printf (lcd_putc,"\fJardim");
printf (lcd_putc,"\nAutomatizado");
delay_ms (2000);
while (TRUE)
{
switch(dado)
{
case 'a':
flagbomba=!flagbomba; // Inverte o valor da varivel e faz a mesma receber esse
valor
output_bit(pin_a1,flagbomba); //Liga ou desliga a bomba1
dado='#';
break;
case 'b':
flagbomba2=!flagbomba2; // Inverte o valor da varivel e faz a mesma receber esse
valor
output_bit(pin_a0,flagbomba2); //Liga ou desliga a bomba2
dado='#';
break;
case 'c': // Caso 'c', liga as duas bombas
output_high(pin_a1);
output_high(pin_a0);
break;
case 'd': //Caso 'd', desliga as duas bombas
output_low(pin_a1);
output_low(pin_a0);
break;
11

default: break;
}
if(input(pin_a1))
{
output_low(pin_c4);
}
else
{
output_high(pin_c4);
}
if(input(pin_a0))
{
output_low(pin_c5);
}
else
{
output_high(pin_c5);
}
if(input(pin_a1))
{
printf (lcd_putc,"\fbomba1:Ligada");
}
else
{
printf (lcd_putc,"\fbomba1:Desligada");
}
if(input(pin_a0))
{
printf (lcd_putc,"\nbomba2:Ligada");
}
else
{
printf (lcd_putc,"\nbomba1:Desligada");
}
}
}
9.3. QUADRO DE CUSTOS
9.3. FIGURAS DOS PRINCIPAIS COMPONENTES

12

Chave tctil liga/desliga para microcontrolador pic.

RTC (Real Time Clock)

Sensor de temperatura LM 35

led vermelho e led verde

PIC 16F877A.
9.5. FOTOS: LTIMOS DETALHES

13

Nosso prottipo quase em pleno funcionamento

Vrios ajustes...
14

Muitas mos... e,

Algumas cabeas.

15

You might also like