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:
Sat Mar 02 09:39:34 2013 +0000
Revision:
1:6cd533a712c6
Parent:
0:31f7be68e52d
Child:
2:d8e1613dc38b
Pos Regler funktioniert getestet im leerlauf;

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 "mbed.h"
chrigelburri 0:31f7be68e52d 5 #include "Hallsensor.h"
chrigelburri 0:31f7be68e52d 6 #include "defines.h"
chrigelburri 0:31f7be68e52d 7
chrigelburri 0:31f7be68e52d 8 /**
chrigelburri 0:31f7be68e52d 9 * @author Christian Burri
chrigelburri 0:31f7be68e52d 10 *
chrigelburri 0:31f7be68e52d 11 * @section LICENSE
chrigelburri 0:31f7be68e52d 12 *
chrigelburri 1:6cd533a712c6 13 * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
chrigelburri 0:31f7be68e52d 14 * All rights reserved.
chrigelburri 0:31f7be68e52d 15 *
chrigelburri 0:31f7be68e52d 16 * @section DESCRIPTION
chrigelburri 0:31f7be68e52d 17 *
chrigelburri 0:31f7be68e52d 18 * This class implements the driver for the Maxon ESCON servo driver.....
chrigelburri 0:31f7be68e52d 19 *
chrigelburri 0:31f7be68e52d 20 * Datasheet:
chrigelburri 0:31f7be68e52d 21 *
chrigelburri 0:31f7be68e52d 22 * http://escon.maxonmotor.com
chrigelburri 0:31f7be68e52d 23 */
chrigelburri 0:31f7be68e52d 24 class MaxonESCON
chrigelburri 0:31f7be68e52d 25 {
chrigelburri 0:31f7be68e52d 26
chrigelburri 0:31f7be68e52d 27 protected:
chrigelburri 0:31f7be68e52d 28
chrigelburri 0:31f7be68e52d 29 /** Duty Cycle to set the speed */
chrigelburri 0:31f7be68e52d 30 PwmOut _pwm;
chrigelburri 0:31f7be68e52d 31 /** To Enable the amplifier */
chrigelburri 0:31f7be68e52d 32 DigitalOut _enb;
chrigelburri 0:31f7be68e52d 33 /** Hallsensor Class */
chrigelburri 0:31f7be68e52d 34 Hallsensor* _hall;
chrigelburri 0:31f7be68e52d 35 /** Ready output from ESCON */
chrigelburri 0:31f7be68e52d 36 DigitalIn _isenb;
chrigelburri 0:31f7be68e52d 37 /** Actual speed from ESCON analog Output 1 */
chrigelburri 0:31f7be68e52d 38 AnalogIn _actualSpeed;
chrigelburri 0:31f7be68e52d 39
chrigelburri 0:31f7be68e52d 40 private:
chrigelburri 0:31f7be68e52d 41
chrigelburri 0:31f7be68e52d 42 /** increment the Hallpattern */
chrigelburri 0:31f7be68e52d 43 int _pulses;
chrigelburri 0:31f7be68e52d 44
chrigelburri 0:31f7be68e52d 45 public:
chrigelburri 0:31f7be68e52d 46
chrigelburri 0:31f7be68e52d 47 /** Create a motor control object
chrigelburri 0:31f7be68e52d 48 *
chrigelburri 0:31f7be68e52d 49 * @param enb DigitalOut, set high for enable
chrigelburri 0:31f7be68e52d 50 * @param isenb DigitalIn, high for enable
chrigelburri 0:31f7be68e52d 51 * @param pwm PwmOut pin, set the Velocity
chrigelburri 1:6cd533a712c6 52 * @param hall HALL Object
chrigelburri 1:6cd533a712c6 53 * @param actualSpeed AnalogIn Filtered Signal for ActualSpeed from Motor
chrigelburri 1:6cd533a712c6 54 * @param hall The Object of the Hallsensor from Motor
chrigelburri 0:31f7be68e52d 55 */
chrigelburri 0:31f7be68e52d 56 MaxonESCON(PinName enb,
chrigelburri 0:31f7be68e52d 57 PinName isenb,
chrigelburri 0:31f7be68e52d 58 PinName pwm,
chrigelburri 0:31f7be68e52d 59 PinName actualSpeed,
chrigelburri 0:31f7be68e52d 60 Hallsensor *hall);
chrigelburri 0:31f7be68e52d 61
chrigelburri 0:31f7be68e52d 62 /** Set the speed of the motor with a pwm for 10%..90%
chrigelburri 0:31f7be68e52d 63 * 50% PWM is 0rpm
chrigelburri 1:6cd533a712c6 64 * Caclulate from [1/s] in [1/min] and the Factor of the ESCON
chrigelburri 0:31f7be68e52d 65 * @param speed The speed of the motor as a normalised value in [1/s]
chrigelburri 0:31f7be68e52d 66 */
chrigelburri 0:31f7be68e52d 67 void setVelocity(float speed);
chrigelburri 0:31f7be68e52d 68
chrigelburri 0:31f7be68e52d 69 /**Return the speed from ESCON
chrigelburri 0:31f7be68e52d 70 *
chrigelburri 0:31f7be68e52d 71 * Analog input 1.65V = 0 rpm
chrigelburri 0:31f7be68e52d 72 *
chrigelburri 0:31f7be68e52d 73 * @return speed of the motor [1/s]
chrigelburri 0:31f7be68e52d 74 */
chrigelburri 0:31f7be68e52d 75 float getActualSpeed(void);
chrigelburri 0:31f7be68e52d 76
chrigelburri 0:31f7be68e52d 77 /** Set the period of the pwm duty cycle.
chrigelburri 0:31f7be68e52d 78 *
chrigelburri 0:31f7be68e52d 79 * Wrapper for PwmOut::period()
chrigelburri 0:31f7be68e52d 80 *
chrigelburri 1:6cd533a712c6 81 * @param period Pwm duty cycle in seconds.
chrigelburri 0:31f7be68e52d 82 */
chrigelburri 0:31f7be68e52d 83 void period(float period);
chrigelburri 0:31f7be68e52d 84
chrigelburri 0:31f7be68e52d 85 /** Set the Motor to a enable sate
chrigelburri 0:31f7be68e52d 86 *
chrigelburri 1:6cd533a712c6 87 * @param enb <code>0</code> for disable <code>1</code> for enable.
chrigelburri 0:31f7be68e52d 88 */
chrigelburri 0:31f7be68e52d 89 void enable (bool enb);
chrigelburri 0:31f7be68e52d 90
chrigelburri 0:31f7be68e52d 91 /**Tests if the servo drive is enabled.
chrigelburri 0:31f7be68e52d 92 *
chrigelburri 0:31f7be68e52d 93 * @return <code>true</code> if the drive is enabled, <code>false</code> otherwise.
chrigelburri 0:31f7be68e52d 94 */
chrigelburri 0:31f7be68e52d 95 bool isEnabled(void);
chrigelburri 0:31f7be68e52d 96
chrigelburri 0:31f7be68e52d 97 /** Return the translativ Position
chrigelburri 0:31f7be68e52d 98 *
chrigelburri 0:31f7be68e52d 99 * @return position in meter
chrigelburri 0:31f7be68e52d 100 */
chrigelburri 0:31f7be68e52d 101 int getPulses(void);
chrigelburri 0:31f7be68e52d 102
chrigelburri 0:31f7be68e52d 103 /** Set the Pulses of the Motor
chrigelburri 0:31f7be68e52d 104 *
chrigelburri 0:31f7be68e52d 105 * @return number of turns
chrigelburri 0:31f7be68e52d 106 */
chrigelburri 0:31f7be68e52d 107 int setPulses(int setPos);
chrigelburri 0:31f7be68e52d 108 };
chrigelburri 0:31f7be68e52d 109
chrigelburri 0:31f7be68e52d 110 #endif