Baixe o app para aproveitar ainda mais
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
Compartilhar