sexta-feira, 21 de setembro de 2018

Gerador de hidrogênio, HHO

 O hidrogênio é um componente que tem um valor calórico muito alto, sendo utilizado para movimentar veículos a combustão ou de forma elétrica. Na internet tem vários kits sendo vendido para finalidade de combustível, vale salientar que tais alterações tem que ser passadas por vistorias no Detran. Alguns carros vem de fábrica com células de hidrogênio mas com um preço proibitivo, na Alemanha um trem elétrico é abastecido com esse gás.
  
 Podemos obter tal componente com a quebra da molécula da água de duas formas. Por eletrólise utilizando dois metais em contato com água e soda caustica (pode ser usado bicarbonato de sódio e sais em gerais, ou algum tipo de acido), a adição de tais produtos serve para aumentar a condutividade da água, as placas metálicas são ligada á uma fonte de alimentação com corrente continua. 
  Outra forma é fazer uma solução como acima e adicionar alumínio, irá ocorrer uma reação química e liberação dos gases.   

  Propomos aqui uma célula de hidrogênio com eletrólise feita em casa utilizando duas placas de aço inox, cano PVC e um pedaço de acrílico. No vídeo abaixo podemos ver a construção da célula.



  Aqui podemos ver a célula funcionando.

   
  A ideia futura é a criação de um maçarico utilizando o gás hidrogênio.

  Optamos por fazer essa célula com separação de HHO para tentar reduzir os riscos de explosões, visto que, para se ter fogo é necessário um gás inflamável, um agente comburente, no caso o oxigênio e uma fonte de calor, dessa forma o hidrogênio saindo mais puro reduz um pouco os riscos.  

sexta-feira, 6 de julho de 2018

COMO ACIONAR CONTACTORA DE FORMA SIMPLES



          As contatoras são utilizadas nas industrias para acionar grandes cargas como motores e sistemas de iluminação entre outras, esses dispositivos são encontrados em diversos modelos e tamanhos, sua alimentação pode ser com correntes continuas de 24 voltes, corrente alternadas monofásicas ou bifásicas.

      Faremos aqui uma ligação manual utilizando dois botões, um deles fica normalmente fechado (NC) e o outro normalmente aberto (NO), acionando o botão (NO) a contactora será acionada e assim permanecera até ser pressionado o botão (NC), ou até acabar a energia elétrica.

     Este modelo de contactora é energizada em rede bifásica e pode acionar até motores trifásico, para ligar o equipamento é necessário ligar os conectores A1 e A2 na rede elétrica. Para acionamento da carga (motores, iluminação, motobombas.....) deve-se conectar tensão nos conectores L1, L2e L3, lembrando que não é necessário ligar todas as entradas juntas, (  L1, L2e L3 ), ou seja, se o motor for bifásico deverá ligar apena L1 e L2. O motor que iremos ligar deve ser conectados em T1, T2 e T3 conforme for utilizado L1, L2e L3.

     Nesse exemplo de ligação á energia proveniente da rede elétrica vai ser conectado em L1 e L2, foi colocado um Jumper em L1 e A1, em L2 foi conectado um terminal do botão normalmente Fechado, o outro conector vai ser ligado em NO da contactora juntamente com um dos terminais da chave normalmente aberta, a outra extremidade  vai ser ligada na bobina A2.  

        Abaixo temos um vídeo que explica como essa ligação foi realizada.
  


     Espero que tenham gostado do conteúdo, não perca nesse link um material sobre irrigação Arduíno.

Muito Obrigado

      

domingo, 8 de abril de 2018

Utilizando vários sensores DS18B20 em uma única porta do Arduíno UNO




O sensor DS18B20 é um ótimo sensor e tem um excelente custo benefício, neste tutorial foi utilizado a versão a prova de água, ou seja podemos aferir a temperaturas de líquidos diretamente. Você pode ver a matéria anterior sobre esse assunto neste link.

No vídeo abaixo podemos ver alguns detalhes sobre esse sensor e na sequencia temos o códigos utilizados no Arduíno.





Como podemos ver no vídeo é necessário descobrir os endereços de cada sensor no Arduíno, utilizamos ó código abaixo para isso.


Código para descobrir os endereços de cada sensor DS18B20.

/* Modificado por Projeto Básico
    www.rpsilva100.blogspot.com
    www.youtube.com/c/projetobasicos
   fevereiro 2018
   Com base no exemplo em: http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html * / /

*/
#include <OneWire.h>

/*-----( Declare Constants and Pin Numbers )-----*/
#define SENSOR_PIN 2  // Any pin 2 to 12 (not 13) and A0 to A5

/*-----( Declare objects )-----*/
OneWire  ourBus(SENSOR_PIN);  // Create a 1-wire object

void setup()  /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  Serial.println("www.youtube.com/c/projetobasicos");
  Serial.println();

  discoverOneWireDevices();  // Everything happens here!
}//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  // Nothing happening here
}

/*-----( Declare User-written Functions )-----*/
void discoverOneWireDevices(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Looking for 1-Wire devices...\n\r");// "\n\r" is NewLine
  while (ourBus.search(addr)) {
    Serial.print("\n\r\n\rFound \'1-Wire\' device with address:\n\r");
    for ( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  Serial.print("Done");
  ourBus.reset_search();
  return;
}

Você irá encontrar valores parecidos com esse no monitor serial do Arduíno,


{0x28, 0xFF, 0xBC, 0xB0, 0x62, 0x16, 0x04, 0x7A };
{0x28, 0xFF, 0x4D, 0xEC, 0x62, 0x16, 0x04, 0xDB };
{0x28, 0xFF, 0x77, 0x25, 0x88, 0x16, 0x03, 0x66 };

 basta copiá-lo e substituir no código abaixo no trecho parecido com este


DeviceAddress Probe01 = {0x28, 0xFF, 0xBC, 0xB0, 0x62, 0x16, 0x04, 0x7A };
DeviceAddress Probe02 = {0x28, 0xFF, 0x4D, 0xEC, 0x62, 0x16, 0x04, 0xDB };
DeviceAddress Probe03 = {0x28, 0xFF, 0x77, 0x25, 0x88, 0x16, 0x03, 0x66 };




E finalmente o código para rodar os sensores no Arduíno.

/* Modificado por Projeto Básico
    www.rpsilva100.blogspot.com
    www.youtube.com/c/projetobasicos
   fevereiro 2018
   Com base no exemplo em: http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

*/


/*-----( Import needed libraries )-----*/
// Get 1-wire Library here: http://www.pjrc.com/teensy/td_libs_OneWire.html
#include <OneWire.h>

//Get DallasTemperature Library here:  http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library
#include <DallasTemperature.h>

/*-----( Declare Constants and Pin Numbers )-----*/
#define ONE_WIRE_BUS_PIN 2

/*-----( Declare objects )-----*/
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS_PIN);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

/*-----( Declare Variables )-----*/
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress Probe01 = {0x28, 0xFF, 0xBC, 0xB0, 0x62, 0x16, 0x04, 0x7A };
DeviceAddress Probe02 = {0x28, 0xFF, 0x4D, 0xEC, 0x62, 0x16, 0x04, 0xDB };
DeviceAddress Probe03 = {0x28, 0xFF, 0x77, 0x25, 0x88, 0x16, 0x03, 0x66 };


void setup()   /****** SETUP: RUNS ONCE ******/
{
  // start serial port to show results
  Serial.begin(9600);
  Serial.print("Initializing Temperature Control Library Version ");
  Serial.println(DALLASTEMPLIBVERSION);

  // Initialize the Temperature measurement library
  sensors.begin();

  // set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
  sensors.setResolution(Probe01, 10);
  sensors.setResolution(Probe02, 10);
  sensors.setResolution(Probe03, 10);


Serial.print("Número de dispositivos encontrados no barramento = ");
  Serial.println(sensors.getDeviceCount());
  Serial.print("Obtendo temperaturas ... ");
  Serial.println();

}//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  delay(1000);
  Serial.println();

  // Command all devices on bus to read temperature
  sensors.requestTemperatures();

  Serial.print("Sonda 01:   ");
  printTemperature(Probe01);
  Serial.println();

  Serial.print("Sonda 02:   ");
  printTemperature(Probe02);
  Serial.println();

  Serial.print("Sonda 03:   ");
  printTemperature(Probe03);
  Serial.println();


}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/
void printTemperature(DeviceAddress deviceAddress)
{

  float tempC = sensors.getTempC(deviceAddress);

  if (tempC == -127.00)
  {
    Serial.print("Error getting temperature  ");
  }
  else
  {
    Serial.print("C: ");
    Serial.print(tempC);
     }//
}// End printTemperature
//*********( THE END )***********


Espero que tenha gostado do sensor DS18B20, caso tenha alguma dúvida poste nos comentários.

domingo, 4 de fevereiro de 2018

Como usar sensor DS18B20


Em muitos projetos necessitamos de sensores com um minimo de sensibilidade e precisão, o DS18B20 com certeza supri várias necessidades, além da sensibilidade podemos fazer projetos com vários sensores em uma unica porta, isso veremos em uma matéria posterior.


Veremos aqui algumas características desse sensor e um teste feito com ele, no final caso tenha alguma dúvida é só colocar nos comentários.


Algumas Características desse sensor:


  • Interface exclusiva 1-Wire® (1 conector) necessita de apenas 1 pino para comunicação
  • Cada sensor tem um número de série de 64 bits armazenados em memória ROM
  • Não requer peças externas
  • Pode ser alimentado pela linha de dados. Uma faixa de alimentação de 3,0 a 5,5V
  • Mede temperaturas de -55 a + 125 ° C (-67 ° F a + 257 ° F)
  • precisão de ± 0.5 ° C na faixa de -10 a + 85 ° C
  • resolução selecionável pelo Usuário de 9 a 12 bits
  • Converte a temperatura para uma palavra digital de 12 bits em no máximo 750ms
  • Não há dados para definir por usuário.
  • comando de busca de alarmes identifica e localiza os sensores que marcam temperaturas para os limites programados (condição de alarme de temperatura)
  • Aplicações diretas termostáticas, sistemas industriais, produtos de consumo, termômetros ou qualquer sistema com sensibilidade térmica




No video abaixo é possível ver o sensor em funcionamento.





Para o uso desse sensor se faz necessário algumas bibliotecas, utilizando a IDE Arduíno basta seguir os passos abaixo.




Clicar em sketch>incluir biblioteca>gerenciar bibliotecas




No campo de busca digite o nome do sensor, nesse caso DS18B30, irá aparecer duas bibliotecas, instale as duas.





Escolha a versão atual e click em instalar.



Código


/ * Modificado por Projeto Básico
    www.rpsilva100.blogspot.com
    www.youtube.com/c/projetobasicos
   fevereiro de 2018
   Com base no exemplo em: http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

* /

/ * ----- (Importar bibliotecas necessárias) ----- * /
// Obter biblioteca de 1 fio aqui: http://www.pjrc.com/teensy/td_libs_OneWire.html
#include <OneWire.h>

// Obter a DallasTemperature Library aqui: http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library
#include <DallasTemperature.h>

/ * ----- (Declare Constants and Pin Numbers) ----- * /
#define ONE_WIRE_BUS_PIN 2

/ * ----- (Declare objects) ----- * /
// Configurar uma instância oneWire para se comunicar com qualquer dispositivo OneWire
OneWire oneWire (ONE_WIRE_BUS_PIN);

// Passe nossa referência oneWire para Dallas Temperature.
Sensores DallasTemperature (& oneWire);

/ * ----- (Declare Variables) ----- * /
// Atribua os endereços dos seus sensores de temperatura de 1 fio.
// Veja o tutorial sobre como obter esses endereços:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress Probe01 = {0x28, 0xFF, 0x35, 0xD7, 0x82, 0x15, 0x02, 0x1B};


void setup () / ****** CONFIGURAÇÃO: FUNCIONA UMA VEZ ****** /
{
  Serial.begin (9600);
  Serial.println ();
  Serial.println ("www.youtube.com/c/projetobasicos");
  Serial.println ();
  // Inicialize a biblioteca de medição de temperatura
  sensores.begin ();

  // configura a resolução para 10 bits (pode ser de 9 a 12 bits ... menor é mais rápido)
  sensores.setResolução (Probe01, 10);

} // - (configuração final) ---

loop vazio () / ****** LOOP: FUNCIONA CONSTANTEMENTE ****** /
{
  atraso (1000);

  // Comando todos os dispositivos no ônibus para ler a temperatura
  sensores.requestTemperatures ();

  // Serial.print ("Probe 01 temperature is:");
  printTemperature (Probe01);


} // - (loop principal final) ---

/ * ----- (Declare User-written Functions) ----- * /
void printTemperature (DeviceAddress deviceAddress)
{

  float tempC = sensores.getTempC (deviceAddress);

  se (tempC == -127.00)
  {
    Serial.print ("Erro ao obter temperatura");
  }
  outro
  {
    Serial.print (tempC);

    Serial.println ("C:");
  }
}


Obrigado!

quinta-feira, 25 de janeiro de 2018

Calibração de sensor de PH com Arduíno

Em todas as soluções que utilizamos em nosso dia a dia desde produtos alimentícios até produtos de limpeza ou cosméticos possui um valor de PH que vai de 0 que é muito ácido até 14 que é muito alcalino, o vinagre por exemplo de P.H. em torno de 2,9.

Existe alguns equipamentos para realizar leituras desses valores de P.H. para em seguida fazermos as correções, o P.H. neutro é 7, sendo este o ideal para utilizarmos em produtos de limpeza sem agredir as mãos ou na água potável que utilizamos para nós hidratar.

Veremos aqui uma das melhores formas de calibrar módulos de P.H. chineses, esses módulos ou sensores de P.H. são utilizados com o Arduíno e nos primeiros testes se mostraram bastante eficientes.


No vídeo abaixo podemos ver como é feita a calibração.      



O código logo abaixo foi encontrado no foram do Arduíno, caso queira acompanhar a discussão é só clicar nesse link. 


/*
 * Modificado por Projeto Básico
 * www.youtube.com/c/projetobasicos
 * www.rpsilva100.blogspot.com
 * codigo original disponivél em
 * https://forum.arduino.cc/index.php?topic=336012.0
 *
 */

int ph_pin = A0; //This is the pin number connected to Po

void setup() {
  Serial.begin(9600);
  Serial.println("         Projeto basico");
  Serial.println("www.youtube.com/c/projetobasicos");
  }

void loop() {
  int measure = analogRead(ph_pin);
  Serial.print("Measure: ");
  Serial.print(measure);

  double voltage = 5 / 1024.0 * measure; //classic digital to voltage conversion
  Serial.print("\tVoltage: ");
  Serial.print(voltage, 3);

  // PH_step = (voltage@PH7 - voltage@PH4) / (PH7 - PH4)
  // PH_probe = PH7 - ((voltage@PH7 - voltage@probe) / PH_step)
  float Po = 7 + ((2.5 - voltage) / 0.18);
  Serial.print("\tPH: ");
  Serial.print(Po, 3);

  Serial.println("");
  delay(2000);
}


Quando o P.H. estiver em 7 o pino Po do módulo P.H. deverá estar com 2.5 voltes, no código quando Po for 7 a variável Po deve estar em 0 voltes, nesta linha 

* float Po = 7 + ((2.5 - voltage) / 0.18);*


A variável possui 2,5 voltes constantes e tem uma redução da porta Po, sendo assim, quando o valor do pino for 2,5 voltes- a constante de 2,5 V o resultado vai ser 0, se a tenção do pino resultar em valores negativos o P.H. será ácidos, caso contrário o valor sera alcalino. 

Caso tenham alguma duvida perguntem nos comentários.


Obrigado.  

domingo, 14 de janeiro de 2018

COMO FAZER UM SENSOR DE GÁS MQ-4

COMO FAZER UM SENSOR DE GÁS MQ-4



    O gás de cozinha é essencial para nosso cotidiano, afinal muitas das coisas que consumimos para se alimentar passa pelo fogão. Mas a utilização do gás é muito mais ampla, afinal temos carros movidos a gás, industrias que são tocadas por gases entre outros produtos, eventualmente pode ocorrer acidentes com vazamentos de gases inflamáveis, uma solução para prevenir esses acidentes é a utilização do sensor MQ-4 juntamente com um Arduíno Uno e solenoides.

     Nosso projeto propõe a criação simples de um sistema para evitar tais acidentes.




Na imagem abaixo temos o diagrama do circuito





O vídeo com mais detalhes é visto abaixo





O código fonte pode ser conferido abaixo


/*
          PROJETO BASICO

  www.youtube.com/c/projetobasicos
  www.rpsilva100.blogspot.com

*/
int pinSensor = A1; //Pino Sensor
int valor = 0;
int leitura = 0;
int rele = 13;

void setup()
{
  Serial.begin(9600); //Inicia porta Serial em 9600
  Serial.println("         PROJETO BASICO");
  Serial.println("www.youtube.com/c/projetobasicos");
  Serial.println();
  pinMode(rele, OUTPUT);
  digitalWrite(rele, LOW);

}

void loop()
{ delay(1000);
  valor = analogRead(pinSensor); //Faz a leitura da entrada do sensor
  leitura = map(valor, 0, 1023, 0, 100);
  Serial.println(leitura);
  if (leitura >= 30) {
    digitalWrite(rele, HIGH);
  }

  else {

    digitalWrite(rele, LOW);
  }
}


Espero que tenham gostado.

Obrigado!

domingo, 7 de janeiro de 2018

Motor shield L293D (Robótica, motor de passo e motor dc)

     Em muitos projetos em especial os que envolvem movimentos com motores DC necessitamos de uma ponte H para movimentar as rodas nos dois sentidos. O moto shield é ideal para esses projetos, possui 2 pontes H que controla até 4 motores DC ou 2 motores passo, além disso este shield ainda pode controlar 2 servos motores.
    Sua alimentação é feita pelo Arduíno ou por alimentação externa, essa é mais recomendado pela não gerar sobre carga no Arduíno, utilizando o Jumper a alimentação é feita pelo Arduíno, caso for utilizar  a alimentação externa basta retirar o Jumper.

    A imagem imagem o local onde é feita a seleção de alimentação interna ou externa.





     Temos todos os pinos analógicos disponíveis para uso, esses pinos também podem ser utilizados na forma digital, nesse caso serão os pinos que vão do 14 até 19, os pinos 2 e 13 também estão disponíveis para a utilização  



Neste vídeo é possível ver mais informações sobre este escudo. 




    Para robótica está plaquinha se mostra bastante eficiente, já para a utilização como controladora de mini CNC seu uso já não é muito recomendado pois existem outras placas mais dedicadas para isso..