標(biāo)題:
賦值法直接驅(qū)動uln2003步進(jìn)電機(jī)
[打印本頁]
作者:
maixiaofeng
時(shí)間:
2017-7-18 09:33
標(biāo)題:
賦值法直接驅(qū)動uln2003步進(jìn)電機(jī)
#include "stm32....h" //頭文件自己寫,按需要弄
//uint16_t phasecw[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A
//uint16_t phaseccw[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D
void rightMoto_Init(void)//初始化左輪
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 );
}
void leftMoto_Init(void)//初始化右輪
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_10 | GPIO_Pin_11 |GPIO_Pin_12 |GPIO_Pin_13 );
}
//LED¶Ôó|IO3õê¼»ˉ
void Delay_xms(int x)//這里調(diào)節(jié)轉(zhuǎn)速如果太大就不能轉(zhuǎn)了,主要問題就是這里的延時(shí)脈沖
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void Motorcw(void) //ǰ½ø直接按照規(guī)律賦值操作
{
int i= 225;//這里調(diào)節(jié)他以一種模式跑多長時(shí)間
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_10);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);
Delay_xms(i);//×aËùμ÷½ú
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_7);
GPIO_ResetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_11| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_8| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_SetBits(GPIOB,GPIO_Pin_10| GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
Delay_xms(i);
}
void Motorccw(void) //μ1íË
{
int i= 225;
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_10);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);
Delay_xms(i);//×aËùμ÷½ú
GPIO_SetBits(GPIOC,GPIO_Pin_9| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_10| GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_11| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_6);
GPIO_ResetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_12| GPIO_Pin_13);
GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);
Delay_xms(i);
}
void turn_left(void)
{
int i= 225;
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_10);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);
Delay_xms(i);//×aËùμ÷½ú
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_7);
GPIO_ResetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_10| GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_11| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_8| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_SetBits(GPIOB,GPIO_Pin_12| GPIO_Pin_13);
GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);
Delay_xms(i);
}
void turn_right(void)
{
int i= 225;
GPIO_SetBits(GPIOC,GPIO_Pin_6| GPIO_Pin_9);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_10);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);
Delay_xms(i);//×aËùμ÷½ú
GPIO_SetBits(GPIOC,GPIO_Pin_9| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_13| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_8);
GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_11| GPIO_Pin_12);
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_10);
Delay_xms(i);
GPIO_SetBits(GPIOC,GPIO_Pin_7| GPIO_Pin_6);
GPIO_ResetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_10| GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
Delay_xms(i);
}
作者:
進(jìn)階的企鵝ing
時(shí)間:
2019-9-15 14:55
你好,我根據(jù)你的思路這樣寫,電機(jī)一點(diǎn)反應(yīng)都沒有,驅(qū)動的芯片發(fā)熱,是哪里出了問題?
#define C7_H() GPIO_SetBits(GPIOC, GPIO_Pin_7)
#define C7_L() GPIO_ResetBits(GPIOC, GPIO_Pin_7)
#define C13_H() GPIO_SetBits(GPIOC, GPIO_Pin_13)
#define C13_L() GPIO_ResetBits(GPIOC, GPIO_Pin_13)
#define C14_H() GPIO_SetBits(GPIOC, GPIO_Pin_14)
#define C14_L() GPIO_ResetBits(GPIOC, GPIO_Pin_14)
#define C15_H() GPIO_SetBits(GPIOC, GPIO_Pin_15)
#define C15_L() GPIO_ResetBits(GPIOC, GPIO_Pin_15)
uint16_t phasecw[4] ={0x0080,0x2000,0x4000,0x8000};// D-C-B-A
uint16_t phaseccw[4]={0x8000,0x4000,0x2000,0x0080};// A-B-C-D
void LED_gpio_cfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_15|GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_0);
GPIO_SetBits(GPIOC,GPIO_Pin_2);
GPIO_SetBits(GPIOC,GPIO_Pin_3);
GPIO_SetBits(GPIOC,GPIO_Pin_4);
C6_L();
C7_L();
C13_L();
C15_L();
C14_L();
}
//步進(jìn)電機(jī)正轉(zhuǎn)函數(shù)
void Motorcw(void)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_7);//依次高電平輸出
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_SetBits(GPIOC,GPIO_Pin_7);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_SetBits(GPIOC,GPIO_Pin_7);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_ResetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_SetBits(GPIOC,GPIO_Pin_7);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_ResetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
}
//步進(jìn)電機(jī)反轉(zhuǎn)函數(shù)
void Motordw(void)
{
GPIO_SetBits(GPIOC,GPIO_Pin_7);//依次高電平輸出
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_ResetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_SetBits(GPIOC,GPIO_Pin_7);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_ResetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_SetBits(GPIOC,GPIO_Pin_7);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
delay_ms(10);
GPIO_ResetBits(GPIOC,GPIO_Pin_7);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOC,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_5);
delay_ms(10);
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1