【STM32】可变焦、聚焦摄像头驱动电路与驱动程序——两相四线步进电机驱动

本文介绍了如何使用STM32通过L293D驱动电路控制两相四线步进电机,实现变焦和聚焦功能。详细讲解了步进电机的工作原理、变焦摄像头的结构,提供了硬件电路图和STM32控制程序设计,最终展示了变焦效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


注: 本文仅用于学习交流分享,[若有不妥之处,请指正,感谢]

关键词:【两相四线步进电机】【可变焦、聚焦摄像头】
最后面有 程序 与 测试原理图PCB 分享

用到的工具有

  • Keil 5 编译器
  • Altium Designer

实现的小功能有:
①可驱动ZOOM步进电机实现 变焦
②可驱动FOCUS步进电机实现 聚焦

总体介绍

1.步进电机简介
2.基础硬件驱动设计
3.单片机控制程序设计
4.效果展示

1.步进电机简介

1)什么是步进电机

在这里插入图片描述

  • 步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机。
  • 脉冲数越多,电机转动的角度越大。
    脉冲的频率越高,电机转速越快,但不能超过最高频率,否则电机的力矩迅速减小,电机不转。

2)为何需要驱动电路

  • 单片机的IO口是数字口,本身的驱动能力非常小(一般为10-25mA左右),所以需要电机驱动芯片来驱动电机。驱动芯片的作用就是把单片机的小电流的控制信号转成逻辑上相同的大电流的驱动源。这就是所谓的弱电控制强电

3)步进电机的几个概念

  • 电机转动一圈的脉冲数=(步进电机)一圈的脉冲数 =细分数x每转脉冲数x减速比

细分数:步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。比如对于步进角为1.8°的两相混合式步进电机,如果细分驱动器的细分数设置为4,那么电机的运转分辨率为每个脉冲0.45°,电机的精度能否达到或接近0.45°,还取决于细分驱动器的细分电流控制精度等其它因素。不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。

步距角:也就是每转脉冲数。

减数比:即减速装置的传动比,是传动比的一种,是指减速机构中瞬时输入速度与输出速度的比值,用符号“i”表示减速比的意思:比如减速比1/64,:如果步进电机输出1N.m的转矩的话,通过减速箱转换后的输出力矩64N.m,当然转速降低为原转速的1/64

2.变焦摄像头参数与结构介绍

1)本款变焦摄像头结构

  • 该款实验的变焦摄像头为“创威视讯”的 电动变焦镜头 变焦范围为:2.8-12mm

  • 其镜头有两个 两相四线步进电机 :
    一个为 FOCUS MOTOR:为控制聚焦
    一个为 ZOOM MOTOR:为控制变焦

    • 变焦镜头内部结构
      在这里插入图片描述
    • 两相步进电机内部结构
      在这里插入图片描述

2)其节拍表

在这里插入图片描述

3)其对应线序表

在这里插入图片描述

4)镜头实物图

图1 镜头
图2 镜头
图3 镜头

3.基础硬件测试驱动

电路硬件:
[MCU] STM32F103RCT6系统板[Mini stm32]
[稳压电源]【AMS1117-3.3】5.0V稳压3.3V
[驱动电路] L293D驱动电路

1)整体原理图

在这里插入图片描述

2)PCB电路

在这里插入图片描述

3)3D_PCB

在这里插入图片描述

4.STM32控制驱动程序设计

1)端口定义与函数声明

motor.h:

#ifndef __MOTOR_H
#define __MOTOR_H 
#include "sys.h"  

typedef enum {
   
   FALSE = 0, TRUE = !FALSE} bool;

#define ZOOM_MOTOR  0   //定义变焦步进电机ID
#define FOCUS_MOTOR 1

/*定义 变焦摄像头 引脚信息*/
#define ZOOM_STEP_PORT GPIOB   //步进电机的控制端口为A端口  
#define ZOOM_A1 GPIO_Pin_8     //PA8对应步进电机的A相   ZOOM  A+
#define ZOOM_A0 GPIO_Pin_9     //PA9对应步进电机的B相   ZOOM  A-
#define ZOOM_B1 GPIO_Pin_10    //PA10对应步进电机的C相  ZOOM  B+
#define ZOOM_B0 GPIO_Pin_11    //PA11对应步进电机的D相  ZOOM  B-


/*定义 聚焦摄像头 引脚信息*/
#define FOCUS_STEP_PORT GPIOB //步进电机的控制端口为A端口  
#define FOCUS_A1 GPIO_Pin_12	// FOCUS  A+
#define FOCUS_A0 GPIO_Pin_13	// FOCUS  A-
#define FOCUS_B1 GPIO_Pin_14	// FOCUS  B+
#define FOCUS_B0 GPIO_Pin_15	// FOCUS  B-

void STEP_Init(void);                      //步进电机引脚初始化

void SetMotor(unsigned char Motor_ID,unsigned char InputData);    //根据传送的数据Inputdata设置脉冲引脚输出

void MotorNCircle(unsigned char Motor_ID,int n,bool position);    //n为步进电机转动的圈数,position为正转或者反转

void MotorNAngle(unsigned char Motor_ID,int n,bool position);    //n为步进电机转动的角度为n*120,position为正转或者反转
#endif


2)步进电机驱动函数

#include "motor.h"
#include "delay.h"

//unsigned char F_Rotation[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09} ;  //单双8拍反转表 五线四相步进电机表
//unsigned char B_Rotation[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08} ;  //单双8拍正转表

unsigned char F_Rotation[4]=
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值