tuning pid

Dependencies:   Motor kalman mbed millis

Fork of prototype_encoder_launcher by KRAI 2017

Committer:
Najib_irvani
Date:
Thu Feb 09 13:46:48 2017 +0000
Revision:
1:4200f28040d3
Parent:
0:bc9c90c7b357
tuning pid

Who changed what in which revision?

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