八色木

兼容Arduino Zero的自制机器人控制板的舵机控制

兼容Arduino Zero的机器人控制板已打样完成,关于控制板的布局和接口定义可查阅:制作Arduino Zero机器人控制板 ,关于CORTEX_M0处理器刷Arduino Bootloader的过程可查阅:使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader ,本文重点测试控制板对舵机的控制

舵机控制原理

舵机控制相关知识前期已有相关文章做过大量的介绍,本文不再赘述,详情可查阅:

  1. 什么是舵机?
  2. 秒懂舵机角度控制原理
  3. 模拟舵机和数字舵机区别

Arduino Zero

Arduino Zero USB接口

2014年5月16日,开源硬件平台提供商Arduino和全球微控制器(MCU)及触摸技术解决方案提供商Atmel公司(NASDAQ:ATML)日前联合发布最新款开发板——Arduino Zero。

Arduino Zero 接口定义

Arduino Zero 采用Atmel  SAMD21单片机作为控制核心,这是一个ARM Cortex m0核心的单片机;同时板载了EDBG调试接口,整体上看更像是采用了Arduino接口的Atmel开发板,因为目前主流的cortex开发板都搭载有类似的调试接口;而SAMD21这个mcu的主要配置为: 48MHZ, 256KB Flash 32KB SRAM
Arduino公司的联合创始人兼CEO Massimo Banzi表示:“Zero开发板的发布扩充了Arduino开发板系列,且同时具备更高的性能,有助于发挥创客群体的创造力。其灵活的功能集能够为各类设备带来无限的项目机遇,而且也是一个很好的教学工具,可用于学习如何开发32位应用程序。”

控制板的舵机控制

Robot Board

这款自制的机器人控制板支持4路舵机,其中舵机3和舵机4不能与步进电机3共同使用,因为它们共同使用了数字引脚D9 和D10。

舵机与步进电机共享控制线

自制机器人控制板的接口定义

机器人控制板接口定义,舵机控制使用D9、D10、D3、D4

兼容板的实际连线如下:

机器人控制板舵机控制

以D3为例Arduino Zero兼容板控制舵机的代码如下:

#include <Servo.h>                //调用Servo.h库
Servo myservo;                    //创建舵机类,命名为myservo
#define  SERVO_PIN  3             //定义舵机控制引脚
unsigned int PWM = 0;             //变量pwm用来存储舵机角度位置
                                  //PWM的500对应0度,2500对应舵机的最大角度
                                  //180度舵机,2500对应180度
                                  //270度舵机2500对应270度
void singleServoControl(){
    for(PWM = 50; PWM <2450; PWM += 5){   //舵机由50转到2450,每次增加5  
        myservo.writeMicroseconds(PWM);   //写入PWM 信号 
        delay(10);                        //延时10ms转到指定位置
    } 
    for(PWM = 2450; PWM>50; PWM-=5){     
        myservo.writeMicroseconds(PWM);    
        delay(10);                       
    }        
}                               
void setup(){ 
     myservo.attach(SERVO_PIN);    // 将D3引脚与舵机对象连接起来
}  

void loop(){ 
      singleServoControl();
} 

从代码可以看出,自制的Arduino Zero兼容板与普通Arduino开发板代码并无多大差异,但有点可明显可以减少杜邦线的使用,兼容板可以简单的直接运用到实际项目中去。

专题:制作自平衡机器人

Exit mobile version