Apresento a você um scanner DIY baseado em um smartphone Android.
Ao projetar e criar um scanner, antes de tudo, eu estava interessado em digitalizar objetos grandes. Mínimo - a figura de uma pessoa em pleno crescimento com precisão - pelo menos 1-2 mm.
Esses critérios foram alcançados com sucesso. Objetos digitalizados com sucesso sob luz natural (sem luz solar direta). O campo de digitalização é determinado pelo ângulo de captura da câmera do smartphone e pela distância em que o raio laser mantém o brilho suficiente para a detecção (durante o dia na sala). Esta é a figura de uma pessoa em altura total (1,8 metros) com uma largura de trabalho de 1,2 metros.
O scanner foi feito com base em considerações "e se é necessário fazer algo mais ou menos útil e interessante quando não há nada a fazer". Todas as ilustrações são baseadas no exemplo de um objeto de "teste" (o upload de varreduras humanas não está correto).
Como a experiência demonstrou, para um scanner desse tipo de software, ele é secundário e o menor tempo foi gasto com ele (para a versão final. Além de experimentos e opções sem saída). Portanto, não abordarei os recursos do software no artigo (link para os códigos-fonte no final do artigo).
O objetivo do artigo é falar sobre ramificações de impasse e problemas coletados no caminho para a criação da versão final de trabalho.
Para o scanner, a versão final usa:
- Telefone Samsung S5
- Lasers vermelhos e verdes com lente para uma linha (linha de 90 graus) a 30 mW com óptica de vidro (não a mais barata).
- Motores de passo 35BYGHM302-06LA 0.3A, 0.9 °
- Drivers para o motor de passo A4988
- Módulo Bluetooth HC-05
- Placa STM32F103C8t
Os drivers do A4988 são configurados na metade do passo, que com uma caixa de velocidades 15-> 120 fornece 400 * 2 * 8 passos por PI.
A escolha da tecnologia de digitalização.
As várias opções a seguir foram consideradas.
Projetor LED.
A opção foi considerada e calculada. Mesmo projetores caros não têm a resolução correta para alcançar a precisão necessária. E nem vale a pena falar sobre coisas baratas.
Varredura mecânica de um raio laser em combinação com uma grade de difração.
A ideia foi testada e considerada adequada. Mas não para o desempenho de bricolage, por razões:
- Precisamos de um laser suficientemente poderoso, para que, após a difração, as marcas fiquem brilhantes o suficiente (a distância até a lente do smartphone é de 1 a 2 metros). E meus olhos estão arrependidos. Um ponto de laser já com 30mW não é útil.
- Os requisitos para a digitalização mecânica de precisão em dois planos são muito altos para o desempenho de bricolage.
Varredura mecânica padrão de uma linha de laser em um objeto estacionário de varredura.
Por fim, a opção foi escolhida com dois lasers de cores diferentes.
- Diferentes cores dos lasers tornam possível detectá-los independentemente em um único quadro.
- A localização dos lasers em lados opostos da câmera permite que você faça duas digitalizações de uma só vez.
- Duas digitalizações por vez permitem avaliar objetivamente a qualidade do alinhamento do scanner (as digitalizações devem convergir e se sobrepor).
Como se viu, o último critério é o mais importante. A qualidade da digitalização é totalmente determinada pela precisão da medição das dimensões e ângulos geométricos do scanner. E a presença de duas digitalizações de dois lasers permite avaliar imediatamente a qualidade da digitalização:
Nuvens de pontos convergiram. I.e. aviões capturados por dois lasers convergiram em toda a superfície.
Versão sem sucesso da parte mecânica no 28BYJ-48.
Embora desde o início eu tenha assumido que essa é uma opção sem saída que não fornece a precisão necessária, eu ainda a verifiquei com vários truques:
- O eixo do motor é fixado pelo rolamento.
- Adicionado elemento de atrito e rolha para amostragem de folga da caixa de velocidades
- Uma tentativa de determinar a "posição exata" de um fototransistor por exposição a laser
A repetibilidade de retornar ao mesmo local da linha de laser mostrou-se baixa - 2-3 mm a uma distância de 1,5 metros. Durante a operação das engrenagens, apesar da suavidade aparente, os solavancos de 1-3 mm são visíveis a uma distância de 1,5 metros.
I.e. O 28BYJ-48 é completamente inadequado para um scanner mais ou menos preciso de objetos grandes.
Requisitos de digitalização com base na minha experiência
Um elemento obrigatório da varredura deve ser uma caixa de velocidades.Não se engane sobre o modo 1 / x etapas. As experiências mostraram que, no modo 1/16, nas micro etapas do A4988, não são uniformes. E em 1/8, essa irregularidade é perceptível nos olhos.
A solução mais ideal para a caixa de câmbio foi o uso de uma engrenagem de correia. Embora tenha sido bastante complicado, é fácil criar e preciso.
A precisão de posicionamento (mais precisamente, a repetibilidade de posicionamento da posição inicial dos lasers para digitalização) dos lasers revelou-se em cerca de 0,5 mm para uma linha de laser de 5 mm de largura por 4 metros de distância. I.e. a uma distância de varredura (1,2-1,8 metros), geralmente é difícil de medir.
Posicionamento - acopladores ópticos (noname chinês) nos slots no disco sob os lasers.
Problemas na transmissão de sinais de controle do telefone para o módulo de controle de lasers e motores de passo
O canal de controle acabou sendo um gargalo em termos de velocidade de varredura. Como se tratava de um desenvolvimento descontraído, para seu próprio prazer, todos os métodos de comunicação com um smartphone foram testados.
Transmissão de sinais de controle via conector de áudio (telefone conector de áudio => osciloscópio)
A maneira mais inibitória de transmitir dados em tempo real. Sim, mesmo com tempo flutuante. Até 500 ms (!) Desde a ativação do software de transmissão de dados de áudio até a aparência real do sinal na tomada de áudio.
Esse exótico foi checado, porque, no trabalho, eu tive que lidar com leitores de cartão com chip móvel.
Fotodiodos na tela do smartphone (fatia da tela do telefone => fototransistores + STM32F103)
Por uma questão de interesse, mesmo um método tão exótico foi testado como fototransistores com uma matriz 2x2 na forma de prendedores de roupa na tela.
Embora esse método de transmissão de informações pelo telefone tenha sido o mais rápido, mas não tão fundamentalmente mais rápido (10 ms vs 50ms) do que o Bluetooth, o que suportaria suas deficiências (prendedor de roupa na tela).
Canal IR (telefone => TSOP1736-> STM32F103)
Praticamente verificado e o método de transmissão via canal IR. Mesmo alguma implementação do protocolo de transferência de dados teve que ser feita.
Mas o IR também se mostrou não muito conveniente (é inconveniente montar o sensor fotográfico no telefone) e não muito mais rápido que o Bluetooth.
Módulo WiFi (telefone => ESP8266-RS232-> STM32F103)
Os resultados da verificação deste módulo foram completamente desencorajadores. O tempo de execução da solicitação-resposta (eco) acabou imprevisivelmente flutuando no intervalo de 20 a 300 ms (uma média de 150 ms). Por que e o quê - não entendi. Encontrei apenas um artigo que descreveu uma tentativa malsucedida de usar o ESP8266 para troca de dados em tempo real com requisitos rigorosos de tempo de solicitação / resposta.
I.e. O ESP8266 com firmware "padrão" TCP -> RS232 não é adequado para esses fins.
Opção selecionada para módulo de controle e transmissão de sinal
Por fim, após todas as experiências, o canal Bluetooth (módulo HC-05) foi selecionado. Ele fornece um tempo estável (e este é o mais importante) de solicitação de resposta de transferência de dados de 40ms.
O tempo é bastante grande e afeta muito o tempo de varredura (metade do tempo total).
Mas a melhor opção não foi alcançada.
Como módulo de controle, uma placa generalizada com o SM32F103C8T.
Métodos para detectar uma linha em um quadro.
A maneira mais fácil de isolar as linhas de laser no quadro é usar a subtração do quadro com o laser desligado e o quadro com o laser.
Em princípio, a busca por quadro também funciona sem subtração. Mas funciona muito pior à luz do dia. Embora esse modo tenha sido deixado no software para testes comparativos (foto do modo abaixo. Todas as outras fotos com o modo de subtração de quadro).
O valor prático da opção sem subtrair quadros foi baixo.
É possível e possível extrair o sinal do laser desta informação barulhenta. No entanto, ele não se incomodou.
A opção com subtração de quadro funciona bem.
Qualquer experimento com tentativas de aproximar a linha e processar todo o quadro mostrou que quanto mais complexo o algoritmo, mais frequentemente ele “comete erros” e até atrasa o processamento em tempo real. O algoritmo mais rápido (e mais fácil) para encontrar um laser (ponto de laser) em uma linha horizontal foi:
- Para cada ponto da linha, a soma dos quadrados do nível de cor do laser (RGB) na janela especificada na configuração é considerada (13 px - valor ideal experimentalmente para a janela)
- O ponto do laser é o meio da janela com o valor máximo das somas dos níveis de "cor".
O tempo para processar um quadro pesquisando as linhas "verde" e "vermelha" é de 3 ms.
As nuvens de pontos para o laser vermelho e verde são contadas separadamente. Com o ajuste mecânico adequado, eles são reduzidos com uma precisão de <1 mm.
Precisão e alinhamento
A precisão estava dentro de 1 mm a uma distância de 1,2 metros. Principalmente devido à resolução da câmera do telefone (1920x1080) e à largura do feixe de laser.
É muito importante obter as verificações corretas para configurar estática e dinâmica. A precisão / imprecisão é claramente visível ao carregar as duas nuvens de pontos no MeshLab. Idealmente, as nuvens de pontos devem convergir, complementando-se.
Os parâmetros estáticos são definidos com a maior precisão possível uma vez:
- A tangente do ângulo de visão da câmera.
- O comprimento dos "ombros" dos lasers (do centro da lente ao eixo de rotação).
E, é claro, o foco máximo das lentes a laser em uma determinada distância de digitalização e a "verticalidade" das linhas de laser.
O parâmetro dinâmico do ângulo real da posição dos lasers em relação ao plano virtual do quadro deve ser ajustado novamente sempre que misturar o telefone na montagem. Para isso, é feito o modo de configuração no software. Ao reduzir a tela do laser para o centro e ajustar o ângulo, é necessário definir a distância calculada o mais próximo possível da distância real (medida) para ambos os lasers.
Antes do ajuste fino:
Após o ajuste:
Conclusões
Talvez esse design possa ser repetido por qualquer pessoa. Cortei todos os detalhes da fibra de vidro ao CNC.
Obviamente, sem uma fresadora CNC, é difícil fabricar uma polia sob o laser. Mas, levando em consideração o fato de que você precisa de um ângulo de rotação de no máximo 90 graus, com a devida paciência, a polia também pode ser cortada com uma lima.
Mas é melhor fazê-lo no CNC. Os requisitos para folga axial do conjunto rotativo são altos. A qualidade das digitalizações é 100% determinada pela precisão de fabricação e alinhamento.
O scanner fez em segundo plano. Às vezes, de forma intermitente por alguns meses. Portanto, não posso avaliar a complexidade total de sua criação.
O custo total da estrutura não é muito alto. Como meus experimentos mostraram, embora esteja longe de scanners industriais de objetos grandes, você pode obter digitalizações bastante decentes.
A qualidade das digitalizações é afetada principalmente pela precisão da parte mecânica. Nesse sentido, no DIY é difícil lidar com a mecânica criada para scanners industriais.
Código fonte