arduino

Arredondar valores lidos pelo Arduino ou sensor

Arduino como arredondar um valor lido

Dúvidas em relação ao uso de funções? recomendo o seguinte site:
http://www.inf.pucrs.br/~pinho/LaproI/Funcoes/AulaDeFuncoes.htm (acessado no dia 21/08/2018)

Se quisermos mostrar valores dentro de uma faixa pré determinada (arredondar) podemos tratar os valores lidos pelo sensor e estipular uma regra de controle.
Enviamos um valor a função (parâmetro) este valor será do tipo float portanto utilizaremos do seguinte estratagema para calcular somente o valor fracional.

Vamos supor que o sensor envia o seguinte valor para a função “30,25”
Decalaramos uma variável temporária do tipo int para armazenar o valor de 30,25
como a váriavel é do tipo int ela ignorará o valor fracional.

float arredondado=30,25;
int temp_aux=0;
arredondado=30,25;
temp_aux=arredondado;

Ao lermos o valor da variável temp_aux leremos somente 30
Então para calcular somente o valor fracional faremos arredonda-temp_aux que seria (30,25)-(30)=0,25

o Código para arredondar valores


float arredondamento(float arredonda)
{
int temp_aux=0;
float temp_fracional=0;
float temp_final=0;
temp_aux=arredonda;
temp_fracional=(arredonda-temp_aux);

if (temp_fracional>=0.125 && temp_fracional<0.375)
{
temp_fracional=0.25;
temp_final=(temp_aux+temp_fracional);
return temp_final;
}
}

O bloco IF acima testa se um valor é maior ou igual a 0,125 e menor que 0,375, se as duas condições forem satisfeitas a temperatura retornada terá um valor de 0,25 adicionada ao seu valor inteiro.

Posted by Bruno Armelim in Arduino, 0 comments
Instalando uma nova biblioteca no Arduino

Instalando uma nova biblioteca no Arduino

[vc_row][vc_column][vc_column_text]

Instalando Bibliotecas no Arduino

Para instalar uma biblioteca no Arduino é só seguir os passos abaixo.[/vc_column_text][vc_column_text]

Biblioteca para Controle Remoto – IRremote

Como exemplo vamos ensinar a instalar a biblioteca IRremote mas os mesmos passos podem ser seguidos para instalar qualquer bilbioteca.
O primeiro Passo é procurar qual biblioteca você precisa e qual melhor se adapta ao seu projeto caso exista mais de uma.
Um bom início é procurar por library (que significa bilioteca em inglês) e o que você precisa, por exemplo library LCD.
No nosso caso vamos procurar por Library IR (Infrared que significa infravermelho) você pode usar o google tradutor para saber os termos da busca em inglês.

[/vc_column_text][vc_single_image image=”5655″ img_size=”full”][vc_column_text]Disponível na IDE do Arduino existe um Gerenciador de Bibliotecas onde você pode adicionar rapidamente uma biblioteca que está compactada no formato .ZIP ou até mesmo a pasta. Para isso deve-se na IDE abrir o menu: Sketch > Incluir Biblioteca (Include Library) > Adicionar Biblioteca .ZIP (Add .ZIP Library…) conforme a imagem abaixo.[/vc_column_text][vc_column_text]Como podemos ver na imagem acima o resultado que nos interessa já apareceu na primeira página.
Outro termo que podemos usar junto com Library IR é a palavra github[/vc_column_text][vc_column_text]

O que é Github?

GitHub é uma plataforma de hospedagem para código-fonte. A plataforma permite que programadores ou qualquer usuário cadastrado na plataforma contribuam em projetos privados e/ou Open Source de qualquer lugar do mundo.
O GitHub é amplamente utilizado por programadores para divulgação de seus trabalhos ou para que outros programadores contribuam com o projeto, além de promover fácil comunicação através de recursos que relatam problemas ou mesclam repositórios remotos (issues, pull request).

O GitHub é mundialmente usado e chega a ter mais de 3 milhões de usuários ativos mundialmente contribuindo em projetos comercias ou pessoais. Hoje o GitHub abriga mais de 65 milhões de projetos, alguns deles que são conhecidos mundialmente. (fonte wikipedia).

Muitos hobbystas e profissionais que gostam de arduino postam muito conteúdo no Github, nunca se esqueça de procurar nele por códigos já prontos ou idéias para o seu.[/vc_column_text][vc_single_image image=”5656″ img_size=”large” onclick=”link_image”][vc_column_text]Voltando a nossa busca no google, clique no link marcado em vermelho que é do Github e na página do Github clique na opção Clone or Download, após escolha a opção salvar como ZIP e salve o arquivo na seguinte pasta do seu arduino C:\Arduino\libraries , ou na pasta libraries onde quer que a IDE do arduino tenha sido instalada.

Você também pode instalar pela IDE do arduino, clique em Sketch -> Import Library -> Add Library
E selecione o local onde você salvou o arquivo.zip do Github.[/vc_column_text][vc_single_image image=”5659″ img_size=”large” onclick=”link_image”][vc_column_text]

Dúvidas

Nos envie um comentário com sua dúvida.[/vc_column_text][/vc_column][/vc_row]

Posted by Bruno Armelim in Sem categoria, 0 comments
Receptor Infravermelho – IR receiver

Receptor Infravermelho – IR receiver

[vc_row][vc_column][vc_column_text]

Receptor infravermelho comprado na china / mercado livre.

Tudo o que você precisa saber antes de usar nos seus projetos.
[/vc_column_text][vc_column_text]Um receptor infravermelho, ou receptor IR, é um hardware que recebe informações de um controle remoto ou outro dispositivo infravermelho, e decodifica esses sinais. Em geral, o receptor envia um código para identificar exclusivamente o sinal infravermelho que recebe. Este código é então usado para converter sinais do controle remoto em um formato que possa ser entendido por outro dispositivo sua TV por exemplo. O sinal infravermelho requer visibilidade direta, mas ainda pode ser refletido por itens como vidro e paredes que estejam próximos.

Tipos de Receptores Infravermelhos
Existem muitos tipos diferentes de receptores infravermelhos, os tipos mais comuns categorizados por tensão de alimentação, frequência de portadora, distância de transmissão, dissipação de energia, tipo de embalagem e corrente de alimentação.

Os com frequência de portadora mais comuns são 36 kHz, 37,9 kHz, 38 kHz e 40 kHz. Também carregamos receptores infravermelhos com frequência de portadora de até 56 kHz. A distância de transmissão pode variar de 8 a 45 metros.

Aplicações para Receptores Infravermelhos:
Os receptores de infravermelho geralmente podem ser encontrados em produtos de consumo, como controles remotos de televisão, home theaters, receptores de cabo ou satélite, videocassetes, DVD e Blu-Ray players e amplificadores de áudio. Receptores infravermelhos também podem ser encontrados nos mercados industrial, militar, aeroespacial e de fotografia.

Se você não comprou seu receptor em um lugar conhecido ou não consegue ver o nome do componente, talvez você não saiba qual é a frequência que ele trabalha e ao emitir com um portadora errada você terá dificuldades em decodificar o sinal, para facilitar o seu trabalho recomendo ter um receptor conhecido para não ter que ficar experimentando portadoras diferentes.[/vc_column_text][vc_column_text]Modulação de controle remoto infravermelho e Teoria da Codificação
A luz infravermelha usada em aplicações de controle remoto é modulada para que o receptor possa distinguir entre os sinais desejados e todas as outras fontes de ruído infravermelho. Existem várias modulações e técnicas de codificação usadas para distinguir entre ruído indesejado e sinais infravermelhos úteis.
Basicamente, três técnicas de modulação são usadas:
Modulação de Amplitude, Chaveamento On-Off, OOK
FSK, Chaveamento de Freqüência, Modulação de Frequência
Flash, modulação de “pulso”, banda base

Modulação de Amplitude, On-Off Keying, OOK
A utilização da modulação de amplitude é uma das técnicas mais antigas e mais simples, na qual os sinais infravermelhos
grupo de pulsos com uma certa freqüência (tipicamente 30-60 kHz), delimitada pelo espaço onde não há sinais gerado.
O receptor está sintonizado em uma frequência específica e todos os outros ruídos não passarão pelo receptor. Estes receptores são fabricados por diversas empresas como Infineon, Vishay, Sharp e outros. Esses receptores possuem três pinos sendo que um deles fornece sinais demodulados em níveis lógicos que são muito fáceis para interagir com o microprocessador de um receptor. Eles geralmente são sintonizados em uma freqüência específica (como 30, 33,36, 38, 40 ou 56 kHz).
Os sistemas de modulação de amplitude usam vários métodos de codificação, dois deles podem ser vistos abaixo e se você quiser aprender ainda mais consulte os seguintes sites:

Notas de aplicações infravermelho da Freescale
Notas de aplicações Transmissão infrared da Microchip
Notas de aplicações Recepção infrared da Microchip

[/vc_column_text][vc_column_text]Codificação por distância entre pulsos[/vc_column_text][vc_single_image image=”5649″ img_size=”full”][vc_column_text]Codificação por largura de pulsos[/vc_column_text][vc_single_image image=”5650″ img_size=”full”][vc_column_text]

Receptor IR TSOP17XX

Um dos receptores mais comuns é o TSOP você provavelmente deve ter um desses, o que muda no seu nome após o 17 é a frequênica da portadora, temos os seguintes receptores TSOP1730 (30 kHz), TSOP1738 (38 kHz), TSOP1740 (40kHz), etc. Os últimos dois dígitos representam a frequência (em Khz) dos raios IR modulados, na qual o TSOP responde. Como por exemplo o TSOP1738 reage quando recebe a radiação IR modulada a 38Khz. Significa que detecta o IR que está ligando e desligando a uma taxa de 38Khz. A saída do TSOP está ativa baixa, significa que sua saída permanece ALTA quando não há IR, e se torna baixa quando detecta radiação IR. O TSOP opera em uma frequência específica para que outros IRs no ambiente não possam interferir, exceto o IR modulado de frequência específica. Ele tem três pinos, terra, Vs (energia) e pino de saída.

[/vc_column_text][vc_single_image image=”5639″ img_size=”large” onclick=”link_image”][vc_column_text]Pino 1: GND / Terra
Pino 2: VCC / Alimentação 5V
Pino 3: Signal Out / Sáida do Sinal[/vc_column_text][vc_column_text]

Módulo Receptor genérico Xinda com controle remoto

[/vc_column_text][vc_single_image image=”5637″ img_size=”large” onclick=”link_image”][vc_column_text]Dimensões: 15mmx15mm
Pino 1: GND / Terra
Pino 2: VCC / Alimentação 5V
Pino 3: Signal Out / Sáida do Sinal
Frequência: 38Khz

O LED no canto superior esquerdo pisca em vermelho quando recebe algum sinal infra vermelho.[/vc_column_text][vc_column_text]

Controle remoto Xinda

[/vc_column_text][vc_single_image image=”5643″ img_size=”large” onclick=”link_image”][vc_column_text]Dimensões: 80mmx45mm
Alimentação / Power Supply: Pilha CR2025.
Teclas/Buttons: 17
Frequência/Frequency: 38Khz[/vc_column_text][vc_column_text]Bibliotecas

O ambiente do Arduino pode ser estendido através do uso de bibliotecas, assim como a maioria das plataformas de programação. As bibliotecas fornecem funcionalidade extra para uso em sketches, por exemplo trabalhando com hardware ou manipulando dados. Para usar uma biblioteca em um esboço, selecione-a em Sketch> Import Library.
Várias bibliotecas vêm instaladas juntos com o IDE do arduino, mas você também pode fazer o download ou criar a sua própria. Veja estas instruções para detalhes sobre a instalação de bibliotecas.

Para saber mais sobre as bibliotecas do arduino clique aqui
Para aprender como instalar uma biblioteca no arduino clique aqui

Bibliotecas específicas para IR
Arduino-IRremote
Infrared4Arduino
Kkpoon IRremote[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]Projetos
O projeto mais simples possível utilizando o controle remoto e o receptor Xinda segue abaixo.

Primeiro monte o circuito de acordo com o diagrama esquemático abaixo, não se esquece de verificar os pinos e não inverter nada.[/vc_column_text][vc_single_image image=”5666″ img_size=”large” onclick=”link_image”][vc_column_text]Segundo.

Copie e cole o código abaixo em um Sketch, compile e faça o upload, não se esqueça que você precisa ter a bibioteca IRremore instalada.

#include
IRrecv irrecv(11); // conecte o pino de saida do sinal no pino 11 do seu arduino
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // inicia o recebimento serial
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX); // imprime os valores hexadecimais
irrecv.resume(); // continua recebendo teclas pressionadas
}
}
[/vc_column_text][vc_column_text]Terceiro abra seu monitor serial e comece a apertar as teclas do seu controle remoto.

Para abrir o monitor serial você pode usar o atalho CONTROL+SHIT+M ou ir em Tools -> Serial Monitor
Aperta qualquer tecla e você vera alguns códigos Hexadecimais aparecendo no seu monitor.
Toda tecla tem um código único e se você apertar e segurar uma tecla recebera o código “FFFFFFFF”
[/vc_column_text][vc_single_image image=”5667″ img_size=”full”][vc_column_text]Abaixo seguem os botões mapeados do meu controle, lembro que os códigos podem mudar de acordo com lotes ou fabricantes.

Botão Valor
CIMA FF629D
ESQUERDA FF22DD
OK FF02FD
DIREITA FFC23D
BAIXO FFA857
1 FF6897
2 FF9867
3 FFB04F
4 FF30CF
5 FF18E7
6 FF7A85
7 FF10EF
8 FF38C7
9 FF5AA5
* FF42BD
0 FF4AB5
# FF52AD

[/vc_column_text][vc_column_text]Eu sou um bloco de texto. Clique no botão Editar (Lápis) para alterar o conteúdo deste elemento.[/vc_column_text][/vc_column][/vc_row]

Posted by medigaco_wp in Arduino, 0 comments
Construindo um contador de Visitas com um Sensor infravermelho (detector de movimento)

Construindo um contador de Visitas com um Sensor infravermelho (detector de movimento)

Radiação infravermelha
A radiação infravermelha foi descoberta em 1800 por William Herschel, um astrônomo inglês de origem alemã. Hershell colocou um termômetro de mercúrio no espectro obtido por um prisma de cristal com a finalidade de medir o calor emitido por cada cor. Descobriu que o calor era mais forte ao lado do vermelho do espectro, observando que ali não havia luz. Esta foi a primeira experiência que demonstrou que o calor pode ser captado em forma de imagem, como acontece com a luz visível.
Espectro eletromagnético de cores
Figura – 1 Espectro eletromagnético. Fonte  http://www.magnetosblog.com/efeitos-beneficio-do-infravermelho-longo acessado em 01/04/20112
Sensor infravermelho – PIR (Passive infra-red)
Sensores infravermelhos começaram a ser usados por volta de 1940, originalmente desenvolvido para aplicações militares e cientificas.
Agora a tecnologia é usada largamente em diversos produtos comerciais como alarmes de detecção de intrusos, lâmpadas acionadas automaticamente, etc.
Os sensores modernos são altamente eficientes provendo conveniência, segurança e baixo custo.
Podem ser usados em qualquer lugar onde pessoas ocasionalmente caminham como corredores, garagens, jardins etc.
Como um sensor PIR funciona
Todos os sensores PIR detectam mudanças na radiação infravermelha que é emitida na forma de calor por diversos corpos como carros, seres humanos, animais etc.
Quanto maior o corpo mais radiação infravermelha é emitida e quanto mais radiação mais fácil é a detecção de movimento.
Podemos considerar o detector de movimento como uma chave ON – OFF controlada eletronicamente, toda vez que uma fonte de calor é detectada um sinal digital é enviado a saída (no caso do sensor usado um sinal de tensão ALTO +3,3V).
sensor detector infravermelho detecção
Figura – 2 Detecção de movimento. Fonte  http://www.glolab.com/pirparts/infrared.html  acessado em 01/04/20112
Conectando seu sensor ao Arduino.

A maioria dos módulos possuem 3 pinos na PCI, o layout dos pinos pode mudar mas basicamente são Alimentação – Saída – Terra (geralmente a descrição está escrito na  placa com silkscreen).

Faça um teste rápido alimentando seu sensor antes de conectá-lo ao arduino, caso ele não esteja mostrando uma saída de tensão coerente tente utilizar um resistor de Pullup (um exemplo pode ser visto no meu artigo sobre botões https://mediga.com.br/primeiro-projeto-com-o-arduino-pisca-led/)
Sensor Infravermelho detector infravermelho arduino
Figura 3 – Vista traseira do sensor
Especificações:
  • Tensão de entrada: DC 4.5 a 20V
  • Consumo sem detecção: 50uA
  • Tensão de saída 0,3V OFF e 3,6V ON
  • Ângulo de detecção: 110 graus
  • Distância de detecção: max 7 m
Montagem do circuito
Conecte o pino – do Módulo ao GND (terra) do Arduino
Conecte o pino + do Módulo ao 5V (Vdc) do Arduino
Conecte o pino OUT do Módulo ao pino 8 do Arduino
  
Código Fonte
#define sensor 8 // Define o pino 8 como detector de nível alto do sensor de presença
#include <LiquidCrystal.h> // Bilbioteca necessaria para utilizar o LCD
/* Biblioteca com funcoes para uso de um LCD baseado no Hitachi HD 44780 */
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/* Define os pinos de ligacao do LCD ao arduino com esta ordem LiquidCrystal(rs, enable, d4, d5, d6, d7)  */
int detecta=0;
int valor_acumulado=0;
void setup()
{
   /*lcd.begin(cols, rows) */
   lcd.begin(20, 4); /* Tipo de LCD usado no meu caso de 20 colunas por 4 linhas */
   lcd.setCursor(0, 0); /* O Cursor iniciara na coluna zero linha 0 */
   lcd.print(”    Central AVR!”);
   lcd.setCursor(0, 2); /* O Cursor iniciara na coluna zero linha 2 */
   lcd.print(“Detectados = 0”); /* Mensagem inicial indicando que nenhum movimento foi computado */
   lcd.print(” movs”);
   pinMode(sensor, INPUT); /* Define o pino 8 como entrada */
}
  void loop()
    {
      if(digitalRead(sensor)==HIGH) /* Se algum objeto for detectado executa o bloco abaixo */
     {
      valor_acumulado=detecta+1;
      lcd.setCursor(0, 2); /* O Cursor iniciara na coluna zero linha 2 */
      lcd.print(“Detectados = “);
      lcd.print(valor_acumulado); // imprime no LCD o número da detecção
      lcd.print(” movs”);
      delay(8000); //espera 8 segundos até computar a proxima detecção (meu sensor fica 7 segundos em nivel alto)
      detecta = valor_acumulado; /* Guarda valor atual para ser incrementado na próxima detecção */
     }
    }

Resultado final 

circuito de detecção movimento infravermelho arduino

 Figura 4 – Vista geral da montagem

 

 Vídeo 1 – Contador de Visitas.
Posted by medigaco_wp in Arduino, Sem categoria, 3 comments
Utilizando PWM para controlar velocidade e brilho

Utilizando PWM para controlar velocidade e brilho

[vc_row][vc_column][vc_column_text]

O que é PWM?

Modulação por largura de pulso ou Pulse Width Modulation ( PWM ) é uma técnica que permite controlar a quantidade de energia fornecida a um determinado dispositivo eletrônico / elétrico. Basicamente o controle é obtido através da variação da largura de uma tensão retangular (DC) ao longo de um período de tempo. Quanto maior a largura do retângulo maior a potência na carga, a essa variação de largura, ou seja de tempo onde o sinal tem nível alto chamamos de duty cycle ou ciclo de trabalho.
Resumidamente o sinal PWM é uma onda digital retangular onde a frequência é constante e o tempo em que o sinal possui nível alto pode ser variado entre 0 e 100% (duty cycle).[/vc_column_text][vc_single_image image=”5425″ img_size=”full”][vc_column_text]Figura -1 Duty Cycle ou ciclo de trabalho. Fonte http://www.arduino.cc/en/Tutorial/PWM acessado em 28/07/2011[/vc_column_text][vc_column_text]

Controlando a luminosidade de um LED

Em uma ligação direta a uma bateria um LED emitirá uma boa quantidade de luz (é necessário limitar a corrente no LED com auxilio de um resistor), essa quantidade de luz pode ser diminuída ao se ajustar a quantidade de corrente fornecida ao LED, quanto maior a corrente, mais luz ele emitirá (lembro que existe um limite máximo de corrente que um LED suporta, consulte o datasheet de qualquer componente antes de utilizá-lo).
Para controlar a corrente pode-se mudar a resistência que é algo simples, mas nem sempre é algo prático, ou mudar a tensão, o que já é mais complicado. Contudo a principal desvantagem desses dois métodos é a perda de energia, quanto maior a tensão e corrente nos resistores maior é a perda P=U.I, sim essa perda é mínima se estivermos trabalhando com somente um LED, mas agora imagine um semáforo usando 80 LED`s por “bolacha”, agora imagine duzentos semáforos em uma cidade……….
O sinal PWM normalmente tem uma frequência fixa com um duty cycle que pode variar de 0% a 100%. Ajustando o duty cycle nós podemos facilmente controlar o brilho de um LED ou a velocidade de um motor.
A tensão média aplicada a um LED / resistor após o controle por PWM será proporcional ao ciclo de trabalho.
Tensão média = Duty Cycle * Vcc
Se tivermos um duty cycle de 50% e uam tensão aplicada de 5V a tensão média em cima de um led será de 2,5V
[/vc_column_text][vc_column_text]

PWM e o arduino

No Arduino Uno os pinos 3, 5, 6, 9, 10 e 11 podem ser usados para gerar um sinal PWM, podemos variar o duty cycle em até 256 passos ( 0 a 255 )
As frequências PWM padrões do arduino são:
Pinos 3, 9, 10 e 11 = 488Hz;
Pinos 5 e 6 = 976 Hz;
Não entrarei em detalhes , mas é possível alterar essas frequências. Para tal deve se configurar os  timers do arduino, porém algumas funções e bibliotecas poderão parar de funcionar após essas alterações, caso esteja interessado recomendo os seguintes links: http://www.arduino.cc/playground/Main/TimerPWMCheatsheet  acessado em 28/07/2011.
http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html  acessado em 28/07/2011.
http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM  acessado em 28/07/2011.[/vc_column_text][vc_column_text]Um ótimo texto para ajudar a relembrar os conceitos sobre sinais elétricos pode ser encontrado em http://www.feiradeciencias.com.br/sala12/12_T12.asp acessado dia 26/07/2011.
Algumas das aplicações de um controle PWM seguem abaixo:
– Controlar a luminosidade de um LED;
– Gerar sinais de áudio;
– Gerar um sinal modulado;
– Controlar a velocidade de motores;
– Obter valores analógicos a partir de meios digitais;

Neste artigo vou mostrar como utilizar um arduino para controlar a luminosidade de um LED e a velocidade de um motor DC.[/vc_column_text][vc_column_text]

A função analogWrite()

Escreve um valor analógico (Onda PWM) em um pino. Pode ser usada para ligar um LED e variar sua luminosidade ou controlar a velocidade de um motor. Após chamar a função analogWite(), o pino irá gerar uma onda quadrada estável de frequência fixa (488Hz ou 976hz) sendo o duty cycle escolhido pelo usuário.
Sintaxe
analogWrite(pino, valor)

Parâmetros
pino: Número do pino que gerará o sinal PWM
value: Valor do duty cycle: deve ser um valor entre 0 (sempre desligado) e 255 (sempre ligado).

Notas e problemas conhecidos
Sugerimos evitar usar os pinos 5 e 6 pois os mesmos terão um duty cycle maior do que o experado, isto é devido as interações com as funções milis() e delay() que dividem internamente o mesmo timer usado para gerar o sinal PWM
[/vc_column_text][vc_column_text]

Montagem do circuito (Motor)

Materiais a serem utilizados:
1x Arduino
1x BD139 (ou outro transistor de potência)
1x Resistência de 100 Ohms
1x Potênciometro de 10K Ohms
1x Cooler de computador
1x Fonte 12 Volts[/vc_column_text][vc_single_image image=”5426″ img_size=”full”][vc_column_text] Figura 2 – Diagrama de montagem, não se esquecer de conectar os negativos juntos conforme mostra o esquema.[/vc_column_text][vc_single_image image=”5427″ img_size=”medium”][vc_column_text]Figura 3 – Pinagem do transistor BD139

[/vc_column_text][vc_single_image image=”5428″ img_size=”medium”][vc_column_text]Figura 4 – motor utilizado tensão 12V (cooler normal de computador)
[/vc_column_text][vc_single_image image=”5429″ img_size=”medium”][vc_column_text]Potênciomentro de 10k ohm[/vc_column_text][vc_column_text]O arduino possuí inúmeros pinos de saída e com eles podemos acionar diversos componentes como LEDs, displays de LCD, buzzers, sensores de temperatura etc. Entretanto para acionarmos cargas que demandam de mais potência os pinos de saída do arduino por muitas vezes podem não fornecer a corrente necessária além de corrermos o risco de queimarmos o arduino ao exigirmos dele correntes que ele não pode fornecer.

Para acionarmos essas cargas podemos utilizar os seguintes componentes:
– Relés
– Transistors bipolares
– Transistors de efeito de campo
– Triacs
– IC`s como o ULN2003
– Optoacopladores

Neste post entrarei em maiores detalhes sobre a utilização de um transistor bipolar, especificamente o BD139.

Como selecionar um transistor?

A corrente de coletor (Ic) que o transistor oferece deve ser maior do que a corrente que sua carga necessita, o transistor atuando como chave, ou seja em estado de saturação permite a passagem de corrente entre o Coletor e o emissor.
A corrente de base (Ib) deve ser calculada com intuito de deixar o transistor em estado de saturação. No datasheet do BD139 temos a seguinte informação:

Tensão de saturação entre Coletor e Emissor
(Ic=0,5 Adc, IB=0,05 Adc)
[/vc_column_text][vc_column_text]A corrente de coletor no meu caso é de 0,2A (corrente consumida pelo meu cooler ligado diretamente aos 12V).
Como o datasheet nos diz que com IB de 0,05A podemos Ter um Ic de 0,5A que está acima das minhas necessidades posso considerar então a resistência de base como:

Rb = (V arduino)/Ic
Rb= (5 Volts)/0,05 = 100 Ohms

Outro fator importante ao se escolher um transistor para trabalhar com PWM a altas freqüências é evitar transistors com alto tempo de “base storage” ou seja que possuem um pouco de delay enquanto ele está chaveando ON / OFF, esse fenômeno é mais comuns em BJT`s de potência como o BD139 que utilizei. A freqüência utilizada neste projeto  fica em torno de 500 Hz e não resultará em nenhum problema.

Código Fonte (Motor)

#define TRANSISTOR 9
#define POT 1
int le_pot=0;

void setup()
{
pinMode(TRANSISTOR, OUTPUT);
}

void loop()
{
le_pot=(analogRead(POT))/4;
analogWrite(TRANSISTOR, le_pot);
}

[/vc_column_text][vc_video link=”https://www.youtube.com/watch?v=5c0-APqY2CY” el_width=”60″][vc_column_text]Vídeo 1 – Controle PWM de velocidade do motor utilizando[/vc_column_text][vc_column_text]Montagem do circuito (LEDs)

Materiais a serem utilizados:
1x Arduino UNO
3x LED`s
3x Resistência de 220 Ohms
1x Botão NA
1x Resistência de 10K Ohms[/vc_column_text][vc_single_image image=”5431″ img_size=”large” onclick=”img_link_large”][vc_column_text]Figura 6 – Diagrama de montagem.

Código Fonte (LEDs)
Este sketch consiste em fazer os 3 LED`s terem seu brilho aumentado a partir do acionamento do botão, ao atingir brilho máximo e se pressionar novamente o botão o processo é revertido e o brilho começa a decair.
Esse controle é feito dentro dos dois blocos de IF e o estado do botão é passado a duas variáveis distintas com intuito de controlar se é o primeiro acionamento ou o segundo.


//Exemplo de PWM com 3 LEDs R/G/B
// Efeito Fade com apertar de botão

#define LED_R 9
#define LED_G 10
#define LED_B 11
#define BOTAO 7
int i =0;
int var=0;
int antiga_var=0;

void setup()
{
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(BOTAO, INPUT);
}

void loop()
{
var = digitalRead(BOTAO); // Lê o estado do botão pressionado = 1 solta = 0
delay(10); // Efeito de Debounce

if ((var==HIGH) && (antiga_var==LOW)){
// Efeito de aumento de brilho
for (i=0;i<255;i++)  // Conta de 0 a 255 e executa uma vez por contagem o conteudo entre{}  {  analogWrite(LED_R, i);   analogWrite(LED_G, i);  analogWrite(LED_B, i); delay(10); // Espera 10 mili segundos }  antiga_var = var;  var=LOW;  }  if ((var==HIGH) && (antiga_var==HIGH)){ // Efeito de aumento de brilho for (i=255;i>0;i–)
// Conta de 0 a 255 e executa uma vez por contagem o conteudo entre{}
{
analogWrite(LED_R, i);
analogWrite(LED_G, i);
analogWrite(LED_B, i);
delay(25); // Espera 10 mili segundos
}
antiga_var=LOW;
var=LOW;
}

}
[/vc_column_text][vc_video link=”https://www.youtube.com/watch?time_continue=1&v=CvzAZHBCFPc” el_width=”60″][vc_column_text]Vídeo 2 – Controle de LEDs utilizando PWM[/vc_column_text][/vc_column][/vc_row]

Posted by medigaco_wp in Arduino, 1 comment