pid with encoder as its feedback
Dependencies: Motor PID mbed millis
Fork of Tes_Encoder_Bawaan by
PID using PID library of mbed
depedencies = Library : {PID, mbed, motor, milis}
main.cpp@1:8d4fab4e069c, 2016-09-23 (annotated)
- Committer:
- Fathoni17
- Date:
- Fri Sep 23 12:29:17 2016 +0000
- Revision:
- 1:8d4fab4e069c
- Parent:
- 0:24cb158c4064
- Child:
- 2:7565fb31357d
Ubah dengan Potensiometer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gustavaditya | 0:24cb158c4064 | 1 | #include "mbed.h" |
gustavaditya | 0:24cb158c4064 | 2 | #include "millis.h" |
Fathoni17 | 1:8d4fab4e069c | 3 | #include "Motor.h" |
gustavaditya | 0:24cb158c4064 | 4 | |
gustavaditya | 0:24cb158c4064 | 5 | int val; |
gustavaditya | 0:24cb158c4064 | 6 | |
gustavaditya | 0:24cb158c4064 | 7 | int encoder0Pos = 0; |
gustavaditya | 0:24cb158c4064 | 8 | int encoder0PinALast = 0; |
gustavaditya | 0:24cb158c4064 | 9 | int n = 0; |
gustavaditya | 0:24cb158c4064 | 10 | float rpm; |
gustavaditya | 0:24cb158c4064 | 11 | int start = 1; |
gustavaditya | 0:24cb158c4064 | 12 | unsigned long int previousMillis = 0; |
Fathoni17 | 1:8d4fab4e069c | 13 | float pwmRead=0.00; |
Fathoni17 | 1:8d4fab4e069c | 14 | |
Fathoni17 | 1:8d4fab4e069c | 15 | Motor motor1(D11,D13,D12); |
Fathoni17 | 1:8d4fab4e069c | 16 | AnalogIn pwmIn(A0); |
Fathoni17 | 1:8d4fab4e069c | 17 | |
gustavaditya | 0:24cb158c4064 | 18 | int main(void) { |
Fathoni17 | 1:8d4fab4e069c | 19 | |
gustavaditya | 0:24cb158c4064 | 20 | DigitalIn encoder0PinA(D3); |
gustavaditya | 0:24cb158c4064 | 21 | DigitalIn encoder0PinB(D4); |
gustavaditya | 0:24cb158c4064 | 22 | Serial pc(USBTX,USBRX); |
Fathoni17 | 1:8d4fab4e069c | 23 | |
gustavaditya | 0:24cb158c4064 | 24 | startMillis(); |
Fathoni17 | 1:8d4fab4e069c | 25 | |
gustavaditya | 0:24cb158c4064 | 26 | while(1){ |
gustavaditya | 0:24cb158c4064 | 27 | |
Fathoni17 | 1:8d4fab4e069c | 28 | pwmRead = pwmIn.read(); |
Fathoni17 | 1:8d4fab4e069c | 29 | motor1.speed(pwmRead/255); |
gustavaditya | 0:24cb158c4064 | 30 | |
gustavaditya | 0:24cb158c4064 | 31 | unsigned long int currentMillis = millis(); |
gustavaditya | 0:24cb158c4064 | 32 | // int counter; |
gustavaditya | 0:24cb158c4064 | 33 | // counter=currentMillis/100; |
gustavaditya | 0:24cb158c4064 | 34 | |
Fathoni17 | 1:8d4fab4e069c | 35 | if (currentMillis-previousMillis>=500) |
gustavaditya | 0:24cb158c4064 | 36 | { |
gustavaditya | 0:24cb158c4064 | 37 | previousMillis = currentMillis; |
gustavaditya | 0:24cb158c4064 | 38 | rpm = 120.0/7.0*encoder0Pos; |
gustavaditya | 0:24cb158c4064 | 39 | pc.printf ("Dalam 500 ms = %d ",encoder0Pos); |
gustavaditya | 0:24cb158c4064 | 40 | pc.printf ("rpm = %.0f \n",rpm); |
gustavaditya | 0:24cb158c4064 | 41 | encoder0Pos = 0; |
gustavaditya | 0:24cb158c4064 | 42 | } |
gustavaditya | 0:24cb158c4064 | 43 | |
gustavaditya | 0:24cb158c4064 | 44 | else |
gustavaditya | 0:24cb158c4064 | 45 | { |
gustavaditya | 0:24cb158c4064 | 46 | n = encoder0PinA; |
gustavaditya | 0:24cb158c4064 | 47 | if ((!encoder0PinALast) && (n)) |
gustavaditya | 0:24cb158c4064 | 48 | { |
gustavaditya | 0:24cb158c4064 | 49 | if (!encoder0PinB) |
gustavaditya | 0:24cb158c4064 | 50 | { |
gustavaditya | 0:24cb158c4064 | 51 | encoder0Pos--; |
gustavaditya | 0:24cb158c4064 | 52 | } else { |
gustavaditya | 0:24cb158c4064 | 53 | encoder0Pos++; |
gustavaditya | 0:24cb158c4064 | 54 | } |
gustavaditya | 0:24cb158c4064 | 55 | //pc.printf ("%d \n",encoder0Pos); |
gustavaditya | 0:24cb158c4064 | 56 | } |
gustavaditya | 0:24cb158c4064 | 57 | encoder0PinALast = n; |
gustavaditya | 0:24cb158c4064 | 58 | } |
gustavaditya | 0:24cb158c4064 | 59 | } |
gustavaditya | 0:24cb158c4064 | 60 | } |