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

Um sensor de proximidade analógico simples com interface digital (para Raspberry Pi) [última atualização:7 de fevereiro de 2014]


O Raspberry Pi tem um chip Broadcom BCM2835, que controla 26 pinos GPIO (entrada / saída de uso geral). Há biblioteca C ou pacote python RPi.GPIO disponível online que pode ser usado para controlar os pinos. O pacote RPi.GPIO é incluído por padrão na maioria dos sistemas Raspberry Pi, como Raspbian, uma versão RPi do sistema Linux Linux.

Uma desvantagem do RPi, em comparação com o arduino, é que ele não tem nenhum pino analógico. Todos os pinos GPIO são puramente digitais. Por exemplo, se o pino A é um pino de saída, ele só pode produzir BAIXO (0 V) ou ALTO (3,3 V), representado como 0 ou 1. Se o pino A for um pino de entrada, para qualquer tensão abaixo de 0,8 V aplicada no pino A , leva como LOW ou 0; para qualquer tensão acima de 1,3 V (surpreendentemente baixa, na verdade!), leva como ALTA ou 1 [ref:RPi GPIO].
No mundo real, no entanto, puramente 0 ou 1 raramente acontece. Sempre obtemos informações que podem ter valor contínuo em seu intervalo. Por exemplo, a temperatura pode ser 10C ou 50F, ou 100C ou 212F. Esse número contém mais informações do que simplesmente “frio” ou “quente”. Uma distância pode ser de 2 cm ou 10 m, e não basta saber apenas “perto” ou “longe”.

Existem alguns métodos para superar essa desvantagem. RPi suporta interface SPI ou I2C, para que possamos usar algum conversor analógico para digital externo (ADC) e usar interface SPI ou I2C para obter um sinal quase analógico por meio desses ADCs, como MCP3008, TLC549, MCP23017, etc. Esses chips geralmente custam vários dólares. No entanto, com sensores comerciais adicionais, toda a parte pode custar mais de US $ 20 a US $ 30 e é difícil tornar o sistema compacto. Para projetos robóticos, geralmente é necessário mais de um sensor e o custo pode aumentar facilmente.

Na verdade, em muitas situações, é possível evitar o uso desses dispositivos externos e ainda ser analógico sinais através do digital alfinetes!

A chave é converter o sinal analógico em tempo de duração. Porque o tempo é sempre analógico!

Eu construí um sensor de proximidade infravermelho simples usando vários LEDs infravermelhos, um fototransistor, um transistor NPN 2N3904, um capacitor de cerâmica 100nF e vários resistores de baixa potência. E consigo obter algumas leituras analógicas.

Todos os elementos estão entre os mais baratos do mercado eletrônico.

Realmente não importa quais LEDs, fototransistores ou transistores NPN estão sendo usados. Eles são praticamente os mesmos.

A única coisa que pode importar um pouco é o capacitor de 100nF (0,1uF). Usei uma cerâmica de baixo perfil, que provavelmente não é a melhor escolha. Uma cerâmica de classe 1, ou capacitor de filme, será mais adequada aqui.

Conecte os fios + 5V e GND a uma fonte de alimentação externa de 5V, conecte também o fio GND ao aterramento dos pinos GPIO do Raspberry Pi. Escolha um pino GPIO, digamos, o pino A como o gatilho e conecte-o ao fio do gatilho. Escolha outro pino GPIO, digamos, o pino B, como a entrada / saída do sinal e conecte-o ao fio OUT.

Para medir a distância de um objeto, enviamos um sinal de gatilho para ativar os LEDs infravermelhos. A luz emitida por esses LEDs é então refletida pelo objeto na frente do sensor. O fototransistor do meio coleta a luz refletida e gera uma corrente proporcional. Esta corrente é usada para integrar a tensão no capacitor (I =CdV / dt). Ao monitorar o tempo que a tensão do capacitor leva para atingir um certo limite, temos uma noção de quanta corrente foi gerada pelo fototransistor, ou de forma equivalente, quanta luz foi refletida. Aparentemente, quanto mais próximo o objeto está, mais a luz refletida está. Calibrando cuidadosamente o tempo do sensor, devemos ser capazes de obter uma medição bastante precisa da distância.

Aqui está a sequência detalhada de operações.1. Zere o capacitor

Primeiro, defina o Pino B como um pino de saída e como zero.

GPIO.setup (PIN_B, GPIO.OUT)
GPIO.output (PIN_B, 0)
time.sleep (0,01)

Isso irá descarregar qualquer tensão residual no capacitor. Observe que o tempo RC para descarregar o capacitor é t =RC =500 ohm * 100nF =50 us =0,00005 seg. Ao manter zero volt no pino B durante o tempo 200RC, certificamo-nos de que o condensador está totalmente descarregado (a tensão residual deve ser e − 200 =10−87 vezes a tensão residual original) .2. Defina o pino B como entrada

Agora usamos o Pino B como um pino de entrada para obter dados do fototransisto.
GPIO.setup (PIN, GPIO.IN)

3. Acenda os LEDs

É hora de ligar os LEDs infravermelhos.

GPIO.setup (PIN_A, GPIO.OUT)
GPIO.output (PIN_A, 1)

Isso definirá a tensão do pino do gatilho para 3,3V. Como o nó BE de 2N3904 cai 0,7 V, a tensão em R1 é 2,6 V. A corrente através de R1 é então I =2,6 V / 4,3 kΩ =0,6 mA. O 2N3904 então amplifica essa corrente em ~ 150 vezes, resultando em uma corrente de ~ 100mA de seu coletor para o emissor. Cada um dos LEDs conduzirá cerca de 50mA por um curto período de tempo.4. Cronometrando a duração do Pino B restante BAIXO

Comece a medir quanto tempo leva para o capacitor atingir o limite de RPi para que o Pino B se torne ALTO

contador =0
t1 =time.clock () * 1000
while (GPIO.input (PIN_B) ==0) &(contador <1e4):
contador =contador + 1
deltat=time.clock()*1000-t1

deltat é o tempo de duração do Pino B restante BAIXO. Uma vez que deltat é proporcional ao recíproco da corrente do fototransistor (ou quantidade de luz refletida ), e a corrente do fototransistor é aproximadamente proporcional ao recíproco da distância , deltat é aproximadamente proporcional à distância .
deltat∝1I∝1light∝distance

O termo (contador <1e4) é para prevenir a situação de demorar muito para integrar o capacitor devido à corrente do fototransistor extremamente baixa, ou equivalentemente, distância infinita.



Para mais detalhes:Um sensor de proximidade analógico simples com interface digital (para Raspberry Pi) última atualização em 7 de fevereiro de 2014]

Processo de manufatura

  1. Meça temperaturas com um sensor DS18B20 de 1 fio e Raspberry Pi
  2. Sensor de temperatura de 1 fio DS1820 em Raspberry Pi (GPIO diretamente)
  3. A integração dos dados do sensor com o microprocessador Raspberry Pi
  4. Sensor ultrassônico (HC-SR04) + Raspberry Pi
  5. Sensor de rastreamento de linha com RPi
  6. Leitura de sensores analógicos com um pino GPIO
  7. Sistema de sensor de movimento infravermelho faça você mesmo para Raspberry Pi
  8. Sensores analógicos sem entradas analógicas no Raspberry Pi
  9. Sensor de termômetro digital de 1 fio Raspberry Pi (DS18B20)
  10. Sensor digital Hall Raspberry Pi em JAVA