直流电机控制

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年6月11日 (三) 02:39的版本 结果
跳转至: 导航搜索

目的

本教程将教大家如何用processing来控制直流电机的转速。

设备

  • 其他硬件设备
    • USB数据连接线 一根
    • 面包板跳线 一盒
    • 面包板 一块
    • DC电机 一个
    • 电位器 一个
    • 2.2K欧姆电阻 一个
    • 二极管 一个
    • NPN晶体管 一个


原理图

ProcessingDCMotorSchematics.jpg

程序

https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Processing/ProcessingDCMotorControl

调试

步骤一:按着原理图搭建硬件环境,像这样:

ProcessingDCMotorConnectionDiagram.jpg


步骤二:解释一下代码:

本例需要两端的代码,Processing端和Microduino端

Microduino:

使用firmata的StandardFirmata程序。

Processing:

首先给你的processing添加个controlP5库文件:http://www.sojamo.de/libraries/controlP5/

下载后解压放到你的processing安装文件的\modes\java\libraries文件夹里,重启processing IDE

//定义串口

 arduino = new Arduino(this, Arduino.list()[0], 57600); //your offset may vary
 arduino.pinMode(motorPin, Arduino.OUTPUT);  

//加载一个滑动条

 cp5 = new ControlP5(this);
 // add a vertical slider
 cp5.addSlider("slider")
   .setPosition(0, 580)
     .setSize(600, 20)
       .setRange(0, 600)
         .setValue(25)
           ;

//在draw()中绘制圆环进度条,并控制Microduino串口pwm

 background(0);
 noFill();
 stroke(255);
 smooth();
 arc(width/2, height/2, 300, 300, turn, radians(map(speed, 0, 600, 0, 360))+turn);
 //Specify font to be used
 textFont(f, 48); 
 //Display Text
 text ((int)speed, width/2-30, height/2+20);
 vel=(int)map(speed, 0, 600, 0, 255);//map
 if (speed>0)//run motor by speed
 {
   arduino.analogWrite(motorPin, vel);
   delay(1);
 }
 else//stop motor
 {
   arduino.analogWrite(motorPin, Arduino.LOW);
 }

//底部滑动条移动事件处理

 void slider(float speedValue) {
   speed=speedValue;
   println("Motor Speed:"+speed);
 }

步骤三:下载代码并编译通过。

步骤四:运行后,在processing中左右移动底部滑动条,看电机的转速变化。

结果

屏幕上会显示一个圆环进度条,拖拽下方的滑动条,圆环显示不同速率,电机的转速也随之变化。

ProcessingDCMotorResult1.jpg

视频