motor aansturing moet lineair zijn is het niet

Dependencies:   MODSERIAL Encoder mbed HIDScope

Committer:
Zeekat
Date:
Fri Oct 02 10:56:17 2015 +0000
Revision:
9:f907915f269c
Parent:
8:83d522d8f2b8
Child:
10:b2742f42de44
werkende simpele besturing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Zeekat 0:5ea1875b307a 1 #include "mbed.h"
Zeekat 4:e171c9fa5447 2 #include "MODSERIAL.h"
Zeekat 9:f907915f269c 3 #include "encoder.h"
Zeekat 4:e171c9fa5447 4
Zeekat 4:e171c9fa5447 5 Serial pc(USBTX,USBRX);
Zeekat 4:e171c9fa5447 6
Zeekat 4:e171c9fa5447 7 Ticker mod;
Zeekat 0:5ea1875b307a 8
Zeekat 0:5ea1875b307a 9 //MOTOR
Zeekat 0:5ea1875b307a 10 // motor 1 en 2 zijn omgedraait
Zeekat 0:5ea1875b307a 11 // pinnen motor 1 -> pinnen motor 2
Zeekat 0:5ea1875b307a 12
Zeekat 0:5ea1875b307a 13 //motor 1 gegevens
Zeekat 0:5ea1875b307a 14 PwmOut motor1_aan(D6); // PWM signaal motor 2 (uit sheets)
Zeekat 0:5ea1875b307a 15 DigitalOut motor1_rich(D7); // digitaal signaal voor richting
Zeekat 0:5ea1875b307a 16 // einde motor 1
Zeekat 0:5ea1875b307a 17
Zeekat 0:5ea1875b307a 18 //motor 2 gegevens
Zeekat 0:5ea1875b307a 19 PwmOut motor2_aan(D5); // PWM signaal motor 1 (uit sheets)
Zeekat 0:5ea1875b307a 20 DigitalOut motor2_rich(D4); // digitaal signaal voor richting
Zeekat 0:5ea1875b307a 21 // einde motor 1
Zeekat 0:5ea1875b307a 22 //EINDE MOTOR
Zeekat 0:5ea1875b307a 23
Zeekat 9:f907915f269c 24 // ENCODER
Zeekat 9:f907915f269c 25 Encoder motor1_enc(D12,D11);
Zeekat 9:f907915f269c 26 Encoder motor2_enc(D10,D9);
Zeekat 4:e171c9fa5447 27
Zeekat 0:5ea1875b307a 28
Zeekat 0:5ea1875b307a 29 //POTMETERS
Zeekat 0:5ea1875b307a 30 AnalogIn potleft(A1);
Zeekat 0:5ea1875b307a 31 AnalogIn potright(A0);
Zeekat 0:5ea1875b307a 32
Zeekat 5:46dae55f0ab0 33 DigitalIn button(PTA4);
Zeekat 5:46dae55f0ab0 34 int button_on = 0;
Zeekat 4:e171c9fa5447 35
Zeekat 9:f907915f269c 36
Zeekat 8:83d522d8f2b8 37 void move_mot1(double left)
Zeekat 0:5ea1875b307a 38 {
Zeekat 6:3031e8abb052 39 if(left < 0.400)
Zeekat 1:8918d924f625 40 {
Zeekat 8:83d522d8f2b8 41 double calc1 = left - 1;
Zeekat 8:83d522d8f2b8 42 double calc2 = abs(calc1);
Zeekat 8:83d522d8f2b8 43 double leftin1 = (calc2-0.6)*2.5 ;
Zeekat 6:3031e8abb052 44 motor1_aan.write(leftin1);
Zeekat 0:5ea1875b307a 45 motor1_rich.write(0);
Zeekat 0:5ea1875b307a 46 }
Zeekat 6:3031e8abb052 47 else if(left > 0.4000 && left < 0.6000)
Zeekat 0:5ea1875b307a 48 {
Zeekat 0:5ea1875b307a 49 motor1_aan.write(0);
Zeekat 0:5ea1875b307a 50 }
Zeekat 6:3031e8abb052 51 else if(left > 0.6000)
Zeekat 0:5ea1875b307a 52 {
Zeekat 8:83d522d8f2b8 53 double leftin2 = (left-0.6)*2.5;
Zeekat 6:3031e8abb052 54 motor1_aan.write(leftin2);
Zeekat 0:5ea1875b307a 55 motor1_rich.write(1);
Zeekat 0:5ea1875b307a 56 }
Zeekat 0:5ea1875b307a 57 }
Zeekat 0:5ea1875b307a 58
Zeekat 8:83d522d8f2b8 59 void move_mot2(double right)
Zeekat 0:5ea1875b307a 60 {
Zeekat 6:3031e8abb052 61 if(right < 0.4000)
Zeekat 0:5ea1875b307a 62 {
Zeekat 8:83d522d8f2b8 63 double calc3 = right - 1;
Zeekat 8:83d522d8f2b8 64 double calc4 = abs(calc3);
Zeekat 8:83d522d8f2b8 65 double rightin1 = (calc4-0.6)*2.5 ;
Zeekat 6:3031e8abb052 66 motor2_aan.write(rightin1);
Zeekat 0:5ea1875b307a 67 motor2_rich.write(0);
Zeekat 0:5ea1875b307a 68 }
Zeekat 6:3031e8abb052 69 else if(right > 0.4000 && right < 0.6000)
Zeekat 0:5ea1875b307a 70 {
Zeekat 0:5ea1875b307a 71 motor2_aan.write(0);
Zeekat 0:5ea1875b307a 72 }
Zeekat 6:3031e8abb052 73 else if(right > 0.6000)
Zeekat 0:5ea1875b307a 74 {
Zeekat 8:83d522d8f2b8 75 double rightin2 = (right-0.6)*2.5;
Zeekat 6:3031e8abb052 76 motor2_aan.write(rightin2);
Zeekat 0:5ea1875b307a 77 motor2_rich.write(1);
Zeekat 0:5ea1875b307a 78 }
Zeekat 0:5ea1875b307a 79 }
Zeekat 0:5ea1875b307a 80
Zeekat 4:e171c9fa5447 81 void send()
Zeekat 4:e171c9fa5447 82 {
Zeekat 9:f907915f269c 83 int counts1 = motor1_enc.getPosition();
Zeekat 9:f907915f269c 84 int counts2 = motor2_enc.getPosition();
Zeekat 9:f907915f269c 85 pc.printf("motor 1 counts, %d motor 2 counts %d \n", counts1, counts2);
Zeekat 9:f907915f269c 86 }
Zeekat 4:e171c9fa5447 87
Zeekat 0:5ea1875b307a 88
Zeekat 0:5ea1875b307a 89 int main()
Zeekat 0:5ea1875b307a 90 {
Zeekat 4:e171c9fa5447 91 pc.baud(115200);
Zeekat 4:e171c9fa5447 92 mod.attach(&send,1);
Zeekat 0:5ea1875b307a 93 while(true)
Zeekat 0:5ea1875b307a 94 {
Zeekat 8:83d522d8f2b8 95 double left = potleft.read();
Zeekat 9:f907915f269c 96 double right = potright.read();
Zeekat 4:e171c9fa5447 97 move_mot1(left);
Zeekat 4:e171c9fa5447 98 move_mot2(right);
Zeekat 9:f907915f269c 99 if( button.read() == button_on)
Zeekat 7:eb239942830d 100 {
Zeekat 9:f907915f269c 101 motor1_enc.setPosition(0);
Zeekat 9:f907915f269c 102 motor2_enc.setPosition(0);
Zeekat 7:eb239942830d 103 }
Zeekat 9:f907915f269c 104 wait(0.01f); // is noodzakelijk voor functioneren gradual increase, waarom????
Zeekat 4:e171c9fa5447 105
Zeekat 0:5ea1875b307a 106 }
Zeekat 0:5ea1875b307a 107 }