synchronization

This commit is contained in:
Vladimir Latukhin 2025-06-03 21:15:39 +03:00
parent 3e04b52e84
commit 3d6510ae39
34 changed files with 25296 additions and 5 deletions

View file

@ -12,13 +12,8 @@
- Внутри модуля с помпой есть цифровой барометр (коммуникация с контроллером по i2c-интерфейсу), измеряющий давление. Это обеспечивает обратную связь и позволяет отслеживать состояние захвата.
- Для управления помпой и считывания показаний с барометра используется контроллер [Robossembler Servo](https://gitlab.com/robossembler/servo)
- Управление осуществляется по интерфейсу CAN.
- Захват состоит из двух частей. Модуля с присосками, которая устанавливается на роботе. И модуля с помпой (насосом), который располагается рядом с роботом и подает вакуум по гибкой трубке.
- Внутри модуля с помпой есть цифровой барометр (коммуникация с контроллером по i2c-интерфейсу), измеряющий давление. Это обеспечивает обратную связь и позволяет отслеживать состояние захвата.
- Для управления помпой и считывания показаний с барометра используется контроллер [Robossembler Servo](https://gitlab.com/robossembler/servo)
- Управление осуществляется по интерфейсу CAN.
- Основной материал приспособления: печатный пластик PETG любого цвета
- Учтена ремонтопригодность захвата. Поддерживается смена присоски в случае износа одной из них или замена насоса.
- Учтена ремонтопригодность захвата. Поддерживается смена присоски в случае износа одной из них или замена насоса.
- Класс защиты IP20
- Калибровка устройства осуществляется посредством ШИМ в навыке захвата в ПО верхнего уровня
- Опционально предусмотреть дополнительный способ управления через уставку давления (без ШИМ)
@ -40,4 +35,9 @@
└── src/ # Проекты захвата и модуля помпы в формате Solidworks
```
## Список необходимых комплектующих (BOM)
- Для помпы можно найти [здесь](/src/Vacuum_pump/vacuum_pump_bom.csv). (/src/Vacuum_pump/vacuum_pump_bom.csv)
- Для захвата можно найти [здесь](/src/Vacuum_gripper/vacuum_gripper_bom.csv). (/src/Vacuum_gripper/vacuum_gripper_bom.csv)
- Общий список [здесь](/src/summary_bom.csv). (/src/summary_bom.csv)
## Краткая инструкция по изготовлению

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,6 @@
ITEM NO.;PART NUMBER;DESCRIPTION;QTY.
3D printed parts;;;;
1;Gripper_base;1;;
Other parts;;;;
2;Brass_tube_5mm;40mm;;
3;Vacuum_lifter(cup);2;;
1 ITEM NO.;PART NUMBER;DESCRIPTION;QTY.
2 3D printed parts;;;;
3 1;Gripper_base;1;;
4 Other parts;;;;
5 2;Brass_tube_5mm;40mm;;
6 3;Vacuum_lifter(cup);2;;

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

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.

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.

28
src/summary_bom.csv Normal file
View file

@ -0,0 +1,28 @@
ITEM NO.;PART NUMBER;QTY.;DESCRIPTION;LINK
3D printed parts;;;;
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;;
7;Gripper_base;1;;
Fasteners;;;;
8;DIN 7991 M3x12;8;;
9;DIN 7991 M4x16;4;;
Other parts;;;;
10;XIN5001PM_PUMP_DC24V_10 L/M_70KPa;1;;
11;motor_controller;1;;
12;Air_filter;1;;
13;Brass_tube_5mm;40mm;;
14;Brass_tube_6mm;40mm;;
15;Plastic_tube_6x8mm;100mm;;
16;BMP180 (Barometric Pressure Sensor);1;;
17;Vacuum_lifter(cup);2;;
1 ITEM NO. PART NUMBER QTY. DESCRIPTION LINK
2 3D printed parts
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 7 Gripper_base 1
10 Fasteners
11 8 DIN 7991 M3x12 8
12 9 DIN 7991 M4x16 4
13 Other parts
14 10 XIN5001PM_PUMP_DC24V_10 L/M_70KPa 1
15 11 motor_controller 1
16 12 Air_filter 1
17 13 Brass_tube_5mm 40mm
18 14 Brass_tube_6mm 40mm
19 15 Plastic_tube_6x8mm 100mm
20 16 BMP180 (Barometric Pressure Sensor) 1
21 17 Vacuum_lifter(cup) 2