在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arduino測量舵機扭矩的過程分享

科技觀察員 ? 來源:八色木 ? 作者:八色木 ? 2022-04-08 15:40 ? 次閱讀

在日常生活中,我們經常會看到一些產品的技術參數,這些參數與實際使用數據都會存在一些差距,但它也是用戶選擇產品的重要參考。比如智能手機制造商會宣稱他們的電池使用壽命如何長,科技公司會宣稱他們的科技產品是最具科技含量,而汽車公司則吹噓自己汽車的燃油經濟性如何好,其實這些數據有相當部分是存在虛標的。

我們經常使用的舵機也不例外,舵機制造商也會對他們生產的舵機給出各種各樣的技術參數,其中諸如電機能夠產生的扭矩等。如下圖,HS-422舵機的技術參數

poYBAGJP5qqAb2PZAABmRUiDSgA195.png

在這個項目中,我們將建立一個測量舵機扭矩范圍的工具,目的是驗證舵機實際產生的扭矩與技術參數中所標稱的扭矩是否相符。整個實驗會用到一個測力量的部件,一個Arduino Uno,一個3D打印的舵機框架,和其他一些部件,然后測量舵機實際產生的扭矩。

實驗器件清單

Arduino Uno

20kg測壓桿

HX711稱重傳感器模塊

面包板電源

面包板

跳線

M4×6mm螺絲

M4嵌入式螺母

如何測量舵機的扭矩

pYYBAGJP5qaAUr-aAAIQ6M-Xdyc501.png

力矩是通過力與距離的乘積來計算得出的。在這個項目中,要獲得舵機的力會有些困難,因此,需要使用一個負載單元。在設計和使用測壓元件時會涉及到許多復雜的細節,但在本項目中,測壓元件是一種傳感器,它允許計算機將微小的電壓變化轉化為力的形式呈現出來。使用測力元件,我們就能夠測量舵機的旋轉軸和舵機臂之間的精確距離。

poYBAGJP5qCAXo6uAAZ7sC-nBPs897.png

當舵機開始旋轉時,它就會對測壓元件產生推力,結合測壓元件受到的測力以及旋轉軸和伺服臂的距離,就可以計算出由測力元件傳遞的扭矩。

構建測試工具

測試工具的機械結構比較簡單,它由兩個3D打印零件和幾個緊固件組成。你可以下載本文附帶的3D打印部件的設計文件(提取碼:9t4e)。

poYBAGJP5pyAcUwiAACkB1g0SZc550.png

3D打印件沒有特殊的要求,所以使用任何材料打印都可以。

裝配測試工具

裝配舵機扭矩測量工具的第一步是安裝嵌入式螺母,嵌入式螺母可以使安裝更安全,不會損壞3D打印框架。安裝螺母時,可以輕輕將其按下插入塑料孔后,使用烙鐵對其加熱,當你移開烙鐵后,熔化的塑料會在鑲件周圍凝固,形成非常牢固的連接,這樣就可以完成安裝了。

pYYBAGJP5piAOQwiAAQJ-25Ki2E959.png

接下來,安裝測壓元件,其一側有一個綠色箭頭。將測壓元件朝上,箭頭指向遠離舵機的方向,然后將測壓元件插入旁邊的正方形中。測壓元件應該保持穩固,確保安裝過程中沒有搖晃的空隙。

pYYBAGJP5pSADlMEAATbd_56GYg344.png

然后,在面包板背面貼一塊雙面膠,把它粘在3D打印的框架上。

pYYBAGJP5pCAcqZ8AAa9KhA5JIE040.png

完成了框架搭建,余下的就是電路的搭建了,請看下面的電路圖。

poYBAGJP5ouAA7QYAAHEzccZcrc499.png

電源連接:

Arduino GND -》 面包板 GND

HX711 GND -》 面包板 GND

舵機 黑線 -》 Arduino GND

Arduino Vin -》 面包板 VCC

HX711 VCC -》 面包板 VCC

舵機 紅線 -》 Arduino 5V

信號連接:

舵機 黃線 -》 Arduino D9

HX711 DT針 -》 Arduino D3

HX711 SCK針 -》 Arduino D2

測壓元件連接:

測壓元件紅線 -》 HX711 E+針

測壓元件黑線 -》 HX711 E-針

測壓元件綠線 -》 HX711 A-針

測壓元件白線 -》 HX711 A+針

完成組裝的成品圖

poYBAGJP5oaAG0pAAActMmFeAMo903.png

/*

Project: Measuring Servo Torque

Author: Toglefritz

This project involves a simple device used to measure the torque output of a hobby-scale servo. The device consists of a 3D printed frame that will hold a servo and a load cell. The servo rotates a horn into the load cell, producing a reading from the load cell. From the known distance between the servo's center of rotation and the load cell, the servo's torque can be calculated from the force on the load cell.

Complete documentation for the project can be found on Maker Pro.

*/

// Include libraries for interfacing with the HX711 and the servo

#include "HX711.h"

#include

// Configuration

#define calibration_factor -7050.0 // This value is obtained using the HX711_Calibration sketch

int trialRuns = 5; // This defines the number of times to measure the servo's force on the

// load cell. These measurments will be averaged to come up with a single reading.

float armLength = 2.75; // This is the distance (in cm) between the servo's center of rotation and the load cell.

// This is based on the mechanical design of the test fixture.

// Define connections between the HX711 and the Arduino

#define DT 3 // The HX711 DT pin connects to D3 on the Arduino

#define SCK 2 // The HX711 SCK pin connects to D2 on the Arduino

// Initialize the HX711

HX711 loadCell(DT, SCK);

// Create a servo object

Servo testServo;

void setup() {

// Begin Serial communication

Serial.begin(9600);

Serial.println(" - Torque Measurement Tool - "); // Print a heading

Serial.println();

// Set the pin used to control the servo

testServo.attach(9);

loadCell.set_scale(calibration_factor); // This value is obtained by using the HX711_Calibration sketch

loadCell.tare(); // Reset the scale to zero to compensate for any existing load

// To begin the test, the servo horn should be attached so that it is making contact with

// the load cell at an angle of 140 degrees on the servo

testServo.write(140); // Move the servo into the load cell

Serial.println("Initialization complete.");

Serial.println("Send 's' to begin testing. Send 'h' for help.");

Serial.println();

}

void loop() {

// If the user sends 's' over Serial, begin testing the torque

if(Serial.read() == 's' || Serial.read() == 'S') {

measureTorque();

}

// If the user sends 'i' over Serial, show some instructions

if(Serial.read() == 'h' || Serial.read() == 'h') {

Serial.println("Right now, the Arduino has moved the servo into its starting position.");

Serial.println("In the servo's current position, install the horn so that it is just touching the load cell.");

Serial.println("When you are ready, send 's' over Serial and the Arduino will begin testing the servo's torque.");

Serial.println("You will see the Arduino move the servo into the load cell five different times.");

Serial.println("Each time the servo hits the load cell, the Arduino will take a reading.");

Serial.println("Those readings will be averaged to calculate the torque delivered by the servo.");

Serial.println("Keep an eye on the Serial monitor to see the results.");

Serial.println();

Serial.println("Send 's' to begin testing.");

Serial.println();

}

}

void measureTorque() {

/*

To test the servo's torque, the Arduino will move the servo arm so that it presses on the load

cell. The resulting force will produce a reading from the load cell. The Arduino will take

five readings to compute an average force value. Because the distance between the servo's

center of rotation and the load cell is known from the frame design, the Arduino

can calculate the torque produced by the servo.

*/

Serial.println("Individual Readings: ");

float individualReadings[trialRuns]; // This array will store the load cell readings for the five tests

for(int i = 0; i < 5; i++) {

testServo.write(180); // Move the servo away from the load cell

delay(1000); // Wait for the servo to move

loadCell.tare(); // Reset the scale to zero to compensate for any existing load

testServo.write(130); // Move the servo into the load cell. A 130 degree angle is actually inside the load

// cell, so the servo will be pushing towards that position, exerting force on

// the load cell.

delay(1000); // Wait for the servo to move

individualReadings[i] = loadCell.get_units(); // Take a measurment from the load cell

Serial.print(individualReadings[i]); // Print the measurment over Serial

Serial.print(" ");

}

// Now that we have five individual readings, average them to get one average load reading

float readingsSum = 0; // Create a variable to store the sum of all readings

// Loop through the array and add together all the readings

for(int y = 0; y < trialRuns; y++) {

readingsSum = readingsSum + individualReadings[y];

}

float averageReading = readingsSum / trialRuns; // Divide by the numer of readings to get the average

Serial.println();

Serial.println();

Serial.println("Average Reading:"); // Print the average reading over Serial

Serial.println(averageReading);

// From the average reading, calculate the torque delivered by the servo

// using the formula T = F * r where T is the torque, F is the load cell

// reading (a force), and r is the radius of rotation (the distance between

// the servo and the load cell).

// The units for the torque will be kg*cm

float servoTorque = averageReading * armLength; // Calculate the torque

Serial.println();

Serial.println("Torque:"); // Print the torque

Serial.print(servoTorque);

Serial.println(" kgcm");

testServo.write(180); // Move the servo away from the load cell after the testing is complete

}

系統啟動后,將會打開一個串口監視器,當我們準備開始測量時,系統將提示你通過串口發送“s”開始。

pYYBAGJP5oKAfsmWAAFIfyiW8l0730.png

Arduino將測量這個舵機產生的力,并將它轉換成扭矩,最后將結果發送給串口監視器上。

poYBAGJP5n6Ace99AAHBjZ_wiNc808.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Arduino
    +關注

    關注

    189

    文章

    6492

    瀏覽量

    190161
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    數字舵機扭矩消失時,該怎么操作

    數字舵機扭矩消失時,該怎么操作
    發表于 01-28 20:55

    數字舵機扭矩消失時,該怎么操作

    數字舵機扭矩消失時,該怎么操作
    發表于 01-28 21:03

    數字舵機扭矩消失時,該怎么操作

    數字舵機扭矩消失時,該怎么操作
    發表于 01-28 21:06

    為何電機扭矩測量結果和傳感器精度對不上?

    扭矩環),負載電機工作在扭矩環(或速度環),扭矩傳感器測量扭矩大小并將扭矩值通過信號傳送給
    發表于 07-06 15:12

    扭矩舵機怎么才能讓它停下來

    我在店里買了一個360度的大扭矩舵機,給它一個Write(0),它就一直轉,怎么才能讓它停下來啊
    發表于 05-27 05:55

    Arduino如何利用紅外感應控制舵機

    實現功能:當紅外感應到人時,控制舵機轉動180度參考:基于Arduino的多種方式控制舵機舵機、電位器、藍牙).硬件連接:舵機連接:Ard
    發表于 06-28 11:17

    機器人舵機調試系統

    控制或者輸出較高的扭矩舵機也叫也叫 RC 伺服器,通常用于機器人項目,也可以在遙控汽車,飛機等航模中找到它們。類似舵機這樣的伺服系統通常由小型電動機,電位計,嵌入式控制系統和變速箱組成。電機輸出軸
    發表于 07-12 08:43

    arduino如何驅動ST90S微型舵機

    舵機來帶動撥片撥取貨物了,本博客就介紹arduino如何驅動ST90S微型舵機以及分享在驅動過程中所遇到的問題以及解決方法效果展示舵機/撥片
    發表于 09-10 06:39

    Arduino調試舵機的方法步驟

    Arduino調試舵機的方法步驟
    發表于 01-18 07:54

    arduino如何控制舵機

    arduino如何控制舵機
    發表于 01-19 06:04

    扭矩測量

    扭矩測量 扭矩由力和力臂的乘積來定義,單位是Nm。
    發表于 01-07 12:52 ?3922次閱讀
    <b class='flag-5'>扭矩</b><b class='flag-5'>測量</b>

    盤點電機扭矩測量方法有哪些

    能量轉換法是指根據能量守恒定律通過測量熱能、電能等其它參數來間接測量扭矩,目前銀河電氣推出的TN4000電子式扭矩儀就是該原理測量電機
    發表于 11-08 16:41 ?1.4w次閱讀
    盤點電機<b class='flag-5'>扭矩</b>的<b class='flag-5'>測量</b>方法有哪些

    arduino如何控制舵機及詳細步驟

    本文首先介紹了舵機的控制方法,其次闡述了Arduino控制舵機的兩種方法,最后詳細闡述了arduino控制舵機的詳細步驟。
    的頭像 發表于 05-11 14:28 ?16.7w次閱讀
    <b class='flag-5'>arduino</b>如何控制<b class='flag-5'>舵機</b>及詳細步驟

    Arduino UNO驅動數字舵機

    Arduino UNO驅動數字舵機舵機數字舵機工作原理數字舵機與模擬舵機區別EMAX ES08M
    發表于 11-30 12:06 ?15次下載
    <b class='flag-5'>Arduino</b> UNO驅動數字<b class='flag-5'>舵機</b>

    通過Arduino控制舵機

    本文主要介紹通過Arduino控制舵機,步進電機以及循環的使用。對于Arduino控制舵機的方法是通過其輸出PWM信號來實現控制的。這里所謂的PWM信號其本質上就是脈沖信號。而對于步進
    發表于 03-23 13:52 ?1次下載
    通過<b class='flag-5'>Arduino</b>控制<b class='flag-5'>舵機</b>
    主站蜘蛛池模板: 日本最色网站 | 种子天堂bt | 日日操夜夜爱 | 麻豆美女大尺度啪啪 | 91aaa免费观看在线观看资源 | 4480yy私人午夜a级国产 | 午夜乩伦 | 狠狠燥| 特级毛片aaaa级毛片免费 | 亚洲福利一区 | 中文字幕精品一区影音先锋 | 国产精品成人va在线观看入口 | 伊人成年综合网 | 美女视频永久黄网站在线观看 | 国产国产人免费人成免费视频 | 5g影院欧美成人免费 | 免费高清在线爱做视频 | 天天看视频 | 亚洲一区中文字幕在线观看 | 欧美乱妇高清无乱码 | 男女交性拍拍拍高清视频 | 日日做日日摸夜夜爽 | 久久成人国产精品青青 | 狠狠躁夜夜躁人人躁婷婷视频 | 97夜夜澡人人爽人人喊一欧美 | 亚洲嫩草影院在线观看 | 成人在线播放av | 五月天激情综合网 | 爱插综合网 | 午夜在线观看完整高清免费 | 亚洲aaaa级特黄毛片 | 午夜福利国产一级毛片 | 午夜视频啪啪 | 丁香婷婷在线视频 | 免费看黄色一级毛片 | 最新色网站 | 曰本福利写真片视频在线 | 人成xxxwww免费视频 | 日本大片成人免费播放 | 欧美一卡二卡科技有限公司 | 天天色色网 |