Ir ao conteúdo
  • Cadastre-se

Ajuda - TCC Mecatrônica


Wesley Axel

Posts recomendados

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

Link para o comentário
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

Link para o comentário
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.

Link para o comentário
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

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...