Você está na página 1de 8
Ministério da Educagao Universidade Tecnolégica Federal do Parana ade Tees Fer UTirer Coordenagio de Eletrotécnica licrocontrolador Arduino: Aplicagao em controle PI Autor: Prof, Alessandro N, Vargas Objetivo Conheeor o fiuncionamento do Microcontrolador Arduino © realizar a sua programagio para que ele atue como um Controlador PI adaptado ao Kit Motor DC. 1 Arduino O mierocontrolador Arduino ¢ um dispositive programével versétil, ffeil de programar, ¢ es em robitica, eletrén tem encontrado muitas apl inclusive em processos industriais. © Arduino & open-source, 0 que signifiea que seu software de desenvolvimento 6 gritis © son hardware fot desenvotvido para que tenha um progo mais acessfvel. O Tink do projeto Arduino 6 http: //aww.arduino.ce ¢ © preco do Arduino Uno, 0 modelo mais tradicional, encontra-se na faixa de R$ 70,00 (lojas no Brasil) Usando a placa Arduino, pode-se escrever programas ¢ criar rotinas para ler exemplo sinais gerados por sensores, ¢ pode ser usado também para gerar sinais, por ex ara controle de motores, Inzes, relés, transistoros. Podo-so inelusive gorar sinais PWM do mancira muito simplificada. A Tinguagem de programacio do Arduino é uma versio simplificada da linguagem C/C++. © Laboratorio de Controle ¢ Automacio da UTKPR tém disponivel 0 modelo Arduino Uno Row’, qe possui as sognintes earactorfstiens: nas, por lo Figura 1: Foto de um Arduino modelo Uno, 11 Estrutura do programa 1 ARDUINO © Microcontrolador A’ ido sob 5 V com 2 Kb de RAM, A328 oper © Tensiio de alimentagtio da placa entre 7-12V; 14 pinos de Entrada/Saida digitais (6 saidas PWM); 6 Entradas Analégicas; ¢ 32k Flash Memory para parametros; jardar os programas e 1 Kb de EEPROM para guardar os 300.000 © 16Mby velocidade de clock, que significa uma execucdo de aproximadames linhas de e6digo em Tinguagem C por segundo; # Conector USB para que 0 Arduino converse com um PC qu programacao; hospedaré o ambiente de 1.1. Estrutura do programa ‘Todos os programas Arduino devem conter duas estruturas biisicas: setup() ¢ Loop) As instrugdes coloeadas dentro do setup sho exeeutadas uma tinicn. vez; essas instrucdes norimalmente so usadas para inicializar outros procedimentos. As instrucdes colocadas dentro do Loop) sio executadas repedidamente, permanentemente, ¢ forma a principal tarefa do programa. Entio cada programa deve conter a seguinte estrutura: void setup() { // commands to initialize go here + void Loop() { // commands to run your machine go here Y 1.2, Comandos usuais 1.2.1 pinfode Bsce comando pintode, que deve ir dentro da funelio setup(), é usado para gravar a diregao de um pine yoiq setup() 1/0 digital. Grave 0 pino como OUTPUT se 0 pino esti gerando um sinal de safda, por exemplo acendendo —_pinlode(2,0vTPUT); um LED, controlando um motor, ete. Grave 0 pino pinMede(3, INPUT) ; como INPUT se © pino esta lendo um sinal de sensor + ‘ou chave ou outro sensor. O exemplo ao lado grava a —-Y°24 Lop fF pino 2 como saida e pino 3 como entrada. 1.2.2 Serial.print Esse comando Serial. print permite visualizarmos o que ocorre dentro do Arduino atra- vés do PC acoplado no Arduino via cabo USB. Para o correto fimcionamento, © comando Serial. begin (9600) deve ser inserido dentro do setupQ. Apés o comando ser programado, 6 nocessirio abrir no PC a janela do ambiente “Serial Monitor”, Ha dnas maneitas de vistia- lizar a informagio: Serial.print () imprime na mesmna linha e Serial.printin@ comeca ‘imprimir mma nova linha. Programe 0 e¢xligo a seguir, ¢ use um fio jumper para concetar o pino 2 na tensio +5V no Gnd Prof, Alessandro Vargas 2 UTEPR-CP 1.2 Comandos usuais 4 ARDUINO void setup() { Serial .begin(9600); } void 1oop() { Serial printin(digitalead(2)); delay (100) ; // realiza atraso de 100 ms } 1.2.3 digitalWrite Esse comando grava um pino 1/0 em “high” (+5V) ou “low” (OV) © 6 um comando extromamente importante para interiacear o Arduino com o mundo externo. Nao se esqueca de usar 0 comando pinMode() dentro de setup() para gravar © pino como safda. digitalirite(2,HIGH); // sets pin 2 to +5 volts digitalirite(2,LOW); // sets pin 2 to zero volts 1.2.4 delay O coman gundos. lo delay congela a execuciio pela quantidade de tempo especificada em mill digitalirite(2,HIGH); // pin 2 high (LED on) delay(500); // wait 500 ms digitalwrite(2,LOW); // pin 2 low (LED off) 1.2.5 analogRead(pinNumber) Para reecher um sinal analégieo, o Arduino usa os numeros de pinos 0A 5 eorrespon- dendo aos pinos fisicos AO,A1,A2,A3,A4,A5. Portanto hé seis entradas analdgicas. Para ler uma informagio analdgica basta programar 0 comando analogRead(piniiumber) no qual pinlumber ¢ 0 numero do pino de entrada no qual deve-se realizar a leitura. Esse eomando analogRead retornard um mtimero inteiro entre 0 ¢ 1023, que deve ser Ieitura proporcional das tonsdes entre OV ¢ +5V. \dido como uma 1.2.6 analogirite(pinliumber, value) Arduino nao possui saida analégica, eutiio essa fancio com nome contraditério, analogiirite, nao realiza safda analdgica. O Arduino s6 possui saida digital, que por sia 1.s6 pode variar entre os niveis “low” ¢ O que corre 6 que o Arduino 6 eapaz de gerar sinal na forma do Pulse Width Modulation (PWM) com nfveis variando om frequencia om “low” ¢ “high”, Os pinos digitais 3, 5, 6,9, 10 11 possuem a safda PWM. Entio para usarmos asaida PWM chamamos 0 comando:analogWrite(pinlumber, value) ; no qual pinNumber representa o pino digital capacitado para PWM e value designa um mimero entre 0 ¢ 255 (varingio de 0% & 100% do duty cycle do PWM Uma solucio simples para converter sinal PWM em sinal anal6gico é utilizar um simples circuito RC em série, mas os valores de Re C devem ser projetados com cuidado, conforme veremios no experimento a seguir. Prof, Alessandro Vargas 3 UTEPR-cP 1.2 Comandos usuais 1 ARDUINO Experiéncia 8A — Leitura e escrita de dados no Arduino Monte no protoboard o circuito mostrado na Fig. 2. Use R = 1K, POT = 10KQ, C= 10pF. Conecto o Arduino no PC usando o eabo USB, Implemente 0 eédigo abaixo no Arduino. © Abra a janela *Serial Monitor” dentro do Software IDE Arduino. Varie 0 eursor do po tenciémetro © veja no “Serial Monitor” os nimeros inteiro que correspondem as tensdes de Bntrada ¢ Safda, Preencha a tabela a seguir. Arduino Por < 40 Figura 2: Esquemitico do cirenito do Arduino da Experiencia 8A. // These constants won't change. They’re used to give names // to the pins used: const int analogInPin const int analog0utPis 40; // Analog input pin 9; // Analog output pin 5 J/ value read from the pot int sengorValue = 0: = 0; // value output to the PWM (analog out) int outputValue void setup() { // initialize serial communications at 9600 bps: Sorial.bogin (9600); + void loop() { // read the analog in value sonsorValue = analogRoad(analogInPin) ; // map it to the range of the analog out: outpatValue = map(sensorValue, 0, 1023, 0, 285); // change the analog out value analogirite(analogdutPin, outputValue) ; // print the results to the serial monitor: Serial-print("sensor ="); Serial print(sensorValue) Serial-print("\t output ="); Serial print1n(outputValue) ; // wait 10 milliseconds before the next loop delay (10) ; Prof. Alessandro Vargas 4 UTFPR-CP 1.2 Comandos usuais 4 ARDUINO testo em AO ow av valor inteito no Arduino correspondendo AO tensio em OUT valor inteiro no Arduino correspondendo OUT PROCEDIMENTOS DE SEGURANGA L. Desligue 0 médulo de alim cio. 2. Monte o cireuito indicado e certifique-se de que todos os elementos seguem exatamente © diagrama indicado no experiment. 3. Apés autorizaciio do monitor ou professor, ligue o médulo de alimentagio, 4, Mudaneas no circuito devem ser feitas sempre com o médulo DESLIGADO. Experiéncia 8B ~ Implementagao de leitura e escrita de dados em malha aberta no servomecanismo Monte o cirenito mostrado na figura abaixo. Use Ry = 15K, Ry = LK, POT OF. A tensio de referencia 6 aquela aplicada no Pino AO. 0a, Ry] Arduino vi" W \ ror lp at Servo-necanisino] +Vx am Diagrama esquemtico do experimento di jtura-escrita em malha aberta usando o kit Experiéncia 8B - Tabela de tensio de entrada-saida +V, x Viv Ve En Use 0 cédigo-fonte da proxi a tabela. a pagina para preench Prof, Alessandro Vargas 5 UTEPR-cP 1.2 Comandos usuais 1 ARDUINO Cédigo Arduino Implemente no Arduino o eédigo que realiza a leitura entrada-saida. i Codigo leitura entrada-saida 7 const int analogInPinld const int analoglnPinAl const int analogdutPin = int sensorValue = 0; float T=0; float Vu=0; float Yn=0; float Ret void setup() { // initialize serial communications at 9600 bps: Serial. begin(9600) ; + void Loop() { 7/ read the analog in value sensorValue = analogead(analogInPinAo); Ref = sensorValue + (5.0 / 1023.0); sensorValue = analogRead(analogInPinAt); Yn = sensorValue * (5.0 / 1023.0); Vu = Ref; analogirite(analog0utPin, Vu * (255.0 / 5.0); Serial-prin("vu ="); Serial.print (Vw); Serial-print("\t Va = "); Serial.print1n(Vn); Prof, Alessandro Vargas 6 UTEPR-cP 1.2 Comandos usuais 1 ARDUINO Experiéncia 8C — Implementagao de estratégia de controle PT no Arduino Mantenha 0 mesmo circuito da Experiencia 8B, Ajustando 0 codige-fonte do Arduino podemos implomentar um Controlador PI Digital. Cédigo Arduino Impleme no Arduino eédigo que realiza o Controlador PI Digital no Arduino. I Codigo PT Arduino 7 const int analogInPinld const int analoglnPinAl const int analogdutPin = int sensorValue = 0; float 1-0; float E=0; float Vu float Ki=0.02; void sevup() { // initialize serial communications at 9600 bps Serial begin (9600); + void loop() { // vead the analog in value: sensorValue = analogRead(analogIn? ino) ; Ref = sensorValue * (5.0 / 1023.0); sensorValue = analogRead(analogInPinAt); Yn = sensorValue * (5.0 / 1023.0); Ref - Va; + Kis By Vu=Kpe E+]; analogirite(analog0utPin, Vu * (255.0 / 5.0));, Serial.print("Ref ="); Serial.print(Ref) ; Serial-print("\t Va = Serial.println(Vn); Procedimento complementar 1. Abra a janela “Serial Monitor” no Software IDE Arduino. 2. A entrada de Referencia é dada pela tensao no ponto central do potenciémetro, Mova © poteneidmetro ¢ veja no “Serial Monitor” as tensdes de Referencia e da velocidade angular 3. Fuca 0 seguinte experimento: ajuste 0 potenciometro para Re ite de modo que obtenha Ret=0.4 fe mova-o abrupta- Prof. Alessandro Vargas 7 UTFPR-CP 1.2 Comandos usuais 1 ARDUINO (a) Determine o tempo de assentamento para Kp = 1 e Ky = 0.02. ipo de assentamnento para Kp = 1 ¢ Ky = 0.05. 0.0 (a) Altere com cuidado os valores de Ki, € K; de modo que o tempo de assentamento (b) Determine 0 te (c) Determine o tempo de assentamento para Ky = 1 ¢ Ki se aproxime de zero. Preencha a tabela com os valores obtidos nos itens (a), (b), (e) e (d). Ttem | Resposta (a) (b) (©) (@) Relatério: L. Apresente as tabelas das experiencias 2. Desereva quais as vantagens ¢ desvantagens observadas nas implementagdes da Estraté- gia PI na (i) placa anal6gica, (ii) PC com Matlab e (iii) Arduino, Faga um comparativo téenico entre essas trés tecnologias, Prof, Alessandro Vargas 8 UTEPR-cP

Você também pode gostar