Dependencies: mbed
JOG_EIXO_Z.cpp@17:f3a45eeb1a7e, 2021-05-19 (annotated)
- Committer:
- diogonac
- Date:
- Wed May 19 17:00:31 2021 +0000
- Revision:
- 17:f3a45eeb1a7e
- Parent:
- 16:8c6cbd446ae8
- Child:
- 18:1374daf4e6a3
Atualizacao do acionamento do motor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
diogonac | 3:ce5c55c100b1 | 1 | #include "mbed.h" |
diogonac | 13:9ee128577854 | 2 | |
diogonac | 3:ce5c55c100b1 | 3 | Serial pc (USBTX, USBRX); |
diogonac | 3:ce5c55c100b1 | 4 | |
diogonac | 6:c344e6b93f34 | 5 | |
diogonac | 17:f3a45eeb1a7e | 6 | AnalogIn eixo_Z(PC_2); |
diogonac | 15:a0927f239a4c | 7 | InterruptIn posicao_salva(PA_15); |
diogonac | 17:f3a45eeb1a7e | 8 | InterruptIn botao_emergencia(PC_4); |
diogonac | 3:ce5c55c100b1 | 9 | |
diogonac | 4:c3007ca446ec | 10 | BusOut motor_z(PB_1, PB_15, PB_14, PB_13); |
diogonac | 3:ce5c55c100b1 | 11 | |
diogonac | 16:8c6cbd446ae8 | 12 | float tempo_horario, tempo_anti_horario; //Segundos |
diogonac | 16:8c6cbd446ae8 | 13 | int pulsos_horario, pulsos_anti_horario; |
diogonac | 3:ce5c55c100b1 | 14 | int i; |
diogonac | 16:8c6cbd446ae8 | 15 | int J_Z; |
diogonac | 16:8c6cbd446ae8 | 16 | float deslocamento_horario_Z, deslocamento_anti_horario_Z, deslocamento_total_Z; |
diogonac | 16:8c6cbd446ae8 | 17 | float velocidade_Z; |
diogonac | 16:8c6cbd446ae8 | 18 | float passo_motor = 18;//5.625/32; |
diogonac | 16:8c6cbd446ae8 | 19 | int passo_fuso = 5; |
diogonac | 13:9ee128577854 | 20 | int pegaZ; |
diogonac | 4:c3007ca446ec | 21 | int posicao_salva_estado, botao_emergencia_estado; |
diogonac | 3:ce5c55c100b1 | 22 | |
diogonac | 4:c3007ca446ec | 23 | void rotina_posicao_salva(void); |
diogonac | 4:c3007ca446ec | 24 | void rotina_emergencia(void); |
diogonac | 13:9ee128577854 | 25 | void rotida_velocidade_eixo_Z(void); |
diogonac | 16:8c6cbd446ae8 | 26 | void rotida_deslocamento_eixo_Z (void); |
diogonac | 17:f3a45eeb1a7e | 27 | void rotida_aciona_motor (void); |
diogonac | 16:8c6cbd446ae8 | 28 | |
diogonac | 3:ce5c55c100b1 | 29 | |
diogonac | 3:ce5c55c100b1 | 30 | |
diogonac | 3:ce5c55c100b1 | 31 | int main() |
diogonac | 3:ce5c55c100b1 | 32 | { |
diogonac | 13:9ee128577854 | 33 | |
diogonac | 13:9ee128577854 | 34 | pc.baud(115200); |
diogonac | 4:c3007ca446ec | 35 | motor_z = 0x00; |
diogonac | 4:c3007ca446ec | 36 | posicao_salva.rise(&rotina_posicao_salva); |
diogonac | 4:c3007ca446ec | 37 | botao_emergencia.rise(&rotina_emergencia); |
diogonac | 3:ce5c55c100b1 | 38 | |
diogonac | 3:ce5c55c100b1 | 39 | while(1) { |
diogonac | 3:ce5c55c100b1 | 40 | |
diogonac | 16:8c6cbd446ae8 | 41 | J_Z = eixo_Z.read_u16(); |
diogonac | 4:c3007ca446ec | 42 | posicao_salva_estado = posicao_salva.read(); |
diogonac | 4:c3007ca446ec | 43 | botao_emergencia_estado = botao_emergencia.read(); |
diogonac | 3:ce5c55c100b1 | 44 | |
diogonac | 16:8c6cbd446ae8 | 45 | pc.printf("Z=%4d, PegaZ=%4d, Posicao_salva_estado=%d, Botao_emergencia_estado=%d, Tempo1=%4f, Tempo2=%4f, Pulsos=%d, Deslocamento_Z=%f, Velocidade_Z=%f\r\n", J_Z, pegaZ, posicao_salva_estado, botao_emergencia_estado, tempo_horario, tempo_anti_horario, pulsos_anti_horario, deslocamento_total_Z, velocidade_Z); |
diogonac | 16:8c6cbd446ae8 | 46 | |
diogonac | 17:f3a45eeb1a7e | 47 | rotida_aciona_motor(); |
diogonac | 4:c3007ca446ec | 48 | |
diogonac | 3:ce5c55c100b1 | 49 | } |
diogonac | 3:ce5c55c100b1 | 50 | } |
diogonac | 3:ce5c55c100b1 | 51 | |
diogonac | 3:ce5c55c100b1 | 52 | |
diogonac | 4:c3007ca446ec | 53 | void rotina_posicao_salva() |
diogonac | 3:ce5c55c100b1 | 54 | { |
diogonac | 16:8c6cbd446ae8 | 55 | if(posicao_salva_estado == 0) pegaZ = J_Z; |
diogonac | 13:9ee128577854 | 56 | else pegaZ = 0; |
diogonac | 4:c3007ca446ec | 57 | } |
diogonac | 4:c3007ca446ec | 58 | |
diogonac | 4:c3007ca446ec | 59 | void rotina_emergencia() |
diogonac | 4:c3007ca446ec | 60 | { |
diogonac | 13:9ee128577854 | 61 | if(botao_emergencia_estado == 0) motor_z = 0x00; |
diogonac | 13:9ee128577854 | 62 | } |
diogonac | 4:c3007ca446ec | 63 | |
diogonac | 13:9ee128577854 | 64 | void rotida_velocidade_eixo_Z() |
diogonac | 13:9ee128577854 | 65 | { |
diogonac | 16:8c6cbd446ae8 | 66 | tempo_horario = -1*J_Z*0.0000028 +0.1875; |
diogonac | 16:8c6cbd446ae8 | 67 | tempo_anti_horario = J_Z*0.000002785 +0.0025; |
diogonac | 16:8c6cbd446ae8 | 68 | } |
diogonac | 16:8c6cbd446ae8 | 69 | |
diogonac | 16:8c6cbd446ae8 | 70 | void rotida_deslocamento_eixo_Z() |
diogonac | 16:8c6cbd446ae8 | 71 | { |
diogonac | 16:8c6cbd446ae8 | 72 | deslocamento_horario_Z = (passo_fuso*pulsos_horario*passo_motor)/360; |
diogonac | 16:8c6cbd446ae8 | 73 | deslocamento_anti_horario_Z = (passo_fuso*pulsos_anti_horario*passo_motor)/360; |
diogonac | 16:8c6cbd446ae8 | 74 | deslocamento_total_Z = deslocamento_anti_horario_Z - deslocamento_horario_Z; |
diogonac | 17:f3a45eeb1a7e | 75 | } |
diogonac | 17:f3a45eeb1a7e | 76 | |
diogonac | 17:f3a45eeb1a7e | 77 | |
diogonac | 17:f3a45eeb1a7e | 78 | void rotida_aciona_motor() |
diogonac | 17:f3a45eeb1a7e | 79 | { |
diogonac | 17:f3a45eeb1a7e | 80 | |
diogonac | 17:f3a45eeb1a7e | 81 | if(31000 <= J_Z & J_Z <= 35000) { |
diogonac | 17:f3a45eeb1a7e | 82 | |
diogonac | 17:f3a45eeb1a7e | 83 | motor_z = 0x00; |
diogonac | 17:f3a45eeb1a7e | 84 | |
diogonac | 17:f3a45eeb1a7e | 85 | } else { |
diogonac | 17:f3a45eeb1a7e | 86 | if (J_Z > 31000) { |
diogonac | 17:f3a45eeb1a7e | 87 | for(i = 0; i < 4; i++) { |
diogonac | 17:f3a45eeb1a7e | 88 | motor_z = 1 << i; |
diogonac | 17:f3a45eeb1a7e | 89 | rotida_velocidade_eixo_Z(); |
diogonac | 17:f3a45eeb1a7e | 90 | rotida_deslocamento_eixo_Z(); |
diogonac | 17:f3a45eeb1a7e | 91 | wait(tempo_horario); |
diogonac | 17:f3a45eeb1a7e | 92 | pulsos_horario+=1; |
diogonac | 17:f3a45eeb1a7e | 93 | velocidade_Z = deslocamento_horario_Z/tempo_horario; |
diogonac | 17:f3a45eeb1a7e | 94 | |
diogonac | 17:f3a45eeb1a7e | 95 | } |
diogonac | 17:f3a45eeb1a7e | 96 | } |
diogonac | 17:f3a45eeb1a7e | 97 | |
diogonac | 17:f3a45eeb1a7e | 98 | if(J_Z < 35000) { |
diogonac | 17:f3a45eeb1a7e | 99 | for(i = 3; i > -1; i--) { |
diogonac | 17:f3a45eeb1a7e | 100 | motor_z = 1 << i; |
diogonac | 17:f3a45eeb1a7e | 101 | rotida_velocidade_eixo_Z(); |
diogonac | 17:f3a45eeb1a7e | 102 | rotida_deslocamento_eixo_Z(); |
diogonac | 17:f3a45eeb1a7e | 103 | wait(tempo_anti_horario); |
diogonac | 17:f3a45eeb1a7e | 104 | pulsos_anti_horario+=1; |
diogonac | 17:f3a45eeb1a7e | 105 | velocidade_Z = deslocamento_horario_Z/tempo_horario; |
diogonac | 17:f3a45eeb1a7e | 106 | |
diogonac | 17:f3a45eeb1a7e | 107 | } |
diogonac | 17:f3a45eeb1a7e | 108 | } |
diogonac | 17:f3a45eeb1a7e | 109 | } |
diogonac | 3:ce5c55c100b1 | 110 | } |