This program is for an autonomous robot for the competition at the Hochschule Luzern. We are one of the 32 teams. <a href="http://cruisingcrepe.wordpress.com/">http://cruisingcrepe.wordpress.com/</a> 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: <a href="http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf">http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf</a>
Fork of autonomousRobotAndroid by
Diff: Actuators/MaxonESCON.h
- Revision:
- 3:92ba0254af87
- Parent:
- 2:d8e1613dc38b
- Child:
- 6:48eeb41188dd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Actuators/MaxonESCON.h Thu Mar 07 09:47:07 2013 +0000 @@ -0,0 +1,97 @@ +#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