资讯详情

【ESP8266点焊机】基于 ESP8266 for Arduino

本项目由大佬提供。

B站链接:ESP8266 点焊机 3.0 / 开源自制

OSHWHub:ESP8266 点焊机 3.0

因为佬提供 V3.0 和 V2.0 版本,本着追新不追旧的原则,或者研究 V3.0 如何实现项目!


点焊机原理

点焊机的两极点瞬间放置点。由于接触点的接触电阻相对较大,在电流通过的瞬间产生大量的能力,形成熔核,从而达到焊接的目的。

该项目由电容器提供瞬时大电流。


放电电路

通过控制 MOS 管道的通断达到瞬时导通、瞬时放电的效果。


控制电路

电平设置部分是一堆上拉和下拉电阻。设置端口为上拉/下拉。

2.54排针是与中板(放电板)连接控制的接口。

电压采集 30V 这是什么意思?电压输入受到限制 30V 。

照明电路为两个电极提供照明。

但是,这个保险选择不好!

ME3116采用降压稳压器PWM控制模式。

SX1308升压芯片:2V到24V宽输入电压范围。VIN通过 5V or BAT 提供电源。

板载CH340,没必要。自动下载电路。真的很方便。

采用 TC4427 驱动芯片对MOS驱动管道。


程序

#include <Arduino.h> #include <EEPROM.h> #include <U8g2lib.h>  #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif  U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);  byte k1 = 0  ;              //  按键,低调有效 byte k2 = 2  ;              // -按钮,低电平有效 byte k3 = 13 ;              // 模式按键,低电平有效  byte g1  = 14;              // 焊件检测   byte ADC = A0;              // 电池电压检测  byte mos = 12;              // MOS 控制   float V = 0;                // 电池电压v int hms;                    // 焊接延时 int yms;                    // 延时焊接 volatile byte ms = 0;       // 模式,其实这里不用 volatile 吧,总共就0~4   /* 中断程序,切换执行模式 */ ICACHE_RAM_ATTR void zd1() {    ms  ; }  /*  参数的上限 */ void key(int &a , int b) {       if(digitalRead(k1) !=  digitalRead(k2))    // KEY1&KEY2 不在同一电平状态    {         long int t =  millis();                 // 记录当前时间       if(digitalRead(k1) == LOW)              // KEY1 按下       {          a  ;                                  // 参数增加         while(digitalRead(k1) == LOW)         // 长按情况         {            if(millis() - t > 1200)            // 长按大于 1200ms            {                    a = a   10;                     // 增加步长为 10            }            if(a > b)                          // 大于参数上限                a = b ;                       delay(10);                                    oled(a);                           // 显示参数 a         }          }       else                                    // KEY2 按下       {         a--;                                  // KEY2 按下相同的分析过程 KEY1 按下         while(digitalRead(k2) == LOW)         {            if(millis() - t > 1200)            {                a = a - 10;               }            if(a < 0){  a = 0 ; }            delay(10);            oled(a);         }         }       sjx(hms, yms);                          // EEPROM写入数据    }    oled(a); }  /* 写入Flash数据、焊接延迟、延迟焊接 */ void sjx(int a, int b){   EEPROM.begin(1024);   EEPROM.put(0, a);     delay(10);   EEPROM.put(4, b);     delay(10);   EEPROM.commit(); //保存更改数据 }  /* 读取Flash数据,焊接延迟,焊接延迟 */ void sjd(){  EEPROM.begin(64);  EEPROM.get(0, hms);  delay(10);  EEPROM.get(4, yms); }  /* 读取供电电压 */ void BAT(){   V = map(analogRead(A0),0,1023,0,1000);   V = V*31.3/1000; }  /* 0.420 LED 显示 */ void OLED(){   u8g2.clearBuffer();                   ////清除内存中的数据缓冲区            u8g2.setFont(u8g2_font_ncenB12_tr);   //设置字体    u8g2.setCursor( 0, 12);   u8g2.print(V);                         u8g2.setCursor(48, 12);   u8g2.print("V");    u8g2.setCursor(62, 12);   u8g2.print(ms);    u8g2.setCursor( 0, 26);   u8g2.print(hms);                    

  u8g2.setCursor(48, 26);
  u8g2.print("ms");

  u8g2.setCursor( 0, 40);
  u8g2.print(yms);                     

  u8g2.setCursor(48, 40);
  u8g2.print("ms");

  u8g2.sendBuffer();                    //绘制缓冲区的内容   
}


/* 调参界面显示 */
void oled(int a)
{
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB12_tr);
  u8g2.clearBuffer();
  u8g2.setCursor(0, 14);
  if(ms == 3){                // 焊接等待时间调参
    u8g2.print("weld ms");    // 焊接等待时间
  }else{                      // 等待焊接时间调参
    u8g2.print("wait ms");    // 等待焊接时间
  }
  u8g2.setCursor(0, 40);
  u8g2.print(a);
  u8g2.sendBuffer();  
}


/* 延时函数(ms) */
void sj(int a)
{
  long int i = millis();
  while((millis() - i) < a) 
      OLED(); 
}

/* 自动模式 */
void zdhj()
{
  if(digitalRead(g1) == HIGH)    // 检测是否有焊件
  {
    sj(yms);                     // 延时函数充电(ms)
    digitalWrite(mos,HIGH);      // 导通MOS放电
    sj(hms);                     // 延时放电时间
    digitalWrite(mos,LOW);       // 关闭MOS
  }
}

/* 手动模式 */
void sddh()
{
  if(digitalRead(g1) == HIGH)    // 检测是否有焊件
  {
    if(digitalRead(k1) == LOW || digitalRead(k2) == LOW )    // KEY1/KEY2按下
    {  
       sj(yms);                  // 延时函数充电(ms)
       digitalWrite(mos,HIGH);   // 导通MOS放电
       sj(hms);                  // 延时放电时间
       digitalWrite(mos,LOW);    // 关闭MOS
    }
  }
}

/* 调节焊接延时时间 */
void hjms()
{ 
  key(hms, 1000);
}

/* 调节延时焊接时间 */
void ysms()
{ 
  key(yms, 3000);
}

void setup()
{
  u8g2.begin();
  pinMode(k1 ,INPUT_PULLUP); 
  pinMode(k2 ,INPUT_PULLUP); 
  pinMode(k3 ,INPUT_PULLUP);      
  pinMode(g1 ,INPUT);
  pinMode(mos ,OUTPUT);

  digitalWrite(mos,LOW);
  /* 中断函数 */
  attachInterrupt(k3, zd1, RISING);     // 上升沿触发,按键松开触发
  
  sjd();    // 读取Flash数据 
  
}

void loop()
{
  BAT();
  switch(ms)
  {
    case 0 : OLED();   
    break;
    
    case 1 : zdhj();    // 自动模式
             OLED();
    break;
   
    case 2 : sddh();    // 手动模式
             OLED();
    break; 

    case 3 : hjms();    // 焊接时间调参
    break; 

    case 4 : ysms();    // 延时焊接调参
    break; 

    default: ms = 0;    // 超出置0
    break;
  }
}

U8g2库的详细使用

链接:https://pan.baidu.com/s/1cm7Nr6hIkZjasgeOpbPCCQ 提取码:k7d3


总结

给以后做点焊机提供了思路,是一个好项目!值得学习!

 

标签: 26k1电阻电阻9k1

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台