luiz fischer
/
TCC_ident-2
main.cpp@0:9f283b4cbf6c, 2018-01-05 (annotated)
- Committer:
- nlfischer
- Date:
- Fri Jan 05 18:01:17 2018 +0000
- Revision:
- 0:9f283b4cbf6c
Luiz Fischer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nlfischer | 0:9f283b4cbf6c | 1 | // Anexo 2: Programa para excitar o conversor e realizar a identificação do sistema |
nlfischer | 0:9f283b4cbf6c | 2 | |
nlfischer | 0:9f283b4cbf6c | 3 | #include "mbed.h" |
nlfischer | 0:9f283b4cbf6c | 4 | #include "Sinal.h" |
nlfischer | 0:9f283b4cbf6c | 5 | #include "FastPWM.h" |
nlfischer | 0:9f283b4cbf6c | 6 | |
nlfischer | 0:9f283b4cbf6c | 7 | Ticker aciona_interrupcao; |
nlfischer | 0:9f283b4cbf6c | 8 | |
nlfischer | 0:9f283b4cbf6c | 9 | Serial pc(SERIAL_TX, SERIAL_RX, 1000000); |
nlfischer | 0:9f283b4cbf6c | 10 | |
nlfischer | 0:9f283b4cbf6c | 11 | AnalogIn tensao_entrada(A4); |
nlfischer | 0:9f283b4cbf6c | 12 | AnalogIn tensao_saida(A5); |
nlfischer | 0:9f283b4cbf6c | 13 | |
nlfischer | 0:9f283b4cbf6c | 14 | FastPWM fastpwm(PB_4,1); |
nlfischer | 0:9f283b4cbf6c | 15 | |
nlfischer | 0:9f283b4cbf6c | 16 | DigitalOut carga(PB_5); |
nlfischer | 0:9f283b4cbf6c | 17 | DigitalOut L_8V(PB_3); |
nlfischer | 0:9f283b4cbf6c | 18 | |
nlfischer | 0:9f283b4cbf6c | 19 | static int interrupt = 1, k=0, periodo_pwm = 1; |
nlfischer | 0:9f283b4cbf6c | 20 | float T = 0.001; |
nlfischer | 0:9f283b4cbf6c | 21 | |
nlfischer | 0:9f283b4cbf6c | 22 | float le_tensao_vin(){ |
nlfischer | 0:9f283b4cbf6c | 23 | return tensao_entrada.read()*11.5; |
nlfischer | 0:9f283b4cbf6c | 24 | } |
nlfischer | 0:9f283b4cbf6c | 25 | |
nlfischer | 0:9f283b4cbf6c | 26 | float le_tensao_vout(){ |
nlfischer | 0:9f283b4cbf6c | 27 | return tensao_saida.read()*11.5; |
nlfischer | 0:9f283b4cbf6c | 28 | } |
nlfischer | 0:9f283b4cbf6c | 29 | |
nlfischer | 0:9f283b4cbf6c | 30 | void liga_8V(){ |
nlfischer | 0:9f283b4cbf6c | 31 | L_8V = 1;wait(T/5); |
nlfischer | 0:9f283b4cbf6c | 32 | } |
nlfischer | 0:9f283b4cbf6c | 33 | |
nlfischer | 0:9f283b4cbf6c | 34 | void interrupcao(){ |
nlfischer | 0:9f283b4cbf6c | 35 | interrupt = 1; |
nlfischer | 0:9f283b4cbf6c | 36 | k=k+1; |
nlfischer | 0:9f283b4cbf6c | 37 | } |
nlfischer | 0:9f283b4cbf6c | 38 | |
nlfischer | 0:9f283b4cbf6c | 39 | void inicio(){ |
nlfischer | 0:9f283b4cbf6c | 40 | wait(0.5); |
nlfischer | 0:9f283b4cbf6c | 41 | aciona_interrupcao.attach(&interrupcao, T); |
nlfischer | 0:9f283b4cbf6c | 42 | |
nlfischer | 0:9f283b4cbf6c | 43 | fastpwm.period_ticks (5000); // Ajusta o período do pwm para 20Khz (5000 system ticks) |
nlfischer | 0:9f283b4cbf6c | 44 | fastpwm.pulsewidth_ticks(0); // Ajusta o ciclo de trabalho |
nlfischer | 0:9f283b4cbf6c | 45 | |
nlfischer | 0:9f283b4cbf6c | 46 | pc.printf("%% Inicio do programa"); |
nlfischer | 0:9f283b4cbf6c | 47 | pc.printf("\nclear all; clc;"); |
nlfischer | 0:9f283b4cbf6c | 48 | pc.printf("\ndados = ["); |
nlfischer | 0:9f283b4cbf6c | 49 | } |
nlfischer | 0:9f283b4cbf6c | 50 | |
nlfischer | 0:9f283b4cbf6c | 51 | void imprime_dados(float u, float vout){ |
nlfischer | 0:9f283b4cbf6c | 52 | pc.printf("\n%d", k); |
nlfischer | 0:9f283b4cbf6c | 53 | pc.printf(" "); |
nlfischer | 0:9f283b4cbf6c | 54 | pc.printf("%f", u); |
nlfischer | 0:9f283b4cbf6c | 55 | pc.printf(" "); |
nlfischer | 0:9f283b4cbf6c | 56 | pc.printf("%f", vout); |
nlfischer | 0:9f283b4cbf6c | 57 | } |
nlfischer | 0:9f283b4cbf6c | 58 | |
nlfischer | 0:9f283b4cbf6c | 59 | void fim(){ |
nlfischer | 0:9f283b4cbf6c | 60 | pc.printf("];"); |
nlfischer | 0:9f283b4cbf6c | 61 | pc.printf("\nfigure(1)"); |
nlfischer | 0:9f283b4cbf6c | 62 | |
nlfischer | 0:9f283b4cbf6c | 63 | pc.printf("\nsubplot(2,1,1)"); |
nlfischer | 0:9f283b4cbf6c | 64 | pc.printf("\nstairs(dados(:,3),'k')"); |
nlfischer | 0:9f283b4cbf6c | 65 | pc.printf("\ngrid on"); |
nlfischer | 0:9f283b4cbf6c | 66 | pc.printf("\nylabel('Tensão de saida')"); |
nlfischer | 0:9f283b4cbf6c | 67 | pc.printf("\naxis([0 5000 0 10])"); |
nlfischer | 0:9f283b4cbf6c | 68 | |
nlfischer | 0:9f283b4cbf6c | 69 | pc.printf("\nsubplot(2,1,2)"); |
nlfischer | 0:9f283b4cbf6c | 70 | pc.printf("\nstairs(dados(:,2))"); |
nlfischer | 0:9f283b4cbf6c | 71 | pc.printf("\ngrid on"); |
nlfischer | 0:9f283b4cbf6c | 72 | pc.printf("\nylabel('controle')"); |
nlfischer | 0:9f283b4cbf6c | 73 | pc.printf("\naxis([0 5000 0 5000])"); |
nlfischer | 0:9f283b4cbf6c | 74 | |
nlfischer | 0:9f283b4cbf6c | 75 | pc.printf("\nsave dados dados"); |
nlfischer | 0:9f283b4cbf6c | 76 | |
nlfischer | 0:9f283b4cbf6c | 77 | fastpwm.pulsewidth_ticks(0); // Ajusta o ciclo de trabalho |
nlfischer | 0:9f283b4cbf6c | 78 | |
nlfischer | 0:9f283b4cbf6c | 79 | while(1){ } |
nlfischer | 0:9f283b4cbf6c | 80 | } |
nlfischer | 0:9f283b4cbf6c | 81 | |
nlfischer | 0:9f283b4cbf6c | 82 | float seta_pwm(int x){ |
nlfischer | 0:9f283b4cbf6c | 83 | if(x==0) x=1000; |
nlfischer | 0:9f283b4cbf6c | 84 | if(x==1) x=4000; |
nlfischer | 0:9f283b4cbf6c | 85 | |
nlfischer | 0:9f283b4cbf6c | 86 | fastpwm.pulsewidth_ticks(x); // Ajusta o ciclo de trabalho |
nlfischer | 0:9f283b4cbf6c | 87 | return x; |
nlfischer | 0:9f283b4cbf6c | 88 | } |
nlfischer | 0:9f283b4cbf6c | 89 | |
nlfischer | 0:9f283b4cbf6c | 90 | |
nlfischer | 0:9f283b4cbf6c | 91 | int main() { |
nlfischer | 0:9f283b4cbf6c | 92 | int i = 0; |
nlfischer | 0:9f283b4cbf6c | 93 | float vin=0.0,vout=0.0, u=0.0; |
nlfischer | 0:9f283b4cbf6c | 94 | |
nlfischer | 0:9f283b4cbf6c | 95 | inicio(); |
nlfischer | 0:9f283b4cbf6c | 96 | |
nlfischer | 0:9f283b4cbf6c | 97 | liga_8V(); |
nlfischer | 0:9f283b4cbf6c | 98 | |
nlfischer | 0:9f283b4cbf6c | 99 | while(1){ |
nlfischer | 0:9f283b4cbf6c | 100 | |
nlfischer | 0:9f283b4cbf6c | 101 | if(interrupt) { |
nlfischer | 0:9f283b4cbf6c | 102 | |
nlfischer | 0:9f283b4cbf6c | 103 | u = seta_pwm(sinal_pwm[k]); |
nlfischer | 0:9f283b4cbf6c | 104 | |
nlfischer | 0:9f283b4cbf6c | 105 | imprime_dados(u, le_tensao_vout()); |
nlfischer | 0:9f283b4cbf6c | 106 | |
nlfischer | 0:9f283b4cbf6c | 107 | |
nlfischer | 0:9f283b4cbf6c | 108 | interrupt = 0; |
nlfischer | 0:9f283b4cbf6c | 109 | |
nlfischer | 0:9f283b4cbf6c | 110 | if(k==tam-1) fim(); |
nlfischer | 0:9f283b4cbf6c | 111 | |
nlfischer | 0:9f283b4cbf6c | 112 | |
nlfischer | 0:9f283b4cbf6c | 113 | } |
nlfischer | 0:9f283b4cbf6c | 114 | |
nlfischer | 0:9f283b4cbf6c | 115 | |
nlfischer | 0:9f283b4cbf6c | 116 | } |
nlfischer | 0:9f283b4cbf6c | 117 | } |