一款开源的 jbc焊台 求改bug-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3354|回复: 4

[未解决] 一款开源的 jbc焊台 求改bug

[复制链接]
发表于 2019-12-26 16:26 来自手机 | 显示全部楼层 |阅读模式
bug :控制可控硅的那个引脚每40个周波出现一次异常
附图:国外论坛的 帖子
附代码:二楼   /缺少ssd1306 以及max6675库
1D00B2FF-AE6D-458E-A471-622B696C0B96.png
C1B9620C-21C0-4802-AA14-07EC87E42622.png
 楼主| 发表于 2019-12-26 16:29 来自手机 | 显示全部楼层
能看懂一些  以前没接触过 arduino
自己加了些注释还是 没弄明白



#include
#include
#include
#include
#include
#define OLED_MOSI  11
#define OLED_CLK   13
#define OLED_DC    8
#define OLED_CS    10
//定义 引脚9 为oled复位引脚
#define OLED_RESET 9
#define thermoDO 11
#define thermoCS 12
#define thermoCLK 13
#define potentiometer A3
#define zerocrossing 2
#define triac 7
#define input 5
//温度
float temperature;
//
int pottemperature;
//计数器
int counter;

//oled通讯引脚
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

//max6675数据引脚
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

  //进入 初始化 函数
  void setup() {
  //定义old通讯地址???
  display.begin(SSD1306_SWITCHCAPVCC);
  //引脚 电位器 输入
  pinMode(potentiometer, INPUT);
  //引脚 调零 输入
  pinMode(zerocrossing, INPUT_PULLUP);
  //引脚 可控硅 输出
  pinMode(triac, OUTPUT);
  //
  digitalWrite(triac, LOW);
  //设置oled字体为2号
  display.setTextSize(2);
  //设置oled显示为白色
  display.setTextColor(WHITE);
  //
  counter = 0;
  //温度 热电偶 摄氏度
  temperature = thermocouple.readCelsius();
  //设置完成 更新显示???????
  updatedisplay();
  //中断  中断触发引脚0 中断函数名zero 中断上升沿
  attachInterrupt(0, zero, RISING);
}

//不明白这个函数
void loop() {
}

//中断函数
void zero() {
  counter++;
  if (counter < 40) {
    if (temperature <= pottemperature) {
      digitalWrite(triac, HIGH);
    }
    else {
      digitalWrite(triac, LOW);
    }
  }

  if (counter == 40) {
    digitalWrite(triac, LOW);
    detachInterrupt(0);
    temperature = thermocouple.readCelsius();
    updatedisplay();
    counter = 0;
    attachInterrupt(0, zero, RISING);
  }
}

//
void updatedisplay() {
  //
  pottemperature = analogRead(potentiometer);
  //max6675温度参数&设置温度
  pottemperature = map(pottemperature, 0, 1023, 0, 400);
  
  display.clearDisplay();//清空oled显示
  display.setCursor(0, 0);//设置oled显示内容位置
  display.print("SET:");//设置oled显示内容
  display.print(pottemperature);
  display.setCursor(0, 20);//设置oled显示内容位置
  display.print("TMP:");//设置oled显示内容
  display.print(int(temperature));
  display.display();//设置完成更新显示内容
}

 楼主| 发表于 2019-12-26 16:32 来自手机 | 显示全部楼层
https://b23.tv/av9773635   这是测试视频
发表于 2021-2-6 09:12 | 显示全部楼层
本帖最后由 Highnose 于 2021-2-6 09:26 编辑

视频做的是真用心,可惜没有用到PID
我认为问题出在 读数据和中断上, 读数据的时候消耗的时间太长,而此时要进入中断,于是就相互打搅
这种问题比较普遍,你尝试把读传感器那一句撇掉 再看看波形
发表于 2021-2-8 18:47 | 显示全部楼层
我怎么感觉那玩意不是异常,而是断电读取温度来达到一线多用的目的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 14:53 , Processed in 0.077363 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表