Primeiro Projeto

Acionamento de Sistemas 1
Projeto: 001
Data: 02/06/2017
Nível: Básico

Olá pessoal, vamos ao nosso primeiro projeto, iremos montar um sistema de acionamento de algum equipamento, máquinas entre outros, vamos tomar, por exemplo, uma esteira, nossa intenção é ligar o sistema e somente depois de pressionar o botão de partida é que nosso acionamento entrará em operação ligando o motor e desligando após 6 segundos, também usaremos alguns leds para visualização de segurança, embora seja um protótipo, devemos aplicar todas as normas inerentes ao projeto como se fosse na indústria, este projeto está baseado na plataforma Arduino.

Material necessário é um ponto de dúvida, muitos dos meus alunos pedem para que eu relacione uma lista inicial de componentes eletrônicos e equipamentos que mais se utiliza em montagens de projetos em geral, assim deixei um link no final do post com uma relação inicial.

Material para este projeto:

1 — Arduino Mega 2560 (pode ser outro, basta mudar no software o número dos pinos)

1 — Protoboard

1 — Motor CC pequeno (utilizei motor dc de driver dvd antigo)

1 — Jumpers para ligações

3 — Leds, 1 branco, 1 azul e 1 verde

1 — Táctil Switch de 6 ou 10mm

3 — Resistores de 220R

1 — Transistor BC337

1 — Resistor de 27K

Circuito a ser montado:

Circuito Eletrônico:

Cálculos efetuados:

Calculo do resistor do LED (Rled):

Para se calcular qualquer carga que se queira ligar nos pinos do Arduino, a primeira ação a ser feita é conhecer o quanto de corrente o Arduino pode fornecer nos seus pinos, assim consultando o manual temos que no máximo podemos drenar 40mA por pino, porém, a soma do consumo de corrente de todos os pinos não pode exceder a 200mA.

Ou seja, meu Arduino tem 4 pinos drenando 40mA cada, o consumo geral será de 160mA (4 x 40mA), neste caso ainda estamos numa situação confortável, porém se ligar mais um pino com este consumo, passaremos a consumir no total 200mA, exatamente o limite, aumentando o risco de queima de seu sistema. Mantenha uma margem de segurança de 10%, assim considere que no máximo vou drenar de cada pino 36mA sendo o consumo total de 180mA para este exemplo.

Agora que sabemos a corrente máxima que iremos trabalhar, vamos ao calculo do resistor do led (Rled), e para iniciar precisamos de dois parâmetros, a voltagem e a corrente de trabalho. A voltagem já conhecemos que é 5 Vcc e a corrente de trabalho podemos trabalhar na faixa de 16mA, utilizando a 1º Lei de Ohm temos que:

1º passar a corrente para a unidade da formula que é o Amper

16mA = 16 / 1000 = 0,016 A

2º Calculamos a tensão do resistor;

Consideramos que o Led é de alto brilho, assim a queda de tensão nele é de 2 Vcc

Desta maneira a tensão no resistor será a tensão do pino de saída(Vout) — a tensão do LED

VRled = Vout — Vled => VRled = 5–2 => VRled = 3 Vcc

Agora calculamos o resistor:

Rled = V/I => R = 3 / 0,016 => Rled = 187,5 ohms

Mas este valor não é comercial, temos assim duas opções, os valores comerciais mais próximos acima e abaixo, ou seja, 220R ou 180R, neste caso eu não preciso que tenha alto brilho, basta sinalizar, vou escolher o de 220R, irá diminuir a corrente e vai atender ao que preciso.

Atualizando o calculo teremos a corrente de;

I = VRled / Rled => I = 3 / 220 => I = 0,01363 A ou 13,63 mA

A princípio podemos colocar qualquer cor de led, porém como mencionei a intenção deste blog é de ensinar de forma bem didática, por isso devemos aplicar a norma necessária independente que seja um protótipo ou não.

Em Comandos Elétricos temos a Norma IEC 73 que menciona as cores das lâmpadas de sinalização de um painel elétrico conforme tabela abaixo;

Fonte:http://www.joinville.ifsc.edu.br/~matsumi/geral/Comandos_Eletricos/Aula_Comandos_Eletricos_Industriais.pdf

Conforme a tabela acima iremos utilizar neste projeto inicialmente 3 cores, azul, verde e branco.

Pronto, calculamos o resistor e escolhemos nossos leds, passamos agora para o calculo do resistor de base do transistor;

Calculo do resistor da base (Rb)

Como meu motor é pequeno e o consumo é muito baixo eu poderia ligar diretamente no pino do Arduino, porém prefiro utilizar um transistor, evito eventuais picos de corrente do motor no pino de saída e demonstro como é feito o cálculo para outras aplicações.

Escolhi o transistor BC337 porque além de bem barato, tem uma corrente de coletor muito boa (800mA) que atende muito bem a quase todas as aplicações além de ser muito fácil de encontrar.

Para calcular o resistor de base precisamos de alguns parâmetros como corrente de coletor (IC), o Beta (b ou hfe) e a corrente de base, assim pelo datasheet do transistor temos:

IC máx: 800mA

P máx: 625 mW

Hfe BC337–16: 100 a 250

IC circuito: 28mA = 0,028A => corrente do meu motor ligado com 5 Vcc

Caso não saiba o valor de corrente do seu motor, com a utilização de um multímetro, basta medir a corrente de consumo ligando o motor direto em 5 Vcc com o amperímetro em série.

O Hfe deste transistor tem um range de 100 a 250, vamos adotar um valor de Hfe de 175, que é o valor médio

Calculando o Ib temos:

Ib = Ic / hfe à Ib = 0,028 / 175 à Ib = 0,00016 A = 0,16mA

Rb = (Vb — Vbe) / Ib à Rb = (5–0,7) / 0,00016 à Rb = 4,3 / 0,00016 à Rb = 26875 ohms

Como este valor não é comercial, iremos escolher um valor comercial mais próximo, assim temos o valor de 27000 ohms ou 27K.

Refazendo o calculo teremos

Ib = VRb / Rb à Ib = 4,3 / 27000 à Ib = 0,000159 A ou 0,159mA

Hfe = Ic / Ib à 28 / 0,159 à Hfe = 176

OK, temos agora a certeza que estamos com valores dentro das características do transistor, para aqueles que costumam chutar este valor, ou seja, coloca qualquer um que ele liga, pode estar reduzindo a vida útil ou até queimando do transistor, ou ainda o motor pode nem ligar, calcular o circuito é importante para garantir seu funcionamento correto.

Uma situação que ocorre muito, é ter todo o material e não ter um resistor de 27K, o mais próximo que tenho é de 22K, será que funciona?

Neste caso basta recalcular e ver o novo valor de Hfe, veja abaixo;

Ib = VRb / Rb => Ib = 4,3 / 22000 => Ib = 0,000195 A ou 0,195mA

Hfe = Ic / Ib => 28 / 0,195 => Hfe = 143 ( +/- 20% abaixo, mas ainda vai funcionar)

Ligação da Chave de Partida

O Arduino, ou melhor, o microcontrolador ATmega possui resistores pull-up internos, que ajudam nas ligações de botões, teclas e outros dispositivos sem a necessidade de conectar um resistor externo, esta opção é habilitada via software, mas o que é resistores pull-up ou pull-down?

No circuito da figura abaixo, temos as duas situações, nos dois casos ligamos no pino 8 do Arduino como exemplo, na configuração pull-up o resistor é ligado ao positivo da fonte (+5V), já no caso pull-down o resistor é ligado ao terra da fonte.

Assim com a chave não pressionada, posição de repouso, no modo pull-up nós teremos 5V entrando no pino 8 através do resistor, temos assim uma condição HIGH, quando a tecla for pressionada, provocamos uma ligação direta do pino 8 ao terra, ou seja, o pino 8 terá 0(zero) V, temos agora uma condição LOW no pino 8.

No modo pull-down ocorre exatamente o inverso, quando a chave não está pressionada, temos uma condição LOW no pino 8 porque ele está aterrado através do resistor, quando pressionamos a chave aplicamos 5V diretamente no pino 8, passando a condição HIGH.

Podemos utilizar basicamente os dois tipos de circuitos, os dois modos tem suas vantagens e desvantagens que em minha opinião são irrelevantes diante do que é o circuito, por puro hábito eu utilizo o modo pull-up, veja circuito e quadro abaixo, apenas um detalhe caso o hardware seja desenvolvido por outra pessoa, é prudente questionar qual modo ele vai trabalhar, pull-up ou pull-down.

Veja abaixo os dois circuitos;

Circuito pull-up e circuito pull-down respectivamente

O resistor utilizado nestes casos é de 10k.

Software:

Este projeto consiste em simular um sistema de partida de alguma máquina, por exemplo, uma esteira, assim teremos que ligar o equipamento, fazer uma simulação que o sistema está sendo verificado e depois colocar em modo de espera até que o botão partida seja acionado, este sendo acionado o sistema dá a partida, ou seja, liga o motor aguarda 6 segundos e desliga, reiniciando o ciclo.

Antes de começar a descrever o software gostaria de colocar alguns pontos que tomo como base:

1º — Todos os projetos serão baseados no Arduino Mega, eventualmente posso utilizar o Arduino Mini, para aqueles que tem o Arduino Uno e o projeto não tiver a utilização de muitas entradas ou saídas, basta modificar o software e adequar a pinagem do UNO.

2º — Embora não haja um padrão de utilização dos pinos digitais, o desenvolvedor poderia utilizar qualquer um, desde que atenda às necessidades, porém sou “meio” metódico e acabei adotando uma regra que utilizo em todos os projetos. Eu fiz uma divisão dos pinos, assim dividi no formato abaixo;

Pinos 22 a 27 — reservo para ligação do display LCD 16x2

Pinos 30 a 39 — reservo para entradas digitais

Pinos 40 a 49 — reservo para saídas digitais

Pinos 52 e 53 — reservo para ligação do LED teste e do reset lógico

Restante utilização normal

Vamos ao software:

/* Projeto 001

Professor: Raul de Freitas Gomes

Programa: PRG_001 — Acionamento de Sistemas

Circuito: 001

Obs:

Autor: Raul de Freitas Gomes

Dt Criação: 02/06/2017

Versão atual: 1.0

Revisão: 00

Dt ult. versão: 02/06/2017

Descrição da alteração:

*/

// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

// define pinos de entrada

#define CH_PARTIDA 30 // chave de partida

// define pinos de saída

#define MOTOR 40

#define LED_AZUL 45 // vai simular a preparação da máquina

#define LED_VERDE 47 // vai indicar que a máquina está pronta para operar

#define LED_BRANCO 49 // vai indicar máquina em operação

void setup() // rotina de configurações iniciais

{ // inicia rotina de configurações iniciais

pinMode(CH_PARTIDA, INPUT); // define pino como entrada

pinMode(MOTOR, OUTPUT); // define pino como saída

pinMode(LED_VERDE, OUTPUT); // define pino como saída

pinMode(LED_AZUL, OUTPUT); // define pino como saída

pinMode(LED_BRANCO, OUTPUT); // define pino como saída

digitalWrite(LED_AZUL, HIGH); // liga led da simulação de preparação da máquina

delay(2000); // cria uma espera de 2 segundos

digitalWrite(LED_AZUL, LOW); // desliga led da simulação de preparação da máquina

digitalWrite(LED_VERDE, HIGH); // liga led que a máquina está pronta para operar

} // fim da rotina de configurações iniciais (setup)

void loop() // programa principal

{ // inicia programa principal

if (digitalRead(CH_PARTIDA) == LOW) // verifica chave de partida

{ // inicia rotina chave de partida

digitalWrite(LED_VERDE, LOW); // desliga Led da máquina pronta para operar

digitalWrite(LED_BRANCO, HIGH); // liga Led da máquina em operação

digitalWrite(MOTOR, HIGH); // liga motor

delay(6000); // cria um atraso de 6 segundos

digitalWrite(MOTOR, LOW); // desliga motor

digitalWrite(LED_BRANCO, LOW); // desliga Led da máquina em operação

digitalWrite(LED_VERDE, HIGH); // liga Led que a máquina está pronta para operar

} // fim rotina chave de partida

} // fim do programa principal, retorna ao inicio

Download: Programa fonte projeto 001

O programa é bem simples, após definição dos parâmetros iniciais que será executados uma única vez, o programa entra na rotina principal (void loop), pelo comando if o programa fica verificando se a chave de partida foi acionada, enquanto não aconteça isto a condição da chave é HIGH, como a comparação é LOW, o if é falso, desta maneira ele pula as linhas de comando que estão dentro da chave {} chegando a chave(}) final do programa e retornando ao inicio do loop (void loop), onde novamente é verificado a condição da chave de partida, e assim fica enquanto não ocorrer uma mudança.

Quando há o acionamento da chave de partida, a condição desta chave passa a ser LOW, e neste momento o if passa a ser verdadeiro, por consequência todas as linhas dentro de sua chave serão executadas, ou seja, muda as condições dos leds, liga motor, espera 6 segundos, desliga motor e retorna a condição inicial dos leds, e um novo ciclo reinicia.

Conclusão

Este primeiro projeto dita o propósito do blog, não é apenas apresentar um circuito interessante, ligar, funcionar e só, como disse, a cada projeto vou passar muita informação sobre o que envolve um desenvolvimento de projeto.

Espero que tenham gostado, click em curtir que é muito importante para aqueles que tem blog, deixem seus comentários, criticas e sugestões, até a próxima.

Prof. Raul F Gomes.

Downloads:

Dicas de material e ferramentas básicas

Bibliografias

http://pdf1.alldatasheet.com/datasheet-pdf/view/50725/FAIRCHILD/BC337.html

Programa utilizado para desenho da montagem em protoboard: Fritzing Versão 0.8.7 disponível em www.fritzing.org, freeware, licença livre.

Programa utilizado para desenho dos circuitos eletrônicos: https://easyeda.com, programa on-line, licença livre

Show your support

Clapping shows how much you appreciated Professor Raul Gomes’s story.