2017-01-23 31 views
-1

我試圖通過藍牙來接收命令時打開/關閉門的自動門。伺服電機的不良行爲

所有我想要的伺服做的是:

  1. 留在了Arduino的供電穩定。 (目前它旋轉到一定角度,並在Arduino上電時恢復)。

  2. 從0度旋轉到90度並停止,在接收到另一個命令時,它應該從90度旋轉到0度並停止。

這是我的代碼:

else if (val=='i'){ 
myservo.write(0); 
delay(4000); 
for(pos = 0; pos <= 90; pos += 1){ 
    myservo.write(pos);    
    delay(15);      
} 
} 
    else if (val=='j'){ 
myservo.write(0); 
delay(4000); 
for(pos = 90; pos >= 0; pos -= 1){ 
    myservo.write(pos);    
    delay(15);      
    } 
    } 
+1

您應該提及您正在使用的**電機**的特定*型號*,並提供*最小的可重現示例*。另外,你應該描述* Arduino *的**期望行爲**和你的代碼是什麼,以及你重新觀察的行爲*是什麼。事實上,你的帖子甚至不包含問題,因此它不清楚。 –

+0

提供更多關於開機和這些動作的時間信息。神的名字是什麼是一定的角度。 1°或176°還是什麼?電機如何連接? – Piglet

+0

型號: - Tower Pro SG90 當我啓動我的arduino時,伺服電機前後轉動一定角度。我不知道確切的角度,但它是大約20度。當我在手機上的應用程序上點擊開門按鈕時,它會通過藍牙HC-05傳遞'我'。在這種情況下,我希望它從0度旋轉到90度。但是它以正常速度從0旋轉到90,並且突然再次變爲0度,以正常速度開始旋轉到90度,並且在4-5次之後,電機剛剛達到0度並開始產生噪音。 –

回答

1
  1. 這是伺服系統的電子設備的特徵。在上電之前或在上電幾毫秒內向伺服提供PWM信號。如果您想繼續使用Arduino,引導加載程序會等待幾秒鐘,在此期間伺服器沒有信號,因此添加一個晶體管以切換啓動代碼中的最後一個東西。如果您可以直接編程微控制器並移除Arduino引導加載程序,那麼微控制器應該開始快速執行您的伺服控制,而不會有明顯的故障。在任何一種情況下,伺服都會跳到您在啓動時所告訴的位置,而不是隨機的位置;您可以將最後一個指令位置保存在EEROM中,這樣跳躍就不那麼明顯了,但是當沒有動力時,伺服器在機械加載時會移動,因此可能會跳轉。沒有辦法說'留在你現在的位置'給遙控伺服器。
  2. val == 'i'val == 'j'分支機構從90慢慢旋轉到零或零到90還記得你的位置,並從該位置移動到所需位置之前沒有移動到零之前快速移動的伺服爲零。

從機械上看,伺服庫控制的伺服類型不夠強,無法打開或關閉正常的門;如果它是娃娃屋或貓皮瓣的門,你會沒事的,但除此之外,你應該使用更強大的執行器和終點擋板以及一些力傳感器,這樣你就不會傷害人。