IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 编码器电机控制小车的进退 -> 正文阅读

[嵌入式]编码器电机控制小车的进退

这里的小车由于电机安装时是对称的,所以可以看得出来在代码上两个电机的方向是相反的。
上代码之前先介绍一下用到的配件及端口。

电机:
我采用的是JBGB37-520电机(当然别的也可以),用的编码器是霍尔编码器,有6条线,电机Vcc,Gnd,编码器Vcc,Gnd,还有编码器A,B相(这次没用到,但后面写PID算法就需要)。排列顺序不固定。

芯片:
控制芯片采用的是TA6586.使用它的原因是因为从单片机串口输出的PWM波最多就3V多一些,这样的一个电压是不足以驱动带有编码器的直流减速电机的。所以芯片的作用有点类似于光耦,低压信号转化为其他电压的信号。
在这里插入图片描述
在这里插入图片描述
这是它的引脚图以及对应的输出关系。
接下来上代码:
/*

  • Electromotor.c
  • Created on: 2021年9月12日
  • Author: feidao
    */

#include “MSP430F5529.h”
#include “Electromotor.h”
void PWM_right(void)
{
WDTCTL = WDTPW | WDTHOLD;
P1DIR |=BIT4;
P1SEL |=BIT4;
P1DIR |=BIT5;
P1SEL |=BIT5;
TA0CCR0=650;
TA0CCTL3=OUTMOD_7;
TA0CCR3=0TA0CCR0/100;
TA0CCTL4=OUTMOD_7;
TA0CCR4=0
TA0CCR0/100;
TA0CTL =TASSEL_1+MC_1+TACLR;
}
void PWM_left(void)
{
WDTCTL = WDTPW | WDTHOLD;
P2DIR |=BIT4;
P2SEL |=BIT4;
P2DIR |=BIT5;
P2SEL |=BIT5;
TA2CCR0=650;
TA2CCTL1=OUTMOD_7;
TA2CCR1=0TA2CCR0/100;
TA2CCTL2=OUTMOD_7;
TA2CCR2=0
TA2CCR0/100;
TA2CTL =TASSEL_1+MC_1+TACLR;
}
void move(volatile int speed_left_1,volatile int speed_left_2,volatile int speed_right_1,volatile int speed_right_2)
{
TA0CCR3=speed_left_1TA0CCR0/100;
TA0CCR4=speed_left_2
TA0CCR0/100;
TA2CCR1=speed_right_2TA2CCR0/100;
TA2CCR2=speed_right_1
TA2CCR0/100;
}

因为两个电机各需要前进后退,所以一共设计到四路PWM波的输出。从代码中可以看出,这两个电机的信号来源分别是P1.4和P1.5;以及P2.4和P2.5 ,如果接口不同的话可以参考本人另一篇文章。
电机分别是用:

PWM_right();
PWM_left();

这两个函数调用,但是由于我将占空比初始值设置成了0,所以并不会开动,这只是开机时的一种设置。那么在运行中要开动,或者是改动电机的速度或是方向就要用到下面这个函数:

move(a,b,c,d);

这里的a,b,c,d分别是左电机的前进,后退PWM的占空比,和右电机的前进和后退PWM的占空比。
简单的说就是左进,左退,右进,右退。这样一来就不一定同进同退,也可以是一进一停,一进一退,或是一退一停,一快一慢等。
数值因为已经在代码里百分化,所以输入0~100的数字(注意是整数,别用小数刁难它)就代表0~100%的占空比。当然如果一个电机你让他又进又退,可能会抵消掉一部分PWM波,但我不建议这样子做。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:23:33  更:2021-10-06 12:24:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:29:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码