CLOSED LOOP BASE

Dependencies:   Motor PID mbed millis

Committer:
gustavaditya
Date:
Mon May 29 15:46:48 2017 +0000
Revision:
1:7d3041941b1b
Parent:
0:57124be75a63
CLOSED LOOP BASE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gustavaditya 0:57124be75a63 1 #ifndef ENCODERKRAI_H
gustavaditya 0:57124be75a63 2 #define ENCODERKRAI_H
gustavaditya 0:57124be75a63 3
gustavaditya 0:57124be75a63 4 /**
gustavaditya 0:57124be75a63 5 * Includes
gustavaditya 0:57124be75a63 6 */
gustavaditya 0:57124be75a63 7 #include "mbed.h"
gustavaditya 0:57124be75a63 8
gustavaditya 0:57124be75a63 9 /**
gustavaditya 0:57124be75a63 10 * Defines
gustavaditya 0:57124be75a63 11 */
gustavaditya 0:57124be75a63 12 #define PREV_MASK 0x1 //Mask for the previous state in determining direction
gustavaditya 0:57124be75a63 13 //of rotation.
gustavaditya 0:57124be75a63 14 #define CURR_MASK 0x2 //Mask for the current state in determining direction
gustavaditya 0:57124be75a63 15 //of rotation.
gustavaditya 0:57124be75a63 16 #define INVALID 0x3 //XORing two states where both bits have changed.
gustavaditya 0:57124be75a63 17
gustavaditya 0:57124be75a63 18 /**
gustavaditya 0:57124be75a63 19 * Quadrature Encoder Interface.
gustavaditya 0:57124be75a63 20 */
gustavaditya 0:57124be75a63 21 class encoderKRAI {
gustavaditya 0:57124be75a63 22
gustavaditya 0:57124be75a63 23 public:
gustavaditya 0:57124be75a63 24
gustavaditya 0:57124be75a63 25 typedef enum Encoding {
gustavaditya 0:57124be75a63 26
gustavaditya 0:57124be75a63 27 X2_ENCODING,
gustavaditya 0:57124be75a63 28 X4_ENCODING
gustavaditya 0:57124be75a63 29
gustavaditya 0:57124be75a63 30 } Encoding;
gustavaditya 0:57124be75a63 31
gustavaditya 0:57124be75a63 32 /** Membuat interface dari encoder
gustavaditya 0:57124be75a63 33 *
gustavaditya 0:57124be75a63 34 * @param inA DigitalIn, out A dari encoder
gustavaditya 0:57124be75a63 35 * @param inB DigitalIn, out B dari encoder
gustavaditya 0:57124be75a63 36 */
gustavaditya 0:57124be75a63 37 encoderKRAI(PinName channelA, PinName channelB, int pulsesPerRev, Encoding encoding = X2_ENCODING);
gustavaditya 0:57124be75a63 38
gustavaditya 0:57124be75a63 39 /**
gustavaditya 0:57124be75a63 40 * Reset encoder.
gustavaditya 0:57124be75a63 41 *
gustavaditya 0:57124be75a63 42 * Menset pulse dan revolusi/putaran menjadi 0
gustavaditya 0:57124be75a63 43 */
gustavaditya 0:57124be75a63 44 void reset(void);
gustavaditya 0:57124be75a63 45
gustavaditya 0:57124be75a63 46 /**
gustavaditya 0:57124be75a63 47 * Membaca pulse yang didapat oleh encoder
gustavaditya 0:57124be75a63 48 *
gustavaditya 0:57124be75a63 49 * @return Nilai pulse yang telah dilalui.
gustavaditya 0:57124be75a63 50 */
gustavaditya 0:57124be75a63 51 int getPulses(void);
gustavaditya 0:57124be75a63 52
gustavaditya 0:57124be75a63 53 /**
gustavaditya 0:57124be75a63 54 * Membaca putaran yang didapat oleh encoder
gustavaditya 0:57124be75a63 55 *
gustavaditya 0:57124be75a63 56 * @return Nilai revolusi/putaran yang telah dilalui.
gustavaditya 0:57124be75a63 57 */
gustavaditya 0:57124be75a63 58 int getRevolutions(void);
gustavaditya 0:57124be75a63 59
gustavaditya 0:57124be75a63 60 /**
gustavaditya 0:57124be75a63 61 * Membaca pulse yang didapat oleh encoder
gustavaditya 0:57124be75a63 62 *
gustavaditya 0:57124be75a63 63 * @return Nilai pulse yang telah dilalui.
gustavaditya 0:57124be75a63 64 */
gustavaditya 0:57124be75a63 65 //int readDeltaPulses(void);
gustavaditya 0:57124be75a63 66
gustavaditya 0:57124be75a63 67 /**
gustavaditya 0:57124be75a63 68 * Membaca putaran yang didapat oleh encoder
gustavaditya 0:57124be75a63 69 *
gustavaditya 0:57124be75a63 70 * @return Nilai revolusi/putaran yang telah dilalui.
gustavaditya 0:57124be75a63 71 */
gustavaditya 0:57124be75a63 72 //int readDeltaRevolutions(void);
gustavaditya 0:57124be75a63 73
gustavaditya 0:57124be75a63 74 private:
gustavaditya 0:57124be75a63 75
gustavaditya 0:57124be75a63 76 /**
gustavaditya 0:57124be75a63 77 * Menghitung pulse
gustavaditya 0:57124be75a63 78 *
gustavaditya 0:57124be75a63 79 * Digunakan setiap rising/falling edge baik channel A atau B
gustavaditya 0:57124be75a63 80 * Membaca putaran CW atau CCW => mengakibatkan pertambahan/pengurangan pulse
gustavaditya 0:57124be75a63 81 */
gustavaditya 0:57124be75a63 82 void encode(void);
gustavaditya 0:57124be75a63 83
gustavaditya 0:57124be75a63 84 /**
gustavaditya 0:57124be75a63 85 * Indeks setiap rising edge untuk menghitung putaran
gustavaditya 0:57124be75a63 86 * Nilai bertambah 1
gustavaditya 0:57124be75a63 87 */
gustavaditya 0:57124be75a63 88 //void index(void);
gustavaditya 0:57124be75a63 89
gustavaditya 0:57124be75a63 90 Encoding encoding_;
gustavaditya 0:57124be75a63 91
gustavaditya 0:57124be75a63 92 InterruptIn channelA_;
gustavaditya 0:57124be75a63 93 InterruptIn channelB_;
gustavaditya 0:57124be75a63 94 //InterruptIn index_;
gustavaditya 0:57124be75a63 95
gustavaditya 0:57124be75a63 96 int pulsesPerRev_;
gustavaditya 0:57124be75a63 97 int prevState_;
gustavaditya 0:57124be75a63 98 int currState_;
gustavaditya 0:57124be75a63 99
gustavaditya 0:57124be75a63 100 volatile int pulses_;
gustavaditya 0:57124be75a63 101 volatile int revolutions_;
gustavaditya 0:57124be75a63 102
gustavaditya 0:57124be75a63 103
gustavaditya 0:57124be75a63 104 };
gustavaditya 0:57124be75a63 105
gustavaditya 0:57124be75a63 106 #endif /* ENCODERKRAI_H */