Compare commits

...
Sign in to create a new pull request.

17 commits

Author SHA1 Message Date
cde82b20fd Update README.md 2025-03-11 18:28:41 +03:00
216d3ddb77 Update README.md 2025-03-11 18:27:54 +03:00
589520a7c5 Update README.md 2025-03-11 18:27:05 +03:00
636b088db5 Update README.md 2025-03-11 18:25:45 +03:00
39d58820d1 Another test 2025-03-11 18:24:55 +03:00
61645a2f89 Another test 2025-03-11 18:21:52 +03:00
77624ba9ff Update README.md 2025-03-11 17:12:20 +03:00
0555ad6ef3 Update README.md 2025-03-11 17:11:12 +03:00
67a4fadb75 Another change 2025-03-11 17:10:34 +03:00
947b652c53 Edit readme.md 2025-03-11 17:09:07 +03:00
9fb00bfdd5 Add readme.md in vacuum_pump folder 2025-03-11 17:07:15 +03:00
9705216649 New_sensor_and_BOM
Add 3d-models and code for new sensor.
Add BOM.
2025-03-11 16:59:13 +03:00
9f6c61fa92 Добавил конфигурацию под 20мм присоски. Также увеличил длину гриппера на 100мм. 2025-03-03 20:18:05 +03:00
43f853b815 Change pics size 2025-02-28 15:37:54 +03:00
0f7411caf7 Some changes in readme
Add directory descriptions
2025-02-28 15:33:56 +03:00
a8b0f13cc9 Pics, changelog and some changes in Readme. 2025-02-28 15:28:32 +03:00
f13a181a8f Robot and gripper pairing 2025-02-28 14:42:26 +03:00
41 changed files with 21522 additions and 6 deletions

40
.gitignore vendored Normal file
View 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
View 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
### Изменено
### Исправлено

View file

@ -1,21 +1,43 @@
# Устройство захвата для Robossembler Arm 6-DoF
## Внешний вид
![](img/vacuum_gripper_2025-02-23.jpg)
![](img/pump_module_2025-02-23.jpg)
## Описание проекта
- Используется для пневмо-захвата заготовок от 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.
- Для захвата можно найти здесь.
## Краткая инструкция по изготовлению

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
You can find BOM [here](/src/Vacuum_pump/vacuum_pump_bom.csv).

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

View 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);
}

View 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 --

View 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);
}

View 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);
}

Binary file not shown.

Binary file not shown.

View 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;;
1 3D printed parts
2 ITEM NO. PART NUMBER QTY. DESCRIPTION LINK
3 1 Pump_base 1
4 2 Pump_case_side_cover 1
5 3 Pump_case_top_cover 1
6 4 BMP180_holder_bottom 1
7 5 BMP180_holder_Top 1
8 6 BMP180_tee_pipe 1
9 Fasteners
10 7 DIN 7991 M3x12 8
11 8 DIN 7991 M4x16 4
12 Other parts
13 9 XIN5001PM_PUMP_DC24V_10 L/M_70KPa 1
14 10 motor_controller 1
15 11 Air_filter 1
16 12 Brass_tube_6mm 40mm
17 13 Plastic_tube_6x8mm 100mm
18 14 BMP180 (Barometric Pressure Sensor) 1

Binary file not shown.