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

Committer:
chrigelburri
Date:
Fri Apr 26 06:02:41 2013 +0000
Revision:
15:cb1337567ad4
Parent:
12:235e318a414f
Child:
38:d76e488e725f
Vor dem ?ndern f?r das Testat2. Weil das andorid auskommentiert werden muss....

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 0:31f7be68e52d 1 #ifndef _MAXON_ESCON_H_
chrigelburri 0:31f7be68e52d 2 #define _MAXON_ESCON_H_
chrigelburri 0:31f7be68e52d 3
chrigelburri 0:31f7be68e52d 4 #include "Hallsensor.h"
chrigelburri 0:31f7be68e52d 5 #include "defines.h"
chrigelburri 0:31f7be68e52d 6
chrigelburri 0:31f7be68e52d 7 /**
chrigelburri 0:31f7be68e52d 8 * @author Christian Burri
chrigelburri 0:31f7be68e52d 9 *
chrigelburri 11:775ebb69d5e1 10 * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
chrigelburri 0:31f7be68e52d 11 * All rights reserved.
chrigelburri 0:31f7be68e52d 12 *
chrigelburri 11:775ebb69d5e1 13 * @brief
chrigelburri 0:31f7be68e52d 14 *
chrigelburri 3:92ba0254af87 15 * This class implements the driver for the Maxon ESCON servo driver.
chrigelburri 11:775ebb69d5e1 16 * For more information see the Datasheet:
chrigelburri 3:92ba0254af87 17 * <a href="http://escon.maxonmotor.com">http://escon.maxonmotor.com</a>
chrigelburri 0:31f7be68e52d 18 */
chrigelburri 0:31f7be68e52d 19 class MaxonESCON
chrigelburri 0:31f7be68e52d 20 {
chrigelburri 0:31f7be68e52d 21
chrigelburri 2:d8e1613dc38b 22 private:
chrigelburri 0:31f7be68e52d 23
chrigelburri 11:775ebb69d5e1 24 /** @brief To Enable the amplifier */
chrigelburri 2:d8e1613dc38b 25 DigitalOut _enb;
chrigelburri 11:775ebb69d5e1 26 /** @brief Duty Cycle to set the speed */
chrigelburri 0:31f7be68e52d 27 PwmOut _pwm;
chrigelburri 11:775ebb69d5e1 28 /** @brief Hallsensor Class */
chrigelburri 0:31f7be68e52d 29 Hallsensor* _hall;
chrigelburri 11:775ebb69d5e1 30 /** @brief Ready output from ESCON */
chrigelburri 0:31f7be68e52d 31 DigitalIn _isenb;
chrigelburri 11:775ebb69d5e1 32 /** @brief Actual speed from ESCON analog Output 1 */
chrigelburri 0:31f7be68e52d 33 AnalogIn _actualSpeed;
chrigelburri 11:775ebb69d5e1 34 /** @brief increment the Hallpattern */
chrigelburri 0:31f7be68e52d 35 int _pulses;
chrigelburri 0:31f7be68e52d 36
chrigelburri 0:31f7be68e52d 37 public:
chrigelburri 0:31f7be68e52d 38
chrigelburri 11:775ebb69d5e1 39 /**
chrigelburri 11:775ebb69d5e1 40 * @brief Create a motor control object.
chrigelburri 6:48eeb41188dd 41 * @param enb DigitalOut, set high for enable
chrigelburri 6:48eeb41188dd 42 * @param isenb DigitalIn, high for enable
chrigelburri 6:48eeb41188dd 43 * @param pwm PwmOut pin, set the velocity
chrigelburri 6:48eeb41188dd 44 * @param actualSpeed AnalogIn filtered signal for ActualSpeed from Motor
chrigelburri 6:48eeb41188dd 45 * @param hall The object of the hallsensor from Motor
chrigelburri 6:48eeb41188dd 46 */
chrigelburri 0:31f7be68e52d 47 MaxonESCON(PinName enb,
chrigelburri 0:31f7be68e52d 48 PinName isenb,
chrigelburri 0:31f7be68e52d 49 PinName pwm,
chrigelburri 0:31f7be68e52d 50 PinName actualSpeed,
chrigelburri 0:31f7be68e52d 51 Hallsensor *hall);
chrigelburri 0:31f7be68e52d 52
chrigelburri 11:775ebb69d5e1 53 /**
chrigelburri 11:775ebb69d5e1 54 * @brief Set the speed of the motor with a pwm for 10%..90%.
chrigelburri 6:48eeb41188dd 55 * 50% PWM is 0rpm.
chrigelburri 15:cb1337567ad4 56 * Caclulate from [1/s] in [1/min] and the factor of the ESCON.
chrigelburri 6:48eeb41188dd 57 * @param speed The speed of the motor as a normalised value, given in [1/s]
chrigelburri 6:48eeb41188dd 58 */
chrigelburri 0:31f7be68e52d 59 void setVelocity(float speed);
chrigelburri 0:31f7be68e52d 60
chrigelburri 11:775ebb69d5e1 61 /**
chrigelburri 11:775ebb69d5e1 62 * @brief Return the speed from ESCON.
chrigelburri 15:cb1337567ad4 63 * 0 rpm is defined in the analog input as 1.65V
chrigelburri 6:48eeb41188dd 64 * @return speed of the motor, given in [1/s]
chrigelburri 6:48eeb41188dd 65 */
chrigelburri 0:31f7be68e52d 66 float getActualSpeed(void);
chrigelburri 0:31f7be68e52d 67
chrigelburri 11:775ebb69d5e1 68 /**
chrigelburri 11:775ebb69d5e1 69 * @brief Set the period of the pwm duty cycle.
chrigelburri 6:48eeb41188dd 70 * Wrapper for PwmOut::period()
chrigelburri 6:48eeb41188dd 71 * @param period Pwm duty cycle, given in [s].
chrigelburri 6:48eeb41188dd 72 */
chrigelburri 0:31f7be68e52d 73 void period(float period);
chrigelburri 0:31f7be68e52d 74
chrigelburri 11:775ebb69d5e1 75 /**
chrigelburri 15:cb1337567ad4 76 * @brief Set the motor to a enable sate.
chrigelburri 6:48eeb41188dd 77 * @param enb <code>false</code> for disable <code>true</code> for enable.
chrigelburri 6:48eeb41188dd 78 */
chrigelburri 3:92ba0254af87 79 void enable(bool enb);
chrigelburri 0:31f7be68e52d 80
chrigelburri 11:775ebb69d5e1 81 /**
chrigelburri 11:775ebb69d5e1 82 * @brief Tests if the servo drive is enabled.
chrigelburri 11:775ebb69d5e1 83 * @return <code>true</code> if the drive is enabled,
chrigelburri 6:48eeb41188dd 84 * <code>false</code> otherwise.
chrigelburri 6:48eeb41188dd 85 */
chrigelburri 0:31f7be68e52d 86 bool isEnabled(void);
chrigelburri 0:31f7be68e52d 87
chrigelburri 11:775ebb69d5e1 88 /**
chrigelburri 15:cb1337567ad4 89 * @brief Return the number of pulses.
chrigelburri 6:48eeb41188dd 90 * @return Pulses, given in [count]
chrigelburri 6:48eeb41188dd 91 */
chrigelburri 0:31f7be68e52d 92 int getPulses(void);
chrigelburri 0:31f7be68e52d 93
chrigelburri 11:775ebb69d5e1 94 /**
chrigelburri 15:cb1337567ad4 95 * @brief Set the pulses of the motor, given in [count]
chrigelburri 6:48eeb41188dd 96 * @return Pulses, given in [count]
chrigelburri 6:48eeb41188dd 97 */
chrigelburri 0:31f7be68e52d 98 int setPulses(int setPos);
chrigelburri 0:31f7be68e52d 99 };
chrigelburri 0:31f7be68e52d 100
chrigelburri 0:31f7be68e52d 101 #endif