Медное гальваническое покрытие: умная система на Arduino UNO
Компоненты и материалы
| Arduino UNO | × | 1 |
| Реле (универсальное) | × | 1 |
| Тактическая кнопка 12 мм (SparkFun) | × | 1 |
| Светодиод (универсальный) | × | 2 |
| Резистор 100 Ом | × | 2 |
| Крокодиловые зажимы | × | 1 комплект |
| Ведро (пластиковое) | × | 1 |
| Акуариумный компрессор (воздушный насос) | × | 1 |
| Buck-конвертер (понижающий) | × | 1 |
| Медная трубка | × | 1 |
| Сульфат меди (CuSO₄) | × | 1 |
| Дистиллированная вода | × | 1 |
| Набор Elegoo Starter Kit | × | 1 |
| Проводящая краска | × | 1 |
Инструменты
- 3D-принтер (для печати крепёжей трубки и подвеса катода)
О проекте
Гальваническое покрытие — процесс восстановления ионов металла электрическим током для образования тонкого прочного металлического слоя на электроде.
Причины применения:
- Коррозионная стойкость
- Улучшение механических свойств
- Эстетика — выглядит круто :)
Система использует ведро с электролитом из сульфата меди и медной трубки в качестве анода для покрытия металлических предметов.
Электролит приготовил смешением сульфата меди и дистиллированной воды. Соотношение определяет проводимость и скорость отложения. Начал с 1 унции сульфата на 2 чашки воды.
Установил медную трубку вдоль стенки ведра на 3D-напечатанных клипсах (напечатано на Anet A8). Трубку из компрессора проложил через медную трубку к дну раствора — это агитирует электролит во время процесса. Также напечатал держатель для подвеса катода в центре ванны.

Arduino
Arduino Uno управляет реле для включения питания на электролит. Включает на 10 секунд, выключает на 1 секунду — значения меняются в скетче.

Простая кнопка запускает/останавливает процесс.

/* Electroplating
* Toggle relay with set on and off durations
* Power switch interrupt to toggle cycling of relay
*/
const int powerSwitch = 2;
const int bathLed = 6;
const int relay = 7;
const int powerLed = 13;
long onTime = 10000;
long offTime = 1000;
volatile bool isActive = false;
void turnOn() {
digitalWrite(relay, HIGH);
digitalWrite(bathLed, HIGH);
}
void turnOff() {
digitalWrite(relay, LOW);
digitalWrite(bathLed, LOW);
}
void toggleState() {
isActive = !isActive;
digitalWrite(powerLed, isActive);
}
// Delay with escape logic
void await(long timeToWait) {
for(int j=0; j<timeToWait; j++) {
delay(1);
if(isActive == LOW) return;
}
}
void setup() {
pinMode(relay, OUTPUT);
pinMode(powerLed, OUTPUT);
pinMode(powerSwitch, INPUT);
digitalWrite(powerSwitch, HIGH); // pull-up
attachInterrupt(digitalPinToInterrupt(powerSwitch), toggleState, FALLING);
}
void loop() {
while(isActive) {
turnOn();
await(onTime);
turnOff();
await(offTime);
}
}
Питание от 4S LiPo через buck-конвертер (нет лабораторного БП). Планирую тестировать разные напряжения для оптимального покрытия.



Работает ли это?
Начал с покрытия монет. При ~3 В ток составлял ~600 мА. Каждую монету держал 5–10 минут — удивился скорости.


Работает! Но монеты покрывали многие. Заказал проводящую краску и начал покрывать 3D-печати.

3D-печати
Первая попытка — кольцо в виде волка. Печать не идеальна, но хорош первый тест. Покрывал 4 часа — медленно из-за недостатка слоёв проводящей краски.

Потом нанёс много краски на другие печати — надеялся на лучшую проводимость.

Печати сложнее покрывать, нужны ещё эксперименты с настройками. Но результаты уже радуют.




Нужно ещё тестировать параметры, но в целом очень доволен. Надеюсь, вдохновил вас попробовать гальванику.
Особая благодарность
Спасибо Elegoo за спонсорство — прислали Super Starter Kit со всем необходимым для Arduino: Uno, протошилд, макетку, реле, резисторы, светодиоды, кнопку, перемычки.
Набор можно купить здесь: Amazon
Код
ElectroToggle (C/C++ для Arduino Uno)
/* Electroplating
* Toggle relay with set on and off durations
* Power switch interrupt to toggle cycling of relay
*/
const int powerSwitch = 2;
const int bathLed = 6;
const int relay = 7;
const int powerLed = 13;
long onTime = 10000;
long offTime = 1000;
volatile bool isActive = false;
void turnOn() {
digitalWrite(relay, HIGH);
digitalWrite(bathLed, HIGH);
}
void turnOff() {
digitalWrite(relay, LOW);
digitalWrite(bathLed, LOW);
}
void toggleState() {
isActive = !isActive;
digitalWrite(powerLed, isActive);
}
void await(long timeToWait) {
for(int j=0; j<timeToWait; j++) {
delay(1);
if(isActive == LOW) return;
}
}
void setup() {
pinMode(relay, OUTPUT);
pinMode(powerLed, OUTPUT);
pinMode(powerSwitch, INPUT);
digitalWrite(powerSwitch, HIGH);
attachInterrupt(digitalPinToInterrupt(powerSwitch), toggleState, FALLING);
}
void loop() {
while(isActive) {
turnOn();
await(onTime);
turnOff();
await(offTime);
}
}
3D-модели
Клипсы для крепления медной трубки к ведру и держатель катода.
Схемы

Производственный процесс
- TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Камера охраны с детектором движения на ESP32-CAM и отправкой фото в Discord
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Создание рулетки на 37 светодиодов с Arduino Nano
- Мини-аркада на ATtiny85: Snake — ручная OLED-консоль своими руками
- Портативный дальномер на Arduino Nano: HC-SR04, питание 18650, 3D-корпус
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
- Создание потрясающих световых последовательностей с Arduino и сдвиговым регистром
- Умная розетка 120В на Arduino с часами реального времени