概述

VID29系列步进电机是一种精密的微型步进电机,内置减速比180/1的齿轮系,主要应用于车辆的仪表显示盘,也可用于其它仪器仪表装置中,将数字信号直接准确快速地转为模拟的显示输出,完全兼容X27 X25 XC5 168 等电机。
VID29系列步进电机需要两路逻辑脉冲信号驱动,可以工作于5-10V的脉冲下,输出轴的步距角最小可以达1/12°,最大角速度600°/s。可以分步模式或微步模式驱动。

VID6606 是一款专为驱动微型步进电机而设计的CMOS集成电路,每个驱动芯片可同时驱动四路电机。它在驱动芯片的频率控制端输入脉冲序列 F(scx),输出端可以控制步进电机的输出轴以微步转动,每个脉冲对应电机输出轴转动1/12°,最大角速度可达600°/s。 VID6606采用28脚封装工艺。
AVR程序使用VID6606控制VID29步进电机

一、VID6606的功能和特点

  1. 以微步驱动
  2. 简单易用,每个电机只需速度F(scx)和方向(CW/CCW)两个控制端,大大节约了单片机控制引脚
  3. 所有输入脚都有干扰过滤器
  4. 宽工作电压
  5. 低电磁干扰辐射

二、VID6606引脚功能

AVR程序使用VID6606控制VID29步进电机
AVR程序使用VID6606控制VID29步进电机

三、VID6606典型应用电路

AVR程序使用VID6606控制VID29步进电机

如何用AVR单片机控制VID6606驱动VID29

一、头文件

#ifndef VID6606_H
#define VID6606_H
#include “Main.h”
#ifdef VID6606_IsValid

#define VID6606_MotorNum 4//定义控制电机的数量
#define VID6606_Speed 10 //定义指针旋转速度

#define VID6606_RST_GPIOx GPIOC
#define VID6606_RST_PINx BIT1
//--------------A---------------------------
#define VID6606_FSCXA_GPIOx GPIOC
#define VID6606_FSCXA_PINx BIT3
#define VID6606_CCWA_GPIOx GPIOC
#define VID6606_CCWA_PINx BIT2
//--------------B---------------------------
#define VID6606_FSCXB_GPIOx GPIOA
#define VID6606_FSCXB_PINx BIT7
#define VID6606_CCWB_GPIOx GPIOC
#define VID6606_CCWB_PINx BIT7

//--------------C---------------------------
#define VID6606_FSCXC_GPIOx GPIOA
#define VID6606_FSCXC_PINx BIT6
#define VID6606_CCWC_GPIOx GPIOA
#define VID6606_CCWC_PINx BIT5

//--------------D---------------------------
#define VID6606_FSCXD_GPIOx GPIOC
#define VID6606_FSCXD_PINx BIT0
#define VID6606_CCWD_GPIOx GPIOD
#define VID6606_CCWD_PINx BIT7

#define VID6606_ON *AvrGPIOx[VID6606_RST_GPIOx][PORTx] |= VID6606_RST_PINx;
#define VID6606_OFF *AvrGPIOx[VID6606_RST_GPIOx][PORTx] &= ~VID6606_RST_PINx;

//-------------------------------------------------
// #define VID6606_CW(x) *VID6606_Diver[x].CCW_GPIO |= VID6606_Diver[x].CCW_PINx
// #define VID6606_CCW(x) *VID6606_Diver[x].CCW_GPIO &= ~VID6606_Diver[x].CCW_PINx
// #define VID6606_FSCX_H(x) *VID6606_Diver[x].FSCX_GPIO |= VID6606_Diver[x].FSCX_PINx
// #define VID6606_FSCX_L(x) *VID6606_Diver[x].FSCX_GPIO &= ~VID6606_Diver[x].FSCX_PINx

#define VID6606_CW(x) *VID6606_Diver[x].CCW_GPIO |= VID6606_Diver[x].CCW_PINx
#define VID6606_CCW(x) *VID6606_Diver[x].CCW_GPIO &= ~VID6606_Diver[x].CCW_PINx
#define VID6606_FSCX_H(x) *VID6606_Diver[x].FSCX_GPIO |= VID6606_Diver[x].FSCX_PINx
#define VID6606_FSCX_L(x) *VID6606_Diver[x].FSCX_GPIO &= ~VID6606_Diver[x].FSCX_PINx

/union Vid6606_Flag
{
struct
{
uint8_t A :1;
uint8_t B :1;
uint8_t C :1;
uint8_t D :1;
uint8_t RE4:4;
}Bit;
uint8_t Byte;
};
/

typedef struct
{
volatile uint8_tFSCX_GPIO;
volatile uint8_t FSCX_PINx;
volatile uint8_t
CCW_GPIO;
volatile uint8_t CCW_PINx;
}Vid6606_Diver;
struct Vid6606_Data
{
int16_t Angle[2][4];
int32_t * Clock;
uint8_t step[4];
};
extern Vid6606_Diver const VID6606_Diver[4];
//extern union Vid6606_Flag VID6606_Flag;
extern struct Vid6606_Data VID6606_Data;

extern void VID6606_Init(void);
extern void VID6606_GPIO_Config(void);
extern void VID6606_Main(void);
extern void VID6606_Run(void);
extern void VID6606_GetAngle(void);
#endif
#endif

二、主体程序

程序包括函数:

  1. 名称:VID6606_Init
    功能:VID6606初始化

  2. 名称:VID6606_Main
    功能:VID6606主题函数,需要扫描

  3. 名称:VID6606_GetAngle
    功能:得到偏转角度
    说明:这是一个函数接口,在这里实现角度的转换

  4. 名称:VID6606_Run
    功能:电机运转
    说明:VID6606根据VID6606_Data.Angle[x]数据信息将指针角度调整到对应的位置

  5. 名称:VID6606_GPIO_Config
    功能:控制VID6606的io口配置

完整的程序文件请在我上传的资源处下载:AVR-VID6606.DOC

如有侵权,请与我联系。谢谢

相关文章: