2016年12月16日 星期五

Arduino學習.可變電阻控制伺服馬達機器爪



Arduino學習.可變電阻控制伺服馬達機器爪

伺服馬達,各有不同的扭力及速度,有180度角PWM訊號控制,
也有360度及數位控制型,此篇為180度角PWM訊號控制的馬達,
馬達耗電可能超過Arduino板範圍,因此建議另外接電源,
由USB提供電力給Arduino,只支援500mA,扣除本身需求,只能輸出約300mA,
由5.5mm接口供應DC9V電力,扣除基本需求,約輸出700mA,超過需求則需另接電源,
以免過載燒板,或馬達運作不正常等抖動等情形,
記得要將控制線接在有~記號的PWM腳位,

硬體準備
Arduino UNO R3
可調電阻,10K或5K或1k皆可
伺服馬達
DC9V1A電源器
接線數條
安裝時要注意接線以免燒毀電機,此例款接線為橙訊號/紅正電/棕負電

程式變數由A0接腳的電位器輸入訊號值0~1023,再轉換成要控制電機的角度,
因機器爪單邊的開合角約90度左右,因此轉換成0~100度,
若要安裝機器爪要注意調整好位置再鎖螺絲

#include <Servo.h>

int _ABVAR_1_A0 = 0 ;
Servo servo_pin_9;

void setup()
{
servo_pin_9.attach(9);
}

void loop()
{
_ABVAR_1_A0 = map ( analogRead(0) , 0 , 1023 , 0 , 100 )  ;
servo_pin_9.write( _ABVAR_1_A0 );
delay( 50 );
}

若要安裝多軸的機器人手或腳,就增加電機就可增加轉動的關節了,
完成影片參考↓

 

2016年12月2日 星期五

Arduino UNO學習610.照度計模塊GY-30

Arduino UNO學習610.照度計模塊GY-30

”光”的感應元件多是用光敏電阻,但光敏電阻的感應範圍較窄,
當要接收強光時,就需要BH1750這類的晶片,最亮可接收到60000以上的Lx,
Lux勒克斯Lx是一種光的亮度單位,請自上網搜知,此處不作解釋,
此模塊GY30便搭載了BH1750晶片,並使用3-5V電力
 
準備以下硬體並安裝
Arduino UNO R3
照度計模塊GY-30
接線

VCC=電源正輸入
SCL=IIC時脈
SDA=IIC數據
ADD=驅動位址,可不接或接地
GND=低平電源共端


需先安裝資料庫到libraries中,參考下載點
下載目錄安裝到C:\Program Files\arduino\libraries
再開啟arduino程式,於範例中會多個BH1750,選擇BH1750test上傳,
 
  以下測試環境為Win7+Arduino1.6.7版本+硬體Arduino Uno R3
#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;

void setup(){
  Serial.begin(9600);
  lightMeter.begin();
  Serial.println("Running...");
}

void loop() {
  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);
}

完成上傳後打開監控視窗,開始回傳顯示亮度數據

大神網址參考
www.homautomation.org/2014/06/15/measure-light-with-arduino-and-bh1750-module


WinXP測試時有編譯錯誤的情況,換了主機及Arduino IDE軟體版本有些可以,
原因是XP部分程式與Arduino版本的相容問題,目前還找不到簡單的處理方式,
 建議使用Win7上傳,