基于arduino的步进电机控制系统

来源 :安家(建筑与工程)中旬刊 | 被引量 : 0次 | 上传用户:syh904
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Arduino是一个灵活、开放的平台,易于上手,便于二次开发。与常用的单片机、可编程逻辑控制器(PLC)等不同,它具有编程简单,便于操作,性价比高等诸多优点。本文是基于Arduino的机器人下位机控制系统,通过主板发出指令给电机驱动器来控制电机运动,并配有超声波测距模块实现机器人避障功能,测试结果表明系统稳定可靠,具有较强的实用价值。
  关键字:Arduino;步进电机;步进电机驱动器;超声波测距模块
  1引言
  随着科技的迅猛发展,使得早期的单片机越来越无法满足人们的需求,各种功能强大、性能良好的处理器应运而生。本文要介绍的是操作简单、便于上手的Arduino板控制步进电机驱动器来驱动步进电机。与工业化生产和日常生活中大量应用的DSP、51系列单片机、PLC等驱动步进电机相比,编程编写简单,操作更方便、性价比更高等优点。
  Arduino是免费的开放软件,入门门槛低[1]。例如:一步指令就可以定义步进电机的步数和方向,简单方便地完成系统功能,使得它在信息技术飞速发展,各行业的人机交互界面日趋人性化的今天,有着较强的影响和实用意义。
  2硬件部分
  2.1硬件组成
  系统硬件主要由2块Arduino主控板、传感器控制板、2个超声波测距模块、2台步进电机、2个步进电机驱动器步等组成。
  主控板选用Arduino UNO,芯片型号为ATmega328P,它有14个I/O端口, 6个AI输入口,1个串口,1个USB接口,晶振频率16MHz,带有复位功能按钮。提供3.3V和5V电压输出。只需1根USB数据线连接电脑就能供电,程序下载和数据通讯。实物详见下图2-1:
  传感器控制板是与Arduino主控板可以对插,通过超声波测距模块来控制行走的机器人避障。详见下图2-2:
  2个超声波模块采用JSN-SR0T4-2.0 超声波测距模块,该模块的工作电压为DC3.0~5.5V,工作电流8mA以下,射程在0.2m到6m之间,精度2mm,适宜在-20~70℃的环境中工作,简洁的设计理念,使得它性能优良,兼容性好。详见下图2-3:
  2台步进电机采用菲普德57BYC250C,2相,步距角1.8°,扭矩1.8N,电压DC24V,最大电流3A,可配套使用的驱动器DM542或TB6600,详见下图2-4:
  2个步进电机驱动器的型号为DM542,它是一款细分型两相混合式驱动器, DC18~50V宽电压输入,输出额定电流为1.2~4.0A,性能可靠等。详见下图2-5:
  2.2系统功能
  Arduino是一个开源的平台,开放的源代码和电路图方便用户根据自己的需要选择接线方式,免费的程序开发接口使用户可根据需要随时修改程序并下载。与各种传感器、电子元件连接简单,节省布线成本。使用的微处理器价格较低,具有较高的性价比。下面控制系统功能框图2-6:
  3软件部分
  3.1 Arduino简介
  Arduino电路板是由意大利的baiMassimo Banzi在2005年1月与西班牙籍芯片工程师David Cuartielles合作设计的[2]。目的是能给学生们提供一种便宜好用的微控制器平台,解决当时微处理器价格昂贵且不易使用的问题。
  Arduino支持C语言开发,编程门槛低,具有大量的库[3]。硬件集成度高,外部电路接线简单。软件模块化设计完善,简洁高效,支持多平台开发。
  3.2控制系统驱动程序
  下面是arduino驱动步进电机运动及超声波测距模块的避障部分程序:
  // 控制中心 arduino_motor
  // #include <Enerlib.h>
  // #include <avr/wdt.h>
  #include “global.h”
  #include “mode.h”
  #include “wlc_stop.h”
  #include “uc_command.h”
  #include “motor.h”
  #include “uc_stop.h”
  unsigned char tx_data[8];
  unsigned char rx_start[1];
  unsigned char rx_data[7];
  unsigned char rx_buffer[10][8];
  void setup() {
   // 步进电机
  pinMode(ENA_L, OUTPUT);
  pinMode(DIR_L, OUTPUT);
  pinMode(ENA_R, OUTPUT);
  pinMode(DIR_R, OUTPUT);
  pinMode(PUL_LR, OUTPUT);
   // 遙控
   pinMode(D0, INPUT);
   pinMode(D1, INPUT);
   pinMode(D2, INPUT);
   pinMode(D3, INPUT);
   pinMode(VT, INPUT);
   // 超声波
   pinMode(pinLeft, INPUT);
   pinMode(pinRight, INPUT);
   pinMode(RelayPin1, OUTPUT);   pinMode(RelayPin2, OUTPUT);
  pinMode(RelayPin3, OUTPUT);
  // 超声波活跃初始化
  pinMode(PIN_ACTIVE, OUTPUT);
  pinMode(PIN_DISTANCE_LEVEL, OUTPUT);
  digitalWrite(PIN_ACTIVE, LOW);
  digitalWrite(PIN_DISTANCE_LEVEL, LOW);
  memset(&active, 0, sizeof(active));
  // 蜂鸣器初始化
  pinMode(PIN_BUZZER, OUTPUT); digitalWrite(PIN_BUZZER, HIGH);
  // 随机数种子
  randomSeed(analogRead(0));
  memset(&current_uc_cmd,0, sizeof(current_uc_cmd));
  memset(&current_uc_cmd_pre,0, sizeof(current_uc_cmd_pre));
  uc_sensor_release_count = 0;
  uc_sensor_get_count = 0;
  compensation_move_forward = 0;
  compensation_turn_left = 0;
  compensation_turn_right = 0;
  // uc命令初始標识
  command_flag = TXD_SUCCESS;
  command_busy_answer= C_Busy_Sta_Ans_Free;
  // uc模式下,wlc状态,用于UC模式下遥控器控制
  uc_wlc_sta= uc_wlc_sta_type::WLC_DEFAULT;
  // TODO - 初始化statu
  current_status = status::uc_stop;
  mode = modes::uc; // 默认->上位机控制模式
  current_status = status::wlc_stop;
  mode = modes::wlc; // 默认->下位机控制模式
  last_status = status::default_status;
  wlc_status = status::default_status;
  sensor_status = status::default_status;
  max_wivelen= WLC_SPEED_LEVEL3;
  /* 修改通信方式之后的运行逻辑 start */
  // 接受cmd
  want_to_get_next_cmd = true;
  next_cmd_is_same_with_last = false;
  same_cmd_add_time_bool = false;
  cmd_null_flag = true;
  cmd_pre_null_flag = true;
  // 预判走位
  current_uc_cmd_pattern = 0x00;
  // 空挡
  gear_now = gear[0];
  // 暂停默认为继续走, 值false
  uc_pause = false;
  …
  #define DIR_L 3   // 方向,低向前
  #define ENA_L 4   // 使能,低有效
  #define PUL_LR 5   // PWM方波
  #define DIR_R 6
  #define ENA_R 7
  /* 遥控器针脚, 键位如下
   A B
   C D
  */
  #define D0 8    // D0 -> B按键
  #define D1 9    // D1 -> D按键
  #define D2 10   // D2 -> A按键
  #define D3 11   // D3 -> C按键
  #define VT 12   // VT
  // active statu pin
  #define PIN_ACTIVE A2                  // to sensor1
  #define PIN_DISTANCE_LEVEL 13          // to sensor2
  // buzzer
  #define PIN_BUZZER 12
  int g_count;   bool uc_pause; // true -> 停止;
  false -> 继续走
  #endif
  //mode.h
  #ifndef _MODE_H
  #define _MODE_H
  typedef enum _modes{
   wlc,    // 手控模式
   u,     // 上位机模式
   sensor  // 传感器模式
  }modes;
  modes mode;
  typedef enum _status{
  wlc_stop=0,  wlc_right,
  wlc_left,     wlc_forward,
  uc_stop=10 ,  uc_right,
  uc_left,      uc_forward ,
  uc_upshift,
  uc_downshift,
  uc_switch,
  sensor_stop=20,
  sensor_right,
  sensor_left,
  sensor_forward,
  sensor_gear,    s
  ensor_switch,
   default_status=255
  }status;
  typedef struct _auto_state{
   status state;
   int count;
  }auto_state;
  // wlc status struct
  typedef struct _wlc_stop_state{
   auto_state parenet_state;
   }wlc_stop_state;
  wlc_stop_state wlc_stop_state_var
  }
  tone(PUL_LR, speed_frequency)
  delay(2);
  4結束语
  本系统通过Arduino主控板来控制步进电机驱动器驱动步进电机运动,结合超声波测距模块实现医用导诊机器人的运动及避障等功能,结合上位机语音导诊等功能测试表明该系统稳定可靠,避障精确,程序简单易懂,且成本较低,具有较大的实用价值。
  参考文献
  [1]Arduino开发从入门到实战[M]. 清华大学出版社, 李明亮, 2018,1
  [2]基于Arduino系统控制的物体定位[J]. 禅翔,郭焕萍.电子世界. 2019(02)
  [3] 基于Arduino UNO平台用于分拣机械臂系统研究[J].程雨鑫,富晓乾,马奇旭,张璇,郭岳.电子世界. 2020(02)
  南京惟思得交通设备有限公司 江苏 南京 210012
其他文献
摘要:建筑工程项目的建设质量直接关系到使用者的人身财产安全,因此,在进行建筑工程项目施工建设的过程中,就需要对工程管理和施工质量控制问题进行重点关注,不断提升工程建设水平,提高工程建设质量,建造出令人们满意的建筑工程作品,提高建筑企业的市场竞争力。  关键词:建筑工程;工程管理;施工质量  引言  现阶段,建筑行业已经成为了我国经济发展的重要推动力,与城市化建设的进程的加快和人们生活幸福感的提升都
期刊
摘要:工程建设是城市规划建设中的基础,也是促进人类文明进一步发展的前提,它与人们的生活有着密切的关系,也是国家硬实力的主要体现,工程建设的进步与项目管理有着一定的联系,可以以项目管理为基准进行具体分析。  关键词:工程建设;项目管理;施工技术  1工程建设施工中项目管理的特点  1.1目的性  在工程建設施工中,项目管理具有一定的目的性,它本身需要根据合同内容以及工程特点设置相应的目标,为了实现目
期刊
摘要:贵州茅天水库坝区岩溶水文地质条件极其复杂、岩溶发育,存在向坝址下游的岩溶渗漏问题。分析表明,该水库具备较好的成库条件,水库区两岸山体雄厚,库盆的地层岩性以灰岩为主,碎屑岩主要分布于库尾,但其与邻谷之间有相对隔水的碎屑岩分布,地质条件较好,但由于库首有较大范围的可溶岩分布,岩溶发育且巖溶水文地质条件复杂,存在一定范围的岩溶渗漏问题,可结合绕坝渗漏进行防渗处理。从而确保灌区农业生产的稳定发展。 
期刊
摘要:伴随社会主义市场经济体制不断完善,企业经营管理质量好坏直接关乎企业职工利益。为此,企业在发展之时需注重经营管理,以期促进企业持续壮大,并获取更可觀的经济效益。本文以煤炭企业为例,从多角度分析煤炭企业加强经营管理工作的建议,以供相关人士参考。  关键词:煤炭企业;经营管理;建议  引言:煤炭是我国重要资源,在企业经济持续发展背景下,需加大煤炭企业管理力度,提高煤炭企业内部管理自觉性,针对煤炭企
期刊
摘要:混凝土灌注桩施工质量与性能是既有区别又有联系的两个问题,桩承载力、桩身完整性及桩施工质量有不同的概念和特征,混凝土灌注桩承载力检验是桩验收的条件之一。本文就混凝土灌注桩施工质量、承载力检验、完整性抽样数量与混凝土强度评定等问题迸行了探讨。  关键词:混凝土灌注桩,施工质量:承载力  1、灌注桩国内外发展概况  灌注桩可以成两大部分,主要有人工挖孔桩和机械钻孔桩两部分。人工挖孔桩发展到现在已经
期刊
摘要:乡村振兴战略是党的“十九大”提出的重要决策部署,意在全面提升乡村发展的综合性和科学性。而从客观表现来看,当前乡村发展规划中仍然存在很多亟待解决的问题,探讨实用型村庄规划方案无疑具有非常重要的意义。  关键词:乡村振兴战略;实用型村庄规划;发展  乡村振兴战略并不是一个简单的战略,而是基于农村发展需要最客观的发展探索,在这种理念下,村庄的规划发展自然需要朝向实用型的方向发展。因此,基于乡村振兴
期刊
摘要:建筑施工质量过程控制管理是保证建筑工程质量最重要的一环,本文对建筑施工过程质量控制管理不同阶段的重点关注分别进行论述,可供施工技术人员借鉴。  关键词:建筑工程;施工质量;过程控制  1序言  建筑过程施工中,要以施工质量为控制中心,始终将施工质量作为整个施工项目管理的重要内容,严格控制施工过程中的各个工序的施工质量。既要重视宏观上的质量管理,又要重视在细节上的管理。施工过程的质量控制贯穿于
期刊
摘要:伴随着我国电力工业的高速发展,电力需求越来越大。这就需要电力行业必须要不断创新,不断改革,从国外积极引进最新的技术,在最大限度上推动电力工业的稳定发展。将电力自动化技术应用于电气工程中,使先进的通信技术和计算机技术相结合,不只是能够提升工程的安全性和供电水平,还能够减少电力工程的整体经济成本,降低电力工程的整体经济效益,从根本上满足人们的实际需求。因此,在电力工程应用于电气自动化技术,对推动
期刊
摘要:随着国家的发展,计算机技术被人们广泛的应用,各领域的生产活动也迎来了自动化,尤其是机械设计制造行业中,将自动化技术投入到生产经营活动能够有效保证机械设计制造的精度和质量,降低机械设计制造的成本,增加企业经济效益、社会效益,在实现机械制造企业的稳定的发展、促进其可持续发展等方面发挥了重要的作用。  关键词:机械设计制造;自动化;应用  引言  在市场经济竞争中,机械制造企业要发展必须提高其机械
期刊
摘要:在当前乡村建设开发工作不断推进的过程中,乡村建筑风貌控制也成为了重要环节。特别是很多乡村开发过程中,建筑物往往十分雷同,失去了原本的风味和特色,这在一定程度上也影响了乡村文明建设,对于地域文化的宣传和弘扬十分不利。基于这种考虑,本次研究从地域文化视角出发,对乡村建筑风貌控制思路进行探讨。  关键词:地域文化;乡村;建筑风貌;控制  在新农村建设背景下,乡村开发建设成为了重要的发展内容。而乡村
期刊