【MCXN947开发板测评】步进电机驱动控制
<p>MCXN947开发板具有AI识别的潜能,为此给摄像头配置一个步进电机的云台,以调整摄像头的观察角度是件有意义的事。</p><p >这里选用的是4线式步进电机,其外观如图1所示。为了驱动该步进电机,该需为其配置一个由ULN2003芯片构成的驱动器。</p>
<p > </p>
<p>图1 步进电机及驱动器</p>
<p > </p>
<p >为驱动该步进电机,所配置的正转一周的函数为:</p>
<pre>
<code class="language-cpp">void Forward(uint32_t n)
{
unsigned char X,Y;
for(X=0;X<64;X++)
{
for(Y=0;Y<8;Y++)
{
MDL;
MAH;//A
delay_ms(n);
MBH;//AB
delay_ms(n);
MAL;//B
delay_ms(n);
MCH;//BC
delay_ms(n);
MBL;//C
delay_ms(n);
MDH;//CD
delay_ms(n);
MCL;//D
delay_ms(n);
MAH;//DA
delay_ms(n);
}
}
}
</code></pre>
<p> </p>
<p>步进电机正反转测试主程序:</p>
<pre>
<code class="language-cpp">int main(void)
{
uint8_t i,n,f,m;
gpio_pin_config_t led_config = {
kGPIO_DigitalOutput,
0,
};
gpio_pin_config_t key_config = {
kGPIO_DigitalInput,
0,
};
CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
CLOCK_EnableClock(kCLOCK_Gpio0);
CLOCK_EnableClock(kCLOCK_Gpio1);
BOARD_InitPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
GPIO_PinInit(GPIO0, 25U, &led_config);
GPIO_PinInit(GPIO0, 26U, &led_config);
GPIO_PinInit(GPIO0, 24U, &led_config);
GPIO_PinInit(GPIO0, 27U, &led_config);
GPIO_PinInit(GPIO0, 6U, &key_config);
delay();
MAL;
MBL;
MCL;
MDL;
delay();
f=0;
m=5;
for(i=0;i<m;i++)
{
if((GPIO_PinRead(GPIO0, 6U))==0)
{
Forward(1);
}
else
{
reverse(1);
}
delay();
}
while (1);
}
</code></pre>
<p>经程序的编译和下载,其运行效果如图2所示,说明驱动成功。</p>
<p> </p>
<p>图2 运行中</p>
<p> </p>
页:
[1]