pontifícia universidade católica do paraná centro de

Transcrição

pontifícia universidade católica do paraná centro de
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ
CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA
ENGENHARIA DE COMPUTAÇÃO
PROJETO CHUVEIRO INTELIGENTE
CURITIBA
2009
CARLOS ROBERTO REMENCHE JUNIOR
DENIS REIMCHE OTT
RAFAEL ANTÔNIO GROSKO
PROJETO CHUVEIRO INTELIGENTE
Este projeto será apresentado às
disciplinas o Curso de Engenharia de
Computação
do Centro de Ciências
Exatas e de Tecnologia da Pontifícia
Universidade Católica do Paraná, como
parte integrante da nota do primeiro
semestre. A finalidade deste projeto é
integração das diversas disciplinas do
curso.
Professores orientadores: Gil
Jess e Afonso Ferreira Miguel.
CURITIBA
2009
Marcos
Índice
1 - INTRODUÇÃO...................................................................................................................................4
1.1- JUSTIFICATIVAS............................................................................................................................5
1.2 - METODOLOGIA.....................................................................................................................6
2 – RESPONSABILIDADES............................................................................................................7
3 – OBJETIVOS.............................................................................................................................8
3.1 – NÃO ESTÁ INCLUSO NO ESCOPO DO PROJETO.................................................................9
4 - EQUIPE DE DESENVOLVIMENTO............................................................................................10
5 - O PROJETO............................................................................................................................11
5.1 – CÓDIGO-FONTE.........................................................................................................................14
5.2 – POSTAGENS NO WEBSITE.......................................................................................................32
6 – CONCLUSÃO.................................................................................................................................57
1. INTRODUÇÃO
A matéria projeto integrado do curso de Engenharia de Computação ministrada pelo
professor Afonso Ferreira Miguel tem o intuito de preparar e aperfeiçoar a mentalidade do
engenheiro que não se voltará somente pesquisa de novas tecnologias, mas sim o
desenvolvimento de novas soluções para algumas adversidades, tentando por a natureza a
serviço do homem, podendo explorar tudo que ela pode oferecer.
O grupo atual foi formado para o estudo e Projeto Integrado do terceiro período do
curso é formado pelos seguintes integrantes: Carlos Roberto Remenche Junior, Denis
Reimche Ott, Rafael Antônio Grosko.
A idéia do projeto surgiu quando o integrante Denis Reimche Ott, durante especulações
lúdicas de como poderias transformar o celular como um controle universal, falou-se de
ligar o chuveiro pelo celular e controlar a temperatura e vazão pelo mesmo, idéia acatada
com entusiasmo e otimismo pelos demais. Ficou claro que havia um problema, a falta de
controle que temos sobre o chuveiro, que poderia e deveria ser sanada.
1.1. JUSTIFICATIVAS
O projeto “Chuveiro Inteligente” foi desenvolvido para otimizar um costume comum de
todos, o banho diário. Mudando o modo que o usuário se relaciona com seu chuveiro.
Nosso projeto visa facilitar o banho tornando-o mais simplificado, retirando válvulas e
controles manuais difíceis de serem ajustados transportando-os para um controle digital,
computadorizando-os, responsabilizando o computador pela temperatura e vazão desejada.
Pesquisando o estado da arte, alguns produtos interessantes vêm alguns que apenas
se preocupam com a parte estética e não tem como objetivo de criar um banho mais
inteligente. Como se não fosse o custo básico de um chuveiro deste tipo é muito elevado,
passando facilmente de R$ 1.000,00 (mil reais) sendo somente acessível para a classe alta.
O “Chuveiro Inteligente” tem como objetivo criar uma solução simples, barata, e com o
objetivo de ampliar o controle e utilização do chuveiro. O sistema utilizado consiste em um
chuveiro eletrônico com potenciômetro regulável que é acionado por meio de um motor de
passo. A vazão é controlada por duas válvulas solenóides. A leitura da temperatura da água
é feita em dois pontos, e com essa temperatura o banho é ajustado automaticamente. A
interface com o computador por se da por meio de uma porta USB onde um programa em
linguagem C++ controla todo o sistema.
1.2 - METODOLOGIA
O método usado para desenvolver o “Chuveiro Inteligente” consistiu em uma pesquisa
sobre os módulos a serem implementados no circuito, como seria a melhor maneira de
controlar a água e temperatura, um Web Site foi colocado no ar com informações do
projeto e no decorrer do mesmo foi atualizado semanalmente com histórias, diagramas,
fotos,
curiosidades
e
tudo
que
o
envolve.
O
site
do
projeto
é
www.chuveirointeligente.blogspot.com.
Nas primeiras semanas foi comprado o material para a montagem do circuito elétrico,
em primeiro momento em proto-board, para aprender e verificar o funcionamento e
verificar a montagem adequada do circuito para evitar erros como curto circuitos.
Nas seguintes semanas, com todo o circuito montado em proto-board, foi dado
inicio ao desenho dos circuitos, para serem impressos nas placas de maneira mais segura
e profissional, usando o programa Eagle, assim como também foi iniciado os estudos da
linguagem a ser utilizada para a programação. Com os desenhos das placas prontos
começou a fabricação das placas de circuito impresso. Com as placas corroídas e com
as trilhas perfeitas, foram colocados os componentes soldando-os nas placas. Com os
circuitos prontos e testados para evitar curtos entre as trilhas, testamos o funcionamento
de todo o circuito junto com todos os componentes adicionais (sensores, válvulas
solenóides, servo motores).
Com os circuitos prontos, a programação foi o foco central do trabalho, só restava
à montagem da estrutura, que foi iniciada na semana seguinte. Com a aquisição dos
materiais necessários, foi montada a estrutura e realizados alguns testes para verificar o
funcionamento de tudo produzido até o momento, descobrimos que o peso do chuveiro
com a água seria pesado demais para a estrutura, foram feitas diversas modificações
para torná-lo mais forte. Com ela pronta foi projetada a parte hidráulica, que logo foi
concluída com a aquisição dos materiais necessários e montagem, colocando as válvulas
solenóide. Tivemos que substituir uma válvula solenóide por uma bomba de combustível
de carro, para aumentar a vazão para suprir a quantidade de água que o chuveiro
necessita.
Após a conclusão dessas etapas ainda restava o programa, que já estava em fase
final, faltando alguns ajustes e testes. No programa, foram enfrentados muitos problemas,
tanto pelo estudo da linguagem, que é o C++ em Windows Form usando o Visual Studio,
quanto pelo código utilizado. Com todos os ajustes feitos, os problemas foram resolvidos
e o programa ficou pronto.
Concluindo assim a montagem e implementação do projeto “Chuveiro Inteligente”.
2 – RESPONSABILIDADES
Para a criação e desenvolvimento do projeto foi necessária a dedicação de todos os
integrantes do grupo, assim como dos professores. Cada integrante do projeto teve que
realizar sua parte com vontade e comprometimento para que o projeto cria-se forma e
fosse assim concluído. A PUC, com estrutura laboratorial e funcionários dedicados foram
parte fundamental para o desenvolvimento e amadurecimento contínuo do mesmo.
3 – OBJETIVOS
O projeto “Chuveiro Inteligente” teve como objetivo, o aprendizado sobre pesquisas,
documentações, cronogramas, apresentações, ou seja, tudo que envolve um adequado
gerenciamento de projeto, assim como utilizar conhecimentos recebidos em sala de
aula já em aplicações mais próximas da engenharia propriamente dita, como a
utilização dos conceitos de circuitos elétricos e sistemas digitais para uma interpretação
real das tecnologias empregadas no projeto. Como circuitos elétricos e sistemas digitais
que foram exaustivamente revisadas e aplicadas durante o mesmo.
Sem relevar a oportunidade de poder desenvolver algo que aumente o conforto do
usuário durante o banho. Haveria economia de água e energia, se o usuário
consegui-se atingir a temperatura de banho que ele julga-se adequada mais rápido,
dispensado aquele clássico ritual de “calibração” da temperatura e quantidade todas
vez antes do banho, que em alguns casos é relativamente demorada, ou seja, fosse
capaz
de
automaticamente
regular
temperatura
temperaturas previamente escolhidas pelo usuário.
com
base
nas
leituras
de
3.1 – NÃO ESTÁ INCLUSO NO ESCOPO DO PROJETO
Poderiam ser incluídas diversas funcionalidades no nosso projeto, como um contador de
quantidade de água vazante, de energia utilizada, um monitor touch-screen de pequena
escala para ser usado como interface usuário-máquina, entre vários outros, é sem dúvida
um projeto muito fértil para quem quer proporcionar conforto e controle total durante o
banho. Não foram implementados neste projeto, pois dependeria de muito mais tempo, pois
um semestre foi insuficiente nos condenando a uma superficialidade do todo que poderia
ser, estudo de novas possibilidades e custos por parte do grupo.
4 - EQUIPE DE DESENVOLVIMENTO
A equipe de desenvolvimento contou com Carlos Roberto Remenche Junior, Denis Reimche
Ott, Rafael Antônio Grosko.Pontes que foram responsáveis por realizar determinadas
tarefas específicas. As tarefas foram distribuídas da seguinte maneira:
Carlos Roberto Remenche Junior:
-Estruturação e atualização do blog
-Documentação
-Testes finais
Denis Reimche Ott
-Montagem do circuito em Proto-Board
-Documentação
-Auxílio na programação
-Montagem e manutenção das placas e cabos
Rafael Antonio Grosko
-Montagem do circuito em Proto-Board
-Programação
-Montagem dos circuitos
-Auxílio na montagem da estrutura
-Testes finais
5 - O PROJETO
O projeto foi constituído de três fases: HARDWARE, ESTRUTURA HIDRÁULICA,
PROGRAMAÇÃO.
A parte do Hardware foram utilizadas para implementar a comunicação e controle
via software entre o computador e as válvulas, sensor e motor. Foi utilizado primariamente,
para realizar a comunicação computador<->módulos, o conversor RS 232-TTL que utiliza
uma entrada serial pra comunicação com o computador. Para o controle das válvulas,
sensor e motor servo foram utilizados módulos específicos (M2 e M1). Todos módulos
foram construídos através dos esquemáticos disponibilizados pelo professor Afonso. Foram
ainda utilizados etapas de potência para garantir a correta voltagem no sistema e um
transformador de 110V para 15V que serve como fonte de alimentação elétrica para o
sistema. As placas e a fonte foram acomodados em uma caixa de plástico própria para
circuitos para melhor organização, transporte e apresentação do sistema.
A estrutura hidráulica consiste em uma placa de madeira(MDF) em formato de U
que serve como base principal para o projeto. Outra placa de madeira, retirada da placa
inicial, foi presa à base, em posição vertical, para dar suporte ao chuveiro. Toda a parte
hidráulica, válvulas de controle, caixa com as placas de circuito foi anexada à essa
estrutura.
Como ilustra a foto, foi utilizada uma tubulação padrão de PVC em conjunto com
mangueiras de silicone para melhor visualização do movimento da água. O sistema recebe
a alimentação de água por meio de uma torneira normal com vazão suficiente para ligar o
chuveiro. Por meio de uma mangueira essa água chega a parte hidráulica do projeto, em
uma conexão em formato T a água é dívida em duas tubulações, uma para cada válvula,
depois de passar pelas válvulas a água chega a outra conexão em T que une as duas
tubulações. Essa última tubulação sobe pela placa vertical da base, chegando ao topo da
placa foi colocada uma curva de 90° (joelho) de PVC para o cano ficar na posição horizontal
e servir de fixação para o chuveiro eletrônico.
O chuveiro utilizado foi um chuveiro eletrônico da marca Zagonel, que utiliza um
controle de temperatura manual por meio de um potenciômetro, este utiliza uma fiação para
se ligar ao chuveiro, podendo assim ser fixado em qualquer posição próxima ao chuveiro.
Por ter essa facilidade de mobilidade do potenciômetro este chuveiro foi escolhido para o
projeto.
Duas válvulas solenóides (ou eletro-válvulas) foram utilizadas para o controle da
vazão da água. Essas válvulas operam de modo simples, elas em seu interior contém um
eletro-imã fixo, um pedaço de metal é preso a uma parte móvel que corre por dentro de um
pequeno vão dentro da válvula. Se a válvula é alimentada com a voltagem correta, esse
eletro-imã entra em ação atraindo o pedaço de metal, puxando assim juntamente a parte
plástica liberando assim passagem de água. Se não existir a alimentação elétrica, o pedaço
de metal não é atraído e por meio de uma mola, a válvula permanece fechada. As válvulas
foram fixadas na tubulação, servindo esta como suporte, de forma que as válvulas poderiam
ser utilizadas em conjunto ou separadas. A tubulação antes e depois de cada válvula foi
substituída por pedaços de mangueira de silicone transparente para facilitar a conexão com
as válvulas e visualização da passagem de água. A primeira válvula ,de material metálico,
foi retirada de um sistema de ar de um caminhão. Utiliza 12V para operar. Pela tubulação
ser de PVC e a válvula ser metálica houve certa dificuldade em adaptar ela ao conjunto. A
segunda válvula, de plástico e suporte em metal, foi retirada de uma máquina de lavar. Ela
opera com 110V, necessitando assim de uma alimentação direta da rede elétrica. Para
controlá-la foi utilizado um relé que é acionado com 12V, podendo este ser integrado
facilmente aos circuitos previamente discutidos.
Para o controle de temperatura foi utilizado o potenciômetro original do chuveiro,
este foi ligado à um motor servo e ambos foram presos com madeira à base principal. O
potenciômetro consiste em uma pequena caixa, ligado ao chuveiro por um cabo elétrico,
com um dispositivo que ao ser girado modifica sua resistência deixando passar mais ou
menos corrente, ou seja, ao ser girado modifica a potência que o chuveiro tem para aquecer
a água, mudando assim a temperatura da água que o chuveiro fornece. Para controlar este
dispositivo foi utilizado um motor servo. O motor usado foi obtido do sistema de controle de
polarização de uma antena parabólica. Este motor tem como característica o controle
preciso de seus movimentos, ideal para controlar um pequeno dispositivo como o
potenciômetro. Ele funciona com um controle vindo do módulo e gira de acordo com o
comando fornecido, controlando assim o potenciômetro.
Para verificar a temperatura, foi utilizado um sensor acoplado ao chuveiro. Este
sensor é ligado ao circuito para leitura da temperatura da água no chuveiro.
Todo o controle é feito via software ligado ao sistema pelo módulo de conversão
RS 232-TTL discutido previamente. O computador foi ligado ao sistema por um conversor
USB-Serial pela comodidade que existe em usar a porta USB. O software foi desenvolvido
em plataforma Windows, utilizando o programa Visual Studio, ambos da empresa Microsoft.
A linguagem de programação utilizada foi o C++. Foi utilizado ainda o Windows Form para
facilitar o geração da parte gráfica do programa. Este programa será melhor discutido em
outro item.
5.1 – CÓDIGO-FONTE
form1.h
#include <windows.h>
#pragma once
namespace ChuveiroInteligente {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change
the
///
'Resource File Name' property for the managed resource compiler
tool
///
associated with all .resx files this class depends on. Otherwise,
///
the designers will not be able to interact properly with localized
///
resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::NumericUpDown^ numericUpDown1;
private: System::Windows::Forms::NumericUpDown^ numericUpDown2;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::IO::Ports::SerialPort^ serial;
private: System::Windows::Forms::Timer^ timer1;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Button^ button4;
private: System::Windows::Forms::NumericUpDown^ numericUpDown3;
private:
private: System::ComponentModel::IContainer^ components;
private:
/// <summary>
/// Required designer variable.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->components
=
(gcnew
System::ComponentModel::Container());
System::ComponentModel::ComponentResourceManager^
resources
=
(gcnew
System::ComponentModel::ComponentResourceManager(Form1::typeid));
this->button1 = (gcnew System::Windows::Forms::Button());
this->numericUpDown1
=
(gcnew
=
(gcnew
System::Windows::Forms::NumericUpDown());
this->numericUpDown2
System::Windows::Forms::NumericUpDown());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->serial
=
(gcnew
System::IO::Ports::SerialPort(this-
>components));
this->timer1 = (gcnew System::Windows::Forms::Timer(this>components));
this->label3 = (gcnew System::Windows::Forms::Label());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->button4 = (gcnew System::Windows::Forms::Button());
this->numericUpDown3
=
(gcnew
System::Windows::Forms::NumericUpDown());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown2))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown3))->BeginInit();
this->SuspendLayout();
//
// button1
//
resources->ApplyResources(this->button1, L"button1");
this->button1->Name = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click
+=
gcnew
System::EventHandler(this,
&Form1::button1_Click);
//
// numericUpDown1
//
resources->ApplyResources(this->numericUpDown1,
L"numericUpDown1");
this->numericUpDown1->Maximum = System::Decimal(gcnew
cli::array< System::Int32 >(4) {50, 0, 0, 0});
this->numericUpDown1->Minimum = System::Decimal(gcnew
cli::array< System::Int32 >(4) {20, 0, 0, 0});
this->numericUpDown1->Name = L"numericUpDown1";
this->numericUpDown1->Value
=
System::Decimal(gcnew
cli::array< System::Int32 >(4) {20, 0, 0, 0});
//
// numericUpDown2
//
resources->ApplyResources(this->numericUpDown2,
L"numericUpDown2");
this->numericUpDown2->Maximum = System::Decimal(gcnew
cli::array< System::Int32 >(4) {3, 0, 0, 0});
this->numericUpDown2->Minimum = System::Decimal(gcnew
cli::array< System::Int32 >(4) {1, 0, 0, 0});
this->numericUpDown2->Name = L"numericUpDown2";
this->numericUpDown2->Value
=
System::Decimal(gcnew
cli::array< System::Int32 >(4) {1, 0, 0, 0});
//
// label1
//
resources->ApplyResources(this->label1, L"label1");
this->label1->ForeColor
=
System::Drawing::SystemColors::HotTrack;
this->label1->Name = L"label1";
//
// label2
//
resources->ApplyResources(this->label2, L"label2");
this->label2->ForeColor
=
System::Drawing::SystemColors::HotTrack;
this->label2->Name = L"label2";
//
// serial
//
this->serial->BaudRate = 1200;
this->serial->PortName = L"COM5";
//
// timer1
//
this->timer1->Enabled = true;
this->timer1->Interval = 600000;
//
// label3
//
resources->ApplyResources(this->label3, L"label3");
this->label3->Name = L"label3";
//
// button2
//
resources->ApplyResources(this->button2, L"button2");
this->button2->Name = L"button2";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click
+=
gcnew
System::EventHandler(this,
&Form1::button2_Click);
//
// button3
//
resources->ApplyResources(this->button3, L"button3");
this->button3->Name = L"button3";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click
+=
gcnew
System::EventHandler(this,
&Form1::button3_Click);
//
// button4
//
resources->ApplyResources(this->button4, L"button4");
this->button4->Name = L"button4";
this->button4->UseVisualStyleBackColor = true;
this->button4->Click
+=
gcnew
System::EventHandler(this,
&Form1::button4_Click);
//
// numericUpDown3
//
resources->ApplyResources(this->numericUpDown3,
L"numericUpDown3");
this->numericUpDown3->Increment = System::Decimal(gcnew
cli::array< System::Int32 >(4) {0, 0, 0, 0});
this->numericUpDown3->Name = L"numericUpDown3";
this->numericUpDown3->TabStop = false;
//
// Form1
//
resources->ApplyResources(this, L"$this");
this->AutoScaleMode
System::Windows::Forms::AutoScaleMode::Font;
this->Controls->Add(this->numericUpDown3);
this->Controls->Add(this->button4);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Controls->Add(this->numericUpDown2);
this->Controls->Add(this->numericUpDown1);
this->Controls->Add(this->button1);
=
this->ForeColor = System::Drawing::SystemColors::HotTrack;
this->Name = L"Form1";
this->Opacity = 0.94;
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown1))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown2))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^
>(this->numericUpDown3))->EndInit();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private:
System::Void
button1_Click(System::Object^
sender,
System::EventArgs^ e) {
if(serial->IsOpen == false){
serial->Open();
//funcao para leitura de lixo
int cont;
//Liga o motor servo
serial->WriteLine("\rcim1.pwm.T=96\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim1.pwm0.on(3)\r");
cont+=3;
Sleep(300);
//controla as valuvas solenoide
if((numericUpDown2->Value) == 1)
{
serial->WriteLine("\rcim2.io2.set(1)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown2->Value) == 2)
{
serial->WriteLine("\rcim2.io4.set(1)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown2->Value) == 3)
{
serial->WriteLine("\rcim2.io2.set(1)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim2.io4.set(1)\r");
cont+=3;
Sleep(300);
}
//Regula a temperatura
if((numericUpDown1->Value)
>
20
&&
>=
24
&&
>=
27
&&
(numericUpDown1->Value) <= 23)
{
serial>WriteLine("\rcim1.pwm0.on(4)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 26)
{
serial>WriteLine("\rcim1.pwm0.on(5)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 30)
{
serial>WriteLine("\rcim1.pwm0.on(6)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
>=
31
&&
>=
34
&&
>=
37
&&
>=
41
&&
(numericUpDown1->Value) <= 33)
{
serial>WriteLine("\rcim1.pwm0.on(7)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 36)
{
serial>WriteLine("\rcim1.pwm0.on(8)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 40)
{
serial>WriteLine("\rcim1.pwm0.on(9)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 43)
{
serial>WriteLine("\rcim1.pwm0.on(10)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
>=
44
&&
(numericUpDown1->Value) <= 46)
{
serial>WriteLine("\rcim1.pwm0.on(11)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value) >= 47)
{
serial>WriteLine("\rcim1.pwm0.on(12)\r");
cont+=3;
Sleep(300);
}
MessageBox::Show("");
//termina a funcao de leitura de lixo
for(int i=0; i<cont; i++)
{
System::String^
lixo
=
serial-
>ReadLine();
//
Sleep(200);
}
MessageBox::Show("O
Chuveiro
Inteligente
está ligado.");
}
else
{
MessageBox::Show("Porta com problema.");
}
}
private: System::Void button2_Click(System::Object^
sender, System::EventArgs^
e) {
if(serial->IsOpen == true)
{
//Varivel conta
int cont;
Sleep(300);
serial->WriteLine("\rcim2.io2.set(0)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim2.io4.set(0)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim1.pwm0.on(3)\r");
cont+=3;
Sleep(300);
//termina a funcao de leitura de lixo
for(int i=0; i<cont; i++)
{
System::String^
lixo
=
serial-
>ReadLine();
}
serial->Close();
}
else
{
MessageBox::Show("Porta já está fechada.");
}
}
private: System::Void button3_Click(System::Object^
e) {
if(serial->IsOpen == true)
{
sender, System::EventArgs^
//Le o sensor de temperatura
serial->Write("\rcim2.io1.getadc()\r");
Sleep(100);
System::String^ lixo= serial->ReadLine();
Sleep(100);
System::String^ sensor = serial->ReadLine();
int valor = System::Int32::Parse(sensor);
int valorSensor = valor / 2.048;
(numericUpDown3->Value) = valorSensor;
}
else
{
MessageBox::Show("O chuveiro está desligado.");
}
}
private: System::Void button4_Click(System::Object^
sender, System::EventArgs^
e) {
if(serial->IsOpen == true)
{
//Le e atualiza a temperatura do banho
serial->Write("cim2.io1.getadc()\r");
Sleep(200);
System::String^ lixo= serial->ReadLine();
Sleep(200);
System::String^ sensor2 = serial->ReadLine();
int valor2 = System::Int32::Parse(sensor2);
int valorSensor2= valor2 / 2.048;
(numericUpDown3->Value) = valorSensor2;
int cont;
//controla as valuvas selenoide
if((numericUpDown2->Value) == 1)
{
serial->WriteLine("\rcim2.io2.set(1)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim2.io4.set(0)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown2->Value) ==2)
{
serial->WriteLine("\rcim2.io4.set(1)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim2.io2.set(0)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown2->Value) == 3)
{
serial->WriteLine("\rcim2.io2.set(1)\r");
cont+=3;
Sleep(300);
serial->WriteLine("\rcim2.io4.set(1)\r");
cont+=3;
Sleep(300);
}
//Regula a temperatura
if((numericUpDown1->Value) <= 20)
{
serial->WriteLine("\rcim1.pwm0.on(3)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 23)
{
serial>WriteLine("\rcim1.pwm0.on(4)\r");
cont+=3;
>=
20
&&
Sleep(300);
}
if((numericUpDown1->Value)
>=
24
&&
>=
27
&&
>=
31
&&
>=
34
&&
>=
37
&&
(numericUpDown1->Value) <= 26)
{
serial>WriteLine("\rcim1.pwm0.on(5)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 30)
{
serial>WriteLine("\rcim1.pwm0.on(6)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 33)
{
serial>WriteLine("\rcim1.pwm0.on(7)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 36)
{
serial>WriteLine("\rcim1.pwm0.on(8)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 40)
{
serial>WriteLine("\rcim1.pwm0.on(9)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
>=
41
&&
>=
44
&&
(numericUpDown1->Value) <= 43)
{
serial>WriteLine("\rcim1.pwm0.on(10)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value)
(numericUpDown1->Value) <= 46)
{
serial>WriteLine("\rcim1.pwm0.on(11)\r");
cont+=3;
Sleep(300);
}
if((numericUpDown1->Value) >= 47)
{
serial>WriteLine("\rcim1.pwm0.on(12)\r");
cont+=3;
Sleep(300);
}
//
MessageBox::Show("");
//termina a funcao de leitura de lixo
for(int i=0; i<cont; i++)
{
System::String^
>ReadLine();
//
Sleep(200);
lixo
=
serial-
}
MessageBox::Show("O Chuveiro Inteligente foi
atualizado.");
}
else
{
MessageBox::Show("O chuveiro está desligado.");
}
}
};
}
AssemblyInfo.cpp
#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly:AssemblyTitleAttribute("ChuveiroInteligente")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("Grosko")];
[assembly:AssemblyProductAttribute("ChuveiroInteligente")];
[assembly:AssemblyCopyrightAttribute("Copyright (c) Grosko 2009")];
[assembly:AssemblyTrademarkAttribute("")];
[assembly:AssemblyCultureAttribute("")];
//
// Version information for an assembly consists of the following four values:
//
//
Major Version
//
Minor Version
//
Build Number
//
Revision
//
// You can specify all the value or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly:AssemblyVersionAttribute("1.0.*")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode =
true)];
ChuveiroInteligente.cpp
// ChuveiroInteligente.cpp : main project file.
#include "stdafx.h"
#include "Form1.h"
using namespace ChuveiroInteligente;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew Form1());
return 0;
}
5.2 – POSTAGENS NO WEBSITE
SEGUNDA-FEIRA, 22 DE JUNHO DE 2009
22- 06 "Quanto mais amarga a batalha, mais doce é a vitória!"
Documentação está na etapa final, todo o grupo discute constantemente sobre as possíveis
melhorias que poderiam ter ocorrido, possíveis vantagens do projeto que não foram suficiente
exploradas. É um momento de amadurecimento muito propício para todos, afinal, olhar para trás e
ver o quanto crescemos! Ver que somos capazes de retribuir a sociedade tudo que ela nos deu com
nosso trabalho! Usufluindo de nosso esforço e um pouco de talento.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 16:02 0 COMENTÁRIOS
DOMINGO, 14 DE JUNHO DE 2009
12/06 "Missão dada é missão comprida"
Nesse final de semana prolongado, por causa do feriado, todos juntaram todas as esperanças e
forças em terminar a estrutura! Ficou faltando 2 toquinho de madeira para prender o servo motor(que
irá controlar a temperatura) e aquela clássica limpada para causar boa impressão na apresentação.
A documentação caminhou a largos passos, faltando somente algumas normas da ABNT para
revisar e a releitura de todos os integrantes do grupo.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 07:16 0 COMENTÁRIOS
DOMINGO, 7 DE JUNHO DE 2009
03 - 06 "Nada dignifica mais o homem que o trabalho! Principalmente
depois de feito."
Com o programa finalmente pronto, com todas as funções funcionando, começamos a concentrar
forças nos acabamentos finais(caixa para os circuitos, ajustes finos e testes) e documentação.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 17:43 0 COMENTÁRIOS
QUARTA-FEIRA, 27 DE M AIO DE 2009
23 - 05 "Seria a função do engenheiro vencer o equilíbrio?"
Descobriu-se o problema! Que fazia o circuito parar de funcionar sem motivos aparente, um curto
acontecia no cabo conector e as placas. Foi refeita a ponteira do cabo, e com isso esperamos
resolver definitivamente esse problema. Novamente testado o programa, o circuito continua sem
responder. A base que será usada e os encanamentos estão quase prontros.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 08:34 0 COMENTÁRIOS
22 - 05 "O equílibrio continua, conserta-se uma coisa e a outra quebra
sozinha!"
Com os novos PIC, foram novamente programados.O programa continua sem localizar a porta COM
corretamente, é como se o circuito não reconhece o computador e vice-versa!
POSTADO POR CHUVEIRO INTELIGENTE ÀS 08:22 0 COMENTÁRIOS
DOMINGO, 24 DE MAIO DE 2009
20 - 05 "Nada que é bom vem de graça! "
Conseguimos finalmente fazer o conversor serial funcionar,indentificamos o problema como "mau
instalação do driver" e a falta de um outro cabo que "desenvertia" o sinal serial. Testamos o
programa porém continua sem solução, e os pic ficaram com inveja, pois só o cabo serial estava
recebendo atenção e resolveram não funcionar mais!
POSTADO POR CHUVEIRO INTELIGENTE ÀS 16:57 0 COMENTÁRIOS
DOMINGO, 17 DE MAIO DE 2009
14-05 "Quando vejo a faixa de chegada, percebo que mais um esforço
ainda é necessário!"
Foram testadas todas as placas com o programa, o qual irá controlar todo o sistema, porém,
não foi obtido sucesso, afinal, o programa está com um erro, para detectar a porta de
conecção USB, pois o notebook usado para programar não possui o conector serial usado
como método de comunicação "circuito-computador"(Porém quando testado nos
computadores fornecidos pela PUC que possuem tal conector funcionou como esperado), e
na parte de leitura dos sensores de temperatura(Que aparentemente demonstra ser mais
um erro da própia peça do que do software).
DOMINGO, 10 DE MAIO DE 2009
08 - 05 "Começando a ver a curva da chegada"
Começamos a estrutura pra o chuveiro, o bruto pelos já, e também demos início a idealização de como posicionar as
válvulas, chuveiro e circuitos. O programa recebeu diversas modificações com o intuito de ter maior controle sobre toda
a estrutura
POSTADO POR CHUVEIRO INTELIGENTE ÀS 16:50 0 COMENTÁRIOS
SÁB ADO, 2 DE MAIO DE 2009
28/04 "Curto e grosso"
Foi finalizada a placa da etapa de potência da válvula selonóide de 127V, e ja compramos o material
para a estrutura de apresentação do chuveiro.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 15:03 0 COMENTÁRIOS
SEXTA-FEIR A, 24 DE ABRIL DE 2009
20/04 - "Pensando como um chuveiro..."
Iniciou-se a programação do chuveiro, em C++, com interface amigável. Estamos enfrentando
problemas com o sensor de temperatura do chuveiro, as equações prontas não satisfazem o
problema, nos forçando a contruir uma amostragem de dados para construir a equação a partir de
um gráfico.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 16:54 0 COMENTÁRIOS
SEXTA-FEIR A, 17 DE ABRIL DE 2009
14 - 04 "Nada como um dia após o outro"
Adaptamos os sensores de temperatura, conseguimos testar as placas dos circuitos, com exito. A
placa do módulo M2 teve o pic queimado por motivos ainda não conhecidos e um dos sensores
adaptados não está funcionando corretamente por motivos de imperícia para manipular sua
adaptação.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 17:07 0 COMENTÁRIOS
QUINTA-FEIRA, 9 DE ABRIL DE 2009
06 - 04 "O deus da persistência nos agraciou por nossa intensa
devoção!"
Finalmente o esforço foi recompensado! Desta vez obtivemos sucesso com a corrosão das
placas e a solda de todos os componentes na mesma. Porém, infelizmente, não houve
tempo suciente para todos os testes necessários do material produzido, pois a confecção
das placas foi finalizada quase que no final do dia!
POSTADO POR CHUVEIRO INTELIGENTE ÀS 19:31 0 COMENTÁRIOS
SEXTA-FEIR A, 3 DE ABRIL DE 2009
03 - 04 "Só no dicionário que a palavra sucesso vem antes que
trabalho - Einstein"
Tentamos novamente produzir as plaquinhas, mas novamente não conseguimos realizar os
objetivos, dessa vez porque fizemosu m espelhamento da imagem que não era necessário, fazendo
o circuito ficar invertido. Desta vez não houve aproveitamento decorativo e foi tudo para o lixo!
POSTADO POR CHUVEIRO INTELIGENTE ÀS 20:11 0 COMENTÁRIOS
02 - 04 "Pondo os buracos nos eixos"
Nessa quinta tentamos corroer algumas placas para ja deixar finalizado algumas etapas,
porem não fomos felizes nessa empreitada, pois ao converter a imagem do circuito EAGLE
em pdf, perdemos algumas precisões, principalmente nas 8 perninhas do CI. Não havendo
mais como remediar a situação, acabou-se por deixar como decorativo esse resultado!
Conseguimos realizar as adaptações de isolamento no sensor de temperatura e ja foi
comprado o chuveiro para podermos realizar as necessárias adaptações.
26-03 "Aterrando idéias"
Conseguimos finalmente testar a válvula selonóide, estava sem defeito, porém, sem responder às
instruções do hyperterminal. Enquanto testávamos a válvula o módulo M2 deu alguns problemas, e
após revisar todo o circuito, ficou claro que só não estava aterrado!E, a partir disso, a válvula
solenóide passou a funcionar. Houve a solda da porta de comunicação serial.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 16:24 0 COMENTÁRIOS
25/03 "Indiana Comp em Busca do Motor de Passo Perdido"
Conseguimos dar início montagem do módulo M1, infelizmente não conseguimos testar o
motor de passo, que foi encomendado para ser usado na etapa de potência que alimentará
à válvula solenóide. Conseguimos incrementar ao módulo M2 alguns sensores de
temperatura que já foram testados com sucesso!
POSTADO POR CHUVEIRO INTELIGENTE ÀS 15:58 0 COMENTÁRIOS
QUARTA-FEIRA, 25 DE M ARÇO DE 2009
20/04 "renaming"
Descoberto que o problema do módulo M2 era o *.rename(), começou uma seção de testes, e fomos
muito felizes com a situação, obtendo os resultados almejados. O integrante Tiago conseguiu uma
válvula solenóide, que foi testada, aparte do módulo M2 pois ela consumia muita energia,
necessitando acrescentar uma etapa de potência ao módulo M2.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 10:43 0 COMENTÁRIOS
19/04 "Por falta de 1, agora temos 2"
Nesse dia, com cabos em mãos, começamos a testar o módulo RS232-TTL porém não houve muito
exito, pois não estava aterrado, capacitor com funcionamento improdutivo. O módulo M2 continua
sem funcionar por motivo desconhecido.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 10:38 0 COMENTÁRIOS
"Engatinhando" 18/03
Nas primeiras semanas, após definirmos como certo que o tema do projeto seria o Chuveiro
Inteligente, demos "início as coisas primeiras"e iniciamos a construção e experimentação do módulo
RS 232-TTL que servirá como porta de comunicação do computador e o Chuveiro Inteligente. Demos
início a montagem em protoboard do módulo M2, mas nenhum dos equipamentos montados
puderam ser testados por falta de cabo serial e válvula solenóide.
POSTADO POR CHUVEIRO INTELIGENTE ÀS 10:16 0 COMENTÁRIOS
Descrição Inicial
Chuveiro Inteligente
Esse blog foi criado com o intuito de divulgar as características, problemas, soluções e novidades
mais recentes do projeto integrado ministrado pelo professor Afonso Ferrei Miguel, professor de
Resoluções de Problemas de Engenharia. Como parte integrante de avaliação e de desenvolvimento
de conceitos e métododos que serão continuamente usados para o aprimoramento do nosso primeiro
grande problema acadêmico, o Chuveiro Inteligente.
O projeto será desenvolvidopor :

Carlos Roberto Remenche Junior.

Denis Reimche Ott

Rafael Antonio Grosko
6 – CONCLUSÃO
Esse foi um projeto muito fértil. Digo fértil porque toda a dedicação que foi investida
no trabalho, trouxe frutos de valorosos aprendizados de hidráulica, eletrônica, programação,
maquetaria e organização para desenvolver grandes projetos. A oportunidade de
desenvolver essa idéia, embora precisássemos de mais tempo para conseguir aprimorar
todos os conceitos que a envolvem de maneira mais aprofundada e otimizada, foi
gratificante e proporcionou um amadurecimento dos integrantes do grupo além do
esperado.
Algumas características do nosso projeto poderiam ser melhor implementadas, se
houvesse mais tempo para tal. Um bom exemplo seria o maior quantidade de níveis de
vazão, programamos somente 3 níveis, seria algo como “pouco”, “médio” e “bastante”. Seria
mais interessante ter 10 níveis, traria maior conforto a escolhas de vazão. Outro ponto que
poderia ser otimizado seria um controle e um método para aquecer a água até a
temperatura desejada mais rápida, desperdiçaria menos água enquanto espera-se a
transição da escolha.
Todo o grupo espera que se alguém resolva dar continuidade ao nosso projeto,
que comece focando formas mais inteligentes de disposição das peças, a fim de
economizar espaço. Pesquise e manuseie um catálogo de peças hidráulicas, para adquirir
valorizada familiaridade com o mesmo. Isso poupa tempo, ajuda a enxergar soluções mais
eficazes de encanamento e a economizar não comprando sobressalentes.
Ressalto sobre a importância das peças hidráulicas, pois foi a dificuldade principal
do grupo, como todos eram da mesma área, ninguém tinha a familiaridade necessária com
a área, e isso trouxe dificuldades imediatas como um todo.
É um projeto extremamente interessante, de uso cotidiano, que traria perceptíveis
melhorias para as pessoas de um modo geral. Foi uma experiência enobrecedora ver o
quanto de trabalho está por fazer para melhorar as condições da nossa sociedade, e esse
foi só um deles.

Documentos relacionados

documentação - microprocessadores.com.br

documentação - microprocessadores.com.br PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO

Leia mais

Relatório Final

Relatório Final limitadas aos objetivos a cima citados, sempre buscando o aperfeiçoamento através de sugestões e observações não só professores, mas também colegas de curso. Para a implementação deste projeto será...

Leia mais