Ir ao conteúdo
  • Cadastre-se
Wesley Axel

Ajuda - TCC Mecatrônica

Recommended Posts

Boa tarde, venho aqui com o intuito de pedir ajuda para a verificar se meu projeto de TCC, feito em linguagem C, para o PIC 16F628A, está correto.

O projeto é uma janela automatizada, com cerca de 6 sensores(1 Sensor de chuva com contato NA,4 sensores de fim de curso com contato NA,e 1 Timer programável de contato NA),onde cada sensor iria ativar um motor quando seu contato estivesse fechado, e 4 botões, um para cada relé do motor, onde cada motor possui 2 relés, onde um ativa a rotação normal, e o outro a rotação inversa.

Segue em destaque meu programa feito até agora, onde após a gravação no PIC, e interligado ao circuito, não ter funcionado corretamente.


void main() {
trisa = 0b11111111;
trisb = 0b11110000;
portb = 0b00000000;
//////////////////////////ENTRADAS //
//ra0-Sensor de Chuva // Pino -17 //
//ra1-ra2- Sensor fim de Curso 1 e Sensor fim de curso 2 // Pino - 18 e 1 //
//ra3-ra4- Sensor fim de Curso 3 e Sensor fim de curso 4 // Pino - 2 e 3 //
//ra6- Timer // Pino 15 //
//rb4- Botão Abre Vidro Pressionado ?// Pino 10 //
//rb5- Botão Fecha vidro pressionado ?// Pino 11 //
//rb6- Botão Abre Aço pressionado? // Pino 12 //
//rb7- Botão Fecha Aço pressionado? // Pino 13 //
//////////////////////////SAIDAS //
//rb0-rb2- Motor Sentido Abrir // Pino 6 e 8 //
//rb1-rb3- Motor Sentido Fechar // Pino 7 e 9 //
//Pino 6 e 7 - Motor Aço //
//Pino 8 e 9 - Motor Vidro //

while(1){
if(porta.ra0==0){ //Sensor de Chuva
if((porta.ra1==0)&(porta.ra2==0) & (porta.ra3==0)&(porta.ra4==0)) //Sensor fim de Curso 1 e Sensor fim de Curso 2
portb = 0b00000101;}
else
portb = 0b00000000;
}
if(porta.ra6==0){ //Timer
if((porta.ra1==1)&(porta.ra2==1) & (porta.ra3==1) & (porta.ra4==1)) //Sensor fim de Curso 1 e Sensor fim de Curso 2 Fechados e Sensor fim de curso 3 e sensor fim de curso 4 abertos
portb = 0b00001010;
else
portb = 0b00000000;
}
while(1){
if(portb.rb4==0){ // Botão abre vidro pressionado?
portb = 0b00000100;}
else
if(portb.rb5==0){ // Botão fecha vidro pressionado?
portb = 0b00001000;}
else
if(portb.rb6==0){ // Botão abre aço vidro pressionado??
portb = 0b00000001;}
else
if(portb.rb7==0){ // Botão fecha aço pressionado?
portb = 0b00000010;}
}
}

Segue em anexo o fluxograma do projeto.

20131101_173759.jpg

20131101_173809.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites
Segue em destaque meu programa feito até agora, onde após a gravação no PIC, e interligado ao circuito, não ter funcionado corretamente.

O que seria exatamente não ter funcionado corretamente? Qual parte? os sensores não passam os comandos? O PIC está recebendo os comandos mas não executa o que deveria ser feito? Ou ele executa mas de forma errada, fora de ordem, ao contrário....

Está muito vago o seu questionamento.

Falou

Compartilhar este post


Link para o post
Compartilhar em outros sites
O que seria exatamente não ter funcionado corretamente? Qual parte? os sensores não passam os comandos? O PIC está recebendo os comandos mas não executa o que deveria ser feito? Ou ele executa mas de forma errada, fora de ordem, ao contrário....

Está muito vago o seu questionamento.

Falou

Peço perdão pelo meu erro, o PIC está recebendo o sinal dos comandos, mas não executa conforme o pedido, apenas o primeiro comando do TIMER está funcionando, os outros não estão funcionando conforme o programado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, me parece que você esta programando no microC, correto???

na sua programação falta a configuração do "cmcon" e do "intcon"

se não for usar interrupções nem o comparador interno configure assim


intcon=0x00;
cmcon=0x07;

isso logo abaixo da configuração do trisa

outra coisa é que você tem um while(1) dentro de outro while(1), por isso ele vai ficar executando apenas uma coisa, e nunca, jamais a outra, com quase toda certeza deve estar ai o erro

flowwww

Compartilhar este post


Link para o post
Compartilhar em outros sites
cara, me parece que você esta programando no microC, correto???

na sua programação falta a configuração do "cmcon" e do "intcon"

se não for usar interrupções nem o comparador interno configure assim


intcon=0x00;
cmcon=0x07;

isso logo abaixo da configuração do trisa

outra coisa é que você tem um while(1) dentro de outro while(1), por isso ele vai ficar executando apenas uma coisa, e nunca, jamais a outra, com quase toda certeza deve estar ai o erro

flowwww

Obrigado, irei fazer as alterações no programa e segunda testarei para ver se funcionou corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×