Arduino UNO R4 - Atuador com Feedback

Este tutorial do Arduino UNO R4 mostra como usar um *atuador linear com feedback* nos seus projetos DIY.

Na lição anterior, usamos um atuador linear sem feedback. Esse tipo apenas se move para dentro ou para fora, mas não nos diz a sua posição.

Agora, vamos conhecer um atuador linear com feedback. Ele pode nos dizer onde está enquanto se move, e assim podemos controlar a sua posição exata.

Neste guia simples, você vai aprender:

Este projeto Arduino simples é bom para iniciantes. Siga este guia fácil para aprender programação Arduino e criar um sistema de movimento inteligente!

Sobre o Atuador Linear com Feedback

Um atuador linear com feedback é um tipo de atuador linear que inclui um sinal de feedback para monitorar e controlar a sua posição. Esse feedback vem de um potenciômetro que fornece uma tensão de saída correspondente à posição do atuador.

Pinagem do Atuador Linear com Feedback

Um Atuador Linear com Feedback tem cinco fios:

  • Fio Positivo do Atuador: este fio controla o atuador linear usando alta tensão (12V, 24V, 48V).
  • Fio de 5V: este fio se conecta ao potenciômetro de feedback. Ligue-o a 5V ou 3.3V.
  • Fio GND: este fio se conecta ao potenciômetro de feedback. Ligue-o ao terra (GND).
  • Fio do Potenciômetro: também conhecido como fio de feedback ou de saída, este fio envia um valor de tensão que muda conforme a posição da haste.
Pinagem do Atuador Linear com Feedback

Como Funciona

Quando aplicamos uma alta tensão aos fios positivo e negativo, o atuador estende ou retrai. Especificamente, se conectarmos:

  • Conecte 12V (como 12V, 24V, 48V...) e GND aos fios positivo e negativo, respectivamente: o atuador linear estende em velocidade máxima até parar no fim do curso.
  • Conecte 12V (como 12V, 24V, 48V...) e GND aos fios negativo e positivo, respectivamente: o atuador linear retrai em velocidade máxima até parar no fim do curso.
  • Se a energia for cortada do atuador (GND conectado aos fios positivo e negativo) enquanto ele estende ou retrai, o atuador para de se mover.

※ Nota:

  • A tensão necessária para controlar o atuador varia conforme as suas especificações. Consulte o datasheet ou o manual para saber a tensão correta.
  • O atuador consegue manter a sua posição sem energia, mesmo que esteja sustentando um peso.

A tensão no fio do potenciômetro muda de acordo com a posição para a qual o atuador se move. Verificando essa tensão, podemos descobrir onde a haste está posicionada.

Diagrama de Ligação

Antes de ligar, retire os três jumpers do módulo L298N.

Diagrama de Ligação do Arduino UNO R4 com Atuador Linear e Driver L298N

This image is created using Fritzing. Click to enlarge image

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

Como controlar o estender/retrair de um atuador linear

Visite o tutorial do Atuador do Arduino UNO R4 aqui.

Como descobrir a posição do atuador linear

Veja como descobrir a posição da haste em um atuador linear:

Calibração

  • Meça o comprimento do curso da haste do atuador (em milímetros) com uma régua ou consulte o datasheet.
  • Encontre os valores de saída quando o atuador linear está totalmente estendido e totalmente retraído executando o código a seguir.
/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ // the code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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); }
  • Você verá o log no Serial Monitor como mostrado no exemplo abaixo.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2
  • Anote esses valores.
  • Se os valores mínimo e máximo estiverem invertidos, troque IN1_PIN por IN2_PIN.
  • Atualize três valores no código abaixo.

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

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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"); }
  • Altere os três valores ajustados no código
  • Carregue o código no Arduino UNO R4
  • Verifique o resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' 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 Uno R4 WiFi on COM15
2

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

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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

Resumo

Neste tutorial do Arduino UNO R4, você aprendeu a usar um atuador linear com feedback em projetos DIY. Este guia fácil ensinou como o atuador funciona, como descobrir sua posição em milímetros e como movê-lo para o lugar certo com programação Arduino. Depois da nossa lição sobre um atuador linear sem feedback, este projeto Arduino simples mostra como criar um sistema de movimento inteligente. Agora você pode montar seus próprios projetos de controle de movimento com o Arduino UNO R4!

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!