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.
Revision 0:6f586d7c134c, committed 2012-10-11
- Comitter:
- lhiggs
- Date:
- Thu Oct 11 23:10:44 2012 +0000
- Commit message:
- First version of motor control example using an opto interrupter and H-Bridge.
Changed in this revision
| 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/main.cpp Thu Oct 11 23:10:44 2012 +0000
@@ -0,0 +1,76 @@
+#include "mbed.h"
+
+PwmOut EN(p22);
+DigitalOut A1(p16);
+DigitalOut A2(p17);
+
+Serial pc(USBTX, USBRX);
+
+long float delta_time = 0;
+float rpm = 0;
+float inc_enc_constant = 0.03125; // 32 Encoder Ticks per Revolution
+
+
+Timer t;
+// t.read_us() is 32bit interger, max 2^31 - 1 = 2147483647 us = 2147.483647 s = 35.7913941167 min
+
+class Counter
+{
+public:
+
+
+ Counter(PinName pin) : _interrupt(pin) { // create the InterruptIn on the pin specified to Counter
+ _interrupt.fall(this, &Counter::increment); // attach increment function of this counter instance
+ }
+
+
+ void increment() {
+ delta_time = t.read_us();
+ t.reset();
+
+ rpm = ( inc_enc_constant / (delta_time/1000000) ) *60 ; // rev / m
+
+ _count++;
+ }
+
+ int read() {
+ return _count;
+ }
+
+private:
+ InterruptIn _interrupt;
+ volatile int _count;
+};
+
+
+
+
+
+Counter counter(p30); // opto interrupter counter
+
+int main()
+{
+ pc.baud(115200);
+ EN.period(0.020);
+
+ t.start();
+
+ float duty = 0.10;
+
+ while(1) {
+
+ wait(1);
+
+ EN.write(duty);
+ duty = duty + 0.01; // increment H-Bridge EN PWM duty cycle 1%
+ A1 = 1; // set H-Bridge input A1 high
+ A2 = 0; // set H-Bridge input A2 low
+
+ // pc.printf("Count so far: %d\n", counter.read());
+ // pc.printf("dt: %d\n", delta_time);
+
+ pc.printf("RPM: %f\n", rpm);
+ pc.printf("DUTY CYCLE: %f\n",duty);
+
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Oct 11 23:10:44 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc \ No newline at end of file