I want to send PWM signal through an analog pin on Arduino Mega 2560 but MATLAB code is too slow

8 Ansichten (letzte 30 Tage)
Hi,
I want to make a code for controlling an stepper motor by an Arduino Mega 2560 and RAMPS 1.4 Shield, here is the mappingRAMPS1.4schematic.png
I want to control the X-motor for example, but it is controlled by analog pins. I programmed this code in Arduino IDE and it run very well, controlling the velocity of the stepper motor correctly:
// defines pins numbers
const int stepPin = A0;
const int dirPin = A1;
const int enablePin= 38;
void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(enablePin,OUTPUT);
}
void loop() {
digitalWrite(enablePin,LOW);
digitalWrite(dirPin,HIGH);
// Makes 200 pulses for making one full cycle rotation
for(int x = 0; x < 16*200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(150);
digitalWrite(stepPin,LOW);
delayMicroseconds(150);
}
digitalWrite(dirPin,LOW); //Changes the rotations direction
for(int x = 0; x < 16*200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(150);
digitalWrite(stepPin,LOW);
delayMicroseconds(150);
}
}
But when i programmed this code in MATLAB, the stepper motor not run at the same velocity:
clear all;
a=arduino()
s=serial('COM7')
s.BaudRate=1000000
%A0 Step
configurePin(a,'A0','DigitalOutput');
%A1 Dir
configurePin(a,'A1','DigitalOutput');
%D38 Enable
configurePin(a,'D38','DigitalOutput');
writeDigitalPin(a, 'D38', 0);
writeDigitalPin(a, 'A0', 1);
PWM=150e-6;
for i=1:1:200*16
writeDigitalPin(a, 'A0', 1);
pause(PWM);
writeDigitalPin(a, 'A0', 0);
pause(PWM);
end
Someone knows how i could optimize the code ? or how i could use analog pins for digital outputs in functions as writePWMDutyCycle or PWM blocks in Simulink?

Antworten (1)

Thomas Tramberger
Thomas Tramberger am 6 Nov. 2019
How did you solve your problem?

Communitys

Weitere Antworten in  Power Electronics Control

Kategorien

Mehr zu Arduino Hardware finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by