Arduino Nano - Potenciômetro

Este tutorial ensina você a usar o Arduino Nano com um potenciômetro, também conhecido como pot, trimpot, resistor variável, reostato ou sensor de ângulo rotativo. Em detalhes, vamos aprender:

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×Potentiometer
1×Alternatively, 10k Ohm Trimmer Potentiometer
1×(Alternativa) Potentiometer Kit
1×(Alternativa) Potentiometer Module with Knob
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Potenciômetro

Um potenciômetro rotativo, também conhecido como sensor de ângulo rotativo, é usado para alterar manualmente o valor de alguma coisa. Exemplos incluem o volume de um aparelho de som, o brilho de uma lâmpada e o nível de zoom de um osciloscópio.

Pinagem do potenciômetro

Pinagem do Potenciômetro

Um potenciômetro normalmente tem três pinos:

  • O pino GND deve ser ligado ao terra (0V).
  • O pino VCC deve ser conectado ao VCC (5V ou 3.3v).
  • O pino de saída fornece a tensão para o pino de entrada do Arduino.
Pinagem do potenciômetro

※ Nota:

Os pinos GND e VCC podem ser trocados.

Como Funciona

O eixo giratório do potenciômetro tem um alcance de 0° (mais próximo do GND) até o ângulo máximo (mais próximo do pino VCC), chamado de ANGLE_MAX.

※ Nota:

O valor de ANGLE_MAX é determinado pelo fabricante. Em geral, não precisamos nos preocupar com esse valor, a menos que estejamos calculando o ângulo de rotação (veja a seção de casos de uso).

Como o potenciômetro funciona

O princípio de funcionamento:

  • Um usuário gira o eixo do potenciômetro
  • ⇒ O ângulo do potenciômetro muda
  • ⇒ A resistência do potenciômetro muda
  • ⇒ A tensão no pino de saída do potenciômetro muda
  • ⇒ O valor analógico lido pelo Arduino Nano muda

Arduino Nano - Potenciômetro Rotativo

Os pinos A0 a A7 do Arduino Nano podem funcionar como entradas analógicas. Esses pinos de entrada analógica convertem a tensão (variando de 0 volt até VCC) em valores inteiros (de 0 a 1023), chamados de valor ADC ou valor analógico.

Podemos conectar o pino de saída do potenciômetro a um pino de entrada analógica. Isso nos permite ler o valor analógico do pino e convertê-lo em um valor com significado.

O valor que o Arduino Nano recebe não é um ângulo nem uma tensão; é um valor inteiro de 0 a 1023.

Depois de obter o valor inteiro do pino de entrada analógica, podemos reescalá-lo para um valor diferente. Vamos ver as aplicações disso.

Casos de Uso

  • Reescalar para o ângulo do potenciômetro.
  • Reescalar para a tensão do potenciômetro.
  • Reescalar para um valor controlável, como o volume de um aparelho de som, o brilho ou a velocidade de um motor DC - este é o uso mais frequente.

Reescalar o Intervalo

DE PARA
Ângulogirado pelo usuário 0° → ANGLE_MAX
Tensãodo pino do potenciômetro 0V → VCC
Valor ADClido pelo Arduino 0 → 1023
Outro valorconvertido pelo Arduino VALUE_MIN → VALUE_MAX

Diagrama de Ligação

Diagrama de ligação do Arduino Nano com potenciômetro

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Como Programar o Potenciômetro

  • Obtenha o valor de um pino de entrada, ligado ao pino de saída do potenciômetro, usando a função analogRead().
analog_value = analogRead(A5);
  • Use a função map() para ajustar o ângulo do potenciômetro.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Ajuste a tensão para o nível do potenciômetro.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Reescale o valor para algo que possa ser gerenciado ou ajustado (por exemplo, volume de um aparelho de som, brilho, velocidade de um motor DC... )
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Por exemplo, ajustar o brilho de um LED. Como dito neste tutorial, o brilho de um LED pode ser regulado usando um valor PWM de 0 (sempre DESLIGADO) a 255 (sempre LIGADO). Assim, podemos mapear o valor analógico para o brilho do LED (de apagado até o mais brilhante) assim:
brightness = map(analog_value, 0, 1023, 0, 255);

Se você quiser ajustar o LED de uma luz noturna fraca até o seu nível mais brilhante,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 1023, nightlight , 255);

※ Nota:

A função map() só serve para reescalar um valor analógico para o tipo int ou long. Se o valor controlável for do tipo float, floatMap() deve ser usada no lugar de map().

A função floatMap():. É uma função que recebe uma lista de floats como argumento e retorna uma nova lista com o mesmo número de elementos, em que cada elemento é o resultado de aplicar a função dada ao elemento correspondente da lista original.

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Código Arduino Nano

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // The setup function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin A5: int analog_value = analogRead(A5); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Passos Rápidos

  • Copie o código e abra-o com o Arduino IDE.
  • Clique no botão Upload do Arduino IDE para enviar o código para o Arduino Nano.
Arduino IDE Upload Code
  • Abra o Serial Monitor.
  • Gire o potenciômetro.
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano' on 'COM15')
New Line
9600 baud
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Ln 11, Col 1
Arduino Nano on COM15
2

Vídeo

Desafie-se

Use o potenciômetro para realizar um destes projetos:

Conhecimento Adicional

  • Os pinos GND e VCC podem ser trocados sem nenhuma convenção específica. No entanto, um ponto a ter em mente é que o valor da tensão no pino de saída será invertido quando esses pinos forem trocados.

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!