Projectgroep 20 Biorobotics / Mbed 2 deprecated week6ordenenscript_Kaartoppakken_1uurover

Dependencies:   Encoder HIDScope MODSERIAL mbed

Fork of week6ordenenscript by Projectgroep 20 Biorobotics

Files at this revision

API Documentation at this revision

Comitter:
Miriam
Date:
Fri Oct 13 08:34:49 2017 +0000
Child:
1:609671b1c96c
Commit message:
#1 geordend

Changed in this revision

Encoder.lib Show annotated file Show diff for this revision Revisions of this file
HIDScope.lib Show annotated file Show diff for this revision Revisions of this file
MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Encoder.lib	Fri Oct 13 08:34:49 2017 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/vsluiter/code/Encoder/#18b000b443af
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HIDScope.lib	Fri Oct 13 08:34:49 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/tomlankhorst/code/HIDScope/#d23c6edecc49
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Fri Oct 13 08:34:49 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Sissors/code/MODSERIAL/#a3b2bc878529
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Oct 13 08:34:49 2017 +0000
@@ -0,0 +1,92 @@
+//bibliotheken
+#include "mbed.h"
+#include "HIDScope.h"
+#include "encoder.h"
+#include "MODSERIAL.h"
+
+
+// globale variabelen
+Ticker AInTicker;  //We maken een ticker aan genaamd AIn (wordt gebruikt voor HIDScope)
+
+Ticker Treecko;             //We maken een geweldige ticker aan zodat de potmeter en alles telkens opnieuw worden uitgelezen 
+AnalogIn potMeter2(A1);     //Analoge input van potmeter 2 (zal gebruikt worden voor de snelheids bepaling van de motor)
+PwmOut M1E(D6);             //Biorobotics Motor 1 PWM controle van de snelheid 
+DigitalOut M1D(D7);         //Biorobotics Motor 1 draairichting controle 
+
+Encoder motor1(D13,D12,true);
+MODSERIAL pc(USBTX,USBRX);
+
+float PwmPeriod = 1.0/5000.0;           //PWM periode instellen (5000 Hz, want 5000 periodes in 1 seconde)
+
+
+float GetReferencePosition() 
+{
+    float Potmeterwaarde = potMeter2.read();
+    int maxwaarde = 4096;                   // = 64x64
+    float refP = Potmeterwaarde*maxwaarde;
+    return refP;                            // bepaalde waarde tussen 0 en 4096 
+}
+    
+float FeedBackControl(float error)          // schaalt de snelheid naar de snelheid zodat onze chip het begrijpt (is nog niet in werking)
+{
+    float kp = 50;                           // moet worden geschaald
+    float motorValue= kp*error;
+    // alleen nog maar P, D controllor moet nog worden gemaakt. 
+    return motorValue;
+}
+
+void SetMotor1(float motorValue)
+{
+    if (motorValue < 0)
+    {
+        M1D = 0;
+    }
+    else 
+    {
+        M1D = 1;
+    }
+
+    if  (fabs(motorValue) > 1)    
+    {
+        M1E = 1;         //de snelheid wordt teruggeschaald naar 8.4 rad/s (maximale snelheid, dus waarde 1)
+    }
+    else
+    {    
+        M1E = fabs(motorValue);      //de absolute snelheid wordt bepaald, de motor staat uit bij een waarde 0
+    }
+}
+
+float Encoder ()
+{
+    float Huidigepositie = motor1.getPosition ();
+    return Huidigepositie
+}
+
+void MeasureAndControl(void)
+{
+    // hier wordt ons regelsysteem aangestuurd
+    // volatile float Huidigepostie = 0; 
+    float refP = GetReferencePosition(); 
+    float Huidigepositie = Encoder(); 
+    float error = (refP - Huidigepositie)// maak een error aan
+    float motorValue = FeedBackControl(float error);
+    SetMotor1(motorValue);
+}
+
+
+int main()
+{
+      Treecko.attach(MeasureAndControl, 0.1);   //Elke 1 seconde zorgt de ticker voor het runnen en uitlezen van de verschillende 
+                                            //functies en analoge signalen. Veranderingen worden elke 1 seconde doorgevoerd.
+    while(1) 
+    {
+        wait(0.2);
+        pc.baud(115200);
+        float B = motor1.getPosition();
+        float Potmeterwaarde = potMeter2.read();
+        //float positie = B%4096;
+        pc.printf("pos: %d, speed %f, potmeter = %f V, \r\n",motor1.getPosition(), motor1.getSpeed(),(potMeter2.read()*3.3)); //potmeter uitlezen. tussen 0-1. voltage, dus *3.3V
+    }
+}
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Oct 13 08:34:49 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/b484a57bc302
\ No newline at end of file