Rodrigo Vianna
/
APS-1-MEA-2021-2-RodrigoVianna
APS 1 máquinas Elétricas Rodrigo Vianna
main.cpp@0:7b62a3e6a41a, 2021-09-15 (annotated)
- Committer:
- rodrigo_vianna
- Date:
- Wed Sep 15 00:39:19 2021 +0000
- Revision:
- 0:7b62a3e6a41a
aps 1
Who changed what in which revision?
User | Revision | Line number | New 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(®istro_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 |