色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>易于使用的動力假肢開源分享

易于使用的動力假肢開源分享

2022-12-21 | zip | 0.22 MB | 次下載 | 免費

資料介紹

描述

一種易于使用的動力假肢——開源且價格合理。為適應持續發展而開發的簡單、有效、輔助技術。由一群勤奮的本科生為您帶來,他們熱衷于機器人技術被廣泛用于改善所有人生活質量的未來愿景。雖然新技術的努力往往是揮霍無度的,但我們的腿的成本大約相當于一張中檔宜家沙發(550 美元)。

我們的項目和價格點在很大程度上依賴于新技術的利用,例如最近才出現的連續 3D 打印碳纖維。此外,我們的項目是完全開源的,因此學生、技術愛好者和截肢者都可以自由制造和完善它。我們希望該項目能夠立即提高感興趣的截肢者的功能質量,并最終可能成為輔助技術領域擴散發展和未來研究的平臺。

?
?
?
?
1 / 4
?

信用到期的信用

該項目由猶他大學的Tommaso Lenzi 博士提出概念。這些材料全部由他的實驗室仿生工程實驗室贊助。去尤特斯。

?

pYYBAGORZM2AF4fwAAPjVQ4wNIE895.png
?

?

收集零件

要做的第一件事是訂購所有組件。他們需要幾天時間才能到達。我們已嘗試使用盡可能少的供應商,以避免不得不進行數十次采購。

拆卸鉆頭

該項目使用鉆頭,因為它是獲得強大的無刷直流電機電機控制器、行星齒輪組和可充電鋰離子電池的一種經濟高效的方式。

?

3D打印

首選的 3D 打印機是 Markforged Mark Two,因為它能夠結合連續的碳纖維束,而 Ultimaker S5 則適用于 Tough PLA 組件。

我們用連續股碳纖維打印軸套連接器,以實現令人難以置信的 3D 打印重量強度比。前殼、后殼和電機外殼采用堅固的 PLA 印刷,用于初始原型制作,以降低成本并為這些組件設定基準。隨著我們繼續開發,將探索使用 3D 復合打印機進行實驗以減輕重量并提高這些組件的耐用性。

總共需要制作六個打印文件:

  • 軸套接頭(碳纖維/瑪瑙復合材料)
  • 前殼(Tough PLA)
  • 后殼(Tough PLA)
  • 電機外殼(Tough PLA)
  • 墊片(Tough PLA)
  • 緊急停止(Tough PLA)

軸套連接器

使用具有以下設置的 Markforged Mark Two 或其他復合打印機

  • 噴嘴尺寸:標準
  • 打印層高:0.125 [mm]
  • 支持:瑪瑙
  • 填充率:37%
  • 碳纖維同心層數:最多 15 個同心環,所有墻壁都經過加固,37% 填充,屋頂和地板層 5,墻層 3,三角形填充
  • 層數:在第 139 - 278 層上加固,在所示尺寸中同心
pYYBAGOhJhWAHiSxAABahnfOkuo961.png
?

前殼、后殼和電機外殼

使用具有以下設置的 Ultimaker S5 或其他 Tough PLA 打印機

  • 噴嘴尺寸:AA 0.4
  • 印刷層高:0.2[mm]
  • 支持:PVA
  • 填充率:10%

墊片

使用具有以下設置的 Ultimaker S5 或其他 Tough PLA 打印機

  • 噴嘴尺寸:AA 0.4
  • 印刷層高:0.1[mm]
  • 支持:PVA
  • 填充率:100%

緊急停止

使用具有以下設置的 Ultimaker S5 或其他 Tough PLA 打印機

  • 噴嘴尺寸:AA 0.4
  • 印刷層高:0.06[mm]
  • 支持:PVA
  • 填充率:100%
poYBAGOhJhiAQIT5AABgheRdejc387.png
?

電子組裝

組裝電路板:

?
?
?
pYYBAGOhJhuAd72uAACCE2YgIM4461.jpg
?
1 / 2
?

在等待零件進來的同時,您需要訂購兩塊印刷電路板 (PCB)。一個用于主板,另一個用于地面反作用力 (GRF) 傳感器您需要將 Gerber 文件發送到您最喜歡的制造廠。壓縮的 Gerber 文件可以在 GitHub 存儲庫上找到,文件路徑為“PCB -> Motherboard”和“PCB -> GRF”。隨訂單一起提交 .zip 文件。我們的董事會使用了以下細節:

  • 層數:2
  • 材質:FR4
  • 材料厚度:0.062 [英寸]
  • 單位尺寸:0.972 x 2.350 [in](主板)和 0.835 x 0.600 [in](GRF)
  • 銅重量:1 [oz]

當電路板到達時,在 BOM 中找到的參考標記中焊接適當的組件(這些可以在與 Gerber 文件相同的文件路徑中找到)。

?
?
?
poYBAGOhJh2ASwR-AAB__vZXbVU859.png
?
1 / 2
?

如果您不知道如何將表面貼裝器件 (SMD) 安裝到 PCB,請觀看本教程

組裝地面反作用力 (GRF) 傳感器:

將 3 [mm] 橡膠墊切成 52.0 x 52.0 [mm] 的正方形,然后在每個角上切出 10.0 x 10.0 [mm] 的正方形。它應該看起來大致像這樣。

pYYBAGOhJiKAYKKkAAAjABqKjqo289.png
?

以干凈的方式切割橡膠非常困難,但請盡力使線條筆直且切割成比例。這將使傳感器校準更容易,讀數更可靠。

接下來,我們需要將磁鐵安裝在底部金字塔的內部(或者任何你用來連接塔的東西)。GRF 下死點到磁鐵上死點的最佳距離為 11.55 [mm],這也是最小距離。最大距離為 15.15 [mm]

pYYBAGOhJiSAFB2bAAA2fXF3SQA529.png
?

將電子設備安裝到主要結構上:

將緊急停止 (e-stop) 線穿過頂部金字塔平面的一側,然后收集慣性測量單元 (IMU) 線,并將 e-stop 和 IMU 線向下穿過金字塔平面,穿過指示的孔并引出靠近磁鐵(非鏈輪)側的軸。

?
?
?
poYBAGOhJjGAIMriAAEF09PWjao809.jpg
?
1 / 3
?

將這些和編碼器線沿著外殼干凈地布置到工字梁的通道,將它們固定在鏈條和鏈輪傳動系統之外。

將 GRF 的電線向上穿過工字梁上的底部金字塔平面。

?

pYYBAGOhXoOAcp9bAAAmuKlmsik972.png
?

將主板的電源線焊接到電池組連接器端子(抹刀連接器)。

?
?
?
poYBAGOhXoiAfE-sAAC0YylRpSk102.jpg
?
1 / 2
?

在此圖像中,焊接線是綠色到黑色端子(負極)和灰色到紅色端子(正極)。

如果您計劃使用定制電池(沒有電池監控系統)或電源運行腿,您還需要在紅色(正極)和黃色(參考)端子之間焊接一個 250 [Ohm] 電阻以復制牧田電池組中熱敏電阻的電阻。

注意:使用鋰電池很危險,因此請遵循正確的程序并確保裸露的電線不會短路。

布線完所有電線后,我??們需要將它們連接到主板。按照 GitHub 上文件路徑“PCB->Motherboard”中的引出線描述連接 20 位和 5 位 Molex 連接器

?
?
?
pYYBAGOhXouAex6PAACNVQCuM3A939.jpg
?
1 / 3
?

?

機械組裝

在組裝支腿之前,請務必準備好下面顯示和列出的所有零件。

poYBAGOhXpeAcOyvAAG8y_z5bnY179.png
?
poYBAGOhXqSAaMesAADeFMkmWhY955.png
?

1.組裝所需的第一步是修改軸套連接器襯套(第 3 部分)。如下圖所示,需要使用帶鋸將襯套切割成 0.5 [in] 的長度,然后去毛刺。然后需要將襯套安裝到軸套連接器(第 15 部分)。

poYBAGOhXqeAFq_7AAAhqmpR0us580.png
?

2.然后需要將 0.5 [in] 軸(第 13 部分)切割成 103 [mm],并擰上螺紋并攻絲以連接鏈輪。在軸兩端的中心鉆一個 5 [mm] 的孔,然后用 M6 螺栓攻絲。然后使用 1/2 [in]-13 模具,在軸的兩個外端創建螺紋。

pYYBAGOhXqqAbvpiAAAUNbi0b6U508.png
?

3.在軸套連接器 20 齒鏈輪(第 5b 部分)上,需要等距分布 4 個孔,并圍繞 0.5 [in] 孔的周邊鉆孔。孔的直徑需要為 3.4 [毫米],距鏈輪中心的距離為 8.89 [毫米](0.35 [英寸])(中心到中心測量值)。

poYBAGOhXqyAeWwYAAAk-69u3Ps091.png
?

4.接下來取出所有 4 [mm] 熱固插件并安裝在后殼(第 10 部分)上相應的 4 [mm] 間隙孔中。對頂部軸套連接器(第 15 部分)上的 3 [mm] 熱插件執行相同操作。

pYYBAGOhXrGAaYoGAAAu1ryq7YY120.png
?

5.將兩個軸連同 0.5 [in] ID 襯套和相應的墊片一起安裝在框架的兩半之間。將編碼器(部件 12b)放入軸套連接器旁邊的槽中。固定所有螺栓以將外殼的兩個部分裝配在一起。左側 2 個螺栓為 M4-40 [mm](零件 6c),軸之間的 3 個螺栓為 M4-55 [mm](零件 6a),右側三個螺栓為 M4-50 [mm](零件 6b) ,底部軸邊緣的 2 個螺栓為 M4-25 [mm](第 6d 部分)。

poYBAGOhXraAPSzQAACKq2_d9Zw104.jpg
?

6.使用 M3-70 [mm] 螺栓(第 4a 部分)將頂部鏈輪(第 5b 部分)固定到軸套接頭上。

pYYBAGOhXr2APsHQAAAwBJUn1x4264.png
?

7.安裝電機(第 1 部分)并擰入用于電機外殼(第 11 部分)的 M4-12 [mm] 緊固件和 M4 螺母(第 6e 部分)。

?
?
?
poYBAGOhXsCATpdTAADg1x0mIrs676.jpg
?
1 / 2
?

8.在兩組鏈輪上安裝鏈條(第 7 部分)和主鏈節。

pYYBAGOhXsKAOz6qAACv84_k5Xo476.jpg
?

9.將 IMU(部件 12a)安裝到軸套連接器上。將 GRF(第 12d 部分)放置在連接框架的底部,然后是聚氨酯橡膠,最后是金字塔(第 8 部分)以將 GRF 固定到位。

pYYBAGOhXsSAfT8IAACoea5wc4M978.jpg
?
?
?
?
pYYBAGOhXseAFsm1AADShaTnIA4521.jpg
?
1 / 3
?

10.從電鉆手柄上切下 Makit 電鉆電池座,使其與頂部齊平。將電池端子(第 1 部分)和電機控制器固定在縮小的 Makita 電鉆外殼中。使用 M4-12 [mm] 螺釘將鉆頭外殼固定到后殼上。

?
?
?
poYBAGOhXsqAZO_vAABkAVGHJ8c837.jpg
?
1 / 2
?

代碼

您將需要 ArduinoTeensyduino(輕松)將 Teensy 4.0 上的以下代碼上傳到主板(第 12c 部分)。

傳感器驗證:

為確保所有傳感器和信號線都正常工作,請將代碼單獨上傳到 GitHub 的文件路徑“Verification -> verifying[sensorName]”。每段代碼都測試單個傳感器及其連接。

現在一切正常,讓我們開始移動這條腿。在首次啟動時嚴格遵循這些步驟至關重要,因為不正確的傳感器讀數會導致系統不穩定。如果您運行了之前的所有代碼并且沒有返回任何錯誤,則傳感器讀數應該是正確的,但安全第一,請按照以下步驟操作:

注意:請勿在支腿通電時將 USB 數據線連接到主板,否則會損壞 Teensy。如果要在腿帶電的情況下連接主板,則USB電源和板卡電源必須分開。

  • 確保腿由頂部或底部金字塔固定
  • 關閉緊急停止(將紅色蓋帽向下推)
  • 使用 USB 轉 micro USB 電纜將計算機連接到主板
  • 上傳GitHub上“Integration -> testingPcontroller”文件路徑下的代碼到主板
  • 斷開計算機與主板的連接
  • 打開急停(擰紅帽)
  • 腿上的功率為 18 [V]

這是使腿來回擺動的代碼:

/*
* Auth: Justin Francis
* Date: 11/27/19
* Ver: 1.0
* Sum: this is a position P-controller for the Open source powered prosthetic //leg,
*      it oscillates the leg back and forth between 5 deg and 85 deg from vert//ical,
*      or it can be controlled with a potentiometer remotely.
*      written for teensy 3.2
*
* Mod:
*
*/

#include 
#include 

//empirically determined speed curve (x = thetaDotDes [rad/s], y = command vol//tage[rad/s])
#define MOT_CONTROL_CURVE (0.67 - 0.148*log(abs(thetaDotDes)))

//teensy 3.2 limits
#define DAC_RES 1023 //10 bit
#define DAC_MAX 3.3 //[V]

//incremental encoder interrupt pins
#define IncEncA 2
#define IncEncB 3

//use this for potentiometer control
// #define POT_CTRL

//use this for plotting
// #define PLOTTING

//use this for use with battery pack, comment out if using a current limited p//ower supply
//the reason being, the battery pack can supply enough power to tear the leg a//part if a signal
//is being processed incorrectly, this keeps that from happening.
#define TRIAL

//control vars
float P = 30; //proportional gain K_u ~= 35
float k; //conversion factor for theta dot to voltage for the controller output
float motCmd; //value to output to motor controller
float err; //controller error
float thetaDes = 0; //desire joint position [rad]
float theta, thetaDotDes; //joint position [rad], desire joint velocity [rad/s]

#ifdef POT_CTRL
float inputV; //potentiometer voltage [V]
const int POT_PIN = 14; //potentiometer pin
#endif

//motor vars
const int DAC_Pin = A14; //motor speed pin
const int directionPin = 5;
const int enablePin = 4;

//incremental Encoder
Encoder inc(IncEncA,IncEncB); //interrupt attach to digital pins 2 and 3
int counts, countsOld = 0;
const float INC_RES = 4096.0; //resolution of encoder [cpr]


void setup()
{
    Serial.begin(115200); //turn on serial port (display) at 115200 baud
    //set ports
    pinMode(DAC_Pin, OUTPUT);
    pinMode(directionPin, OUTPUT);
    pinMode(enablePin, OUTPUT);

    #ifdef POT_CTRL
    pinMode(POT_PIN, INPUT);
    #endif

    //this is needed for the motor startup sequence
    digitalWrite(enablePin, LOW);
    delay(200);

    #ifdef PLOTTING
    Serial.println("theta thetaDes");
    #endif
}


/*
* function to control the motor, takes in a desired velocity and commands the motor
* no return
*/
void MotorDrive(float thetaDotDes)
{
    if(thetaDotDes >= 0.0)
    {
    digitalWrite(directionPin, HIGH);
    }
    else
    {
    digitalWrite(directionPin, LOW);
    }
    digitalWrite(enablePin, HIGH);
    motCmd = MOT_CONTROL_CURVE; //[V]
    motCmd = constrain(motCmd, 0.0, .75); //anything outside of this voltage r            //ange cause the controller to pause
    analogWrite(DAC_Pin, (int)(motCmd*DAC_RES/DAC_MAX)); //convert command int        //o voltage
}


float i = 0; //used for oscillations
void loop()
{
    //read sensor
    counts = inc.read();

    //potentiometer control
    #ifdef POT_CTRL
    inputV = analogRead(POT_PIN) * (3.3/1024); //[V]
    #endif

    //standard oscillations
    #ifndef POT_CTRL
    thetaDes = (PI/2.2*sin(i));
    i += 0.0001; //this needs to decrease if the teensy 4.0 is used because of    //faster clock
    #endif

    //convert to radians
    theta = (((float)counts/INC_RES))*2*PI; //[rad]

    #ifdef POT_CTRL
    thetaDes = inputV * (PI/(3.3*2)) - .5; //[rad]
    #endif

    #ifdef TRIAL
    thetaDes  = constrain(thetaDes, -.5, 1.5);
    #endif

    #ifdef PLOTTING
    Serial.print(theta*.25);Serial.print("\t");Serial.println(thetaDes*.25);
    #endif

    //find err
    err = thetaDes - theta; //rad

    //calc correction
    thetaDotDes = P * err; //[rad/s]

    //command system
    MotorDrive(thetaDotDes);

    //feedback (not needed for P controller)
}

現在腿應該來回擺動,在擺動的兩端停幾秒鐘。

第一次試運行后,可以使用以下步驟為腿加電。

  • 打開急停(擰紅帽)
  • 以 18 [V] 為腿供電

可選的無線通信(高級)

通過使用第二個 Raspberry Pi Zero W 作為控制器,可以最輕松地進行無線通信。然后可以通過連接到現有網絡或將其中一個樹莓派設置為接入點來實現設備之間的通信

連接到同一網絡后,Python 的套接字庫可用于使用 GitHub 上文件路徑“wireless_communication”中的代碼在兩個 Pi 之間創建服務器(在腿上)客戶端(遠程)關系。

服務器設置(Python)

import socket

# establish connection
HOST = "INSERT SERVER IP ADDRESS"
PORT = "INSERT OPEN PORT" # e.g. port above 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "socket created"

# check for valid host and port
try:
    s.bind((HOST,PORT))
except socket.error:
    print "bind Failed"

# establish connection
s.listen(1)
print "Socket awaiting messages"
(conn, addr) = s.accept()
print "connected"

# await and receive messages
while True:
    data = conn.recv(1024)
    print data

# close connection when finished
    conn.close()

客戶端設置(Python)

import socket
import Adafruit_ADS1x15
import time

# Configure wireless connection with server (board on leg)
HOST = "INSERT SERVER IP ADDRESS"
PORT = "INSERT OPEN PORT" # e.g. port above 5000

# Connect to server host/port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

# ADC Converter: Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()

# Choose Gain
GAIN = 1

while True:
    # Read all the ADC channel values in a list.
    # Our joystick has two channels         (direction and button)
    values = [0]*2
    for i in range(2):
        # Read the specified ADC channel using the previously set gain value.
        values[i] = adc.read_adc(i, gain=GAIN)

        # we are currently only interested in the direction value
        command = str(values[0])

        # send command to the server
        s.send(command)

        # delay
        time.sleep(0.5)

通過模數轉換器 ( ADC),控制器的 Pi 可以讀取操縱桿的 ADC 通道值,然后將其發送到腿的 Pi。最后,通過 pySerial 庫,腿部的 Pi 可以將這些模擬值傳輸到 Teensy 4.0,以控制電機的速度和方向。

將代碼添加到服務器代碼的頂部(Python)

import serial
import time

# connect with teensy, choose baud rate
ser = serial.Serial('/dev/tty/ACM0', 9600)

time.sleep(.5)

將代碼添加到服務器底部while 循環以與 Teensy (Python)通信

# send command to teensy
    ser.write(str(data))
    time.sleep(.1)

青少年設置(C++):

void setup() {
    Serial1.begin(9600);
    Serial.begin(9600);
}

void loop() {
    String readString = "";

    // read in message
    while (Serial.available())
    {
        delay(30);
        if (Serial.available() > 0)
        {
            char c = Serial.read();
            readString += c;
        }
    }

    // print message to serial monitor or use value to control motor
    if (readString.length() > 0)
    {
        Serial.println(readString);
    }
}

我們使用無線通信讓控制、數據收集、代碼重構和調試更加高效和方便。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1Keysight B1500A 半導體器件分析儀用戶手冊、說明書 (中文)
  2. 19.00 MB  |  4次下載  |  免費
  3. 2使用TL431設計電源
  4. 0.67 MB   |  2次下載  |  免費
  5. 3BT134雙向可控硅手冊
  6. 1.74 MB   |  2次下載  |  1 積分
  7. 4一種新型高效率的服務器電源系統
  8. 0.85 MB   |  1次下載  |  1 積分
  9. 5LabVIEW環形控件
  10. 0.01 MB   |  1次下載  |  1 積分
  11. 6PR735,使用UCC28060的600W交錯式PFC轉換器
  12. 540.03KB   |  1次下載  |  免費
  13. 751單片機核心板原理圖
  14. 0.12 MB   |  1次下載  |  5 積分
  15. 8BP2879DB支持調光調滅的非隔離低 PF LED 驅動器
  16. 1.44 MB  |  1次下載  |  免費

本月

  1. 1開關電源設計原理手冊
  2. 1.83 MB   |  54次下載  |  免費
  3. 2FS5080E 5V升壓充電兩串鋰電池充電管理IC中文手冊
  4. 8.45 MB   |  23次下載  |  免費
  5. 3DMT0660數字萬用表產品說明書
  6. 0.70 MB   |  13次下載  |  免費
  7. 4UC3842/3/4/5電源管理芯片中文手冊
  8. 1.75 MB   |  12次下載  |  免費
  9. 5ST7789V2單芯片控制器/驅動器英文手冊
  10. 3.07 MB   |  11次下載  |  1 積分
  11. 6TPS54202H降壓轉換器評估模塊用戶指南
  12. 1.02MB   |  8次下載  |  免費
  13. 7STM32F101x8/STM32F101xB手冊
  14. 1.69 MB   |  8次下載  |  1 積分
  15. 8基于MSP430FR6043的超聲波氣體流量計快速入門指南
  16. 2.26MB   |  7次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分
主站蜘蛛池模板: 精品成人片深夜| 中文字幕一区在线观看视频| 免费视频网站嗯啊轻点| 九九久久久| 黑丝美女娇喘| 国模精品一区二区三区视频| 国产精品成人无码免费视频| 各种场合肉H校园1V1| 白丝女仆被强扒内裤| a亚洲在线观看不卡高清| 51成人精品午夜福利AV免费七| 曰本女人牲交视频免费| 一二三四在线观看高清电视剧| 亚洲色大成网站www久久九九| 亚洲乱码国产乱码精品精98| 亚洲黄色在线观看| 亚洲香蕉视频在线播放| 曰本aaaaa毛片午夜网站| 中国成人在线视频| 18禁三级黄| cctv官网| 高h乱一受多攻男男| 国产51麻豆二区精品AV视频| 高清国产一区| 国产毛A片久久久久久无码| 国产一区二区三区四区五在线观看 | 国产 亚洲 中文字幕 久久网| 白丝女仆被啪到深夜漫画| 国产成人免费片在线观看| 国产美女久久久久久久久久久| 极品内射少妇精品无码视频| 九九热视频免费| 男gv纯肉免费视频| 日韩精品 电影一区 亚洲高清| 首页_亚洲AV色老汉影院| 亚洲国产精品综合久久一线| 影音先锋av电影| H揉捏娇喘乳叫床NP调教视频| 国产69TV精品久久久久99| 果冻传媒在线观看完整版免费| 久久精品久久精品|