Untitled
unknown
plain_text
2 years ago
2.4 kB
7
Indexable
/*
* step_motor_28BYJ-48.c
*
* Created on: Aug 14, 2023
* Author: Tomek
*/
#include "step_motor_28BYJ-48.h"
#include "gpio.h"
#include "tim.h"
void delay (uint16_t us)
{
__HAL_TIM_SET_COUNTER(&htim1, 0);
while (__HAL_TIM_GET_COUNTER(&htim1) < us);
}
void stepper_set_rpm (int rpm) // Set rpm--> max 13, min 1,,, went to 14 rev/min
{
delay(60000000/stepsperrev/rpm);
}
void stepper_full_drive (int step)
{
switch (step){
case 0:
HAL_GPIO_WritePin(COIL1_GPIO_Port, COIL1_Pin, GPIO_PIN_SET); // IN1
HAL_GPIO_WritePin(COIL2_GPIO_Port, COIL2_Pin,GPIO_PIN_SET); // IN2
HAL_GPIO_WritePin(COIL3_GPIO_Port, COIL3_Pin, GPIO_PIN_RESET); // IN3
HAL_GPIO_WritePin(COIL4_GPIO_Port, COIL4_Pin,GPIO_PIN_RESET); // IN4
break;
case 1:
HAL_GPIO_WritePin(COIL1_GPIO_Port, COIL1_Pin, GPIO_PIN_RESET); // IN1
HAL_GPIO_WritePin(COIL2_GPIO_Port, COIL2_Pin, GPIO_PIN_SET); // IN2
HAL_GPIO_WritePin(COIL3_GPIO_Port, COIL3_Pin, GPIO_PIN_SET); // IN3
HAL_GPIO_WritePin(COIL4_GPIO_Port, COIL4_Pin, GPIO_PIN_RESET); // IN4
break;
case 2:
HAL_GPIO_WritePin(COIL1_GPIO_Port, COIL1_Pin, GPIO_PIN_RESET); // IN1
HAL_GPIO_WritePin(COIL2_GPIO_Port, COIL2_Pin, GPIO_PIN_RESET); // IN2
HAL_GPIO_WritePin(COIL3_GPIO_Port, COIL3_Pin, GPIO_PIN_SET); // IN3
HAL_GPIO_WritePin(COIL4_GPIO_Port, COIL4_Pin, GPIO_PIN_SET); // IN4
break;
case 3:
HAL_GPIO_WritePin(COIL1_GPIO_Port, COIL1_Pin, GPIO_PIN_SET); // IN1
HAL_GPIO_WritePin(COIL2_GPIO_Port, COIL2_Pin, GPIO_PIN_RESET); // IN2
HAL_GPIO_WritePin(COIL3_GPIO_Port, COIL3_Pin, GPIO_PIN_RESET); // IN3
HAL_GPIO_WritePin(COIL4_GPIO_Port, COIL4_Pin, GPIO_PIN_SET); // IN4
break;
}
}
void stepper_step_angle (float angle, int direction, int rpm)
{
float anglepersequence = 0.703125; // 360 = 512 sequences
int numberofsequences = (int) (gear*(angle/anglepersequence));
for (int seq=0; seq<numberofsequences; seq++)
{
if (direction == 0) // for clockwise
{
for (int step=3; step>=0; step--)
{
stepper_full_drive(step);
stepper_set_rpm(rpm);
}
}
else if (direction == 1) // for anti-clockwise
{
for (int step=0; step<4; step++)
{
stepper_full_drive(step);
stepper_set_rpm(rpm);
}
}
}
}
Editor is loading...
Leave a Comment