验证目标
搭建电路验证907电烙铁测温,发热控制的可行性,调温部分只做最简单的处理。达到快速验证可行性的目的,为之后优化调温排除障碍。
所需材料
- 907电烙铁手柄(热电偶测温方式1322发热芯)
- OLED模块128*32
- MAX6675模块
- PWM开关模块
- DC电源
连接结构

代码流程
第一步读取温度
需要读取16bit的数据,但是sci spi代码似乎目前只支持8bit,所以我们用8bit读2次。
g_ioport.p_api->pinWrite(g_ioport.p_ctrl, sci_spi0_cs, BSP_IO_LEVEL_LOW);
vTaskDelay(1);
R_SCI_SPI_Read(&g_sci_spi0_ctrl, &spi_data, 2, SPI_BIT_WIDTH_8_BITS);
vTaskDelay(1);
g_ioport.p_api->pinWrite(g_ioport.p_ctrl, sci_spi0_cs, BSP_IO_LEVEL_HIGH);
更新设定的目标温度
在这里也完成了显示内容的更新
set_temp(target_temp);
printf("target_temp---%d\r\n", target_temp);
解析MAX6675传感器数据
判断了一下热电偶是否开路。update_k主要更新显示的温度和热电偶连接情况。
只有连接热电偶的时候我们才调用deal,获得一个pwm控制结果。
if (spi_data[1] & 0x4){
update_k(0, 999);
// printf("no K connect\r\n\r\n");
pwm_duty = 100;
} else {
temp_data = spi_data[0] << 5;
temp_data += spi_data[1] >> 3;
// print_binary2(temp_data);
// printf("\r\n");
temp = temp_data / 4;
printf("temp---%d\r\n", temp);
update_k(1, temp_data);
pwm_duty = (uint8_t)deal(temp, target_temp);
}
粗略计算PWM
在这里主要验证功能正常与否,所以只用了最简单的比例调节。后续需要进行更多的处理。
pwm = (temp_2 - temp_1)/2
输出PWM
在这里实现如下
void agt_pwm_set(uint8_t duty)
{
timer_info_t info;
uint32_t period_counts, duty_counts;
R_AGT_InfoGet(&g_timer_agt0_ctrl, &info);
period_counts = info.period_counts;
if (duty > 99){
R_AGT_DutyCycleSet(&g_timer_agt0_ctrl, period_counts-1, AGT_OUTPUT_PIN_AGTOA);
return;
}
duty_counts = (uint32_t)(((uint64_t) period_counts * duty) / 100);
R_AGT_DutyCycleSet(&g_timer_agt0_ctrl, duty_counts, AGT_OUTPUT_PIN_AGTOA);
}
实物连接

供电用的主电源,因为发热芯的电阻大约10欧姆,所以12v,大概不会超过1。5A,调温的参数优化之后我们再上更高电压更高功率,避免烧坏发热芯。

这是用到的PWM模块,可是很多廉价版本的场管模块理论需要8V以上驱动电压的,单片机IO口的3。3V根本不够,凌空搭棚一个三极管。虽然完成了电平的转换,但是PWM需要反相一下了。软件来补。

烙铁手柄本体了,用的是热电偶发热芯的。主要是别的发热芯,手上缺少温度校准的途径,无法实现准确的数显温度。航空插座的2个脚接热电偶,2个脚接PWM开关模块的输出

MAX6675模块,外接电路极其简单,所以直接用了sop8转dip的转接板即可。足够简单吧

然后就是显示屏了,我们在这里显示了目标温度,当前温度,手柄连接状态,以及输出的PWM百分比。
另外用来ra4m2板上的2个按键,S1温度增加10度。S2温度降低10度。
大概是由于907烙铁手柄的发热芯,与烙铁头是分开的,导热效率低下,烙铁头热容较高。所以大家玩907的偏少。T12,C210,C245,高频烙铁等各种备受追捧,我也希望下一步能够尝试更新的烙铁。个人感觉最理想的是高频烙铁。
如视频看到,测得的温度升高还是挺快的,但是与传到烙铁头尖部的温度还有不小差距。并且始终温度与设定温度有差距,这也符合当前程序的调节方式,因为我们只 用了简单的K比例调节。下一步尝试加入pid的调节,期待能达到更好的效果。