今天本魔要來介紹的是最近拿到的一台EduCake平衡車,
來看看這台平衡車的樣子吧!
EduCake平衡車顧名思義,是使用EduCake來控制平衡車。
車輪及車身是請U大使用3D Print印出的!
EduCake上面就像我們常見的麵包版一樣,可以直接接線做實驗電路,省去焊電路的時間。
供電是使用5V的電源,所以本魔選購了一顆口紅型的行動電源供電。
而平衡車當然是需要陀螺儀感測的,所以在車底下有裝上一顆RM-G146。
動力的部分,採用了常見的直流馬達,在網路上看到的平衡車大多是使用伺服馬達來做的,
但考慮到伺服馬達的價格似乎不太夠親民,所以採用了一顆沒多少錢的直流馬達。
接著來介紹一下電路,由於是使用直流馬達,所以必須要用電路來控制正反轉,
這裡本魔採用的是TA7291P,控制上也不困難,只要拉兩組IO接上,
然後對應datasheet,個別送出正確的訊號即可控制電流流向。
而由於TA7291P需要3.5V以上供電,而IO腳位送出的電壓只有3.3V,所以為了穩定所以又加了一顆HD74LS04,
這顆晶片的功用就只是拉高電壓,所以不多做解釋。
然後我們來看看我目前做的程式碼,還相當簡陋,所以目前效果還不算太好。
最後,我們來看看我目前的一個小成果吧!
來看看這台平衡車的樣子吧!
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); }
最後,我們來看看我目前的一個小成果吧!