Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Uberlândia Faculdade de Engenharia Elétrica Disciplina: Instrumentação Industrial 1 Instrumentação Industrial 1 (Trabalho Final) Uberlândia, 27 de junho, MG SUMÁRIO 1. Introdução 3 1.1. Dados do Trabalho 3 1.2. Montagem Proposta 4 2. Faixa de operação 4 3. Simulação do sistema no Python 4 4. Geração do sinal analógico 4 4.1. Montagem Realizada 4 4.2. Cálculo do Filtro Analógico 4 4.3. Cálculo do Condicionador de Saída (Topologia Amplificador Subrator) 4 5. Aquisição do sinal analógico 4 5.1. Modelo de Condicionador Adotado 4 5.2. Cálculo do Condicionador 4 5.2.1. Análise CC 4 5.2.2. Análise CA 4 5.2.3. Somatória das Análises 4 6. Códigos do sistema embarcado (Arduino) 4 6.1. Escolha do Filtro Digital 4 6.2. Implementação das Threads 4 6.3. Rotina de Geração do Sinal Analógico 4 7. Ajuste e calibração 4 8. Caracterização estática 4 9. Análise dos resultados 4 1. Introdução 1.1. Dados do Trabalho Disciplina:Instrumentação Industrial I Unidade: Faculdade de Engenharia Elétrica Código: FEELT32503 Matrícula: 11911EEL018 e 12011EBI025 Aluno:Aline Matias Alexandre e Guilherme Alves Galante Orpheu Ano/Semestre: 2022/02 1.2. Montagem Proposta · 2 Resistores de 3k ohms · 2 Resistores de 33k ohms · 2 Resistores de 500k ohms · 2 Resistores de 1k ohm · 1 Resistor de 1M ohm · 2 Capacitores de 7.95 uF · 2 Amp op · Arduino Uno 2. Faixa de operação import math def geraPontoOperacao(matricula1,matricula2): valor = math.floor((int(matricula1[-2:])+int(matricula2[-2:]))/4) if valor < 10 : valor = 10 print("O valor da tensão máxima de saída é de "+str(valor)+" V[RMS]", "na frequência de funcionamento de "+str(math.floor((int(matricula1[-2:])+int(matricula2[-2:]))/2)+50)+" hz") geraPontoOperacao('11911EEL018','12011EBI025') 3. Simulação do sistema no Python import matplotlib.pyplot as plt from math import floor, sqrt from numpy import cos, sin, pi, absolute, array, arange, size, append, concatenate from pylab import subplots, figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, legend from scipy.signal import firwin, lfilter # Setup da Simulação GridFreq = 71 #Nominal Grid Frequency in Hz Fs = 1000 #Sampling frequency = 1Khz T = 1/GridFreq # Periodo do Sinal Ts = 1/Fs #Sampling Time = 1/Fs Tfinal = 0.5 #Time the simulation t = arange(0,Tfinal,Ts) #Simulation Time vector w = 2*pi*GridFreq #Frequencia Angular # Gera pontos como se estivesse lendo tensões alternadas. u1,u2,u3,u4 = array([]),array([]),array([]),array([]) rmsVoltage1,rmsVoltage2,rmsVoltage3,rmsVoltage4 = array([0]),array([0]),array([0]),array([0]) for n in range(1,floor(size(t)/4)): u1 = append(u1, 220*sqrt(2)*sin(w*(n*Ts))) #Pontos de 311. rmsVoltage1 = append(rmsVoltage1, sqrt((10*rmsVoltage1[-1]**2+u1[-1]**2)/11)) u2 = append(u2, 440*sqrt(2)*sin(w*(n*Ts))) #Pontos de 622.25 rmsVoltage2 = append(rmsVoltage2, sqrt((10*rmsVoltage2[-1]**2+u2[-1]**2)/11)) u3 = append(u3, 127*sqrt(2)*sin(w*(n*Ts))) #Pontos de 179.60 rmsVoltage3 = append(rmsVoltage3, sqrt((10*rmsVoltage3[-1]**2+u3[-1]**2)/11)) u4 = append(u4, 380*sqrt(2)*sin(w*(n*Ts))) #Pontos de 537.40 rmsVoltage4 = append(rmsVoltage4, sqrt((10*rmsVoltage4[-1]**2+u4[-1]**2)/11)) supplyVoltage = concatenate((u1, u2, u3, u4)) rmsVoltage = concatenate((rmsVoltage1[1:], rmsVoltage2[1:], rmsVoltage3[1:], rmsVoltage4[1:]) VCAL_M = 1; VCAL_B = 0; V_RATIO = VCAL_M*rmsVoltage+VCAL_B; fig, ax = subplots(figsize=(20,6), facecolor='#DEDEDE') title("Calibração|Ajuste"); line1,line2 = ax.plot(t[:size(supplyVoltage)],supplyVoltage,'b',t[:size(supplyVoltage)],V_RATIO,'r') #linewidth=3 legend([line1,line2],["AC_RET","RMS"]); xlabel('Tempo') ylabel('Amplitude') Geração de uma onda dente de Serra # Gera pontos como se estivesse lendo tensões alternadas. count = 0 denteSerra = array([]) for n in t: if count*Ts < T : count=count+1 else: count = 0 denteSerra = append(denteSerra, count) fig, ax = subplots(figsize=(20,6), facecolor='#DEDEDE') title("Calibração|Ajuste"); line1 = ax.plot(t,denteSerra,'b') #linewidth=3 legend([line1],["Dente de Serra"]); xlabel('Tempo') ylabel('Amplitude') Simulação de uma onda quadrada import numpy as np import matplotlib.pyplot as plt # Setup da Simulação GridFreq = 71 # Frequência nominal da rede em Hz Fs = 1000 # Frequência de amostragem = 1 kHz T = 1 / GridFreq # Período do sinal Ts = 1 / Fs # Tempo de amostragem = 1/Fs Tfinal = 0.5 # Tempo da simulação t = np.arange(0, Tfinal, Ts) # Vetor de tempo da simulação w = 2 * np.pi * GridFreq # Frequência angular # Gera a onda quadrada u = np.sign(np.sin(w * t)) # Plota a onda quadrada plt.figure(figsize=(10, 6)) plt.plot(t, u) plt.xlabel('Tempo') plt.ylabel('Amplitude') plt.title('Onda Quadrada') plt.grid(True) plt.show() 4. Geração do sinal analógico 4.1. Montagem Realizada 4.2. Cálculo do Filtro Analógico import math r = 1000 c = 5.305E-6 fc = 1/(2*math.pi*r*c) print('Frequência em Hz obtida e:',fc) 4.3. Cálculo do Condicionador de Saída (Topologia Amplificador Subrator) 5. Aquisição do sinal analógico 5.1. Modelo de Condicionador Adotado 5.2. Cálculo do Condicionador 5.2.1. Análise CC 5.2.2. Análise CA 5.2.3. Somatória das Análises 6. Códigos do sistema embarcado (Arduino) 6.1. Escolha do Filtro Digital 6.2. Implementação das Threads 6.3. Rotina de Geração do Sinal Analógico 7. Ajuste e calibração 7.1. Código para Encontrar o Ajuste 8. Caracterização estática 8.1. Código de Caracterização 8.2. Dados Extraídos para a Caracterização 9. Análise dos resultados 2
Compartilhar