Skip to content

Commit a22c2bc

Browse files
committed
API change stepperdriver2pwm
1 parent d6b33f4 commit a22c2bc

File tree

4 files changed

+75
-14
lines changed

4 files changed

+75
-14
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/**
2+
* Smart Stepper support with SimpleFOClibrary
3+
*/
4+
#include <SimpleFOC.h>
5+
6+
// magnetic sensor instance - SPI
7+
MagneticSensorSPI sensor = MagneticSensorSPI(AS5147_SPI, A2);
8+
9+
// Stepper motor & driver instance
10+
StepperMotor motor = StepperMotor(50);
11+
int in1[2] = {5, 6};
12+
int in2[2] = {A4, 7};
13+
StepperDriver2PWM driver = StepperDriver2PWM(4, in1, 9, in2);
14+
15+
// instantiate the commander
16+
Commander command = Commander(SerialUSB);
17+
void doMotor(char* cmd) { command.motor(&motor, cmd); }
18+
19+
void setup() {
20+
21+
// initialise magnetic sensor hardware
22+
sensor.init();
23+
// link the motor to the sensor
24+
motor.linkSensor(&sensor);
25+
26+
// power supply voltage
27+
driver.voltage_power_supply = 12;
28+
driver.init();
29+
motor.linkDriver(&driver);
30+
31+
// set motion control loop to be used
32+
motor.controller = MotionControlType::torque;
33+
34+
// use monitoring with SerialUSB
35+
SerialUSB.begin(115200);
36+
// comment out if not needed
37+
motor.useMonitoring(SerialUSB);
38+
39+
// initialize motor
40+
motor.init();
41+
// align sensor and start FOC
42+
motor.initFOC();
43+
44+
// add target command M
45+
command.add('M', doMotor, "my motor");
46+
47+
SerialUSB.println(F("Motor ready."));
48+
SerialUSB.println(F("Set the target voltage using Serial terminal:"));
49+
_delay(1000);
50+
}
51+
52+
void loop() {
53+
// main FOC algorithm function
54+
motor.loopFOC();
55+
56+
// Motion control function
57+
motor.move();
58+
59+
// user communication
60+
command.run();
61+
}

examples/utils/driver_standalone_test/stepper_driver_2pwm_standalone/stepper_driver_2pwm_standalone.ino

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33

44

55
// Stepper driver instance
6-
// StepperDriver2PWM(pwm1, in1a, in1b, pwm2, in2a, in2b, (en1, en2 optional))
7-
StepperDriver2PWM driver = StepperDriver2PWM(3, 4, 5, 10 , 9 , 8 , 11, 12);
6+
// StepperDriver2PWM(pwm1, in1, pwm2, in2, (en1, en2 optional))
7+
int in1[] = {4,5};
8+
int in2[] = {9,8};
9+
StepperDriver2PWM driver = StepperDriver2PWM(3, in1, 10 , in2, 11, 12);
810

911
// StepperDriver2PWM(pwm1, dir1, pwm2, dir2,(en1, en2 optional))
1012
// StepperDriver2PWM driver = StepperDriver2PWM(3, 4, 5, 6, 11, 12);

src/drivers/StepperDriver2PWM.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#include "StepperDriver2PWM.h"
22

3-
StepperDriver2PWM::StepperDriver2PWM(int _pwm1, int _in1a, int _in1b, int _pwm2, int _in2a, int _in2b, int en1, int en2){
3+
StepperDriver2PWM::StepperDriver2PWM(int _pwm1, int* _in1, int _pwm2, int* _in2, int en1, int en2){
44
// Pin initialization
55
pwm1 = _pwm1; // phase 1 pwm pin number
6-
dir1a = _in1a; // phase 1 INA pin number
7-
dir1b = _in1b; // phase 1 INB pin number
6+
dir1a = _in1[0]; // phase 1 INA pin number
7+
dir1b = _in1[1]; // phase 1 INB pin number
88
pwm2 = _pwm2; // phase 2 pwm pin number
9-
dir2a = _in2a; // phase 2 INA pin number
10-
dir2b = _in2b; // phase 2 INB pin number
9+
dir2a = _in2[0]; // phase 2 INA pin number
10+
dir2b = _in2[1]; // phase 2 INB pin number
1111

1212
// enable_pin pin
1313
enable_pin1 = en1;
@@ -94,10 +94,10 @@ void StepperDriver2PWM::setPwm(float Ua, float Ub) {
9494

9595
// phase 1 direction
9696
digitalWrite(dir1a, Ua >= 0 ? LOW : HIGH);
97-
if( _isset(dir1b) ) digitalWrite(dir1b, Ua <= 0 ? LOW : HIGH);
97+
if( _isset(dir1b) ) digitalWrite(dir1b, Ua >= 0 ? HIGH : LOW );
9898
// phase 2 direction
9999
digitalWrite(dir2a, Ub >= 0 ? LOW : HIGH);
100-
if( _isset(dir2b) ) digitalWrite(dir2b, Ub <= 0 ? LOW : HIGH);
100+
if( _isset(dir2b) ) digitalWrite(dir2b, Ub >= 0 ? HIGH : LOW );
101101

102102
// write to hardware
103103
_writeDutyCycle2PWM(duty_cycle1, duty_cycle2, pwm1, pwm2);

src/drivers/StepperDriver2PWM.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@ class StepperDriver2PWM: public StepperDriver
1616
/**
1717
StepperMotor class constructor
1818
@param pwm1 PWM1 phase pwm pin
19-
@param in1a IN1A phase dir pin
20-
@param in1b IN1B phase dir pin
19+
@param in1 IN1A phase dir pin
2120
@param pwm2 PWM2 phase pwm pin
22-
@param in2a IN2A phase dir pin
23-
@param in2b IN2B phase dir pin
21+
@param in2 IN2A phase dir
2422
@param en1 enable pin phase 1 (optional input)
2523
@param en2 enable pin phase 2 (optional input)
2624
*/
27-
StepperDriver2PWM(int pwm1, int in1a, int in1b, int pwm2, int in2a, int in2b, int en1 = NOT_SET, int en2 = NOT_SET);
25+
StepperDriver2PWM(int pwm1, int* in1, int pwm2, int* in2, int en1 = NOT_SET, int en2 = NOT_SET);
2826

2927
/**
3028
StepperMotor class constructor

0 commit comments

Comments
 (0)