Go Down

Topic: Contador de passagem... (Read 8644 times) previous topic - next topic

rafa_mazali

Pessoal a idéia é a seguinte,

Estou querendo construir um contador de passagem para contar objetos quando eles passarem pelo foto-transistor interrompendo o feixe de luz

O contador teria que ser meio rápido, pois a idéia é a seguinte: no meu trabalho eu conto muitos resistores que vem todos em uma "cinta"

eu queria construir um mecanismo que puxasse essa cinta e quando os resistores passarem interrompendo o feixe de luz no foto-transistor

o arduino interpretasse como tivesse passado uma unidade, e assim conforme o mecanismo for rodando a cinta ele iria contando os resistores nela

a informação seria apresentada num lcd 16x2,,

alguem teria ideia como funcionar o foto-transisitor no arduino ?

obrigado


rafa_mazali

cara é mais ou menos isso sim, só que nem precisa cortar a fita não

é só contar quantos tem mesmo e me mostrar a informação no lcd..

é bem mais simples de fazer,,,

estou pensando no projeto aqui,,

qualquer ajuda é bem vinda..

qualquer novidade eu posto para vocês

ViniciusPolo

Nos exemplos acima nao está contando diretamente como vc quer no seu projeto.
Provavelmente eles usaram motores de passo e determinaram quantos passos eram necessarios para atingir a quantidade de componentes.
Seu projeto apesar de parecer simples nao é, primeiro o tamanho dos resistores é pequeno. Geralmente os leds de ifravermelho que se usa para esse sensor sao maiores que os resistores, sendo que nao seria preciso toda vez que um resistor passar na frente interromper o feixe.
O que eu pensei que vc poderia fazer é utilizar os de um mouse das anitgas, sao bem pequenos e faceis de achar.
Vc nem precisa soltar eles da placa, apenas corte ela e deixe eles soldados e pegue um ferro de solda e solde nos 5 pinos que serao.
De um lado existe o LED emissor com dois pinos, um deles é positivo e o outro negativo. para descobrir será na base do teste.Lembre de colocar uma pequena resistencia em um desses pinos para o led nao queimar, pode ser de 220R.
O outro é um fototransistor com 3 pinos, um sendo positivo, outro negativo e outro vc liga na entrada digital do arduino.
Alimente o sistema com 5v, pode usar do arduino mesmo.
Basicamente vc vai ficar lendo essa entrada digital mas é recomendado vc utilizar alguma tecnica para achar a média de leituras, pois sempre acontece de algum probleminha e tipo quando o led passar contar duas vezes e tals, vai ter que ajustar o tempo dessa média de acordo com a velocidade.
Enfim, nao é simples como parece.
Recomendo que vc primeiro comece apenas enviando uma mensagem para a serial quando simular um resistor passando, para depois avançar. Teste sem média mesmo para ver se é preciso o bastante para nao precisar, ou se precisar o tempo que essa media precisa ser.
Caso vc nao tenha nenhum mouse pode comprar um sensor no ML como esse ou ainda um led emissor e um foto transistor (TIL 32 e TIL 78? ) e usar como uma mascara na frente um papel com um pequeno furo.
http://produto.mercadolivre.com.br/MLB-206452554-h22a1-phct103-foto-interruptor-p-microcontrolador-pic-atmel-_JM
Qualquer coisa que vc nao entendeu basta postar que eu explico.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

E ai vinicius beleza?
Cara vi que voce é de ribeirao preto,.. sou daqui também , legal saber que tem mais gente por aqui,,
quanto ao projeto, estou pensando em usar os TIL mesmo,, ja tenho um parzim aqui de 3 mm portanto,
acho que fazendo tipo um tubinho com uma mascara na ponta deles, da pra deixar um feixe bem fininho garantindo uma precisão maior, o que acha?
estou trabalhando na parte mecânica da coisa pra depois ir pra parte eletronica,,
o que eu sou um pouco "crú" é na parte de programção do arduino,, no caso como eu faria para ele fazer a contagem, seria usando o incremento
não tenho muita ideia de programção não
se puder me ajudar eu agradeço.
outra coisa, no fototransistor eu ligaria ele nos 5v com um resistor e o mesmo terminal iria para a porta do arduino? assim ele comuta entre nivel
lógico 0 e 1 soltando os 5v?
muito obrigado pela ajuda cara

ViniciusPolo

Legal, nem tinha visto que vc é de Ribeirao.
Pode tentar fazer exatamente como vc pensou com tubo e uma mascara na ponta. Mas eu nao sei se um feixe fino assim é suficiente para ativar o fototransistor, qualquer coisa vc pode usar uma entrada analogica ao inves de uma digital. Mas começe pela parte mecanica depois de tudo montado fica muito mais facil testar.
Vc pode ligar o fototransistor como vc disse para a entrada digital.
A parte de programaçao acho que é bem tranquila.
Vc apenas vai ler a entrada digital ou no caso analogica, e se estiver LOW vai adicionar +1 na variavel. Depois que tiver a parte mecanica montada posta novamente que explico a parte de programaçao, melhor ir fazendo em partes.
Uma dica é se vc precisar de componentes ao inves de ir na Radiolar que é muito cara, siga na mesma rua mais uns 4 quarteiroes sentido a Francisco, vai achar uma loja amarela chamada Tecnohelp, lá é tudo bem mais em conta.
Vc pretende exibir através de LCD ou do computador a contagem?
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

Então vinicius, valew pelas dicas,,

pois é nem passo perto da radiolar, os caras exploram mesmo, só quando não tem jeito mesmo, constumo compra na tecbel e na tecnohelp tambem
conheço o ismael qua trabalha lá, ja trabalhei com ele,rs
ele faz uns preços legal,,kk

entao estou pretendendo exibir a contagem em um lcd 16x2 pra ficar mais autônomo sem precisar de pc,,

acredito que com a parte da contagem pronta, não sera problema exibir as informações no lcd..

outra coisa teria como eu colocar um botão tipo reset pra zerar a contagem?

me fala uma coisa você ja procurou atmega 328 aqui em ribeirao? uma vez o meu queimou e eu precisei trocar, nem achei só no mercado livre mesmo..

mais uma vez obrigado pelas dicas, logo logo posto umas fotos do mecanismo pra voce ver..rs


ViniciusPolo

Nunca procurei ATmega aqui, só PICs mesmo. Não sabia que era dificio de encontrar e nao sei onde possa encontrar.
Sim, é bem simples adicionar botoes e programaçao no Arduino.
Vc já tem o Arduino ou pretende usar um chip na protoboard?
Se quiser ja pode começar a fazer um contador exibindo na serial caso ainda nao tenha o LCD, é bem facil e tranquilo.
Quando quiser diga que passo um exemplo com botao incrementa e outro reset, depois basicamente é substituir o botao incrementa pelo fototransistor.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

cara ja tenho o arduino sim,

se voce puder me passar esse esquema ja me ajudaria muito,,

depois é so trocar o botao pelo fototransistor,,

o lcd depois é facil colocar tambem né

rafa_mazali

mais uma coisa..

como é o esquema de ligação do foto transísitor, só tenho um e to com medo de queimar rs

devo ligar um terminal ao terra e o outro nos 5v com resistor? e o pino ligado nos 5v é o que vai no arduino?

ViniciusPolo

#10
Oct 24, 2011, 05:14 am Last Edit: Oct 24, 2011, 05:18 am by ViniciusPolo Reason: 1
Olá.
Vamos começar com o exemplo do botão que é simples e facil de entender, e seu projeto é basicamente isso.
Vc vai precisar de um botão e um resistor de 10k.
Ligue os botao como nessa imagem na entrada digital 2 e o outro na 3.



Feito isso conecte seu Arduino e abra o Arduino IDE.
Tente colar o seguinte código:


const int botaoIncrementa = 2;//Definindo um nome para o Pino onde o botao incrementar está conectado, nesse caso Pino Digital 1. Apenas um regra para facilitar e nao precisarmos sempre lembrar em qual pino está conectado cada botao
const int botaoReset = 3;     //Definindo um nome para o Pino onde o botao incrementar está conectado, nesse caso Pino Digital 1
int numeroResistores = 0;     //Cria a variavel onde vamos armazenar o numero de resistores, e ja atribui o valor zero para ela

void setup() {
  pinMode(botaoIncrementa, INPUT);//Definindo o pino do botao como entrada
  pinMode(botaoReset, INPUT);     //Definindo o pino do botao como entrada
  Serial.begin(9600);             // Inicia a comunicaçao serial, vamos usar para enviar o numero de resistores
}

void loop(){         //Funcao princiapl que vai ser um loop infinito

  if (digitalRead(botaoIncrementa) == HIGH) {  //Checa se o botao incrementa está apertado, caso esteja executa o que está dentro das cheves do if
  numeroResistores++; //Esse comando incrementa o numero de resistores em 1
  Serial.print("Numero de resistores = ");//Imprime na serial essa mensagem
  Serial.println(numeroResistores);//Imprime na serial o valor da variavel, no caso numeroResistores. ln no final indica que depois da mensagem vai pular uma linha
  }
 
  if (digitalRead(botaoReset) == HIGH) {  //Checa se o botao reset está apertado, caso esteja executa o que está dentro das cheves do if
  numeroResistores = 0; //Reseta o numero de resistores para zero
  Serial.print("Numero de resistores resetado para = ");//Imprime na serial essa mensagem
  Serial.println(numeroResistores);//Imprime na serial o valor da variavel, no caso numeroResistores
  }
  delay(1000);//Espera um segundo antes de verificar novamente, esse tempo vc pode variar para evitar de checar duas vezes, pois o microcontrolador é capaz de checar milhares de vezes por segundo.
  //Se vc deixar de colocar esse tempo um simples pressionar de 100 milissegundos é suficiente para incrementar em mil o numero de resistor. Depois vc terá de ajustar com o seu equipamento funcionando para o melhor tempo
}




Se nao conseguir vou anexar o arquivo compactado do projeto, basta descompactar e abrir com o Arduino IDE.
Acabei errando nesse codigo anexado os pinos dos botoes, mude de 1 e 2 para 2 e 3 como no codigo desse post que está certo.
Não esqueça de abrir o serial monitor em Tools para ver as mensagens.
Qualquer duvida me diga.
E vamos continuar.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

vinicius

o código deu certim, funcionou legal

só vai faltar configurar o tempo de espera quando tudo tiver montado para ajsutar melhor

agora só falta a parte dos TIL e do Lcd,

me fala uma coisa, o TIL tem velocidade de "chaveamento" rápida o suficiente para poder passa os resistores em uma velocidade até razoável?

se não a contagem sera muito lenta...


rafa_mazali

cara fiz um teste aqui colocando o fototransistor ao invez do botao..

na hora que eu coloco o foto no pino 2 ele dispara a contagem diretao igual doido,, mesmo sem voltagem no pino..

o que pode ser isso,, ai depois que eu tiro o fio do pino 2 e coloco o fio do push bottom ele fica normall

ViniciusPolo

Olá.
Esse problema me parece que vc colocou o fototransistor invertido. Mas nao tenho certeza pois eu uso de maneira diferente meus botoes, nao como essa figura que postei do teste.
Melhor mesmo é vc testar eles separados antes para ter certeza que estao funcionando, pois muitos dos que comprei vieram queimados.
Primeira coisa para testar o emissor que é o escuro, ligue ele como se fosse um led. Perna maior no positivo a outra num resistor de 220R ou mais e o resistor no negativo. Depois use uma webcam para ver se ele acende ou nao, pois é invisivel ao olho humano.
Vou fazer o teste do fototransistor aqui na minha protoboard e depois montar como eu faço o botao e te envio uma foto.
Estou meio ocupado, mas acho que até amanha consigo.
Se estiver com pressa pode procurar na net depois tirar duvida.
Sobre o tempo eu nunca testei, pois quando usei o fototransistor no meu TCC eu nao precisava de acionar rapidamente. Só testando mesmo. :D
Vai postando os problemas e fazendo a parte mecanica.
Até.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

ok vinicius

fiz uns testes aqui, liguei o coletor do transistor nos 5v direto, ai no emissor coloquei o resistor de 10k aterrando e mandei o emissor para a entrada digital 2, continuava disparado, mas ai fiz um teste inverti a leitura digital de if (digitalRead(botaoIncrementa) == HIGH, troquei por LOW, e resolveu, ele conta somente quando interrompe o feixe, mas se puder poste para mim como voce faria somente para eu ter uma ideia melhor, estou terminado a parte mecanica, ainda falta testar se da para fazer um feixe bem fino para o led interromper,, e depois testar a velocidade. Com tudo pronto só vai faltar o lcd

aguardo seu comentario

e mais uma vez obrigado pela ajuda..

Go Up