{SOLUCIONADO} [AGRADECIMENTOS]Medir altura de um elevador em metros.

Olá Galera,

     Um amigo por quem tenho grande estima, trouxe para falar comigo um amigo de faculdade dele que tá concluindo curso e tá pra fazer TCC.

     O TCC dele é medir a altura em que um elevador se encontra do chão em metros.

      Inicialmente achei a proposta muito facil,  bastaria colocar sensores nos andares e cada vez que o elevador pasasse por eles, daria o andar e por conseguinte a altura.

      Mas ai veio o balde de água fria,  a proposta é medir o deslocamente do elevador, indicando em um visor, metro a metro quando o elevador se desloca subindo ou descendo,  logo, em um predio real, teria que ter sensor pra caramba pra indicar metro a metro.

       Proposta B,  colocar um sensor ultrasonico pra medir a distancia do chão até o elevador e dar o resultado, BALDE DE ÁGUA FRIA 2.0 -  o sensor ultrasonico do arduino só mede até 4 metros, dai numa maquete daria perfeito,  mas o trabalho dele é em um elevador real,  e ai o sensor ultrasonico foi descartado.

       Proposta C,  colocar um sensor de pulsor na roldada do cabo do elevador, ele contaria numero de voltas e a gente transformaria em metros. BALDE DE ÁGUA FRIA 3.0-  O pessoal da segurança do predio não nos deixou ter acesso.

        Proposta D, Parti então para o sensor BMP085 que possui a função altimetro(mandei vir no inicio do ano uma porrada de trekinho pra o arduino da china e tinha esse sensor pra aprender a usa no meio da minha bagunça).  montei um altimetro.   BALDE DE ÁGUA FRIA 4.0-  o resultado foi sofrível,  ele oscila pra caramba,  fiz até a estabilização com leitura de média, mas mesmo assim ele oscila demais, até com ele parado ele fica indicando que o elevador tá subindo e descendo,   resultado , não deu! e acabaram minhas ideias !!!

        Resumindo,  tô precisando da ajuda de vocês, tomei o desafio como pessoal,  e tô querendo ajudar o carinha de verdade.

    

        O lance é medir a altura em que o elevador esta em relação ao chão,  a precisão não precisa ser algo absurdo,  algo como uns 3 a 5 cm ( eu disse centimetro e não milimetros ok)  daria de bom tamanho.

      Então galera, podem me ajudar ?

Exibições: 5858

Responder esta

Respostas a este tópico

Olá pessoal.

Gostei da proposta do projeto.

Conforme nosso amigo Asimov (o Ricardo). (também gosto das histórias dele. ^^), a maioria dos projetos que conheço usam o acelerômetro e o giroscópio. E pensando nos sensores não existem nenhuma complicação em usá-los, "mas" deve-se usar alguns conceitos matemágicos e físicos para os cálculos. Basta saber o conceito de integrais e derivadas.

[Link do Ricardo] http://www.decom.ufop.br/imobilis/?p=1931

[Application Note Freescale] http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

E "pensando por cima" não é preciso comprar hardware para começar à fazer alguns testes. Basta ter um smart phone com Android e utilizar alguns aplicativos. Pois o Smart Phone já possui o acelerômetro e o giroscópio interno. Além de outros sensores.

[Altitude] https://play.google.com/store/apps/details?id=com.roomfour0four.and...

[Aceleração/Posição] https://play.google.com/store/apps/details?id=ru.autotest.acceleration

Vale a pena tentar.  =)

E uma idéia que estava tendo, que é usar um recurso "visual". Embora não seja prático para colocar no elevador, ele funcionaria assim:

No poço do elevador, seria colocado uma imagem, por exemplo um quadrado feito de cartolina, com por exemplo 1 metro na lateral. E no fundo do elevador uma câmera apontada para o quadrado. Sabemos que conforme o deslocamento do elevador, o "quadrado", iria ser visto "mudando" suas dimensões. E a diferença da área da imagem resultaria na altura do quadrado até a câmera.

T++.^^

Amigos,   muito, muito, muito obrigado a participação de todos.

Quando engenheiros que utilizam CLPs ou a turma do PIC do ARM e por ai vai, me questiona porque sou tão fanático pelo arduino, e o que é que ele tem que os outros não tem,  eu respondo:  A COMUNIDADE ARDUINO.

  Sinceramente vocês são 10,  obrigado.

Vamos lá...

nicholas,

   O uso do RTC, só se faz necessário quando você precisa de horarios,  quando lidamos com contagem de tempo,  tipo pulsos,  a ideia é usar o proprio clock do microcontrolador, talvez você tenha imaginado em colocar um radio transmitindo o tempo tipo 22:15:10..76(teria que ter os centesimos) e outro recebendo e contando os centesimos que levaria,  mas acredito que os RTC não tem um nível de precisão tão alto assim pra sincronizar dois,  a solução seria como dito,  mandar a comunicação no radio 1, captar ela no radio 2 a qual acrescentaria algo na mensagem e reenviaria,  e ai quando voltasse ao radio 1 calcularia o tempo,  ai sim dá pra brincar.

Ao Ricardo Pedroso,

      A utilização do barometro foi tentativa D das descritas,  o BMP085 é um modulo que possui um barometro e um termometro, dai com base na pressão e na temperatura ele calcula a altura em relação ao nível do mar, o problema é que a precisão é sofrível.

Ao Daniel,

    Daniel, sua proposta é otima,  ela na verdade é o principio de funcionamento dos medidores de distancia a laser que conseguem medir até 300m de distancia,  eu andei lendo e descobri que medidores de distancia laser de verdade como os da bosch, emitem um faixo laser e possuem uma especie de camera fotografica,  quando você aponta o laser em uma superficie, o ponto feito ali vai variar conforme a distancia, dai um processador tira uma foto e analisa o tamanho desse ponto e informa a distancia.

   O problema daniel, é que isso exige um processador de imagens,  e pelo menos eu não possuo conhecimento de nada que possa ser ligado a um microcontrolador que possa fazer essa analise.

Mas mesmo assim, obrigado a todos, de coração,  continuo ainda aguardando mais ideias,   POR MAIS MALUCAS QUE SEJAM,   HA HA HA.,

 E o processamento de imagens, dependendo da biblioteca, fica fácil até. Não necessitando de hardware pesado.

 Ultimamente estou fazendo um curso de processamento de imagens usando "Python". E a plataforma que daria para ser usada é o Raspberry Pi ou a BeagleBone.

 Inclusive esse projeto aqui me deu uma idéia de case study alinhado aos meus estudos. ^^

 Daqui continuo pensando em outras soluções.

 T++. ^^

Weider,

Vc chegou a avaliar a proposta de juntar opção 1 e 2 originais. De medir a cada andar do elevador em metros (que já tem sensores instalados como todo elevador) e acrescentar 1 ultrassom por andar para completar a medida para intervalos entre os pavimentos?

Olá Ricardo Pedroso,

    Existe um pequeno problema na ideia de colocar um sensor ultrasonico em cada andar,  se trata do angulo que esses sensores precisarão ser colocados,  ou seja,  sensores ultrasonicos pra funcionar precisam estar precisamente alinhados para o sinal sonoro bater no objeto e retornarem,  logo, como um elevador tem um movimento vertical que é o que desejamos medir, pra colocar sensores no meio do caminho esses teriam que ficar de lado, isso obvio, se o poço do elevador permitir,  e mesmo que permita o sinal sonoro ira bater em angulo e se retornar,  retornara de forma errada pois ira retornar por reflexão em vários pontos e não no fundo do elevador.

   Logo, pra usar sensores ultrasonicos só daria pra usar no maximo 2,  um em cima e outro em baixo,  pois esses ficariam em angulo perfeito de reflexão do som.

   Vou contar um pequeno truque para vocês que estão acompanhando esse tópico...  O cara que é o meu amigo direto(esse tcc é de um amigo dele) ,  comprou e abriu uma daquelas trenas ultrasonicas ( http://produto.mercadolivre.com.br/MLB-580184409-trena-digital-lase... )  ele buscou e achou no equipamento um chip de amplificação, se não me engano é um LM358,  buscou o datasheet dele, como se trata de um aplificador ele tem um dos pinos de saida,  dai ele pegou esse sinal de saida e percebeu que ele era em tensão, proporcional ao valor medido, só que em pwm,  e ele fez um filtro que o tornou em CC.

   Resumindo,  ele descobriu como fazer um sensor ultrasonico que dá cerca de 20m(no datasheet fala-se de 18m mas ele dá 20m).

   Logo, ricardo pedroso, seguindo a ideia,  se o predio fosse baixo, e tivesse só 40m,  dava pra meter um sensor em cima e outro em baixo e tava feito,  mas infelizmente colocar sensor ultrasonico andar a andar não funciona.

   Mas valeu a intenção.

Eu tentaria insistir na linha do sensor de altura (altímetro).

Porém gostaria de compartilhar uma dica:

Em quadricópteros que usam placas controladoras dotadas de altímetro, costumamos colar uma esponjinha escura bem em cima do sensor, usando cola quente. Isso é feito porque esse tal sensor é realmente muito sensível, e qualquer interferência causa variações na leitura (interferências como luminosidade, vento, etc)

Assim sendo, primeiro passo seria usar a mesma técnica explicada acima no seu sensor BMP085, cobrindo com uma esponjinha escura o sensor propriamente dito (para grudar, aplique pontos de cola quente na plaquinha, mas de forma que não comprometa a integridade dos componentes eletrônicos)

Outra dica: não faça uso de apenas uma leitura pontual. Faça diversas amostragens de leitura e use uma média. Logicamente talvez valha a pena usar algum algoritimo um pouco mais rebuscado para tratar as amostragens (exemplo: colher 30 leituras, desprezar as 5 menores e as 5 maiores e, finalmente, soltar a média das 20 amostragens restantes). 

Talvez valha a pena perder algumas horas para definir qual o melhor algoritimo de tratamento das amostragens.

Uma outra possibilidade seria testar o sensor BMP180, que é uma evolução do BMP085

O problema maior não é nem o tempo em si, e sim o clock necessário para processar tais informações. Sugiro que use um sensor desse: 

Sensor de Distância

AO imhugo,

    Cara, adorei a dica,  que tipo de espuma é essa que vocês usam ?   conseguem onde?  tem que ser algum tipo de espuma preta ou pode ser cinza por exemplo ?   a espuma é aquela com poros grandes ou aquela mais fechadinha?

   Você fala que já criou codigos para o bmp085 teria algum que pudesse disponibilizar ? 

Ao Nicholas Garcia,

    Cara, eu já havia visto esses sensores laser,  com absoluta certeza seria o ideal,  porem, um sensor desses custa nó mínimo uns R$ 600,00 ou mais,  e isso pra um estudante em final de curso é uma fortuna.

Sugeri que essa tal esponjinha fosse escura (preta, cinza escura, algo assim) porque sei que a luminosidade interfere no sensor da plaquinha do quadricóptero. Dessa forma, os poros também quanto menores, melhor. A densidade da espuma, quanto mais densa, melhor também. A idéia no final de tudo isso é proteger o melhor possível o sensor contra inferferências externas (vento e luminosidade).

Outra dica que esqueci de mencionar antes: vale a pena vc pegar um multímetro e colocar no teste de continuidade (aquele que emite um bip) para ver se essa esponjinha conduz corrente. Se a esponjinha for condutora, não serve, pois fatalmente irá "curto-circuitar" algum componente

Eu nunca criei códigos usando bmp085 não. Estou tentando contribuir apenas com teoria, desculpe.

Mas dando uma busca rápida no goolgle, cheguei a um exemplo: 

//Programa : Teste módulo pressão BMP085
//Autor : Adafruit
//Traducoes e comentarios : Arduino e Cia

// obtido em: http://www.arduinoecia.com.br/2013/06/sensor-de-temperatura-e-press...

#include <Wire.h>
#include <Adafruit_BMP085.h>

// Conectar pino Vcc do BMP085 ao pino 3.3v do Arduino(NAO UTILIZAR 5.0V !)
// Conectar pino GND do módulo ao GND do Arduino
// Conectar o pino SCL do módulo ao pino analógico 5 do Arduino
// Conectar o pino SDA do módulo ao pino analógico 4 do Arduino
// Pino EOC (End of conversion) não utilizado
// Pino XCLR é um pino de reset, também não é utilizado

Adafruit_BMP085 bmp;

void setup()
{
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Sensor BMP085 não encontrado, verifique as conexões !");
while (1) {}
}
}

void loop()
{
Serial.print("Temperatura = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");

Serial.print("Pressao = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");

// Calcula a altitude utilizando a pressao barometrica padrao
// de 1013.25 milibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" metros");

// É possivel extrair uma medição mais precisa se você souber
// a pressão ao nível do mar, que varia com o tempo/clima.
// Se ela for de 1015 milibars ,é igual a 101500 Pascals.

Serial.print("Altitude real = ");
Serial.print(bmp.readAltitude(101500));
Serial.println(" metros");
Serial.println();

delay(5000);
}

Nota: o código acima não trata o dado obtido, mas sim exibe de 5 em 5 segundos os dados.

Insisto na necessidade de tratamento dos dados através de algum algoritimo personalizado por vc mesmo, de forma a não depender de apenas uma única leitura (que poderia estar terrivelmente enviesada)

abraço!

Achei o video no youtube que fala um pouco sobre a extrema sensibilidade do sensor (barômetro) e como providenciar a proteção com esponja. Fala também sobre a questão da condutividade da esponja e o perigo que isso pode causar.

A dica é dada aos 4minutos e 35segundos (mais ou menos):

https://www.youtube.com/watch?v=Hg4lKukccjM&index=19&list=U...

Amigo, teria como postar os resultados obtidos com o altimetro? Poderíamos tratar melhor os dados e evitar interferências externas, acho que seria a opção mais viável.

duvida, vc precisa realmente saber a altura que esta ou apenas "simular" no painel para que a pessoa saiba, sem  muita precisao?

pq vc poderia fazer assim, com o elevador no primeiro andar, ele inicia a contagem do 0

quando vc pressiona o botao pra subir o proprio arduino faz o calculo e vai registrando a altura pelo tempo de subida que ele leva de um andar ao outro (tempo que vc estipula por ficar dentro do elevador com um cronometro na mao calculando de um andar pro outro)

ex: do primeiro pro segundo andar ele demora 1000 segundos pra subir numa altura de 10 mtrs.(1000 cm)

entao a cada 1 segundo ele subira 1 cm (devagar nao?)

tanto pra subir como pra descer

eh uma ideia meio loca mas economiza trabalho com sensor

mas caso precise saber a altura REAL com precisao entao nao vai dar  

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço