Arduino:通过无线电控制两个直流电机

时间:2015-12-08 13:17:32

标签: arduino radio motordriver

我要做的是通过433MHz传输远程控制两台直流电机。

发送操纵杆的数据工作正常。收到它也很好。但是我的驱动程序一定有问题,因为当我连接电线时,接收器停止工作(如果我断开连接它可以正常工作)。

这是接收者:

Frizing image

NPN晶体管为547B,电机在5V时吸收约150mA电流。

我对接收器的代码如下:

#include <VirtualWire.h>

char recibo[8]="";

int valorX=0;
int valorY=0;


void setup(){

  pinMode(5, OUTPUT); 
  pinMode(5, OUTPUT); 

  vw_set_ptt_inverted(true); // Required for DR3100
  vw_set_rx_pin(12);
  vw_setup(4000);  // Bits per sec
  vw_rx_start();       // Start the receiver PLL running
  Serial.begin(9600);
  Serial.println("setup");
}
void loop(){
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen)){ //check to see if anything has been received
    for(int i=0;i<buflen;i++){ //guardo los datos recibidos en un arra
      recibo[i]=char(buf[i]);
    }
    recibo[buflen]=NULL; //Necesario para obtener el string correcto (finalizacion de array)
    sscanf( recibo, "%d,%d", &valorX, &valorY ); //Con esto tengo guardadas en las dos variables los datos recibidos de los sensores

    int mappedValueX=map(valorX, 500, 1000, 0, 255);

    if(mappedValueX>150){
      analogWrite(5,mappedValueX);
      delay(15);
      analogWrite(6,mappedValueX);
      delay(15);
    }
    else{
      analogWrite(5,0);
      delay(15);
      analogWrite(6,0);
      delay(15);
    }
  } 
}

如果连接电机(它们从外部电池获取电源),arduino将停止接收数据,当我断开它们时,它会立即启动以再次接收数据。

我必须受到某种干扰,在这些话题中我非常失落。

感谢您阅读

0 个答案:

没有答案