This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

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