DIY使用Arduino给3D打印机增加完事后自动关机功能

DIY低成本热成像仪:用Arduino+3D打印机破解红外测温 红外热成像技术基于物体热辐射原理,通过传感器捕捉红外辐射并转换为温度数据。其核心在于热电堆传感器利用热电效应将温度差转化为电信号,再经模数转换和数字处理输出。这项技术在工业检测、设备维护和能源审计等领域具有重要价值,能够实现非接触式温度测量和热分布可视化。本文聚焦于一种创新的低成本实现方案:通过协议破解将廉价红外测温枪的单点传感器与Arduino和3D打印机集成,构建一个**扫描式热成像系统**。该方案利用3D打印机的高精度二维运动平台实现逐点扫描,并结合Python进行数据采集与热图生成,为理解**嵌入式 阅读详情

大家都知道,打印完毕一个模型通常都需要好几个小时甚至几十个小时,人总不能一直盯着吧。如果打印完毕后不及时关机,一方面持续耗电,一方面也降低设备寿命;在家中持续发出声光对家人也有一定影响。

我使用的是极光尔沃的Z603打印机,精度不错,但是不具备打印完事后自动关机的功能。于是自己动手给它制作了一个自动关机模块。

首先上图,这是个模块结构示意图:


图中只有手动开关和指示灯是显现在机箱外部的,其他均隐藏在机箱内部会边框内,不会影响外观。

其中Arduino模块作为总控制系统,接收来自轻触开关或手动开关的指令,以决定是否该通过继电器控制220v电源断电。降压模块是借用打印机24v内置开关电源降压后给Arduino供电。指示灯用来指示当前状态。

电路图如下:


该图已经很清楚了,就不再详细叙述了。

控制原理就是:

1. 用户通过原开关开机后,Arduino上电,程序控制继电器闭合,此时用户可以关闭原开关,依靠继电器维持打印机继续工作。此时LED灯常亮。

2. 当打印机打印完毕后,打印机会自动移动喷嘴y轴滑块到最大边缘位置,此时会触动和压住轻触开关(开关固定在一个海绵座上,防止压力过大造成损坏),此时Arduino会监测到此事件,开始持续每秒闪烁LED一次。继续判断该开关是否持续按压30s(因为有时候打印模型时也可能会短时间到达y轴最大位置,防止误关机)。30s时间到,则Arduino控制LED快速闪烁3次,控制继电器关闭总电源。

3. 如果用户随时想关机,可以按下手动开关。为了防止误碰开关造成关机,此处程序判断需要持续按下该开关3s,系统才会快速闪烁LED 3次,然后控制继电器关闭总电源。


下面是实际改装过程图:

(1)降压模块,固定在风扇螺丝上



(2)两个继电器用胶布缠在一起,固定在开关附近



(3)烧录程序并焊接完成的Arduino模块,以及自己打印的LED与开关控制盒


(4)Arduino放入阻燃盒



(5)最终布线完毕,仅留下LED和开关控制盒在外部,美观&方便



下面是Arudino程序代码:

/* 
 * 3D Printer AutoPowerDown
 * Copyright sendwave@163.com
 * 2017-6-28
*/

const int triggerButtonPin = 9;     // 限位触发按钮
const int manualButtonPin = 3;      // 手动关机按钮
const int relayPin =  2;            // 继电器
const int ledPin =  8;              // the number of the LED pin

const int LOOP_DELAY_MSECONDS =  100;           //每次循环毫秒数
const int TRIGGER_POWERDOWN_MSECONDS =  30000;  //触发按钮多长时间关机

int triggerButtonState = 0;         // variable for reading the pushbutton status
int manualButtonState = 0;          // variable for reading the pushbutton status
int continuousTriggerCount = 0;     //连续按下触发按钮的计数(时间)


void setup() {
  
  // 开启串行通信,并设置其频率为9600。
  Serial.begin(9600);
  int nTry = 0;
  while (!Serial) {    
    nTry ++;
    delay(50); // wait for serial port to connect. Needed for native USB port only
    if(nTry > 20) //防止针对部分计算机和手机无法打开串口造成死锁
      break;
  }
   
  
  // 初始化LED和继电器
  pinMode(ledPin, OUTPUT);
  pinMode(relayPin, OUTPUT);
  
  // 并设置使用内部上拉电阻(注意,这里使用内置的上拉电阻,无需再自己串联电阻,但需要将button连接到GRND而不是5V,同时按下按钮的电平状态正好相反)
  pinMode(triggerButtonPin, INPUT_PULLUP);
  pinMode(manualButtonPin, INPUT_PULLUP);

  
  delay(1000);
  
  digitalWrite(ledPin, HIGH);
  digitalWrite(relayPin, HIGH);
  
  Serial.println("done.");
}

void loop() { 
  
  delay(LOOP_DELAY_MSECONDS);

  triggerButtonState = !digitalRead(triggerButtonPin); //将状态取反使用更方便
  manualButtonState = !digitalRead(manualButtonPin); //将状态取反使用更方便

  //如果什么按钮都没有按下
  if ((triggerButtonState == LOW) && (manualButtonState == LOW)) {
    continuousTriggerCount = 0;
    return;
  } 
  
  Serial.print("t:");
  Serial.print(triggerButtonState);
  Serial.print("  m:");
  Serial.println(manualButtonState);
  
  Serial.print("continuousTriggerCount:");
  Serial.println(continuousTriggerCount);

  //如果按下了触发按钮
  if (triggerButtonState == HIGH)
  {
    continuousTriggerCount += 21;
    
    //连续触发按钮时间达到了关机条件
    if(continuousTriggerCount * LOOP_DELAY_MSECONDS > TRIGGER_POWERDOWN_MSECONDS)
    { 
      Serial.println("Prepare Powerdown ... ");
      
      //闪烁LED 5次
      for(int i=0;i<5;i++)
      { 
        digitalWrite(ledPin, LOW);
        delay(200); 
        digitalWrite(ledPin, HIGH);
        delay(200); 
      }
      //关闭继电器
      digitalWrite(relayPin, LOW);
      digitalWrite(ledPin, LOW);

      
      Serial.println("Powerdowned.");
      delay(50000);       
    }
    
    digitalWrite(ledPin, LOW);
    delay(1000); 
    digitalWrite(ledPin, HIGH);
    delay(1000); 


  } 


  //如果按下了手动关机按钮(持续3s会关机)
  if (manualButtonState == HIGH)
  {    
    continuousTriggerCount += 9; //30000/(9*1000)需要长按大约3s会关机
  
    //连续触发按钮时间达到了关机条件
    if(continuousTriggerCount * LOOP_DELAY_MSECONDS > TRIGGER_POWERDOWN_MSECONDS)
    {
      Serial.println("Soon will powerdown ... ");
      
      //闪烁LED 5次
      for(int i=0;i<5;i++)
      { 
        digitalWrite(ledPin, LOW);
        delay(200); 
        digitalWrite(ledPin, HIGH);
        delay(200); 
      }
      //关闭继电器
      digitalWrite(relayPin, LOW);
      digitalWrite(ledPin, LOW);
      
      Serial.println("Powerdowned.");
      delay(50000);    
      
    } 
  }
}


从零DIY 3D打印机:Arduino与RAMPS核心搭建全攻略 3D打印技术作为快速成型领域的核心技术,其原理基于数字模型的分层制造。通过逐层堆积材料,它实现了从三维设计到物理实体的高效转化。这项技术的核心价值在于其开源、可定制化和对硬件原理的深度揭示,使其成为学习机电一体化、运动控制和嵌入式系统的绝佳实践平台。在熔融沉积成型(FDM)这一主流技术路径中,以Arduino开源硬件平台和RAMPS扩展板为核心的控制方案,因其模块化设计、丰富的社区资源和高性价比,成为众多创客和硬件爱好者入门与深入理解的首选。本文将围绕这一经典组合,深入剖析从机械结构设计、核心部件选型到固件 阅读详情

相关推荐

RAMPS电路图

RAMPS电路图

3D打印机DIY之三------Arduino开发环境构建和Marlin固件配置

一、Arduino开发环境 1、搜索Arduino IDE下载安装即可。 2、使用VS code开发Arduino Arduino IDE很简单,很多功能都没有,使用起来很不方便。因此建议使用Visual Studio Code来进行Arduino程序的开发。Visual Studio Code可以编辑代码、编译程序和下载功能,可以完全替代Arduino。 ...

qlexcel的专栏 1万+

(源码)基于Arduino的3D打印机控制固件.zip

# 基于Arduino的3D打印机控制固件 ## 项目简介 本项目是一款基于Arduino的开源3D打印机固件,用于控制和管理3D打印机的各项操作,涵盖运动控制、温度控制、文件读取等功能。它融合了Sprinter、grbl等代码,并包含众多原创部分,广泛应用于RepRap、MakerBot等开源3D打印机项目。 ## 项目的主要特性和功能 1. 运动控制基于中断的运动控制,具备线性加速、高步速率、前瞻功能,支持全限位开关、圆弧运动,采用CoreXY运动学。 2. 温度管理基于中断的温度保护,有温度过采样、动态温度设定(AutoTemp)功能,支持PID调优。 3. 存储与打印支持SD卡及SD卡文件夹,有SD卡自动启动功能。 4. 显示与交互支持LCD及菜单系统,可进行自主SD卡打印控制。 5. 参数存储支持EEPROM存储最大速度、最大加速度等变量。

arduino 休眠 节能_Ardino节电模式、自动休眠、按钮打开和关闭

#include #include //#include #include int pin = 13;volatile int f_sleepButton = 0;volatile int f_sleepTimer = 0;void setup() {//Serial.begin(9600);//Serial.print("Welcome to use!\n");pinMode(pin, OUTP...

weixin_28726391的博客 1701

(源码)基于Arduino平台的3D打印机固件系统.zip

# 基于Arduino平台的3D打印机固件系统 ## 项目简介 这是一个基于Arduino平台的开源3D打印机固件项目。此项目为3D打印机提供全面的控制与管理功能,涵盖硬件驱动、温度管理、运动控制、通信接口等。借助Arduino IDE进行开发,适用于多种类型3D打印机,还支持自动调平、SD卡打印等高级功能。 ## 项目的主要特性和功能 硬件驱动包含步进电机、加热器、风扇等硬件设备的驱动程序,保障打印机硬件正常运行。 温度管理支持加热床与多个挤出机,可单独控制温度,具备温度设置、读取及PID控制功能。 运动控制提供直线移动、非线性移动、挤出和收缩动作等控制功能,支持GCode和MCode的解析与执行。 通信接口通过串口与上位机通信,接收并执行GCode命令,返回打印机状态信息。 高级功能支持自动调平、SD卡打印、序列打印、温度控制等,提升打印准确性与效率。 ## 安装使用步骤

基于ESP32S的3D打印机主板电路设计方案(原理图)-电路方案

是基于esp32的3D打印主板。 它使用马林固件,可以访问https://marlinfw.org/ 了解详细信息 。 1. ESP-Helios打印机控制板有五个驱动程序, 其中两个用于双Z控制。 2. ESP-Helios可以根据需要选择不同的驱动程序。 3.主板上仅保留一个OLED屏幕接口(ICC接口)和一个编码器接口, 您可以设置引脚定义以使用串行屏幕。 4.带有3个大功率mos。 热床可以直接驱动。 (如果热床所需的电流太大, 建议连接更大的MOS)。 5. 5. ESP-Helios PCB的尺寸仅为80 * 80,但是在这么小的主板上插入了5个驱动轴。

Arduino控制微小的六足3D打印机器人

查看原文前段时间,我在 Thingiverse 上发现了一个 3D 打印的 Micro-Hexapod。 我开始通过以下方式进行研究:创建可 3D 打印的新配件/组件探索驱动这个六足位移台的可能方法。结果如下:一个完全适合它的参数化电池座,无需螺丝一个参数化笔架,可将这个六足机器人转换成绘图机器人!您可以通过蓝牙、智能手机(在这里您还可以找到一个 Android 应用程序!)或 PC驱动这个六足机器人您可以使用双节棍来驱动这个六足机器人六足机器人可以充当光跟随器现在您将看到如何构建一个完整的工作六足机器人!

acktomas的博客 1752

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

Ardiuno学习笔记记录222

#digitalWrite():若通过pinMode()将引脚设置成输出模式(OUTPUT),可以通过将digitalWrite()设置成HIGH(5伏特)或LOW(GND/0伏特)3,Arduino的引脚设置为INPUT状态时可以识别两种状态(数字信号的输入输出):HIGH(高电平)LOW(低电平)1,pinMode ()函数设置成输入INPUT模式,引脚为高阻抗状态,此时引脚可用于读取传感器信号或开关信号。关于电阻:LED有2v压降,在电阻上有3v压降,应使得I=20mA,可得R=150欧姆。

2201_75664970的博客 257

智能问数产品背后的Agent技术揭秘:从任务分解到工具调用的完整流程

本文深入解析智能问数产品背后的Agent技术,从任务分解到工具调用的完整流程。通过大模型驱动的语义理解和动态工具调度,Agent系统能高效处理复杂数据分析需求,显著提升响应速度和准确率。文章详细介绍了模块化架构、任务分解机制、动态工具调用及双通道记忆系统等核心技术,展示了大模型时代的新型数据分析范式。

weixin_30399821的博客 438

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 448

arduino-开关

【代码】arduino-开关。

m0_56945138的博客 2338

基于FPGA的UDP 通信(六)

本文基于FPGA和MATLAB对千兆以太网通信模块UDP数据发送(FPGA发送)进行联合调试。

记录所学,分享知识,结识挚友 4729

自制3D打印机

自制3D打印机 文章目录前言一、机械结构二、扩展版的使用三、程序下载四、打印软件的使用 前言         3D打印机我想很多理工科的学生应该不陌生,作为一个什么东西都能造的3D打印机在淘宝上价格都是千元起步。作为一个DIY爱好者,这个钱谁也无法从我的手中赚走。所以我就用300多块制造一台精度精度还行的3D打印机。材料清单如下:         在市场上有很多种

m0_47060222的博客 1万+

【推荐100个unity插件之27】推荐5种办法实现unity人物布料系统 衣服裙子飘动 头发飘动 胸部抖动 骨骼模拟 配件摆动 尾巴摆动 —— 主要是Magica Cloth 2插件

要实现Unity中的人物布料系统并使其具备动态效果,可以探索多种技术方法。这些方法不仅可以使衣服、裙子、头发等元素自然飘动,还可以实现胸部抖动、骨骼模拟、配件摆动和尾巴摆动等细致效果。本文将深入探讨五种实现这些动态效果的技术方案,从基础的物理模拟到高级的动画控制,帮助你打造逼真的人物表现。本文主要探究Magica Cloth 2的使用,因为我想探究最好的实现方法,而不是探究最多的实现方法。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6298

杰理AC695N系列芯片红外遥控按键使用教程

本文介绍了杰理AC695N芯片红外按键功能的配置和使用方法。主要内容包括:硬件连接说明(红外接收头接线至GPIO口)、软件配置(使能红外功能并设置接收引脚)、按键映射表修改(原始键值到逻辑按键的转换)以及按键扫描参数调整(消抖、长按时间等)。重点展示了三级映射机制,指导如何根据实际遥控器键值修改映射关系,实现不同模式下(蓝牙/音乐/FM)的自定义按键功能。最后提供了调试方法,可通过串口打印查看遥控器原始键值。

qq_42014563的博客 1463

arduino平台的3D打印机学习笔记

❤ 2018.8.22 开了个新坑,其实也不算是新坑,毕竟3d打印机的设想早已有之,只是一直缺少实(ma)践(ni),现在有时间有闲钱,所以就开始着手了。 我的计划是: 1、查找资料,熟悉marlin固件; 2、先用买来的控制板实现对现有的delta平台的控制,能够实现动作; 3、搭建完整的delta3D打印平台,实现3D打印功能; 4、编写codesys平台的3D打印...

ooorczgc的博客 1万+

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2603

使用Arduino的DIY自平衡机器人

原文地址:https://circuitdigest.com/microcontroller-projects/arduino-based-self-balancing-robot 使用Arduino的DIY自平衡机器人 ARDUINO项目 在受到Segway的RYNO马达和其他自平衡踏板车的启发之后,我一直想构建自己的Arduino Segway机器人。考虑了一下,我决定使用Arduino构建自平衡机器人。这样,我将能够掌握所有这些踏板车背后的基本概念,并了解PID算法的工作原理。 开始构建后,我意识到

acktomas的博客 4246

独家改进|基于YOLO26的轻量级检测网络:参数量减半,精度不降反升

不要全层替换深度可分离卷积:P5深层对语义特征要求高,用标准卷积效果更好,只在P2、P3浅层用DWConv性价比最高注意力不是越多越好:每个阶段加一个就够,加在模块输出端,不要插在模块中间,否则部署容易出现算子不兼容问题轻量模型训练别贪快:初始学习率一定要调低,不然很容易前期震荡,后期收敛不上,精度卡在瓶颈小目标场景优先保留P2分支:如果对速度要求不是极致,保留P2检测头,小目标收益远大于速度损失。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 220

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

3D打印机(Prusa I2)DIY经验分享(Part II)

原文链接(QQ空间):https://user.qzone.qq.com/582760538/blog/1454561861 3D打印机(Prusa I2)DIY经验分享(Part II) 四、组装打印机电路(感谢:深海的小鱼儿http://www.cnblogs.com/xmphoenix/)1.软件下载1.1 固件上传工具——Arduino 可以到官网下载。htt...

2434

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DIY开源mini桌面i3结构3D打印机--开篇

DIY开源mini桌面i3结构3D打印机--开篇开篇闲谈3D打印的历史从何处了解到工作原理如何开始结束语 开篇闲谈 3D打印的历史 日常生活中使用的普通打印机可以打印电脑设计的平面物品,而所谓的3D打印机与普通打印机工作原理基本相同,只是打印材料有些不同,普通打印机的打印材料是墨水和纸张,而3D打印机内装有金属、陶瓷、塑料、砂等不同的“打印材料”,是实实在在的原材料,打印机与电脑连接后,通过电脑控制可以把“打印材料”一层层叠加起来,最终把计算机上的蓝图变成实物。通俗地说,3D打印机是可以“打印”出真实的3D

Allenzhu的博客 3311

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

3D打印机杂谈

接触3D打印机也有一年多了,3D打印机说实话只是一个很不错的工具。从最初到现在也接触过3部打印机了。一部是硕大的三角洲结构,一部是1300买来的小巧的DUY组装机,效果不错。 这个是买来的,后来放了几个月,官方的主板坏了。于是自己用arduino+ramps1.4替换了,修复了这个打印机。挺好用。 下面这个是看到老外做的一个可折叠打印机,叫foldarap,挺有意思。折腾这个打

寒的博客 897

prusai3打印机使用教程_3d打印机prusai3diy全过程【分享全部源码电路图】

3D打印机Prusai3DIY全过程【分享全部源码,电路图】Prusai3是开源RepRap3D打印机PrusaMendel的第三代机型。相对于Mendel一代和二代的版本,第三代结构更简介,造型更趋向于产品化。相对于老款i2挤出机和框架结构都进行了升级,打印尺寸和成型效果都有很大的提高。打印效果图放在了帖子最后。照片很多,大家慢慢欣赏。发帖不容易大家多多支持啊。版主不要删我帖子哦~~~...

weixin_39922476的博客 1542

Marlin 3D打印机固件:开源力量的巅峰之作

Marlin 3D Printer Firmware 是一款专为3D打印机设计的开源固件,自2011年首次发布以来,Marlin已经成为全球3D打印社区中最受欢迎的固件之一。Marlin固件以其稳定性、灵活性和强大的功能集而闻名,支持多种3D打印机型号,从入门级到专业级,都能找到适合的配置。 ## 项目技术分析 Marlin固件基于C/C++语言开发,采用模块化设计,使得开发者可以轻松地添加或...

gitblog_00885的博客 1027

【花雕学编程】Arduino GRBL之3D打印机的层间处理

层间等待逻辑:在loop函数中,通过判断是否完成一层打印的条件(这个条件需要根据实际的打印机状态反馈来确定,比如读取特定的传感器值或者接收来自打印机的特定指令)。综上所述,Arduino GRBL在3D打印的层间处理中扮演着至关重要的角色,它不仅提供了精确的运动控制,还支持了一系列辅助功能,使得3D打印变得更加高效和可靠。定义:GRBL是一个开源的CNC(计算机数字控制)运动控制系统,专为Arduino微控制器设计,用于接收并执行G代码指令,以控制CNC机床(如铣床、激光切割机、3D打印机等)的运动。

雕爷学编程 1324
上一篇: mysql_connect(): No such file or directory
下一篇: git服务器无法clone,出现remote: error: inflate: data stream error (incorrect data check)错误解决方法
坚果-大发
博客等级 码龄20年 90粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值