nemon 发表于 2013-12-18 13:59:42

[转载] [Arduino模块]MD03 驱动24V 20A电机

Arduino模块]
MD03 驱动24V 20A电机

电路示意:
http://image.ednchina.com/GROUP/IMAGES/8957283574_1359513241165.gif


代码示例:
/*******************************************************
*             MD03 example for Arduino               *
*   MD03 is in I2C mode LCD03 controlled by serial   *
*                                                      *
*             By James Henderson 2012                  *
*******************************************************/

#include <Wire.h>
#include <SoftwareSerial.h>

#define ADDRESS             0x58                  // Address of MD03
#define SOFTREG             0x07                  // Byte to read software
#define CMDBYTE             0x00                  // Command byte
#define SPEEDBYTE         0x02                  // Byte to write to speed register
#define TEMPREG             0x04                  // Byte to read temprature
#define CURRENTREG          0x05                  // Byte to read motor current

#define LCD_RX            0x02                  // Pin for rx
#define LCD_TX            0x03                  // Pin for tx
#define LCD03_HIDE_CUR      0x04
#define LCD03_CLEAR         0x0C
#define LCD03_SET_CUR       0x02

SoftwareSerial lcd_03 = SoftwareSerial(LCD_RX, LCD_TX);// Sets up serial for LCD03

byte direct = 1;                                          // Stores what direction the motor should run in

void setup(){
lcd_03.begin(9600);                                    // Begin serial for LCD03

Wire.begin();
delay(100);

lcd_03.write(LCD03_HIDE_CUR);                        // Hides LCD03 cursor
lcd_03.write(LCD03_CLEAR);                           // Clears LCD03 screen

int software = getData(SOFTREG);                     // Gets software version and prints it to LCD03
lcd_03.print("MD03 ExampleV:");
lcd_03.print(software);
}

void loop(){
for(int i = 0; i < 250; i=i+10){
    sendData(SPEEDBYTE, i);             // Sets speed to i
    sendData(CMDBYTE, direct);          // Sets motor to direct, a value of 1 runs the motor forward and 2 runs backward
    int temp = getData(TEMPREG);      // Gets temperature
    lcd_03.write(LCD03_SET_CUR);
    lcd_03.write(21);
    lcd_03.print("temprature: ");
    lcd_03.print(temp);               // Prints temperature to LCD03
    lcd_03.print("");               // Prints spaces to clear space after data
    delay(50);                        // Wait to make sure all data sent
    int current = getData(CURRENTREG);// Gets motor current
    lcd_03.write(LCD03_SET_CUR);
    lcd_03.write(41);
    lcd_03.print("Motor current: ");
    lcd_03.print(current);
    lcd_03.print("   ");
    delay(50);                        // Wait to make sure all data sent
}
if(direct == 1)                     // If loop that swaps value of direct between 1 and 2 each time through loop
    direct = 2;                        
else
    direct = 1;                        
}

byte getData(byte reg){                   // function for getting data from MD03
Wire.beginTransmission(ADDRESS);
    Wire.write(reg);
Wire.endTransmission();

Wire.requestFrom(ADDRESS, 1);         // Requests byte from MD03
while(Wire.available() < 1);          // Waits for byte to become availble
byte data = Wire.read();

return(data);
}

void sendData(byte reg, byte val){         // Function for sending data to MD03
Wire.beginTransmission(ADDRESS);         // Send data to MD03
    Wire.write(reg);
    Wire.write(val);
Wire.endTransmission();
}



20060606 发表于 2020-8-25 05:34:00

图好像一直加载不出来
页: [1]
查看完整版本: [转载] [Arduino模块]MD03 驱动24V 20A电机