Índice:

Controlador de rede do sensor de temperatura tolerante a falhas: 8 etapas
Controlador de rede do sensor de temperatura tolerante a falhas: 8 etapas

Vídeo: Controlador de rede do sensor de temperatura tolerante a falhas: 8 etapas

Vídeo: Controlador de rede do sensor de temperatura tolerante a falhas: 8 etapas
Vídeo: Testando sensor de temperatura ou degelo. 2024, Novembro
Anonim
Controlador de rede do sensor de temperatura tolerante a falhas
Controlador de rede do sensor de temperatura tolerante a falhas

Este Instructable mostra como converter uma placa Arduino Uno em um controlador de propósito único para um conjunto de sensores de temperatura DS18B20 capazes de isolamento automatizado de sensores defeituosos.

O controlador pode gerenciar até 8 sensores com Arduino Uno. (E muito mais com Arduino Mega ou com uma ligeira modificação de software.)

Etapa 1: História por Trás …

Há alguns anos, instalei uma rede de sensores de temperatura DS18B20 na estufa de meu pai para meu controlador de aquecimento baseado em pi. Infelizmente, a confiabilidade do controlador era baixa, principalmente devido às frequentes interrupções do sensor. Tentei várias configurações - alimentação parasita, alimentação direta, conexão da rede ao pi e também conexão à placa personalizada baseada em Atmega (cujo objetivo principal era acionar motores de válvula).

O que é pior, a confiabilidade da rede do sensor caiu principalmente durante as noites de inverno, enquanto quase não havia problemas no verão! O que diabos está acontecendo aqui?

Para investigar qual sensor causa o problema, surgiu a necessidade de ligá-los / desligá-los um a um ou habilitar qualquer combinação deles.

Etapa 2: como funciona

O DS18B20 (o sensor de temperatura) usa o protocolo proprietário de 1 fio que permite que vários sensores compartilhem o link de dados comum (aquele único fio). Esse link de dados comum é conectado a um dos pinos GPIO do Arduino e a + 5 V por meio de um resistor pull-up - nada incomum, muitos instrutíveis cobrem essa configuração.

O truque é que os cabos de alimentação de cada sensor sejam conectados aos próprios pinos GPIO (dedicados), para que possam ser ligados e desligados separadamente. Por exemplo, se um sensor tem o cabo Vcc conectado ao pino # 3 e GND ao pino # 2, definir o pino # 3 como HIGH fornece energia para o sensor (sem surpresa), enquanto definir o pino # 2 como LOW fornece aterramento (uma pequena surpresa para mim). Definir ambos os pinos para o modo de entrada isolará (quase) completamente o sensor e sua fiação - não importa que falha (por exemplo, um atalho) aconteça dentro dele, não irá interferir com os outros.

(É justo dizer que conectar o fio de dados a outra coisa conectada de alguma forma ao Arduino irá de fato causar interferência, mas é quase impossível na minha configuração).

Observe que o DS18B20 consome até 1,5 mA enquanto um pino do Arduino pode fornecer / absorver até 40 mA, portanto, é perfeitamente seguro alimentar sensores por pinos GPIO diretamente.

Etapa 3: Material e ferramentas

Material

  • 1 placa Arduino UNO
  • 3 cabeçalhos de pino fêmea: 1 × 4, 1 × 6 e 1 × 6 (ou mais - eu os cortei de um cabeçalho 1 × 40)
  • uma cola
  • um pedaço de fio de cobre nu (pelo menos 10 cm)
  • uma fita isolante
  • consumíveis de soldagem (fio, fluxo …)

Ferramentas

  • equipamento de solda (ferro, suportes, …)
  • alicate de corte pequeno

Etapa 4: consertar as coisas juntos

Consertar as coisas juntos
Consertar as coisas juntos

Cole os cabeçalhos de pino fêmea nos cabeçalhos da placa Arduino:

  1. Cabeçalho 1 × 4 próximo ao cabeçalho de pino "analógico", lado a lado com os pinos A0-A4
  2. Cabeçalho 1 × 6 próximo ao primeiro cabeçalho de pino digital, lado a lado com os pinos 2–7
  3. Cabeçalho 1 × 6 próximo ao segundo cabeçalho de pino digital, lado a lado com os pinos 8–13

Observe que meus cabeçalhos são um pouco mais longos … não tem contras e nem prós, suponho.

Etapa 5: conecte as coisas

Conecte as coisas
Conecte as coisas
Conecte as coisas
Conecte as coisas

Fiação da linha de barramento de 1 fio:

  1. Conecte todos os terminais de cabeçalhos colados no lado "digital" (adjacente aos pinos 2 a 13) soldando um pedaço de fio desencapado a eles
  2. Solde a extremidade deste fio ao cabo do pino SCL (conectado internamente ao A5)
  3. Conecte todos os terminais do coletor colado no lado "analógico" (pinos A0-A3) soldando um pedaço de fio desencapado a eles
  4. Solde a ponta deste fio nos terminais A4 e A5 (usei A5 e A6 porque tenho uma placa que tem A6 e A7)
  5. Solde um resistor 4k7 entre a outra extremidade deste fio e o cabo do pino de +5 V

Notas:

  • Os pinos A0-A5, embora marcados como "analógicos", também podem ser usados como pinos digitais GPIO.
  • O pino SCL no lado "digital" é conectado internamente ao A5 no lado "analógico"; conectado aos cabeçalhos, isso forma a linha de barramento de 1 fio
  • A4 (usado como entrada analógica) mede a tensão do barramento para fins de diagnóstico. Por isso está diretamente conectado ao barramento.
  • Usei A6 em vez de A4 porque tenho uma placa que tem A6 e A7; originalmente, eu queria usar A7 como o barramento mestre de 1 fio, mas esses dois pinos não podem ser configurados para serem GPIOs digitais.
  • Para evitar a conexão incorreta dos conectores do sensor, você pode omitir / cortar o contato não utilizado (não conectado a nenhum fio) de cada conector macho e inseri-lo no orifício correspondente no cabeçalho do pino colado.

Etapa 6: Conectando os Sensores

Conectando os Sensores
Conectando os Sensores

Você acabou de criar uma matriz de oito soquetes 2 × 2. Você pode soldar e montar conectores Dupont 2 × 2 aos cabos do sensor e conectá-los a esses soquetes. O software configura os pinos de forma que os pinos pares sejam pinos GND e os pinos ímpares sejam pinos Vcc. Para cada sensor, o pino Vcc é apenas o pino GND + 1. Um dos outros dois pinos do soquete 2 × 2 (um dos dois no conector colado e soldado) é para o fio de dados do sensor. Não importa qual você usa.

Etapa 7: Software do controlador

Software de controle
Software de controle

O esboço SerialThermometer executa o controlador. Você pode encontrá-lo no github. Abra e carregue usando o Arduino IDE.

Passo a passo:

  1. Abra seu Arduino IDE e instale a biblioteca DallasTemperature e todas as suas dependências via Sketch | Incluir Biblioteca | Gerenciar bibliotecas.
  2. Clone o repositório git. Se não estiver familiarizado com o git, baixe e descompacte este zip em qualquer lugar do seu computador.
  3. Abra o esboço SerialThermometer em seu Arduino IDE.
  4. Conecte sua placa Arduino modificada ao seu computador por cabo USB (forma padrão)
  5. Carregue o esboço usando seu IDE Arduino
  6. Abra o Serial Monitor por meio de Ferramentas | Monitor Serial
  7. Você deve ver a saída de diagnóstico contendo várias medições físicas seguidas por leituras de temperatura - cada soquete do sensor em uma única linha. Se a contagem do sensor for diferente quando ativado separadamente e quando todos ativados juntos), o diagnóstico ocorre em loop até ser resolvido. Mas não se preocupe, o diagnóstico também fornece medições de temperatura!

Consulte a imagem anotada para obter mais detalhes sobre a saída de diagnóstico.

Etapa 8: Conclusão

Tenho a forte sensação de que minhas falhas de rede de sensores foram causadas por alta capacitância de minha fiação longa - cerca de 10 m de cabo LIYY 314 (3 × 0, 14 mm²) para cada sensor. Meus experimentos mostraram que a comunicação é interrompida se houver capacitância próxima ou superior a 0,01 μF entre o barramento de 1 fio e o aterramento, acho que porque o resistor pull-up 4k7 não é capaz de puxar o barramento para + 5 V rápido o suficiente para cumprir os limites do protocolo.

Na minha configuração, isso acontece quando mais de 3 sensores são conectados juntos. Então, o controlador entra em loop no ciclo de diagnóstico, medindo a temperatura sensor a sensor (o que é legal também …)

Mas também o quinto sensor (28: ff: f2: 41: 51: 17: 04: 31) parece muito doente (talvez soldagem errada), então posso investigar mais a fundo!

Recomendado: