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.
Dependencies: mbed
Fork of RT2_P3_students_G4 by
Diff: main.cpp
- Revision:
- 0:78ca29b4c49e
- Child:
- 1:a30512c3ac73
diff -r 000000000000 -r 78ca29b4c49e main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Apr 03 08:47:41 2018 +0000
@@ -0,0 +1,96 @@
+#include "mbed.h"
+#include "math.h"
+//------------------------------------------
+#define PI 3.1415927f
+//------------------------------------------
+#include "EncoderCounter.h"
+#include "DiffCounter.h"
+#include "IIR_filter.h"
+#include "LinearCharacteristics.h"
+#include "PI_Cntrl.h"
+/* Cuboid balance on one edge on Nucleo F446RE
+
+ **** IMPORTANT: use ..\Labormodelle\RT-MOD054 - Würfel\Escon_Parameter_4nucleo.edc
+ settings for Maxon ESCON controller (upload via ESCON Studio) ****
+hardware Connections:
+
+ CN7 CN10
+ : :
+ : :
+ .. ..
+ .. .. 15.
+ .. AOUT i_des on (PA_5)o.
+ .. ..
+ .. ..
+ .. ENC CH A o.
+ o. GND .. 10.
+ o. ENC CH B ..
+ .. ..
+ .. ..
+ .o AIN acx (PA_0) ..
+ .o AIN acy (PA_1) .. 5.
+ .o AIN Gyro(PA_4) .o Analog GND
+ .. ..
+ .. ..
+ .. .. 1.
+ ----------------------------
+ CN7 CN10
+ */
+Serial pc(SERIAL_TX, SERIAL_RX); // serial connection via USB - programmer
+InterruptIn button(USER_BUTTON); // User Button, short presses: reduce speed, long presses: increase speed
+AnalogIn ax(PA_0); // Analog IN (acc x) on PA_0
+AnalogIn ay(PA_1); // Analog IN (acc y) on PA_1
+AnalogIn gz(PA_4); // Analog IN (gyr z) on PA_4
+AnalogOut out(PA_5); // Analog OUT on PA_5 1.6 V -> 0A 3.2A -> 2A (see ESCON)
+float out_value = 1.6f; // set voltage on 1.6 V (0 A current)
+float w_soll = 10.0f; // desired velocity
+//------------------------------------------
+// ... here define variables like gains etc.
+//------------------------------------------
+
+//------------------------------------------
+Ticker ControllerLoopTimer; // interrupt for control loop
+EncoderCounter counter1(PB_6, PB_7); // initialize counter on PB_6 and PB_7
+DiffCounter diff(0.01,Ts); // discrete differentiate, based on encoder data
+//------------------------------------------
+// ... here define instantiate classes
+//------------------------------------------
+
+// ... define some linear characteristics -----------------------------------------
+
+// ----- User defined functions -----------
+void updateControllers(void); // speed controller loop (via interrupt)
+// ------ END User defined functions ------
+
+//******************************************************************************
+//---------- main loop -------------
+//******************************************************************************
+int main()
+{
+ //attach controller loop to timer interrupt
+ pc.baud(2000000); // for serial comm.
+ counter1.reset(); // encoder reset
+ diff.reset(0.0f,0.0f);
+ ControllerLoopTimer.attach(&updateControllers, Ts); //Assume Fs = ...;
+}
+//******************************************************************************
+//---------- control loop (called via interrupt) -------------
+//******************************************************************************
+void updateControllers(void){
+ short counts = counter1; // get counts from Encoder
+ float vel = diff(counts); // motor velocity
+
+ // ... your code
+
+ if(++k >= 199){
+ k = 0;
+ pc.printf("omega_soll=%3.2f omega=%3.2f \r\n",w_soll,vel);
+ }
+}
+//******************************************************************************
+//********** User functions like buttens handle etc. **************
+//******************************************************************************
+// pressed button
+//******************************************************************************
+
+//...
\ No newline at end of file
