Buscar

Trabalho Controle de motor com arduíno(1)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

CENTRO UNIVERSITÁRIO UNIVATES 
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS 
ENGENHARIA DE CONTROLE E AUTOMAÇÃO 
28312 – ELETRÔNICA DE POTÊNCIA I 
 
 
 
 
 
 
 
 
 
 
PROJETO CONTROLE DE MOTOR COM ARDUÍNO 
 
 
 
 
 
 
 
Grupo: 
 
 Egediel L. Ferreira 
 Jéferson L. Werle 
 
 
Lajeado, julho de 2014. 
1 INTRODUÇÃO 
 O presente relatório tem o propósito de analisar e descrever o 
desenvolvimento de um controle de motor usando um arduíno, utilizando 
teoremas, cálculos e circuitos apresentados na disciplina de Eletrônica de 
Potência. 
 
2 FUNDAMENTOS TEÓRICOS 
ARDUÍNO: 
 É uma plataforma de prototipagem eletrônica de hardware livre e 
de placa única, projetada com um microcontrolador Atmel AVR com suporte 
de entrada/saída embutido, uma linguagem de programação padrão, a qual 
tem origem em Wiring, e é essencialmente C/C++. O objetivo do projeto é criar 
ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar 
por artistas e amadores. Principalmente para aqueles que não teriam alcance 
aos controladores mais sofisticados e de ferramentas mais complicadas. Pode 
ser usado para o desenvolvimento de objetos interativos independentes, ou 
ainda para ser conectado a um computador hospedeiro. Uma típica placa 
Arduíno é composta por um controlador, algumas linhas de E/S digital e 
analógica, além de umainterface serial ou USB, para interligar-se ao 
hospedeiro, que é usado para programá-la e interagi-la em tempo real. Ela em 
si não possui qualquer recurso de rede, porém é comum combinar um ou mais 
Arduinos deste modo, usando extensões apropriadas chamadas de shields. A 
interface do hospedeiro é simples, podendo ser escrita em várias linguagens. A 
mais popular é aProcessing, mas outras que podem comunicar-se com a 
conexão serial são: Max/MSP, Pure Data, SuperCollider, ActionScript e Java. 
 
Figura 1 – Arduíno 
3 MÉTODOS E MATERIAIS 
Procedimento 
 
 O objetivo é de fabricar um circuito de acionamento e controle de um 
motor( ou qualquer carga) usando um arduíno, controlando o ângulo de disparo 
de um triac, para isso foram usados os seguintes materiais: 
 
- Multímetro Instrutherm. 
- Software Protheus. 
- Chave Liga/Desliga 220 volts. 
- Alicate bico chato. 
- Alicate de corte. 
- Estanhador 60 watts. 
- Motor 20 vcc. 
- Estanho. 
- 2 Resistores de 330Ω 
- 1 Resistor de 220Ω 
- 1 Resistor de 10KΩ 
- 1 moc 3021 
- 1 triac bt 137 
- 2 Acopladores óticos 
 
 
Figura 2 – Circuito do projeto feito no software Proteus 
A seguir, o algoritmo de programação usado no arduíno: 
// The hardware timer runs at 16MHz. Using a 
// divide by 256 on the counter each count is 
// 16 microseconds. 1/2 wave of a 60Hz AC signal 
// is about 520 counts (8,333 microseconds). 
#include <avr/io.h> 
#include <avr/interrupt.h> 
#include <IRremote.h> 
int RECV_PIN = 11; 
int ON = 0; 
IRrecv irrecv(RECV_PIN); 
decode_results results; 
#define DETECT 2 //zero cross detect 
#define GATE 9 //triac gate 
#define PULSE 4 //trigger pulse width (counts) 
int i=513; 
void setup(){ 
// set up pins 
pinMode(DETECT, INPUT); //zero cross detect 
digitalWrite(DETECT, HIGH); //enable pull-up resistor 
pinMode(GATE, OUTPUT); //triac gate control 
irrecv.enableIRIn(); // Start the receiver 
 
// set up Timer1 
//(see ATMEGA 328 data sheet pg 134 for more details) 
OCR1A = 100; //initialize the comparator 
TIMSK1 = 0x03; //enable comparator A and overflow interrupts 
TCCR1A = 0x00; //timer control registers set for 
TCCR1B = 0x00; //normal operation, timer disabled 
// set up zero crossing interrupt 
attachInterrupt(0,zeroCrossingInterrupt, RISING); 
//IRQ0 is pin 2. Call zeroCrossingInterrupt 
//on rising signal 
} 
//Interrupt Service Routines 
void zeroCrossingInterrupt(){ //zero cross detect 
TCCR1B=0x04; //start timer with divide by 256 input 
TCNT1 = 0; //reset timer - count from zero 
} 
 
ISR(TIMER1_COMPA_vect){ //comparator match 
digitalWrite(GATE,ON); //set triac gate to high 
TCNT1 = 65536-PULSE; //trigger pulse width 
} 
 
ISR(TIMER1_OVF_vect){ //timer1 overflow 
digitalWrite(GATE,LOW); //turn off triac gate 
TCCR1B = 0x00; //disable timer stopd unintended triggers 
} 
void loop(){ // sample code to exercise the circuit 
 
if (irrecv.decode(&results)) { 
if (results.value == 0x8f4d926) // sobe 
{ i = i - 20; } 
if (results.value == 0x8F4F906) // desce 
{ i = i + 20; } 
if (results.value == 0x8F4C13E && ON ==1) // POWER 
{ i = 513; } 
if (results.value == 0x8F4C13E && ON == 0) // OFF 
{ i = 65; } 
 
irrecv.resume(); } 
if (i < 65) { i = 65; } 
if (i > 513) { i = 513; } 
if (i > 450) { ON = 0; } 
else { ON = 1; } 
OCR1A = i; //set the compare register brightness desired. 
delay(100); 
} 
4 RESULTADOS 
 Alterando os valores no programa do arduino, mudando o ângulo de 
disparo do triac, obtinha-se valores diferentes na forma de onda da 
carga(motor). Abaixo um gráfico com ângulo de corte de aproximadamente 45 
graus: 
 
 
Figura 3 – Ângulo de corte de 45 graus 
 
5 CONCLUSÕES 
 O projeto foi de grande importância para ganhar conhecimento sobre 
acionamento de carga com arduíno, e de como é simples mas também útil a 
sua utilização. Foi adquirido um conhecimento sobre arduíno e triacs que com 
certeza será útil para novos projetos. Ao analisar os resultados calculados, do 
simulador Proteus e os valores da prática, conclui-se que é simples projetar e 
construir um acionamento de carga com arduíno, pois os valores teórios são 
parecidos com os valores práticos, e os componentes para a construção do 
circuito são bem acessíveis para quem quiser construí-la. 
6 BIBLIOGRAFIA 
 
http://pt.wikipedia.org/wiki/Arduino 
http://www.youtube.com/watch?v=O8zYFOMFSVk 
http://www.forumnow.com.br/vip/mensagens.asp?forum=41935&topico=2653029 
7 ANEXOS 
 
 
Figura 4 – Placa de circuito impresso no Proteus 
 
 
Figura 5 – Vista superior da placa de circuito impresso no Proteus

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais