for controlling stepper motor with A4980

Dependents:   HIDTympDeviceWithPIDController

motorControl.h

Committer:
piniels
Date:
2014-10-06
Revision:
0:9156e6b6bf46

File content as of revision 0:9156e6b6bf46:

/*
############################################
##           Motor Control v0.1 Library   ##
##          created by Peter Ilsoee       ##
############################################
        ---- piniels@gmail.com -----
This library was made for 4-Phase Stepper Motors for A4980 SPI device from Allegro
I don't take any resposability for the damage caused to your equipment.

*/
#ifndef MOTOR_CONTROL_H
#define MOTOR_CONTROL_H

#include "mbed.h"
#include "A4980ControlRegi.h"

class motorControl {
public:

    motorControl(int numberOfSteps, PinName step, PinName dir, PinName ms1, PinName ms0, PinName enable, PinName reset, PinName diag); //motor constructor
    void step(int num_steps, int direction, int speed);

    void initSpi();
    int setConfigRegi0(t_config_control_regi_0 value);
    int setConfigRegi1(t_config_control_regi_1 value);
    int setRunRegi(t_run_regi value);
    int getStepCount();
    void setStepCount(int value);
    void setMicroSteps(int value);
    int getMicroSteps();
    t_config_control_regi_0 getConfigRegi0();
    t_config_control_regi_1 getConfigRegi1();
    t_run_regi getRunRegi();
    void runStepperAtSpeed(bool startStop, int whatSpeed, int direction);
    void runStepperAtSpeedWithSPI(bool startStop, int whatSpeed, int direction);
    void goToZeroPosition(int whatSpeed);
    void openCloseValve(bool openTrue);
    /** Call back member for timer tick
     *
     */
    void runMotor(void);
    void doRamp(int numberOfRampsteps,float endDelay);
    float calculateStepDelay(int whatSpeed);
    void step(int num_steps, int delay, bool direction);
    
private:
    int _Number_OF_STEPS;
    int _Step_Counter;
    bool _Bool_Direction;
    PwmOut _STEP;
    DigitalOut _DIR;
    DigitalOut _MS1;
    DigitalOut _MS0;
    DigitalOut _ENABLE;
    DigitalOut _RESET;
    DigitalIn  _DIAG;
    float step_delay;
    t_config_control_regi_0 _REGI_0;
    t_config_control_regi_1 _REGI_1;
    t_run_regi              _REGI_RUN;
    



};

#endif