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

Monitor de nível de reservatório

Componentes e suprimentos

Arduino Nano R3
× 1
Freescale MPXV5010DP
× 1
0,96 "Tela OLED
× 1
MCP4725 DAC
× 1
Relé (genérico)
× 1
Capacitores 1uf, .01uf, 470pf todos SMD
× 1
Caixa de plástico transparente de projeto 110 mm * 85 mm
× 1
Tubulação Tygon 3/32 "
× 1

Sobre este projeto


O monitor de nível de reservatório foi construído para funcionar com uma placa de entrada Ecobee RSM-01 que tenho na casa da minha filha ou no projeto do meu monitor doméstico. Eu adicionei um relé para permitir que ele fique sozinho. Eu queria algo que achasse mais confiável e fácil de instalar do que um sensor ultrassônico. Para isso, comecei a pesquisar sensores de pressão e finalmente descobri o Freescale MPXV5010DP. Ele tem uma saída de 0-5vdc para 0-10kPa, o que seria cerca de 1020 mm de cabeça d'água.

Como eu queria uma indicação local, escolhi um módulo OLED para usar no design. Barato, brilhante e com tela bicolor. Para fornecer interface, adicionei um relé para uma saída de contato seco. Eu adicionei um DAC (conversor digital para analógico) para uma saída de 0-5vdc com mais potência do que o sensor MPXV5010DP, isso também protegerá o sensor de possíveis danos na fiação. Como estou usando comunicação I2C, tudo o que é necessário são mudanças de software para fornecer dados a outro Arduino.

Eu projetei e construí uma placa personalizada para facilitar as conexões. Ele fornece flexibilidade suficiente para diferentes configurações.

O sensor é conectado por um tubo Tygon a um tubo de cobre que é direcionado para dentro do reservatório. Isso permite algum critério sobre onde montar o monitor e o mantém longe da própria água.

Código

  • Monitor de nível de reservatório
Monitor de nível de reservatório C / C ++
Analise conforme necessário, lixo extra nesta versão, vá em frente e limpe como desejar.
 #include  #include  #include  #include  #include  #include  #define OLED_RESET 4Adafruit_SSD1306 display (OLED_RESET); # if (SSD1306_LCDHEIGHT! =64) #error ("Altura incorreta, por favor, corrija Adafruit_SSDdafruit # end4725.h47);; int relayPin =5; // para outputint de alarme de relé analogPin =0; // mede a tensão de saída dac v1 =0; // saída ADC de MPXV5010int v2 =0; // escala para entrada dac converte de entrada PS para dac inputint v3 =0; // para conversão de mm de PS inputint v4 =0; // para porcentagem de profundidade de PS inputint v5 =0; // saída de dac lida por arduinoint v6 =0; // para conversão de mV de PS inputfloat v7 =0; // converter de mm para inchesint v8 =0; // para eliminar decimais em polegadas que prejudicam a exibição int offSet =40; // a saída de 0 kPa medida por arduinoint maxSet =1015; // a saída de 10 kPa medida por arduinoint maxHeight =1020; // a profundidade do reservatório do nível normal de água até a tampa em mmint variando =(maxHeight * 0.8) + offSet; int alarmHeight =12; // altura do alarme em polegadas // Para o sensor de pressão diferencial MPXV5010DP analogPin2 =1; float divisor =25,4; // para converter a exibição em inchesvoid setup () {Serial.begin (9600); Serial.println ("Teste DAC com sensor DP"); // por padrão, geraremos a alta tensão da linha de 3,3 V internamente! (legal!) display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicializa com o addr I2C 0x3D (para 128x64) // init done // Limpa o buffer. display.clearDisplay (); // Para MCP4725A0, o endereço é 0x60 ou 0x61 dac.begin (0x60); pinMode (relayPin, OUTPUT); digitalWrite (relayPin, HIGH);} loop vazio () {v1 =analogRead (analogPin2); atraso (1000); if (v1  alarmHeight) {display.invertDisplay (true); digitalWrite (relayPin, LOW);} else {display.invertDisplay (false); digitalWrite (relayPin, HIGH);} display.setTextSize (2); display.setTextColor (WHITE); display.setCursor (0,0); display.println ("NÍVEL SUMP"); //display.setTextColor(BLACK, WHITE); // texto 'invertido' display.setTextSize (4); display.setTextColor (WHITE); display.print (v8); display.setTextSize (2); display.println ("polegadas"); display.display (); atraso (500); } void serial () {// para depuração e calibração Serial.print ("PS analog input:"); Serial.print (v1); Serial.print ("Altura:"); Serial.print (v3); Serial.print ("mm"); Serial.print (v4); Serial.print ("%"); Serial.print ("Tensão convertida:"); Serial.print (v6); Serial.println ("mV");} // fim 

Esquemas

Eagle 6.5.0 usado sump% 20level.sch

Processo de manufatura

  1. Escopo da variável C#
  2. Monitor de Ambiente DIY e Qualidade do Ar
  3. ASSISTENTE DO GOOGLE MATRIX VOICE - PROJETO MATRIX VOICE
  4. Monitor de clima
  5. Monitor de frequência cardíaca remoto
  6. Rover
  7. GoPiGo v2 com Windows IoT
  8. Modelagem de nível de portão
  9. Máquina JW
  10. Como nivelar um torno