Bem-vindo a uma nova lição do curso de programação para Makers com o Arduino e o Protocoder! Nesta entrada vamos utilizar a nossa placa Arduino e um par de cabos para criar um voltímetro. É fácil, muito rápido de fazer e apesar de ter algumas limitações, tal como os voltímetros convencionais, é muito útil. Vamos usar este código, novamente, num tutorial mais à frente, para criar um voltímetro com um interface num telefone móvel ou um tablet.
Lista de materiais
- ZUM BT-328, placa Arduino ou compatível.
- Dois pedaços de cabo com aproximadamente 15 centímetros ou cabos jumper
Conexões Eléctricas
Neste caso conectaremos o cabo de cor preta ao pino GND do Arduino e o outro cabo a uma entrada analógica que, neste caso, é a A0. Na imagem podes ver as conexões:
Limitações
Apenas podemos ler valores positivos de tensão entre 0 e 5 Volts.
O código
Como sempre, começamos por declarar as variável globais do programa:
1 2 |
int pinoSonda = A0; float escala = 100; //100 para volts, 0.1 para milivolts |
Neste caso, só está um cabo conectado na entrada analógica A0, que utilizaremos em probe mode (modo sonda), ou seja, será com este cabo que mediremos a tensão. Vamos criar, também, a variável escala, que poderemos modificar para obter a leitura em volts, se igualarmos a variável a 100 ou em milivolts, se a igualarmos a 0.1. Mais à frente veremos porque temos que aplicar estes valores. Depois, na função setup, inicializamos o programa:
1 2 3 4 5 6 7 |
void setup(){ Serial.begin(19200); pinMode(pinoSonda, INPUT); } |
Neste caso, iniciamos a comunicação série a 19200 bauds/segundo, porque é esta a velocidade de comunicación do módulo Bluetooth incluído nas placas ZUM BT-328 (numa entrada posterior, utilizaremos este mesmo exemplo para criar um voltímetro no Protocoder). Também marcamos como entrada (INPUT), o pino onde conectámos o cabo que actuará como sonda. A seguir, passamos para a função loop:
1 2 3 4 5 6 7 8 9 10 11 |
void loop(){ float leitura = analogRead(pinoSonda); leitura = map(leitura, 0, 1023, 0, 500); float voltagem = leitura/escala; Serial.println(voltagem); delay(500); } |
Em primeiro lugar, criamos a variável leitura, armazenamos o valor lido em pinSonda (através função analogRead) e utilizamos a função map para transformar o valor da leitura analógica de 0 a 1023, para 0 a 500. Depois criamos a variável voltagem (de tipo float) onde aplicaremos o factor de escala. Se dividirmos por 100, vamos obter um valor de 0 a 5 volts, mas se dividirmos por 0.1, aumentaremos a escala e vamos obter um valor em milivolts. Dependendo do tipo de medida que quisermos realizar, pode interessar-nos utilizar uma escala ou outra. Por último, aplicamos um pequeno delay de 0.5 segundos, para facilitar a leitura dos dados no ecrã. Como exercício podes modificar o programa para mostrar a voltagem média, medida durante um determinado período de tempo. Até à próxima!