Arduino Nano - Atuador com Feedback

com feedback

Em um tutorial anterior, falamos sobre o atuador linear sem feedback. Agora, vamos explorar o atuador linear com feedback (também conhecido como atuador linear de feedback). Esse tipo de atuador fornece informações para determinar a posição do seu curso e então controlá-la. Especificamente, vamos ver:

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×12V Linear Feedback Actuator
1×L298N Motor Driver Module
1×Fonte de Alimentação 12V
1×Conector de Alimentação DC
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 Atuador Linear com Feedback

Existe um atuador linear com feedback, que fornece um sinal para identificar a posição dele e controlá-la. Esse feedback vem na forma de um potenciômetro que gera um valor de tensão proporcional à posição do curso.

Pinagem do Atuador Linear com Feedback

Um Atuador Linear com Feedback tem 5 fios:

  • Fio Positivo do atuador: Este fio é usado para controlar o atuador linear utilizando alta tensão (12V, 24V, 48V...).
  • Fio Negativo do atuador: Este fio é usado para controlar o atuador linear utilizando alta tensão (12V, 24V, 48V...).
  • Fio 5V: este fio é usado para o potenciômetro de feedback. Conecte este fio a 5V ou 3.3V
  • Fio GND: este fio é usado para o potenciômetro de feedback. Conecte este fio ao GND
  • Fio do potenciômetro: (também chamado de fio de feedback ou fio de saída) este fio gera o valor de tensão proporcional à posição do curso.
Feedback Linear Actuator pinout

Como Funciona

Se fornecermos alta tensão aos fios positivo e negativo, o curso do atuador será estendido ou retraído. Especificamente:

  • Se 12V (12V, 24V, 48V...) for conectado ao fio positivo e GND ao fio negativo, o atuador linear vai estender em velocidade máxima até chegar ao limite.
  • Se 12V (12V, 24V, 48V...) for conectado ao fio negativo e GND ao fio positivo, o atuador linear vai retrair em velocidade máxima até chegar ao limite.
  • Se a energia for interrompida no atuador (GND nos fios positivo e negativo), o atuador vai parar de estender/retrair.

※ Nota:

  • A tensão necessária para operar o atuador é determinada pelas especificações dele. Para saber o valor exato da tensão, consulte o datasheet ou o manual.
  • Mesmo quando a energia é cortada, o atuador consegue manter a posição enquanto carrega uma carga.

A tensão no fio do potenciômetro está relacionada à posição do curso no atuador. Medindo essa tensão, podemos determinar a posição do curso.

Diagrama de Ligação

Retire os três jumpers do módulo L298N antes de conectar os fios.

The wiring diagram between Arduino Nano and Linear Actuator L298N Driver

This image is created using Fritzing. Click to enlarge image

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

Como controlar a extensão/retração de um atuador linear

Confira o tutorial Arduino Nano - Atuador.

Como encontrar a posição do atuador linear

Este é um exemplo de como localizar o curso em um atuador linear. Ele ilustra o processo.

Calibração

  • Determine o comprimento do curso do atuador (em milímetros), medindo com uma régua ou consultando o datasheet.
  • Execute o código a seguir para determinar os valores de saída quando o atuador linear está totalmente estendido e totalmente retraído.
/* * 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-feedback-actuator */ // The code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 7 // The Arduino Nano pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Nano pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Nano pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Nano pin connected to the potentiometer of the actuator void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { // extend the actuator digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); delay(20000); // wait for actuator fully extends. It will stop extending automatically when reaching the limit // read the analog in value: int POTENTIOMETER_MAX = analogRead(POTENTIOMETER_PIN); Serial.print("POTENTIOMETER_MAX = "); Serial.println(POTENTIOMETER_MAX); // retracts the actuator digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); delay(20000); // wait for actuator fully extends. It will stop retracting automatically when reaching the limit int POTENTIOMETER_MIN = analogRead(POTENTIOMETER_PIN); Serial.print("POTENTIOMETER_MIN = "); Serial.println(POTENTIOMETER_MIN); }
  • Observe o log no Serial Monitor, como demonstrado no exemplo abaixo.
∞
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
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Ln 11, Col 1
Arduino Nano on COM15
2

Anote os três valores a seguir e atualize-os no código abaixo: o valor mínimo, o valor máximo, e IN1_PIN e IN2_PIN. Se os valores mínimo e máximo estiverem trocados, troque também IN1_PIN e IN2_PIN.

Código Arduino Nano que calcula a posição do atuador

/* * 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-feedback-actuator */ #define ENA_PIN 7 // The Arduino Nano pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Nano pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Nano pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Nano pin connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 987 // PLEASE UPDATE THIS VALUE #define POTENTIOMETER_MIN 13 // PLEASE UPDATE THIS VALUE void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { // extend the actuator digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); int potentiometer_value = analogRead(POTENTIOMETER_PIN); int stroke_pos = map(potentiometer_value, POTENTIOMETER_MIN, POTENTIOMETER_MAX, 0, STROKE_LENGTH); Serial.print("The stroke's position = "); Serial.print(stroke_pos); Serial.println(" mm"); }
  • Atualize os três valores calibrados no código
  • Transfira o código para o Arduino Nano
  • Confira 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
The stroke's position = 2 mm The stroke's position = 35 mm The stroke's position = 43 mm The stroke's position = 60 mm The stroke's position = 68 mm The stroke's position = 79 mm The stroke's position = 83 mm The stroke's position = 96 mm The stroke's position = 100 mm
Ln 11, Col 1
Arduino Nano on COM15
2

Como controlar um atuador linear até uma posição específica

/* * 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-feedback-actuator */ #define ENA_PIN 7 // The Arduino Nano pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Nano pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Nano pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Nano pin connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 987 // PLEASE UPDATE THIS VALUE #define POTENTIOMETER_MIN 13 // PLEASE UPDATE THIS VALUE #define TOLERANCE 5 // in millimeter int targetPosition_mm = 50; // in millimeter void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { int potentiometer_value = analogRead(POTENTIOMETER_PIN); int stroke_pos = map(potentiometer_value, POTENTIOMETER_MIN, POTENTIOMETER_MAX, 0, STROKE_LENGTH); Serial.print("The stroke's position = "); Serial.print(stroke_pos); Serial.println(" mm"); if (stroke_pos < (targetPosition_mm - TOLERANCE)) ACTUATOR_extend(); else if (stroke_pos > (targetPosition_mm + TOLERANCE)) ACTUATOR_retract(); else ACTUATOR_stop(); } void ACTUATOR_extend() { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); } void ACTUATOR_retract() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); } void ACTUATOR_stop() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); }

Vídeo

Referências de Funções

Tutoriais Relacionados

※ 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!