
motor aansturing moet lineair zijn is het niet
Dependencies: MODSERIAL Encoder mbed HIDScope
main.cpp
- Committer:
- Zeekat
- Date:
- 2015-10-05
- Revision:
- 11:d31b03b05f59
- Parent:
- 10:b2742f42de44
- Child:
- 12:e3c5c5acbd09
File content as of revision 11:d31b03b05f59:
#include "mbed.h" // #include "MODSERIAL.h" #include "encoder.h" #include "HIDScope.h" // Serial pc(USBTX,USBRX); HIDScope scope(1); Ticker mod; //motor 1 gegevens PwmOut motor1_aan(D6); // PWM signaal motor 2 (uit sheets) DigitalOut motor1_rich(D7); // digitaal signaal voor richting // einde motor 1 // ENCODER Encoder motor1_enc(D12,D11); //POTMETERS AnalogIn potright(A0); double setpoint; const double K = 2 ; // counts 2 radians double get_radians(double counts) { double pi = 3.14159265359; double radians = (counts/4200)*2*pi; return radians; } double setpoint_f(double input) { double offset = 0.5; double gain = 4; double output = (input-offset)*gain; return output; } double K_control() { double setpoint = setpoint_f(potright.read()); double rads = get_radians(motor1_enc.getPosition()); double error = (setpoint - rads); double output = K*error; return output; } void send() { scope.set(0,setpoint); scope.send(); } void motor1_control() { double output = K_control(); if(output > 0) { motor1_rich.write(0); motor1_aan.write(1); } else if(output < 0) { motor1_rich.write(1); motor1_aan.write(1); } } int main() { double output ; mod.attach(&send,0.01); mod.attach(&motor1_control, 0.1); while(true) { } }