RoBoard魔人的機器人日誌

2014/3/23

[EduCake] EduCake平衡車首次亮相

今天本魔要來介紹的是最近拿到的一台EduCake平衡車,

來看看這台平衡車的樣子吧!



EduCake平衡車顧名思義,是使用EduCake來控制平衡車。



 車輪及車身是請U大使用3D Print印出的!



 EduCake上面就像我們常見的麵包版一樣,可以直接接線做實驗電路,省去焊電路的時間。



供電是使用5V的電源,所以本魔選購了一顆口紅型的行動電源供電。
而平衡車當然是需要陀螺儀感測的,所以在車底下有裝上一顆RM-G146。
動力的部分,採用了常見的直流馬達,在網路上看到的平衡車大多是使用伺服馬達來做的,
但考慮到伺服馬達的價格似乎不太夠親民,所以採用了一顆沒多少錢的直流馬達。



接著來介紹一下電路,由於是使用直流馬達,所以必須要用電路來控制正反轉,
這裡本魔採用的是TA7291P,控制上也不困難,只要拉兩組IO接上,
然後對應datasheet,個別送出正確的訊號即可控制電流流向。

而由於TA7291P需要3.5V以上供電,而IO腳位送出的電壓只有3.3V,所以為了穩定所以又加了一顆HD74LS04
這顆晶片的功用就只是拉高電壓,所以不多做解釋。



然後我們來看看我目前做的程式碼,還相當簡陋,所以目前效果還不算太好。



#include <EEPROM.h>
#include "FreeIMU1.h"
#include <Wire.h>
int raw_values[9];
//char str[512];
float ypr[3]; // yaw pitch roll
float val[9];
unsigned long pretime = 0;
int pin[4] = {10,11,31,32};
int d = 10;
// Set the FreeIMU object
FreeIMU1 my3IMU = FreeIMU1();
void setup() { 
 Serial.begin(115200);
 Wire.begin();
 delay(5);
 my3IMU.init(); // the parameter enable or disable fast mode
 delay(5);
 pinMode(10,OUTPUT);
 pinMode(11,OUTPUT);
}
void loop() {
 my3IMU.getYawPitchRoll(ypr);
 if(ypr[2] > 5){
  pin[0] = 10;
  pin[1] = 11;
  pin[2] = 31;
  pin[3] = 32;
  for(int i = 0; i < 4; i+=2){
   analogWrite(pin[i],255);
   analogWrite(pin[i+1],0);
  }
 }else if(ypr[2] < 3){
  pin[0] = 11;
  pin[1] = 10;
  pin[2] = 32;
  pin[3] = 31;
  for(int i = 0; i < 4; i+=2){
   analogWrite(pin[i],255);
   analogWrite(pin[i+1],0);
  }
 }else{
  for(int i = 0; i < 4; i++)
   analogWrite(pin[i],0);
 }
 while(millis() - pretime> 1000ul){
  Serial.print(" Roll: ");
  Serial.print(ypr[2]);
  Serial.println("");
  pretime = millis();
 }
 delay(10);
}




最後,我們來看看我目前的一個小成果吧!

Share:

0 留言:

張貼留言

技術提供:Blogger.

追蹤者