Untitled
unknown
plain_text
2 years ago
2.4 kB
2
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