APS 1 máquinas Elétricas Rodrigo Vianna

Dependencies:   mbed

Committer:
rodrigo_vianna
Date:
Wed Sep 15 00:39:19 2021 +0000
Revision:
0:7b62a3e6a41a
aps 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rodrigo_vianna 0:7b62a3e6a41a 1 #include "mbed.h"
rodrigo_vianna 0:7b62a3e6a41a 2 // Definição das entradas utilizadas
rodrigo_vianna 0:7b62a3e6a41a 3 DigitalOut IN1A (D5);
rodrigo_vianna 0:7b62a3e6a41a 4 DigitalOut IN2A (D4);
rodrigo_vianna 0:7b62a3e6a41a 5 PwmOut ENA (D2);
rodrigo_vianna 0:7b62a3e6a41a 6 Serial pc(USBTX, USBRX);
rodrigo_vianna 0:7b62a3e6a41a 7 AnalogIn potenciometro(A5);
rodrigo_vianna 0:7b62a3e6a41a 8 InterruptIn sinal_encoder(D7);
rodrigo_vianna 0:7b62a3e6a41a 9
rodrigo_vianna 0:7b62a3e6a41a 10 //Definição das variáveis referentes ao cronômetro, contador e RPM
rodrigo_vianna 0:7b62a3e6a41a 11 Timer cronometro;
rodrigo_vianna 0:7b62a3e6a41a 12 int repeticoes;
rodrigo_vianna 0:7b62a3e6a41a 13 int rpm;
rodrigo_vianna 0:7b62a3e6a41a 14
rodrigo_vianna 0:7b62a3e6a41a 15 // Criação de uma função para incrementar o valor do contador
rodrigo_vianna 0:7b62a3e6a41a 16 void registro_encoder(void){
rodrigo_vianna 0:7b62a3e6a41a 17 repeticoes++;
rodrigo_vianna 0:7b62a3e6a41a 18 }
rodrigo_vianna 0:7b62a3e6a41a 19
rodrigo_vianna 0:7b62a3e6a41a 20
rodrigo_vianna 0:7b62a3e6a41a 21 int main(){
rodrigo_vianna 0:7b62a3e6a41a 22 cronometro.start();// começa cronometragem
rodrigo_vianna 0:7b62a3e6a41a 23 sinal_encoder.fall(&registro_encoder);// soma 1 à contagem se detectada uma borda de descida do sinal do encoder
rodrigo_vianna 0:7b62a3e6a41a 24 float valor_pot; // valor recebido do potenciômetro
rodrigo_vianna 0:7b62a3e6a41a 25 pc.baud(9600);// taxa de transferência de informações da serial
rodrigo_vianna 0:7b62a3e6a41a 26 while(1){
rodrigo_vianna 0:7b62a3e6a41a 27 // Envia para o motor tensão proporcional ao valor do potenciômetro
rodrigo_vianna 0:7b62a3e6a41a 28 valor_pot=potenciometro.read();
rodrigo_vianna 0:7b62a3e6a41a 29 ENA.write(valor_pot);
rodrigo_vianna 0:7b62a3e6a41a 30 IN1A=0;
rodrigo_vianna 0:7b62a3e6a41a 31 IN2A=1;
rodrigo_vianna 0:7b62a3e6a41a 32 if(repeticoes>=120){ // Calcula o rpm quando as repetições igualarem 120 (4 revs)
rodrigo_vianna 0:7b62a3e6a41a 33 rpm= (4/(cronometro/60));
rodrigo_vianna 0:7b62a3e6a41a 34 pc.printf("omega(rpm):%d\n\r",rpm);// Printa o valor de duty cycle e rpm
rodrigo_vianna 0:7b62a3e6a41a 35 pc.printf("\rdtc=%1.2f",valor_pot);
rodrigo_vianna 0:7b62a3e6a41a 36 repeticoes=0; // reseta a contagem do encoder e do cronômetro
rodrigo_vianna 0:7b62a3e6a41a 37 cronometro.reset();
rodrigo_vianna 0:7b62a3e6a41a 38 }
rodrigo_vianna 0:7b62a3e6a41a 39 }
rodrigo_vianna 0:7b62a3e6a41a 40 }
rodrigo_vianna 0:7b62a3e6a41a 41
rodrigo_vianna 0:7b62a3e6a41a 42