概述
VID29系列步进电机是一种精密的微型步进电机,内置减速比180/1的齿轮系,主要应用于车辆的仪表显示盘,也可用于其它仪器仪表装置中,将数字信号直接准确快速地转为模拟的显示输出,完全兼容X27 X25 XC5 168 等电机。
VID29系列步进电机需要两路逻辑脉冲信号驱动,可以工作于5-10V的脉冲下,输出轴的步距角最小可以达1/12°,最大角速度600°/s。可以分步模式或微步模式驱动。
VID6606 是一款专为驱动微型步进电机而设计的CMOS集成威廉希尔官方网站
,每个驱动芯片可同时驱动四路电机。它在驱动芯片的频率控制端输入脉冲序列 F(scx),输出端可以控制步进电机的输出轴以微步转动,每个脉冲对应电机输出轴转动1/12°,最大角速度可达600°/s。 VID6606采用28脚封装工艺。
一、VID6606的功能和特点
以微步驱动
简单易用,每个电机只需速度F(scx)和方向(CW/CCW)两个控制端,大大节约了单片机控制引脚
所有输入脚都有干扰过滤器
宽工作电压
低电磁干扰辐射
二、VID6606引脚功能
三、VID6606典型应用威廉希尔官方网站
如何用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
二、主体程序
程序包括函数:
名称:VID6606_Init
功能:VID6606初始化
名称:VID6606_Main
功能:VID6606主题函数,需要扫描
名称:VID6606_GetAngle
功能:得到偏转角度
说明:这是一个函数接口,在这里实现角度的转换
名称:VID6606_Run
功能:电机运转
说明:VID6606根据VID6606_Data.Angle[x]数据信息将指针角度调整到对应的位置
名称:VID6606_GPIO_Config
功能:控制VID6606的io口配置
完整的程序文件请在我上传的资源处下载:AVR-VID6606.DOC
概述
VID29系列步进电机是一种精密的微型步进电机,内置减速比180/1的齿轮系,主要应用于车辆的仪表显示盘,也可用于其它仪器仪表装置中,将数字信号直接准确快速地转为模拟的显示输出,完全兼容X27 X25 XC5 168 等电机。
VID29系列步进电机需要两路逻辑脉冲信号驱动,可以工作于5-10V的脉冲下,输出轴的步距角最小可以达1/12°,最大角速度600°/s。可以分步模式或微步模式驱动。
VID6606 是一款专为驱动微型步进电机而设计的CMOS集成威廉希尔官方网站
,每个驱动芯片可同时驱动四路电机。它在驱动芯片的频率控制端输入脉冲序列 F(scx),输出端可以控制步进电机的输出轴以微步转动,每个脉冲对应电机输出轴转动1/12°,最大角速度可达600°/s。 VID6606采用28脚封装工艺。
一、VID6606的功能和特点
以微步驱动
简单易用,每个电机只需速度F(scx)和方向(CW/CCW)两个控制端,大大节约了单片机控制引脚
所有输入脚都有干扰过滤器
宽工作电压
低电磁干扰辐射
二、VID6606引脚功能
三、VID6606典型应用威廉希尔官方网站
如何用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
二、主体程序
程序包括函数:
名称:VID6606_Init
功能:VID6606初始化
名称:VID6606_Main
功能:VID6606主题函数,需要扫描
名称:VID6606_GetAngle
功能:得到偏转角度
说明:这是一个函数接口,在这里实现角度的转换
名称:VID6606_Run
功能:电机运转
说明:VID6606根据VID6606_Data.Angle[x]数据信息将指针角度调整到对应的位置
名称:VID6606_GPIO_Config
功能:控制VID6606的io口配置
完整的程序文件请在我上传的资源处下载:AVR-VID6606.DOC
举报