Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Detector de alcance portátil

Componentes e suprimentos

Arduino Nano R3
× 1
Sensor ultrassônico - HC-SR04 (genérico)
× 1
18650 Cell
× 1
TP4056 Carregador de íons de lítio
× 1
DC-DC 5V Boost Converter
× 1
Buzzer
× 1
Potenciômetro rotativo (genérico)
× 1
Slide Switch
× 1
LED (genérico)
Vermelho (2), Verde (1), Azul (1)
× 4
Resistor 330 ohm
× 2
Parafusos de cabeça com tampa OpenBuilds M3
Parafusos M3 de 10 mm (4)
× 1
Fios
18 AWG
× 1
Peças impressas em 3D
3 peças para o invólucro
× 1
Adaptador de rosca
× 1

Ferramentas e máquinas necessárias

Impressora 3D (genérica)
Usei uma Anet A8
Ferro de soldar (genérico)
Pistola de cola quente (genérica)
Dremel
Ou qualquer ferramenta rotativa

Aplicativos e serviços online

Arduino IDE
Será necessário baixar a biblioteca NewPing
Simplify3D
Ou qualquer fatiador de escolha

Sobre este projeto





Introdução


O Departamento de Ciências do Exercício do Lehman College estava conduzindo estudos sobre o treinamento com pesos. Houve inconsistências na amplitude de movimento para as repetições, o que poderia influenciar significativamente os dados. Fui abordado para criar um dispositivo que identificaria toda a amplitude de movimento para exercícios que usassem máquinas ou pesos maiores.

O dispositivo precisava atender às seguintes condições :
  • Distância ajustável
  • Não está permanentemente fixo nas máquinas.
  • Compatível com tripé
  • Sem fios





Vídeo





Peças


A maioria das peças é mostrada abaixo, mas para obter uma lista completa, consulte o BoM acima. As peças usadas são selecionadas não porque sejam ótimas; era com isso que eu tinha que trabalhar. A pegada pode ser bastante reduzida com PCBs personalizados, componentes SMT ou uma bateria LiPo.





Código


A biblioteca NewPing é necessária para que o código (fornecido na parte inferior) seja compilado.

A frequência da campainha e os limites superior / inferior são variáveis ​​globais que podem ser alteradas. Os limites superior / inferior referem-se à distância mínima e máxima que o sensor lê, que é mapeada para o valor analógico [0,5] V do potenciômetro.
  frequência interna =700; // Frequência em Hz 
int lower_bound =60; // Distância em mm
int upper_bound =200; // Distância em mm

3 bipes ocorrem ao ligar para indicar que a inicialização foi bem-sucedida (veja a setup () ciclo). A seguir, loop () solicita continuamente dados do sensor ultrassônico e os compara com o limite definido pelo potenciômetro.





Impressão 3D


Todos os arquivos foram carregados para thingiverse, ou um arquivo condensado pode ser encontrado no final da página. Como usar o CAD não será abordado aqui. O modelo foi feito considerando as limitações da impressão 3D. Os balanços foram minimizados com o uso de chanfros de 45 graus, o que reduz o material de suporte. As folgas eram generosas, então as peças devem caber, apesar de serem impressas em impressoras calibradas de forma diferente.

O tempo de impressão pode variar, mas meu tempo de impressão eram os seguintes:
  • Parte superior:2 horas e 40 minutos
  • Parte inferior:2 horas e 20 minutos
  • Botão:20 minutos





Montagem


Os esquemas do circuito são fornecidos na parte inferior da página. As peças são inseridas sem serem conectadas para confirmar os ajustes.

Cabos IDE recuperados forneceram todos os fios. Grupos de fios podem ser removidos enquanto permanecem presos uns aos outros, o que fornece alguma ordem.

A maioria dos componentes eletrônicos é montada em uma das partes impressas, portanto, é necessário pensar no roteamento e gerenciamento dos fios.

Os LEDs indicadores SMD na placa TP4056 foram dessoldados. Fios de extensão e LEDs THT de 3 mm foram soldados em seus lugares. Os resistores limitadores de corrente ainda estão integrados à placa. Há um vídeo de alguém realizando esta realocação.

O arduino nano tinha apenas 2 bases de aterramento acessíveis, então um stripboard foi usado para expandir o número de bases de aterramento. O mesmo foi feito com a linha 5V, que pode ser conferida na foto abaixo.

Romper a conexão na tira é necessário para que 5 V não fique em curto com o terra. O "X" vermelho ilustra o local da quebra. Apenas o cobre superior precisa ser interrompido, não toda a placa de fibra de vidro.

Os componentes foram conectados fora do gabinete. Eles eram ocasionalmente instalados no gabinete para medir o comprimento do fio e verificar a interferência do fio.

O potenciômetro foi cortado em 6 mm para que não se projetasse tanto.

A conexão com o 18650 foi soldada diretamente, o que é uma prática ruim. O superaquecimento da célula irá danificá-la e pode falhar com o tempo. A soldagem a ponto de uma tira de alumínio é a maneira correta de conectar o 18650s.

A cola quente foi vergonhosamente usada para proteger os componentes eletrônicos. Evite usar cola quente quando possível. O projeto mecânico correto e os fechos durarão mais que a cola quente. Está fadado a falhar com o tempo. É compreensível para protótipos, mas as peças de produção nunca usarão cola quente.





Resumo


Em retrospecto, eu teria preferido usar um sensor infravermelho em vez do ultrassônico, mas não havia como saber disso até começar a fazer experiências com o sensor ultrassônico. Os sensores IR têm um FOV mais estreito com uma compensação de uma distância máxima muito menor (~ 3 pés).

Se houvesse uma segunda versão, um LiPo substituiria o 18650. A grande porca de papel serrilhada é pesada e ocupa espaço. A rosca padrão para montagens de tripé é de 1/4 ", então uma simples porca de 1/4" da loja de ferragens é suficiente. Os PCBs personalizados reduziriam o volume pela metade.

Para um protótipo que foi concebido do conceito à entrega em 2 semanas, estou satisfeito.





Futuro do projeto


Quando estava fazendo experiências com o sensor de ultrassom, aprendi mais sobre suas limitações. A primeira é que seu FOV tem um ângulo de ~ ± 15 ° (30 ° no total). Isso significa que um objeto pode acionar a campainha antes de estar diretamente acima do sensor. Isso produz imprecisões e leituras indesejáveis. Além disso, se o plano do objeto não for perpendicular (ou dentro do ângulo de tolerância) à onda sonora transmitida, o sensor não receberá uma onda refletida e não será capaz de processar um valor para a distância.

Meu plano inicial era colocar a unidade no chão e permitir que as placas em uma barra de treinamento de peso acionassem a campainha quando fossem abaixadas além do limite. Este sistema consistia em um sensor fixo e um gatilho móvel. Meu colega de engenharia propôs uma solução alternativa, que envolvia inverter o sistema. Ele propôs montar o sensor na barra móvel enquanto o apontava para o solo. Dessa forma, o solo se tornou o gatilho. Ele também eliminou imprecisões devido a um amplo FOV, conforme mencionado anteriormente.

A proposta não foi apenas uma ótima solução para os problemas apresentados, mas também é muito fácil de implementar. O pedido do adaptador de porca de tripé de 1/4 "veio com um adaptador de 1/4" -> 3/8 "E um adaptador de 3/8" -> 1/4 ". O segundo entrará em uso!

Como não tive acesso ao meu dremel quando comecei a modelar em 3D, isso me forçou a considerar todo o adaptador do tripé. Isso em combinação com uma célula 18650 aumentou o peso significativamente. Não quero adicionar mais peso do que o necessário, então cortarei o segundo adaptador de tripé antes de modelar a montagem. Voltarei ao projeto em uma semana para concluir esta solução alternativa de montagem. Até então, ainda funciona!

Código

  • RangeDetectionDevice.ino
RangeDetectionDevice.ino Arduino
 / ** Viktor Silivanov 22/03/2018 Dispositivo portátil de detecção de distâncias usando o HC-SR04 Sensor ultrassônico com ajuste de distância para acionar a campainha. ** /// ************* ******* Bibliotecas ****************************************** *************************************************** *************************************************** *************************************************** **************** # include  // ******************** Pins **** *************************************************** *************************************************** *************************************************** *************************************************** ******** // Pinos analógicos # define limpador A5 // Pinos digitais # define echo 2 # define trig 3 # define ON_LED 7 # define buzzer 8 # define buzzer_LED 9 // ******** ************ Variáveis ​​globais ************************************ *************************************************** *************************************************** ***************************************** ************************** // Frequência permitida de modificação do usuário =700; // Frequência em Hzint lower_bound =60; // Distância em mmint upper_bound =200; // Distância em mm // Não modificaint buzz_time =250; // Tempo em milissegundos para a campainha logo após a inicializaçãoint buzz_delay =280; // Tempo em milissegundos para o retardo da campainha logo após a inicializaçãoint max_distance =400; // Argumento para o objeto na biblioteca NewPingint i =0; int distance; int threshold; Sonar NewPing (trig, eco, distância_máx); // Instanciação do objeto "sonar" // ******************** Configuração ******************* *************************************************** *************************************************** *************************************************** ******************************************** // Esta função é executada apenas oncevoid setup () {Serial.begin (9600); // Permite o uso de monitor serial com uma taxa de baud de 9600 // Declaração do tipo de E / S do pino pinMode (trig, OUTPUT); pinMode (eco, INPUT); pinMode (campainha, OUTPUT); pinMode (buzzer_LED, OUTPUT); pinMode (ON_LED, OUTPUT); digitalWrite (ON_LED, HIGH); // Liga o LED verde; Permanece ligado enquanto a unidade está ligada // Buzzer emite 3 bipes ao ligar o dispositivo while (i <3) {digitalWrite (buzzer_LED, HIGH); tom (campainha, frequência, buzz_time); atraso (buzz_delay); i ++; } digitalWrite (buzzer_LED, LOW);} // ******************** Executa infinitamente ***************** *************************************************** *************************************************** *************************************************** ************************************* void loop () {distance =sonar.ping_cm (); // O objeto "sonar" utiliza a função ping_cm () da biblioteca, que retorna um valor em cm. A distância, então, assume esse valor limite =analogRead (limpador); // Obtenha o valor analógico do limpador do potenciômetro threshold =map (threshold, 0, 1023, lower_bound, upper_bound); // Traduzir leituras analógicas para a faixa de disparo. Atualizar os valores do limiar if (distance! =0 &&distance  

Peças personalizadas e gabinetes

Todas as 3 partes são salvas em um arquivo

Esquemas


Processo de manufatura

  1. Detector de linguagem TinyML baseado em Edge Impulse e Arduino
  2. Jogo Arduino Gyroscope com MPU-6050
  3. Dados digitais Arduino
  4. DIY 37 LED Roulette Game
  5. ATtiny85 Mini Arcade:Snake
  6. Arduino Audio Reactive Desk Light
  7. Carro robô rastreador Smart Face
  8. Galvanoplastia com cobre
  9. NeoMatrix Arduino Pong
  10. Estação portátil de temperatura