Compare commits
17 commits
main
...
3_6_issues
Author | SHA1 | Date | |
---|---|---|---|
cde82b20fd | |||
216d3ddb77 | |||
589520a7c5 | |||
636b088db5 | |||
39d58820d1 | |||
61645a2f89 | |||
77624ba9ff | |||
0555ad6ef3 | |||
67a4fadb75 | |||
947b652c53 | |||
9fb00bfdd5 | |||
9705216649 | |||
9f6c61fa92 | |||
43f853b815 | |||
0f7411caf7 | |||
a8b0f13cc9 | |||
f13a181a8f |
41 changed files with 21522 additions and 6 deletions
40
.gitignore
vendored
Normal file
40
.gitignore
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
~$*.SLDPRT
|
||||
~$*.SLDASM
|
||||
*.STL
|
||||
|
||||
# For PCBs designed using KiCad: http://www.kicad-pcb.org/
|
||||
# Format documentation: http://kicad-pcb.org/help/file-formats/
|
||||
|
||||
# Temporary files
|
||||
*-backups/
|
||||
*.000
|
||||
*.bak
|
||||
*.bck
|
||||
*.kicad_sch.lck
|
||||
*.kicad_pcb-bak
|
||||
*.kicad_pcb.lck
|
||||
*#auto_saved_files#
|
||||
|
||||
*~
|
||||
_autosave-*
|
||||
*.tmp
|
||||
*-cache.lib
|
||||
*-rescue.lib
|
||||
*-save.pro
|
||||
*-save.kicad_pcb
|
||||
*.sch-bak
|
||||
fp-info-cache
|
||||
|
||||
# Netlist files (exported from Eeschema)
|
||||
*.net
|
||||
|
||||
# Autorouter files (exported from Pcbnew)
|
||||
*.dsn
|
||||
*.ses
|
||||
|
||||
# Visual Studio Code
|
||||
*.vscode/
|
||||
# Platformio .pio
|
||||
.pio/
|
||||
# JetBrains CLion
|
||||
.idea/
|
23
CHANGELOG.md
Normal file
23
CHANGELOG.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 2025-02-28
|
||||
### Добавлено
|
||||
-Датчик HX710B и корпус для него
|
||||
|
||||
### Изменено
|
||||
-Сопряжение робота и вакуумного гриппера
|
||||
|
||||
### Исправлено
|
||||
|
||||
## 2025-02-26
|
||||
### Добавлено
|
||||
-Схема модуля помпы
|
||||
-Проекты модуля помпы и вакуумного гриппера в Solidworks
|
||||
|
||||
### Изменено
|
||||
|
||||
### Исправлено
|
34
README.md
34
README.md
|
@ -1,21 +1,43 @@
|
|||
# Устройство захвата для Robossembler Arm 6-DoF
|
||||
|
||||
## Внешний вид
|
||||
|
||||

|
||||

|
||||
|
||||
## Описание проекта
|
||||
|
||||
- Используется для пневмо-захвата заготовок от 2 гр до 100 гр. размером от 24 см^2.
|
||||
- Принцип действия - на приспособлении установлен вакуумный насос с цифровым барометром (коммуникация с контроллером по i2c-интерфейсу), измеряющим давление
|
||||
- Управляется по интерфейсу CAN. В качестве контроллера используется контроллер [Robossembler Servo](https://gitlab.com/robossembler/servo)
|
||||
- Поддерживает смену присоски в случае выхода одной из них
|
||||
- Захват состоит из двух частей. Модуля с присосками, которая устанавливается на роботе. И модуля с помпой (насосом), который располагается рядом с роботом и подает вакуум по гибкой трубке.
|
||||
- Внутри модуля с помпой есть цифровой барометр (коммуникация с контроллером по i2c-интерфейсу), измеряющий давление. Это обеспечивает обратную связь и позволяет отслеживать состояние захвата.
|
||||
- Для управления помпой и считывания показаний с барометра используется контроллер [Robossembler Servo](https://gitlab.com/robossembler/servo)
|
||||
- Управление осуществляется по интерфейсу CAN.
|
||||
- Основной материал приспособления: печатный пластик PETG любого цвета
|
||||
- Устройство обеспечивает удобство смены присоски в случае её выхода из строя - присоска надевается на металлическую трубку с упорами для однозначного позиционирования, а также удобство смены насоса
|
||||
- Учтена ремонтопригодность захвата. Поддерживается смена присоски в случае износа одной из них или замена насоса.
|
||||
- Класс защиты IP20
|
||||
- Калибровка устройства осуществляется посредством ШИМ в навыке захвата в ПО верхнего уровня
|
||||
- Опционально предусмотреть дополнительный способ управления через уставку давления (без ШИМ)
|
||||
- Программное обеспечение микроконтроллера должно предусматривать диагностику и предиктивное обслуживание устройства
|
||||
|
||||
## Конфигурации системы
|
||||
## Конфигурации захвата
|
||||
|
||||
1. Без ресивера (базовый)
|
||||
2. С ресивером (более надёжный, но и более сложный и дорогой)
|
||||
|
||||
## Спецификация протокола CAN
|
||||
|
||||
Интерфейс устройства позволяет по CAN-шине включать и выключать насос, управлять мощностью всасывания через ШИМ и получать информацию о давлении, измеряемого барометром. В дополнительном способе управление будут передаваться другие данные.
|
||||
Интерфейс устройства позволяет по CAN-шине включать и выключать насос, управлять мощностью всасывания через ШИМ и получать информацию о давлении, измеряемого барометром. В дополнительном способе управление будут передаваться другие данные.
|
||||
|
||||
## Описание директорий
|
||||
|
||||
```[vacuum-gripper]
|
||||
├── img/ # Изображения для README.md
|
||||
└── src/ # Проекты захвата и модуля помпы в формате Solidworks
|
||||
```
|
||||
|
||||
## Список необходимых комплектующих (BOM)
|
||||
- Для помпы можно найти [здесь](/src/Vacuum_pump/vacuum_pump_bom.csv) - /src/Vacuum_pump/vacuum_pump_bom.csv.
|
||||
- Для захвата можно найти здесь.
|
||||
|
||||
|
||||
## Краткая инструкция по изготовлению
|
BIN
img/pump_module_2025-02-23.jpg
Normal file
BIN
img/pump_module_2025-02-23.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
img/vacuum_gripper_2025-02-23.jpg
Normal file
BIN
img/vacuum_gripper_2025-02-23.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
Binary file not shown.
Binary file not shown.
BIN
src/Vacuum_gripper/Присоска.SLDPRT
Normal file
BIN
src/Vacuum_gripper/Присоска.SLDPRT
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/Vacuum_pump/BMP180/BMP180_holder_Top.SLDPRT
Normal file
BIN
src/Vacuum_pump/BMP180/BMP180_holder_Top.SLDPRT
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/BMP180/BMP180_holder_bottom.SLDPRT
Normal file
BIN
src/Vacuum_pump/BMP180/BMP180_holder_bottom.SLDPRT
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/BMP180/BMP180_tee_pipe.SLDPRT
Normal file
BIN
src/Vacuum_pump/BMP180/BMP180_tee_pipe.SLDPRT
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/BMP180/asm_BMP180_in_holder.SLDASM
Normal file
BIN
src/Vacuum_pump/BMP180/asm_BMP180_in_holder.SLDASM
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/Vacuum_pump/HX710B/HX710B_case_bottom.SLDPRT
Normal file
BIN
src/Vacuum_pump/HX710B/HX710B_case_bottom.SLDPRT
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/HX710B/HX710B_case_top.SLDPRT
Normal file
BIN
src/Vacuum_pump/HX710B/HX710B_case_top.SLDPRT
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/HX710B/asm_HX710B_in_case.SLDASM
Normal file
BIN
src/Vacuum_pump/HX710B/asm_HX710B_in_case.SLDASM
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
src/Vacuum_pump/README.md
Normal file
1
src/Vacuum_pump/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
You can find BOM [here](/src/Vacuum_pump/vacuum_pump_bom.csv).
|
21208
src/Vacuum_pump/Tmp/STEP/pressure_sensor_assy_HX710B.STEP
Normal file
21208
src/Vacuum_pump/Tmp/STEP/pressure_sensor_assy_HX710B.STEP
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/Vacuum_pump/XIN5001PM_PUMP_DC24V_10LM_70KPa.SLDPRT
Normal file
BIN
src/Vacuum_pump/XIN5001PM_PUMP_DC24V_10LM_70KPa.SLDPRT
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
85
src/Vacuum_pump/fw/BMP180/BMP180.ino
Normal file
85
src/Vacuum_pump/fw/BMP180/BMP180.ino
Normal file
|
@ -0,0 +1,85 @@
|
|||
#include <Adafruit_BMP085.h>
|
||||
|
||||
/***************************************************
|
||||
This is an example for the BMP085 Barometric Pressure & Temp Sensor
|
||||
|
||||
Designed specifically to work with the Adafruit BMP085 Breakout
|
||||
----> https://www.adafruit.com/products/391
|
||||
|
||||
These pressure and temperature sensors use I2C to communicate, 2 pins
|
||||
are required to interface
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
BSD license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
|
||||
// Connect GND to Ground
|
||||
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
|
||||
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
|
||||
// EOC is not used, it signifies an end of conversion
|
||||
// XCLR is a reset pin, also not used here
|
||||
|
||||
Adafruit_BMP085 bmp;
|
||||
|
||||
int32_t currentPressure;
|
||||
int32_t minPressure = 32767;
|
||||
int32_t maxPressure = -1;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
if (!bmp.begin()) {
|
||||
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
|
||||
while (1) {}
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.print("Temperature = ");
|
||||
Serial.print(bmp.readTemperature());
|
||||
Serial.println(" *C");
|
||||
|
||||
currentPressure=bmp.readPressure();
|
||||
if (currentPressure < minPressure) minPressure=currentPressure;
|
||||
if (currentPressure > maxPressure) maxPressure=currentPressure;
|
||||
|
||||
Serial.print("Pressure= ");
|
||||
Serial.print(currentPressure);
|
||||
Serial.print(" Pa, ");
|
||||
|
||||
Serial.print("minPressure= ");
|
||||
Serial.print(minPressure);
|
||||
Serial.print(" Pa, ");
|
||||
|
||||
Serial.print("maxPressure= ");
|
||||
Serial.print(maxPressure);
|
||||
Serial.print(" Pa, ");
|
||||
|
||||
Serial.print("difference= ");
|
||||
Serial.print(maxPressure-minPressure);
|
||||
Serial.println(" Pa.");
|
||||
|
||||
// Calculate altitude assuming 'standard' barometric
|
||||
// pressure of 1013.25 millibar = 101325 Pascal
|
||||
Serial.print("Altitude = ");
|
||||
Serial.print(bmp.readAltitude());
|
||||
Serial.println(" meters");
|
||||
|
||||
Serial.print("Pressure at sealevel (calculated) = ");
|
||||
Serial.print(bmp.readSealevelPressure());
|
||||
Serial.println(" Pa");
|
||||
|
||||
// you can get a more precise measurement of altitude
|
||||
// if you know the current sea level pressure which will
|
||||
// vary with weather and such. If it is 1015 millibars
|
||||
// that is equal to 101500 Pascals.
|
||||
Serial.print("Real altitude = ");
|
||||
Serial.print(bmp.readAltitude(101500));
|
||||
Serial.println(" meters");
|
||||
|
||||
Serial.println();
|
||||
delay(1000);
|
||||
}
|
46
src/Vacuum_pump/fw/HX710A/HX710A.ino
Normal file
46
src/Vacuum_pump/fw/HX710A/HX710A.ino
Normal file
|
@ -0,0 +1,46 @@
|
|||
//
|
||||
// FILE: HX710A_demo.ino
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: test basic behaviour and performance
|
||||
// URL: https://github.com/RobTillaart/HX710AB
|
||||
|
||||
|
||||
#include "HX710AB.h"
|
||||
|
||||
// adjust pins to your setup
|
||||
uint8_t dataPin = 6;
|
||||
uint8_t clockPin = 7;
|
||||
|
||||
HX710A HX(dataPin, clockPin);
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println();
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("HX710AB_LIB_VERSION: ");
|
||||
Serial.println(HX710AB_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
HX.begin();
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
int32_t value = HX.read(false);
|
||||
Serial.print("VALUE: \t");
|
||||
Serial.print(value);
|
||||
Serial.println();
|
||||
delay(1000);
|
||||
|
||||
value = HX.read(true);
|
||||
Serial.print("TEMP: \t");
|
||||
Serial.println(value);
|
||||
Serial.println();
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
34
src/Vacuum_pump/fw/HX710B/HX710B.ino
Normal file
34
src/Vacuum_pump/fw/HX710B/HX710B.ino
Normal file
|
@ -0,0 +1,34 @@
|
|||
#include "HX710B.h" // Подключаем библиотеку Барометрический датчик давления 0-40 кПа HX710B
|
||||
|
||||
const int DOUT = 2; // Указываем вывод OUT
|
||||
const int SCLK = 3; // Указываем вывод CLK
|
||||
|
||||
HX710B pressure_sensor; // Создаем объект
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200); // Открываем последовательную связь, на скорости 57600
|
||||
//pressure_sensor.begin(DOUT, SCLK); // Инициализируем датчик
|
||||
pressure_sensor.begin(2, 3, 128); // Инициализируем датчик
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
if (pressure_sensor.is_ready()) {
|
||||
Serial.print("RawData:");
|
||||
//Serial.print(pressure_sensor.read());
|
||||
Serial.print(pressure_sensor.read_average(3));
|
||||
|
||||
Serial.print(". Pascal:");
|
||||
Serial.print(pressure_sensor.pascal());
|
||||
Serial.print(". ATM:");
|
||||
Serial.print(pressure_sensor.atm());
|
||||
Serial.print(". mmHg:");
|
||||
Serial.print(pressure_sensor.mmHg());
|
||||
Serial.print(". PSI:");
|
||||
Serial.println(pressure_sensor.psi());
|
||||
Serial.println();
|
||||
} else {
|
||||
Serial.println("Pressure sensor not found.");
|
||||
}
|
||||
delay(1000);
|
||||
}
|
39
src/Vacuum_pump/fw/HX710_raw/HX710_raw.ino
Normal file
39
src/Vacuum_pump/fw/HX710_raw/HX710_raw.ino
Normal file
|
@ -0,0 +1,39 @@
|
|||
// HX710B Weighing Sensor Example Code for Arduino UNO
|
||||
#define DOUT 2
|
||||
#define PD_SCK 3
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
pinMode(PD_SCK, OUTPUT);
|
||||
pinMode(DOUT, INPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
long weight = readWeight();
|
||||
Serial.print("Weight: ");
|
||||
Serial.println(weight);
|
||||
Serial.println();
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
long readWeight() {
|
||||
long count;
|
||||
unsigned char i;
|
||||
pinMode(DOUT, INPUT);
|
||||
|
||||
while(digitalRead(DOUT));
|
||||
|
||||
count=0;
|
||||
pinMode(PD_SCK, OUTPUT);
|
||||
for(i=0;i<24;i++) {
|
||||
digitalWrite(PD_SCK, HIGH);
|
||||
count=count<<1;
|
||||
digitalWrite(PD_SCK, LOW);
|
||||
if(digitalRead(DOUT))
|
||||
count++;
|
||||
}
|
||||
digitalWrite(PD_SCK, HIGH);
|
||||
count ^= 0x800000;
|
||||
digitalWrite(PD_SCK, LOW);
|
||||
return(count);
|
||||
}
|
BIN
src/Vacuum_pump/fw/lib/hx710B_pressure_sensor-main.zip
Normal file
BIN
src/Vacuum_pump/fw/lib/hx710B_pressure_sensor-main.zip
Normal file
Binary file not shown.
BIN
src/Vacuum_pump/pressure_sensor_assy_HX710B.STEP.SLDPRT
Normal file
BIN
src/Vacuum_pump/pressure_sensor_assy_HX710B.STEP.SLDPRT
Normal file
Binary file not shown.
Binary file not shown.
18
src/Vacuum_pump/vacuum_pump_bom.csv
Normal file
18
src/Vacuum_pump/vacuum_pump_bom.csv
Normal file
|
@ -0,0 +1,18 @@
|
|||
3D printed parts;;;;
|
||||
ITEM NO.;PART NUMBER;QTY.;DESCRIPTION;LINK
|
||||
1;Pump_base;1;;
|
||||
2;Pump_case_side_cover;1;;
|
||||
3;Pump_case_top_cover;1;;
|
||||
4;BMP180_holder_bottom;1;;
|
||||
5;BMP180_holder_Top;1;;
|
||||
6;BMP180_tee_pipe;1;;
|
||||
Fasteners;;;;
|
||||
7;DIN 7991 M3x12;8;;
|
||||
8;DIN 7991 M4x16;4;;
|
||||
Other parts;;;;
|
||||
9;XIN5001PM_PUMP_DC24V_10 L/M_70KPa;1;;
|
||||
10;motor_controller;1;;
|
||||
11;Air_filter;1;;
|
||||
12;Brass_tube_6mm;40mm;;
|
||||
13;Plastic_tube_6x8mm;100mm;;
|
||||
14;BMP180 (Barometric Pressure Sensor);1;;
|
|
BIN
src/Vacuum_pump/vacuum_pump_bom.xlsx
Normal file
BIN
src/Vacuum_pump/vacuum_pump_bom.xlsx
Normal file
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue