Ajuda sobre um projeto simples de verificar continuidade

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ajuda sobre um projeto simples de verificar continuidade

Mensagempor kyonak » 28 Set 2007 18:20

PEssoal é o seguinte
to precisando desenvolver um programa em PIC que é simples porem to quebrando a cabeça pra fazer ele pq to a muito tempo sem praticar


O sistema consiste em testar a continuidade de 2 fios paralelos e identificar erros caso exista

ele tem que funcionar marromeno assim


sao 2 soquetes em que de 1 lado coloco 2 pontas do fio e do outro lado as outras 2 pontas
nisso o sistema tem que verificar e me dizer se está tudo OK, se está em curto, invertido ou se um deles está aberto.


Alguem possui alguma idéia de como eu faço para fazer essa verificação??


como faço para o PIC identificar que as vias foram invertidas ou estão em curto

a idéia ja ta valendo, o código eu me viro

Obrigado
kyonak
Bit
 
Mensagens: 9
Registrado em: 03 Dez 2006 20:53

Mensagempor phophollety » 29 Set 2007 02:44

Pode fazer de diversar maneiras...

Ligar um fio por vez, enviar o sinal por uma IO e ler pelo outro, ver se o que manda chega,

Ligar os dois fios ao mesmo tempo, usando tensão diferencial por exemplo +10V em um fio e -10V em outro e medir isto, claro, neste caso terá que ter uma eletrônica analógica te auxiliando.

Também pode ficar invertendo os fios, por exemplo, manda 0 e 1 e verifica se chegou 0 e 1 depois manda 1 e 0 e verifica se chegou 1 e 0 eu creio que o último caso é mais simples, só tomaria o cuidade de usar 4 portas sim, suas para saida dua para entrada, na saida ligue um R de 470R por ai e depois na entrada outro R, se for fazer em Assembler pode fazer assim:


Supondo que vai usar os IOs RA0 e RA1 com tx e RB0 e RB1 com RX

movlw b'00000001'
movwf porta ; envia o teste

movf portb,w ; le o resultado do portb, carrega no work
xorlw b'00000001' ; faz o xor

btfss status,z
; se forem iguais o resultado será 0, então o status, z será 1
goto teste2 ;está certo, vai para o teste 2
goto erro ; incorreto, trata o erro

pode repetir isto várias vezes, manda por uma porta, lê por outra, tanto "cabo quebrado" com "curto no cabo" podem te dar a mesma ou diferentes indicações.

E ai, deu uma luz?
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor marcospaf » 29 Set 2007 09:20

cara beleza?? é super simples ma verdade você quer fazer uma giga de testes para os cabos .

bom as pontas de entrada você liga no pic , ou seja , por exemplo como são 2 fios ligue no portb,0 e portb,1

A saida ou seja a continuação do fio liga cada um em leds em serie com um resistor de 1k . se alimentar a 5volts fica tranquilo para ver.

ja o programa você deve fazer ele "pulsado" , ou seja : você da um pulso no primeiro cabo depois de 1 segundo da um pulo de 5volts no segundo cabo e assim por diante se possuir mais cabos.

Com isso você vai verificar , continuidade e ligação do cabo !!! valeu??

um abração
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor Doglao » 29 Set 2007 15:48

Se voce for usar por exemplo o portB para fazer isso, voce vai testar 4 fios , voce primeiro coloca pullups no portB e depois faz uma varredura, coloca 0 no b,0 e le os outros pinos, depois voce coloca 0 no b,1 e o b,0 voce coloca 1 denovo e le o restante depois voce coloca 0 no b,2 e os outros pinos em 1, e le os outros pinos denovo, voce vai ler os valore e mostrar os pinos que se modificaram, em um display ou outro metodo. assim voce pode identificar os pinos que fazem curto entre si, dai eh so voce atravez do programa identificar os pinos e dizer se estao de acordo. Por conencidencia estou fazendo um equipamento que testa continuidades em cabeamentos, e vai ter 1024 pontos para provar mas agora to usando soh 64, da uma olhada no video que fiz do cara.
http://www.youtube.com/watch?v=mFM_-Zk7Vv8
esta em fase de construcao, mas a varredura identifica perfeito os pinos que estao em curto e ja esta quase terminada a parte que compara os pinos com a sequencia que quero que prove, e vai mostrar se tem inversao, nao continuidade, se tem mais contatos (curto), e pontos que nao estao programados vao ser identificados tambem para seguranca tipo se conectaram errado na carta de pinos e estes pinos nao estao na secuencia de programacao.
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor kyonak » 29 Set 2007 20:06

Pessoal, obrigado pelas dicas

phophollety
eu até pensei em várias coisas que você falou, mas como disse eu tenho que ligar um par de cabos que na verdade é um cabo de celular que será testado, o teste tem que ser bem rápido e verificar tudo em tempo real sem a necessidade de apertar nenhum botao já que a produção são de 500 cabos por hora
estava pensando em usar a saida e entrada analogica do 16F628A
eu nunca fiz isso
mas pensei em um eu enviar 3v e o outro 2v
se ele receber ao contrário no final é pq ta invertido
se receber ok os 2 no final é pq está OK
se nao receber o 3v ou 2v é pq o sistema está aberto
agora o curso eu ainda nao sei como verificar, nisso tenho que ver os testes de como vou me sair caso eu curto circuite 3x e 2v

só pra ter idéia a giga de teste tem que ter 4 LEDS
Aprovado
Aberto
Curto
Invertido

além disso tem que ter um sinal sonoro que vai ser um sinal estridente caso o cabo esteja ruim e baixo caso o cabo esteja aprovado (mas isso é moleza de fazer).
kyonak
Bit
 
Mensagens: 9
Registrado em: 03 Dez 2006 20:53

Mensagempor fabim » 29 Set 2007 20:55

phophollety escreveu:Também pode ficar invertendo os fios, por exemplo, manda 0 e 1 e verifica se chegou 0 e 1 depois manda 1 e 0 e verifica se chegou 1 e 0


eu mesmo não teria pensado melhor..

amiguinho. Essa dica do fofolete, é a solução para seus problemas.... Use um pouquinho de imaginação como o fofolete usou e vai ter a solução prontinha.

Abraços

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Doglao » 29 Set 2007 21:32

se for mesmo testar somente dois fios, nem precisa microcontrolador somente faz o contato de uma estremidade em positivo e o outro em negativo usando 5volts por exemplo e na outra estremidade voce usa dois leds um verde e outro vermelho, o anodo do led verde voce junta com o catodo do led vermelho e o catodo do led verde voce junta com o anodo do led vermelho, entao o positivo vai ao anodo do led verde com uma resistencia de 470ohms e o negativo vai ao catodo quando voce ligar a mesinha de teste, voce coloca o cabinho e quando acender o led verde e que ta ok, se nao acende nada, entao esta sem continuidade se acende o led vermelho e que esta invertido.
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor fabim » 29 Set 2007 21:41

boa.. igualim aquelas pontas de teste para usb frontal de PC.
Se voce não ter necessidade de apontar curto....
Código: Selecionar todos

 ----|<---------
                     -------/\/\/\/\--------
----->|---------


isso aí que o doglão disse..

mais so serve para inspeção visual..

abraços

fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Doglao » 29 Set 2007 21:57

ja ia me esquecendo para o curto voce coloca um led amarelo com uma resistencia de 470ohms do lado que entra os 5 volts nos contatos energizados dai ele sempre vai estar aceso, se voce coloca um cabo em curto este led amarelo vai se apagar nao se esqueca de colocar uma resistencia limitadora de corrente na saida da fonte para o teste de curto nao forcar a fonte ou fazer um estrago.
Barato, simples e Just in Time o teste.
Editado pela última vez por Doglao em 29 Set 2007 23:06, em um total de 1 vez.
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor Doglao » 29 Set 2007 22:00

se for melhorando voce usa optos no lugar dos leds e voce pode acionar um rele que aciona una sirene, ou lampada ou electrovalvula para cada caso do problema
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor Doglao » 01 Out 2007 13:26

Ola! disponibilizei um esqueminha usando puramente leds e resistencias para testar cabos de duas vias, ele testa se esta em curto, inversao e nao continuidade mostrando qual dos dois fio esta sem continuidade e finalmente teste ok!
Como sugeri en posts anteriores pode usar optos e as saidas ligadas a uma electrovalvula ou solenoide que abre uma porta para ir colocando os cabos bons e ruins em caixas separadas para cada caso, e colocar uma painel com indicacoes tipo "INVERSAO", "CURTO", "OK" , e tambem a um microcontrolador mostrando as mensagems em um display, e com saida a uma impressora que gera um codigo de barras contendo a data hora, a mesa de teste , o turno e um numero serial em uma etiqueta autocolante e colocar-la no chicotinho, e programar para fechamento de embalagem, por exemplo a cada 500 chicotinhos emitir a ultima etiqueta do chicote e uma de caixa para embalagem com outras infomacoes mais.
http://rapidshare.com/files/59543561/teste2vias.bmp
ai esta o link com a foto do esqueminha.
abcs
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor kyonak » 02 Out 2007 11:47

Doglao, muito obrigado
vim aqui postar que consegui fazer hoje mesmo e está funcionando perfeitamente
Eu fiz foi diferente no sentido que eu mando o Microcontrolador ficar vendo se recebe sinal positivo na porta B6 e B7
nisso eu faço contagem de pulsos e verificro se o B6 recebeu 3 vezes o pulso e se o B7 2 vezes
se o B6 = 3 pulsos e o B7 = 2 pulsos ta tudo OK
se o B6 = 2 pulsos e o B7 = 3 pulsos ta invertido
se o B6 = 3 pulsos e o B7 = 0 ou B6 = 0 e B7 = 3 e outras variações com algumas das portas com 0 pulsos ele está aberto

se o B7 ou B6 = 5 pulsos é porque ta em curto

nisso eu ainda coloquei um apito, aqueles apitozinhos de aviso de saida de carro para que se estiver OK ele apite igual a um grilo e se estiver ruim ele de um apito contínuo de 200ms

assim eu consigo detectar todos os tipos de erro
ps: os leds só acendem caso exista algum cabo conectado
como a possibilidade do cabo estar com as 2 vias desconectadas é praticamente 0 eu deixo ele ativar quando o B6 ou B7 recebem algum pulso
tive que colocar 2 diodos também nas portas que enviam os pulsos porque quando eu curto circuitava o PIC travava.

de qualquer forma agradeço a todos e quem precisar do código...


#include <16F628a.h>
#use delay(clock=20000000)
#fuses INTRC_IO, NOPROTECT, PUT, NOMCLR,NOWDT,BROWNOUT,NOLVP
void main()
{

int i, PINOB6, PINOB5, apitar;
// B1 = B6
// B2 = B5



while(true)
{
output_high(PIN_B1);// Pino B1 de envio de sinal Ligado
output_high(PIN_B2);// Pino B2 de envio de sinal Ligado

output_low(PIN_A0);// Pino de LED Desligado
output_low(PIN_A1);// Pino de LED Desligado
output_low(PIN_A6);// Pino de LED Desligado
output_low(PIN_A7);// Pino de LED Desligado
apitar = 0;

while ((input(PIN_B6)==1) || (input(PIN_B5)==1))
{
delay_ms(100);
PINOB6 = 0;
PINOB5 = 0;

output_high(PIN_B1);
output_low(PIN_B2);
for (i=1; i<=3; i++)
{
if (input(PIN_B6)==1)
{
PINOB6 = PINOB6 + 1;
}
if (input(PIN_B5)==1)
{
PINOB5 = PINOB5 + 1;
}
}

output_low(PIN_B1);
output_high(PIN_B2);

for (i=1; i<=2; i++)
{
if (input(PIN_B6)==1)
{
PINOB6 = PINOB6 + 1;
}
if (input(PIN_B5)==1)
{
PINOB5 = PINOB5 + 1;
}
}

if ((PINOB6==3) && (PINOB5==2)) // Verifica OK
{
output_high(PIN_A6);
output_low(PIN_A0);// Pino de LED Desligado
output_low(PIN_A1);// Pino de LED Desligado
output_low(PIN_A7);// Pino de LED Desligado

output_high(PIN_B4);
delay_ms(2);
output_low(PIN_B4);
delay_ms(5);
output_high(PIN_B4);
delay_ms(2);
output_low(PIN_B4);
delay_ms(5);
output_high(PIN_B4);
delay_ms(2);
output_low(PIN_B4);
delay_ms(5);
apitar = 0;

}else
if ((PINOB5==3) && (PINOB6==2)) //Verifica Invertido
{
output_high(PIN_A7);
output_low(PIN_A0);// Pino de LED Desligado
output_low(PIN_A1);// Pino de LED Desligado
output_low(PIN_A6);// Pino de LED Desligado
if (apitar==0)
{
output_high(PIN_B4);
delay_ms(200);
output_low(PIN_B4);
apitar = 1;
}
}else
if (((PINOB5==3) && (PINOB6==0)) || ((PINOB5==2) && (PINOB6==0)) ||
((PINOB5==0) && (PINOB6==2)) || ((PINOB5==0) && (PINOB6==3)) ) //Verifica Aberto
{
output_high(PIN_A1);
output_low(PIN_A0);// Pino de LED Desligado
output_low(PIN_A6);// Pino de LED Desligado
output_low(PIN_A7);// Pino de LED Desligado
if (apitar==0)
{
output_high(PIN_B4);
delay_ms(200);
output_low(PIN_B4);
apitar = 1;
}
}else if ((PINOB6==5) || (PINOB5==5)) //Verifica Curto
{
output_high(PIN_A0);
output_low(PIN_A1);// Pino de LED Desligado
output_low(PIN_A6);// Pino de LED Desligado
output_low(PIN_A7);// Pino de LED Desligado
if (apitar==0)
{
output_high(PIN_B4);
delay_ms(200);
output_low(PIN_B4);
apitar = 1;
}

}

output_high(PIN_B1);// Pino B1 de envio de sinal Ligado
output_high(PIN_B2);// Pino B2 de envio de sinal Ligado

}
}
}

eu fiz em C porque é bem mais fácil e nao tenho motivos para fazer em assembler
não cheguei a criar funções, preguiça mesmo.
kyonak
Bit
 
Mensagens: 9
Registrado em: 03 Dez 2006 20:53


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x