Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of autonomous Robot Android by
Actuators/MaxonESCON.h
- Committer:
- chrigelburri
- Date:
- 2013-03-23
- Revision:
- 6:48eeb41188dd
- Parent:
- 3:92ba0254af87
- Child:
- 11:775ebb69d5e1
File content as of revision 6:48eeb41188dd:
#ifndef _MAXON_ESCON_H_
#define _MAXON_ESCON_H_
#include "mbed.h"
#include "Hallsensor.h"
#include "defines.h"
/**
 * @author Christian Burri
 *
 * @section LICENSE
 *
 * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
 * All rights reserved.
 *
 * @section DESCRIPTION
 *
 * This class implements the driver for the Maxon ESCON servo driver.
 * For more information see on the Datasheet:
 *
 * Datasheet:
 * <a href="http://escon.maxonmotor.com">http://escon.maxonmotor.com</a>
 */
class MaxonESCON
{
private:
    /** To Enable the amplifier */
    DigitalOut _enb;
    /** Duty Cycle to set the speed */
    PwmOut _pwm;
    /** Hallsensor Class */
    Hallsensor* _hall;
    /** Ready output from ESCON */
    DigitalIn _isenb;
    /** Actual speed from ESCON analog Output 1 */
    AnalogIn _actualSpeed;
    /** increment the Hallpattern */
    int    _pulses;
public:
    /** Create a motor control object.
     * @param enb DigitalOut, set high for enable
     * @param isenb DigitalIn, high for enable
     * @param pwm PwmOut pin, set the velocity
     * @param actualSpeed AnalogIn filtered signal for ActualSpeed from Motor
     * @param hall The object of the hallsensor from Motor
     */
    MaxonESCON(PinName enb,
               PinName isenb,
               PinName pwm,
               PinName actualSpeed,
               Hallsensor *hall);
    /** Set the speed of the motor with a pwm for 10%..90%.
     * 50% PWM is 0rpm.
     * Caclulate from [1/s] in [1/min] and the Factor of the ESCON.
     * @param speed The speed of the motor as a normalised value, given in [1/s]
     */
    void setVelocity(float speed);
    /**Return the speed from ESCON.
     * 0 rpm is defined in the Analog input as 1.65V
     * @return speed of the motor, given in [1/s]
     */
    float getActualSpeed(void);
    /** Set the period of the pwm duty cycle.
     * Wrapper for PwmOut::period()
     * @param period Pwm duty cycle, given in [s].
     */
    void period(float period);
    /** Set the Motor to a enable sate.
     * @param enb <code>false</code> for disable <code>true</code> for enable.
     */
    void enable(bool enb);
    /**Tests if the servo drive is enabled.
     * @return <code>true</code> if the drive is enabled, 
     * <code>false</code> otherwise.
     */
    bool isEnabled(void);
    /** Return the number of Pulses.
     * @return Pulses, given in [count]
     */
    int getPulses(void);
    /** Set the Pulses of the Motor, given in [count]
     * @return Pulses, given in [count]
     */
    int setPulses(int setPos);
};
#endif
            
    