Índice:

Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias: 8 etapas (com imagens)
Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias: 8 etapas (com imagens)

Vídeo: Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias: 8 etapas (com imagens)

Vídeo: Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias: 8 etapas (com imagens)
Vídeo: TERMÔMETRO À PROVA D'ÁGUA | Curso de Arduino #120 2024, Julho
Anonim
Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias
Usando sensores de temperatura, água da chuva e vibração em um Arduino para proteger ferrovias

Na sociedade moderna, um aumento no número de passageiros ferroviários significa que as empresas ferroviárias devem fazer mais para otimizar as redes para atender à demanda. Neste projeto, mostraremos em pequena escala como os sensores de temperatura, água da chuva e vibração em uma placa Arduino podem potencialmente ajudar a aumentar a segurança dos passageiros.

Este Instructable mostrará passo a passo a fiação para os sensores de temperatura, água da chuva e vibração no arduino, bem como mostrará o código MATLAB necessário para executar esses sensores.

Etapa 1: peças e materiais

1. Um computador com a versão mais recente do MATLAB instalada

2. Placa Arduino

3. Sensor de temperatura

4. Sensor de água da chuva

5. Sensor de vibração

6. luz LED vermelha

7. luz LED azul

8. Luz LED Verde

9. RBG LED Light

10. Campainha

11. 18 fios macho-macho

12. 3 fios fêmea-macho

13. 2 fios fêmea-fêmea

14. 6 resistores de 330 ohm

15. 1 resistor de 100 ohm

Etapa 2: Fiação do sensor de temperatura

Fiação do sensor de temperatura
Fiação do sensor de temperatura
Fiação do sensor de temperatura
Fiação do sensor de temperatura

Acima está a fiação e o código MATLAB para a entrada do sensor de temperatura também.

Os fios do terra e 5V só precisam passar para o negativo e o positivo, respectivamente, uma vez para toda a placa. De agora em diante, todas as conexões de aterramento virão da coluna negativa e quaisquer conexões de 5 V virão da coluna positiva.

O código abaixo pode ser copiado e colado para o sensor de temperatura.

%% SENSOR DE TEMPERATURA% Para o sensor de temperatura, usamos a seguinte fonte junto com

% Material do site EF230 para modificar nosso sensor de temperatura para permitir ao usuário

% de entrada e 3 saídas de luz LED com um gráfico.

% Este esboço foi escrito por SparkFun Electronics, % com muita ajuda da comunidade Arduino.

% Adaptado para MATLAB por Eric Davishahl.

% Visite https://learn.sparkfun.com/products/2 para obter informações sobre SIK.

limpar tudo, clc

tempPin = 'A0'; % Declarando o pino analógico conectado ao sensor de temperatura

a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');

% Definir função anônima que converte a tensão em temperatura

tempCfromVolts = @ (volts) (volts-0,5) * 100;

amostragemDuração = 30;

samplingInterval = 2; % Segundos entre as leituras de temperatura

% definir vetor de tempos de amostragem

samplingTimes = 0: samplingInterval: samplingDuration;

% calcula o número de amostras com base na duração e no intervalo

numSamples = comprimento (samplingTimes);

% pré-alocar variáveis temporárias e variáveis para o número de leituras que irá armazenar

tempC = zeros (numSamples, 1);

tempF = tempC;

% usando a caixa de diálogo de entrada para armazenar as temperaturas máximas e mínimas do trilho

dlg_prompts = {'Insira a temperatura máxima', 'Insira a temperatura mínima'};

dlg_title = 'Intervalos de temperatura do trilho';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, comprimento (dlg_title) + N]);

% Armazenando as entradas do usuário e exibindo que a entrada foi gravada

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Sua entrada foi gravada');

h = msgbox (txt);

waitfor (h);

% Para que o loop leia as temperaturas um número específico de vezes.

para índice = 1: numSamples

% Leia a tensão em tempPin e armazene como volts variáveis

volts = readVoltage (a, tempPin);

tempC (índice) = tempCfromVolts (volts);

tempF (índice) = tempC (índice) * 9/5 + 32; % Converter de Celsius para Fahrenheit

% Se as declarações para fazer luzes LED específicas piscarem dependendo de qual condição for atendida

if tempF (índice)> = max_temp% LED vermelho

writeDigitalPin (a, 'D13', 0);

pausa (0,5);

writeDigitalPin (a, 'D13', 1);

pausa (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (índice)> = min_temp && tempF (índice) <max_temp% LED verde

writeDigitalPin (a, 'D11', 0);

pausa (0,5);

writeDigitalPin (a, 'D11', 1);

pausa (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (índice) <= min_temp% LED azul

writeDigitalPin (a, 'D12', 0);

pausa (0,5);

writeDigitalPin (a, 'D12', 1);

pausa (0,5);

writeDigitalPin (a, 'D12', 0);

fim

% Exibe as temperaturas à medida que são medidas

fprintf ('A temperatura em% d segundos é% 5.2f C ou% 5.2f F. / n',…

samplingTimes (índice), tempC (índice), tempF (índice));

pause (samplingInterval)% atraso até a próxima amostra

fim

% Traçando as leituras de temperatura

figura 1)

plot (samplingTimes, tempF, 'r- *')

xlabel ('Tempo (segundos)')

ylabel ('Temperatura (F)')

título ('Leituras de temperatura do RedBoard')

Etapa 3: Saída do sensor de temperatura

Saída do sensor de temperatura
Saída do sensor de temperatura
Saída do sensor de temperatura
Saída do sensor de temperatura

Acima está a fiação e o código MATLAB para a saída do sensor de temperatura.

Para este projeto, usamos três luzes LED para a saída do nosso sensor de temperatura. Usamos um vermelho para se as faixas estivessem muito quentes, um azul se estivessem muito frias e um verde se estivessem no meio.

Etapa 4: entrada do sensor de água da chuva

Entrada do sensor de água da chuva
Entrada do sensor de água da chuva
Entrada do sensor de água da chuva
Entrada do sensor de água da chuva

Acima está a fiação para o sensor de água da chuva e o código MATLAB está postado abaixo.

%% sensor de água

limpar tudo, clc

a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');

waterPin = 'A1';

vDry = 4,80; % Tensão quando não há água presente

amostragemDuração = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = comprimento (samplingTimes);

% Para que o loop leia a tensão por um período específico de tempo (60 segundos)

para índice = 1: numSamples

volt2 = readVoltage (a, waterPin); % Leia a tensão do análogo do pino de água

% If declaração para soar uma campainha se água for detectada. Queda de tensão = água

se volt2 <vDry

playTone (a, 'D09', 2400)% função playTone do MathWorks

% Exibir um aviso aos passageiros se água for detectada

waitfor (warndlg ('Seu trem pode atrasar devido aos perigos da água'));

fim

% Exibe a tensão medida pelo sensor de água

fprintf ('A tensão em% d segundos é% 5.4f V. / n',…

samplingTimes (índice), volt2);

pausar (samplingInterval)

fim

Etapa 5: Saída do sensor de água da chuva

Saída do sensor de água da chuva
Saída do sensor de água da chuva

Acima está a fiação de uma campainha que emite um bipe sempre que muita água cai na pista. O código da campainha está embutido no código da entrada de água da chuva.

Etapa 6: entrada do sensor de vibração

Entrada do sensor de vibração
Entrada do sensor de vibração
Entrada do sensor de vibração
Entrada do sensor de vibração

Acima está a fiação para o sensor de vibração. Sensores de vibração podem ser importantes para sistemas ferroviários no caso de queda de pedras em uma via. O código MATLAB está postado abaixo.

%% Sensor de vibração limpar tudo, clc

PIEZO_PIN = 'A3'; % Declarando o pino analógico conectado ao sensor de vibração a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno'); % Inicializando o tempo e o intervalo para medir a amostragem de vibraçãoDuração = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = comprimento (samplingTimes);

% Usando o código da seguinte fonte, nós o modificamos para ligar um

% LED roxo se for detectada vibração.

% SparkFun Tinker Kit, RGB LED, desenvolvido por SparkFun Electronics, % com muita ajuda da comunidade Arduino

% Adaptado para MATLAB por Eric Davishahl

% Inicializando o pino RGB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Para o loop para registrar as mudanças de tensão do sensor de vibração ao longo de um

% de intervalo de tempo específico (30 segundos)

para índice = 1: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% If declaração para ligar um LED roxo se vibração for detectada

se volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Criando uma luz roxa

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else% Desligue o LED se nenhuma vibração for detectada.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

fim

% Exibe a tensão conforme ela é medida.

fprintf ('A tensão em% d segundos é% 5.4f V. / n',…

samplingTimes (índice), volt3);

pausar (samplingInterval)

fim

% Corte a luz quando a medição de vibrações é feita

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Etapa 7: Saída do sensor de vibração

Saída do sensor de vibração
Saída do sensor de vibração

Acima está a fiação para a luz LED RBG usada. A luz acenderá em roxo quando vibrações forem detectadas. O código MATLAB para a saída está embutido no código para a entrada.

Etapa 8: Conclusão

Depois de seguir todas essas etapas, você agora deve ter um arduino com a capacidade de detectar temperatura, água da chuva e vibrações. Ao observar como esses sensores funcionam em pequena escala, é fácil imaginar como eles podem ser vitais para os sistemas ferroviários na vida moderna!

Recomendado: