Drivers - LAICA-IFRN/Robotica GitHub Wiki

Ponte H

Funcionamento

A ponte H é um driver usado em motores de corrente contínua. Basicamente ele permite que um motor funcione no sentido horário e no anti-horário. Seu nome faz jus ao esquema de ligação que lembra um H, já que a carga fica ligada entre quatro chaves, assim como mostrada na figura:

Como utilizar?

No driver em questão, possui 4 saídas para a ligação de 2 motores DC, sendo OUT1 e OUT2 para um motor e OUT3 e OUT4 para outro motor. Para permitir o funcionamento da placa, é necessário alimentá-la nas entradas VCC e GND. Por Conseguinte, são utilizadas as entradas IN1, IN2, IN3 E IN4 para controlar o sentido em que cada motor irá girar, sendo os terminais IN1 e IN2 para o motor conectado à saída dos pinos OUT1 e OUT2 e os terminais IN3 e IN3 controladores do motor da outra saída. Já a entrada ENA e ENB são responsáveis por receber o sinal PWM, que permite um controle da velocidade do motor.

Tipos

Códigos de Exemplo

// Definindo os pinos do motor A
const int motorA_IN1 = 2;
const int motorA_IN2 = 3;
const int motorA_ENA = 4;

// Definindo os pinos do motor B
const int motorB_IN1 = 5;
const int motorB_IN2 = 6;
const int motorB_ENB = 7;

void setup() {
  // Inicializando os pinos como saída
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  pinMode(motorA_ENA, OUTPUT);
  
  pinMode(motorB_IN1, OUTPUT);
  pinMode(motorB_IN2, OUTPUT);
  pinMode(motorB_ENB, OUTPUT);
}

void loop() {
  // Mover motor A para frente
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  analogWrite(motorA_ENA, 255); // Velocidade máxima

  // Mover motor B para frente
  digitalWrite(motorB_IN1, HIGH);
  digitalWrite(motorB_IN2, LOW);
  analogWrite(motorB_ENB, 255); // Velocidade máxima
  delay(2000); // Tempo de execução

  // Parar motores
  pararMotores();
  delay(1000); // Espera 1 segundo

  // Mover motor A para trás
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, HIGH);
  analogWrite(motorA_ENA, 255); // Velocidade máxima

  // Mover motor B para trás
  digitalWrite(motorB_IN1, LOW);
  digitalWrite(motorB_IN2, HIGH);
  analogWrite(motorB_ENB, 255); // Velocidade máxima
  delay(2000); // Tempo de execução

  // Parar os motores utilizando uma função
  pararMotores();
  delay(1000); // Espera 1 segundo
}

void pararMotores() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  analogWrite(motorA_ENA, 0); // Parar motor A

  digitalWrite(motorB_IN1, LOW);
  digitalWrite(motorB_IN2, LOW);
  analogWrite(motorB_ENB, 0); // Parar motor B
}

Multiplexador

Funcionamento

O módulo multiplexador é um driver usado com a finalidade de ampliar a quantidade de dispositivos de comunicação I2C em um único barramento, chegando até a 8 componentes por módulo ou 64, quando usado mais de um módulo em cascata. O multiplexador permite endereçar o barramento o qual deseja usar, o que possibilita expandir os canais I2C.

Como utilizar?

Para utilizá-lo, a alimentação nos pinos VIN e GND com tensões entre 1,65V a 5,5V. Em seguida, requer que seja feita a conexão do barramento I2C do módulo com o Arduino nos pinos SDA e SCL. Por ser possível usar até 8 placas em cascata, é necessário atribuir um endereço/numeração a partir dos pinos A0, A1 e A2 por uma sistema binário, o qual a porta tem valor 1 quando aterrada ao GND, dessa forma, a numeração obedece a tabela a seguir. Feitas as devidas conexões, estão a disposições do usuário 8 canais numerados de SC0 a SC7 e SD0 a SD7. Para a programação, é preciso fazer uso da biblioteca básica do "Wire.H", que tem como objetivo gerenciar os dispositivos I2C.

Tipos

Códigos de Exemplo

#include <Wire.h>

// Endereço I2C do TCA9548A
#define TCA9548A_ADDRESS 0x70

// Função para ativar um canal específico no TCA9548A
void tcaSelect(uint8_t channel) {
  if (channel > 7) return; // Verifica se o canal está entre 0 e 7
  Wire.beginTransmission(TCA9548A_ADDRESS); // Inicia a comunicação com o TCA9548A
  Wire.write(1 << channel); // Envia o comando para ativar o canal escolhido
  Wire.endTransmission(); // Finaliza a comunicação
}

void setup() {
  Wire.begin(); // Inicia a comunicação I2C
  Serial.begin(9600); // Inicia a comunicação serial para monitoramento
  
  // Ativa cada canal do TCA9548A
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i); // Seleciona o canal i
    Serial.print("Canal "); // Imprime o número do canal selecionado
    Serial.print(i);
    Serial.println(" selecionado."); // Mensagem de confirmação

    // Aqui você pode adicionar o código para interagir com o dispositivo conectado ao canal
    // Por exemplo, ler dados de um sensor ou fazer uma ação.
    
    delay(1000); // Aguarda um segundo antes de mudar para o próximo canal
  }
}

void loop() {
  // O loop principal está vazio, pois só precisamos testar os canais uma vez no setup. De acordo com a necessidade do usuário, desenvolve-se o código
}

Arduino Shield

Funcionamento

Placas Shields são placas que podem ser acopladas ao Arduino, de forma que fica a cima com o objetivo de melhorar e adicionais capacidades. Cada placa tem uma especialidade diferente, alguns serve para aumentar a quantidade de pinos, a exemplo, outras servem para colocar música, conectar a placa à internet e controlar motores.

Como utilizar?

Para utilizar, basta acoplar sobre a placa Arduino.

Tipos

⚠️ **GitHub.com Fallback** ⚠️