• Nenhum resultado encontrado

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

N/A
N/A
Protected

Academic year: 2021

Share "Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel"

Copied!
21
0
0

Texto

(1)

Alberto Brochado, Eugénio Oliveira, Fernando Coelho  Alberto Brochado, Eugénio Oliveira, Fernando Coelho 

STEM com Robótica

STEM com Robótica

‐Scaling Up Inclusion: Robotics, a STEM ‐

focused Project

‐Scaling Up Inclusion: Robotics, a STEM ‐

focused Project

Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

(2)

STEM com Robótica

Modulação

Sinal PWM 

Pulse Width Modulation 

(Modulação por Largura de Pulso) 

O Arduino UNO possui 6 (seis) portas PWM: 3, 5, 6, 9, 10 e 11. 

O sinal PWM pode variar de 0 a 255 e para ativá‐lo basta usar a 

seguinte instrução numa porta PWM: 

analogWrite (pin, sinal_pwm); 

Nota: as portas PWM são todas digitais, porém o sinal é modulado 

“como se fosse” um sinal analógico. 

08

(3)

STEM com Robótica

Conceito de PWM

Pulse With Modulation 

(Modulação por largura de pulso)

As grandezas digitais são aquelas que podem ser definidas por meio de saltos entre valores bem definidos dentro de

uma faixa de valores. Um exemplo de elementos que trabalham com estas grandezas são os relógios digitais, de modo

que, nestes, apesar do tempo em si variar continuamente, o visor dos mesmos mostra o tempo em saltos de um em

um segundo.

Em contrapartida, as grandezas analógicas são

aquelas que, ao contrário das grandezas

digitais, podem assumir infinitos valores de

amplitude dentro de uma faixa de valores. O

velocímetro de um carro, por exemplo, pode

ser considerado analógico, pois o ponteiro gira

continuamente conforme o automóvel acelera

ou trava.

(4)

STEM com Robótica

Conceito de PWM

Pulse With Modulation 

(Modulação por largura de pulso)

Características de uma entrada analógica

Os conversores analógico‐digital do Arduino UNO possuem uma resolução de 10 bits e o intervalo de tensão no

qual são realizadas as discretizações (degraus da escada) é de 0 a 5V, ou seja, este intervalo será dividido

em 1024 pedaços (2

10

, onde 10 é a resolução do conversor ) , de forma que, o valor atribuído à tensão existente

num determinado pino será o valor discreto (um dos 1024 valores) mais próximo da mesma.

PWM – Simulando saídas analógicas

Além de possuir portas para realizar a leitura de variáveis analógicas, o Arduino UNO conta também com pinos

que podem ser usados para simularem saídas analógicas através da técnica PWM, que se define então como

uma técnica para obter resultados analógicos em meios digitais.

Este recurso consiste na geração de uma onda quadrada, na qual, controla‐se a percentagem de tempo em que a

onda permanece num nível lógico alto (5v). Esta percentagem é denominada Duty Cycle e sua alteração

provoca mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) até 5V (100% de Duty Cycle).

(5)

STEM com Robótica

Ciclo de Trabalho – Duty ‐ Cycle 

O sinal PWM possui um ciclo de trabalho que determina com que frequência o 

sinal muda do nível lógico 

HIGH

para o nível lógico 

LOW

e vice versa. 

No Arduino a frequência do PWM pode ser definida entre 32Hz até 62kHz. 

Duty cicle = (100 %* largura do pulso) / período 

08

Conceito de PWM

(6)

STEM com Robótica

Conceito de PWM

Pulse With Modulation 

(Modulação por largura de pulso)

Assim, o Duty Cycle corresponde a um número inteiro, que é

armazenado num registrador 8 bits (arduino UNO).

O seu valor irá de 0 (0%) até 255 (100%).

Utilizaremos então a função

map(sensorValue, 0, 1023, 0, 255)

// lê o valor analógico de entrada A0:

sensorValue = analogRead(0);

// mapeia o valor de entrada para a gama de valores de saída:

outputValue = map(sensorValue, 0, 1023, 0, 255);

// altera o valor analógico de saída Pin9:

analogWrite(9, outputValue);

08

(7)

STEM com Robótica

Atuadores

São dispositivos que fazem com que aconteça algo no mundo real. (

outputs

)

Classificação:

Visuais: LED, LCD, Monitor;

Auditivos: buzzer, speaker;

Movimento: motores, válvula, servo;

Táteis: Aquecimento e arrefecimento;

Atuadores analógicos: motores cc (DC); Led controlado por voltagem

Nota: O Arduino não consegue 

gerar saídas analógicas

09

Relacionar o arduino  com o mundo exterior

(8)

STEM com Robótica

Atuadores de movimento

Servo, motores de passo e corrente continua

Uma das formas dos robôs e sistemas automatizados interagirem com o meio ambiente 

é através de movimentos físicos. Para esta tarefa encontramos com frequência motores 

elétricos.

Existem diversas forma de classificar motores elétricos, uma delas é quanto ao tipo de 

corrente: continua ou alternada.

MOTOR CORRENTE CONTÍNUA      SERVO

MOTOR PASO A PASO 

(28BYJ‐48)

(9)

STEM com Robótica

Shields

As extensões das placas do Arduino são chamadas de shields. 

Existem shields para as mais diversas funcionalidades, por exemplo: 

‐ Comunicação ethernet; 

‐ Comunicação wifi;

‐ Comunicação bluethooth;

‐ Ponte H;

‐ Banco de relês

‐ ... 

Lista official:

playground.arduino.cc/Main/SimilarBoards#goShie

10

Expandir o arduino  

(10)

STEM com Robótica

Para controlar a quantidade de motores e o sentido de rotação, utilizaremos elementos 

denominados por 

SHIELD / PONTE‐H

Shield L293D Driver Ponte H

Módulo Ponte H com o CI L298N

Módulo Driver ULN2003

10

Shields

(11)

STEM com Robótica

Como funciona a Ponte H? Porquê este nome?

Conceito de Ponte H

As pontes H possuem este nome devido ao formato

em que é montado o circuito, semelhante a letra H.

O circuito utiliza quarto chaves (S1, S2, S3 e S4) que

são acionadas de forma alternada, ou seja, (S1‐S3) ou

(S2‐S4).

Dependendo da configuração entre as chaves

teremos a corrente percorrendo o motor hora por um

sentido, hora por outro.

10

Shields

(12)

Alberto Brochado, Eugénio Oliveira, Fernando Coelho  Alberto Brochado, Eugénio Oliveira, Fernando Coelho 

Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

STEM com Robótica

(13)

Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

STEM com Robótica

1º Exercício

Utilizando um 

sensor de temperatura/humidade DHT11

para simular uma estação meteorológica e mostrar os 

resultados no monitor serial.

Sensores DHTxx (xx = 11‐21‐22‐33‐44) Estes sensores possuem geralmente, s pinos, GND, +5V e uma única linha de dados. Usa a libraria dht.h, que possui 6 funções básicamente idênticas: read(PIN), read11(PIN), readxx(PIN) Utilização: DHT.read11(DHT11_PIN);  ou  DHT.read11(5); Esta função devolve: DHTLIB_OK (0) : se o sensor e o checksum está OK. DHTLIB_ERROR_CHECKSUM (‐1) : se o checksum test falhou.  DHTLIB_ERROR_TIMEOUT (‐2) : se ocorreu um timeout, communicação falhou. Signal  Vcc  (+)  Gr ound  (‐) V CC(+)  Signal  Não utiliz ado  Gr ound  (‐) R esis tência  10K  pullup

Biblioteca:  

dht.h

Funções existentes: DHT.humidity e DHT.temperature

(14)

STEM com Robótica

1º Exercício

Utilizando um 

sensor de temperatura/humidade DHT11

para simular uma estação meteorológica e mostrar os 

resultados no monitor serial.

#include <dht.h>  dht DHT;  #define DHT11_PIN 5  void setup() {  Serial.begin(115200);  Serial.println("DHT ‐ PROGRAMA TESTE“);  Serial.print(“Formação STEM com Robótica”);  Serial.println();  Serial.println("Tipo,\tstatus,\tHumidade (%),\tTemperatura (C)"); void loop() {  // Leitura de dados Serial.print("DHT11, \t");  int chk = DHT.read11(DHT11_PIN);  switch (chk)  {  case DHTLIB_OK: Serial.print("OK,\t");  break;  case DHTLIB_ERROR_CHECKSUM:  Serial.print("Checksum error,\t");  break;  case DHTLIB_ERROR_TIMEOUT:  Serial.print("Time out error,\t");  break; case DHTLIB_ERROR_CONNECT:  Serial.print("Connect error,\t");  break;  default:  Serial.print("Unknown error,\t");  break;  }  // Visualizar dados Serial.print(DHT.humidity, 1);  Serial.print(",\t");  Serial.println(DHT.temperature, 1);  delay(2000);  }

(15)

STEM com Robótica

2º Exercício

Utilizando um potenciômetro para controlar o brilho de um 

LED – efeito fade in / fade out e mostrar os resultados no 

monitor serial

const int analogInPin = A0;  // pin análógico entrada

const int analogOutPin = 9; // pin analógico de saída

int sensorValue = 0;        // valor lido pelo sensor int outputValue = 0;        // valor enviado para a saída analógica void setup() { Serial.begin(9600); // inicializar comunicações em 9600 bps } void loop() { sensorValue = analogRead(analogInPin); // ler valor analógico outputValue = map(sensorValue, 0, 1023, 0, 255);  analogWrite(analogOutPin, outputValue); // alterar o valor de saída Serial.print("sensor = "); // mostra os valores no Serial Monitor Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // aguarda 2 millisegundos antes do próximo ciclo analógico‐digital delay(2); } 3 pinos: Sinal VCC GND Utilizar o programa existente nos exemplos, denominado: analogInOutserial Vai permitir ler dados analógicos numa porta analógica (A1) compreendidos entre 0 e 1023 e converter para uma gama de 0 até 255, utilizando a função map()

(16)

STEM com Robótica

2º Exercício

Mudando a intensidade de um Led de alto brilho 

recorrendo a um sinal PWM 

const int led_alto_brilho = 3;  void setup()  { pinMode(led_alto_brilho, OUTPUT); Serial.begin(9600); }  void loop() { int i; for (i = 10; i <= 255; i+=10) { analogWrite(led_alto_brilho, i);  // Aumenta a intensidade do brilho Serial.println(i); delay(300); } for (i = 255; i >= 5; i‐=10) { analogWrite(led_alto_brilho, i);  // Diminui a intensidade do brilho Serial.println(i); delay(300); }    delay(3000);  } 

(17)

STEM com Robótica

2.1 Exercício

opcional

Utilizando um sensor de nível de água, simular um alarme 

de deteção de inundações e mostrar os resultados no 

monitor serial.

const int analogInPin = A0;  // Analog input pin  const int analogOutPin = 9; // Analog output pin int sensorValue = 0;        // value read from the sensor int outputValue = 0;        // value output to the analog output void setup() { Serial.begin(9600); // initialize serial communications at 9600 bps } void loop() { sensorValue = analogRead(analogInPin); // read the analog in value outputValue = map(sensorValue, 0, 1023, 0, 255); // map it to the range of the  analog out: analogWrite(analogOutPin, outputValue); // change the analog out value Serial.print("sensor = "); // print the results to the Serial Monitor Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // wait 2 milliseconds before the next loop for the analog‐to‐digital delay(2); } 3 pinos: Sinal VCC GND Utilizar o programa existente nos exemplos, denominado: analogInOutserial Vai permitir ler dados analógicos numa porta analógica (A1) compreendidos entre 0 e 1023 e converter para uma gama de 0 até 255, utilizando a função map()

(18)

STEM com Robótica

3º Exercício

Utilizando um sensor de nível de água, simular um alarme 

de deteção de inundações e mostrar os resultados no 

monitor serial.

void setup() { pinMode(12,OUTPUT); } void loop() { tone(12,261); delay(500); tone(12,277); delay(500); tone(12,294); delay(500); tone(12,311); delay(500); tone(12,330); delay(500); tone(12,349); delay(500); Funções do Buzzer ou Piezo buzzer tone(Pin, Frequência, Duração) noTone(Pin) tone(12,370); delay(500); tone(12,392); delay(500); tone(12,415); delay(500); tone(12,440); delay(500); }

(19)

STEM com Robótica

4º Exercício

Controlando um motor servo 

SG90‐9G.

#include <Servo.h>       int servoPin = 9; Servo servo;   int servoAngle = 0;   // servo position in degrees void setup(){ Serial.begin(9600);   servo.attach(servoPin); } void loop(){ //control the servo's direction and the position of the motor servo.write(45);      // Turn SG90 servo Left to 45 degrees delay(1000);      // Wait 1 second servo.write(90);      // Turn SG90 servo back to 90 degrees (center position) delay(1000);      // Wait 1 second servo.write(135);     // Turn SG90 servo Right to 135 degrees delay(1000);      // Wait 1 second servo.write(90);      // Turn SG90 servo back to 90 degrees (center position) delay(1000); }   Biblioteca:  Servo Alimentação positiva (vermelho) – 5V; Terra (Preto ou Marrom) – GND; (Amarelo, Laranja ou Branco) –Pino digital de entrada e saída;

um servomotor é um motor na qual podemos controlar sua posição 

angular através de um sinal PWM

(20)

STEM com Robótica

5º Exercício

Utilizando um driver de motor ULD2003 para controlar um 

motor de passo.

Arduino UNO 

ULN2003 Stepper Motor Driver Board

12V 28BYJ‐48 Stepper Motor

#include <Stepper.h>

#define STEPS 2038 

// o número de passos numa volta (revolution) //do nosso motor (28BYJ‐48)

Stepper stepper(STEPS, 8, 10, 9, 11);

void setup() {

// nada

}

void loop() {

stepper.setSpeed(1); 

// 1 rpm

stepper.step(2038); 

// faz 2038 passos ‐‐ corresponde 1 min

delay(1000); 

// espera 1s

stepper.setSpeed(6); 

// 6 rpm

stepper.step(‐2038); 

// faz 2038 passos (faster speed) 10 s

(21)

STEM com Robótica

6º Exercício

Utilizando um driver de motor SHIELD L293D, controlar o 

motor de corrente contínua.

//motor_A int IN1 = 2 ; int IN2 = 3 ; //Inicializa Pinos void setup(){ pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); } void loop(){ /*Inicio dos Estados do motor A*/ //Sentido 1 digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); delay(5000); //Trava_Motor_A digitalWrite(IN1,HIGH); digitalWrite(IN2,HIGH); delay(5000); //Sentido 2 digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); delay(5000); //Trava_Motor_A digitalWrite(IN1,HIGH); digitalWrite(IN2,HIGH); delay(5000); /*Fim dos Estados do motor A*/ }

Referências

Documentos relacionados

São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção

O Programa de Avaliação da Rede Pública de Educação Básica (Proeb), criado em 2000, em Minas Gerais, foi o primeiro programa a fornecer os subsídios necessários para que

Como hipótese, assumiremos que o desenvolvimento de um modelo matemático diferente do tradicional poderia, por permitir a criação de personagens com comportamentos adaptáveis a

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Afinal de contas, tanto uma quanto a outra são ferramentas essenciais para a compreensão da realidade, além de ser o principal motivo da re- pulsa pela matemática, uma vez que é

Visual responses in infants and preschool children born at term and with normal development occur in an inte- grated manner to neuromotor functions in addition to cognitive

1. Parisi relaciona-o à provável redução da função da camada dos fotorreceptores ou das células ganglionares na região macular 5. W u encontrou o TRA V maior