一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: goodcode
收起左侧

十元左右成本的数显白光控制器

  [复制链接]
 楼主| 发表于 2012-4-29 11:44 | 显示全部楼层
T12Ctrl_120.rar (3.34 KB, 下载次数: 190)


12bit 的串口固件 120秒执行时间 适合测试上面的曲线
发表于 2012-4-29 13:01 | 显示全部楼层
完成 fujiachun 的任务



4脚开关 8个焊点260度


4脚开关2个8个焊点280度


排针4个焊点280度
...
goodcode 发表于 2012-4-29 11:42 https://www.yleee.com.cn/images/common/back.gif

太感谢啦,辛苦兄弟。看来936的温度补不上去另有原因,回头用您的PID程序放到M8试试T12,我现在只用了PI,没有D,但是焊接大焊点还是有点粘,比如设置350度焊一般焊点够了,但是遇到开关电源的地线要调到380-400度,虽然应该换烙铁头,不过我比较懒。我现在这个破平板打字太难啦,晚上回家在仔细请教
 楼主| 发表于 2012-4-29 14:16 | 显示全部楼层
需要的话我把12bit的串口程序和上位机(delphi)代码发给你 按照代码改一下应该能在m8上用 就2,3个命令
我觉得936只是烙铁头与热电偶距离远反应慢, 如果用12bit的ad不知道效果会不会更好 这样可以更细分参数
没测试只是猜测
对于你上面说的问题, 如果你没限制积分参数应该输出功率逐渐变大来维持恒温甚至达到满功率
从上位机程序可以方便的看到

我那个限制了积分值 好像是不限制会引起很大的过冲 限制大了又影响室温到恒温的曲线
发表于 2012-4-29 15:53 | 显示全部楼层
pcb布线弄完了,整理检查一下等放完假上班时再发过去打板
未命名截图.png
 楼主| 发表于 2012-4-29 16:08 | 显示全部楼层
记得留出串口...
发表于 2012-4-29 18:13 | 显示全部楼层
有的,在左上角留有ISP接口
发表于 2012-4-29 22:41 | 显示全部楼层
需要的话我把12bit的串口程序和上位机(delphi)代码发给你 按照代码改一下应该能在m8上用 就2,3个命令
我觉 ...
goodcode 发表于 2012-4-29 14:16 https://www.yleee.com.cn/images/common/back.gif

再次感谢,您能否把上位机的通讯格式给我,我试试其他的单片机发数据给这个(delphi)的软件。delphi我一点都不会,看您的程序好像有PC机编程的专业背景,程序写的很规范。936头子和传感器的温度梯度是个问题,大点的头子就明显的好转,如果大马蹄就根本感觉不到,但是细小的头子就非常明显,只能使用头子的侧边,最小的地方到最后都不行。如果您习惯STC,可以考虑使用STC的5410AD,带10位的AD,价格也不错,5元左右。好像2051AD也有带有8位AD的实际我以为做烙铁8位的AD应该够用,分辨率2-3度对于烙铁已经很不错啦。这两种芯片我手头都有,您要试验送您两片玩玩。
 楼主| 发表于 2012-4-29 23:10 | 显示全部楼层
下位机通讯部分代码


  1. void UART_Send_Command1(void)
  2. {
  3.     /*
  4.     功能:向串口发送命令
  5.     命令格式 0xFF 0x55 (数据长度) (命令ID) 数据
  6.     */
  7.     UartInit();
  8.     UART_SendByte(0xff);
  9.     UART_SendByte(0x55);
  10.     UART_SendByte(0xe);
  11.     UART_SendByte(0xff);
  12.     UART_SendBuf( (unsigned char *)&ADCResult, 2); //AD返回值
  13.     UART_SendBuf( (unsigned char *)&temper, 2);           //当前温度值
  14.     UART_SendByte( high_time);        //加热时间
  15.     UART_SendByte( max_time);
  16.     UART_SendBuf( (unsigned char *)&pTerm, 2);
  17.     UART_SendBuf( (unsigned char *)&iTerm, 2);
  18.     UART_SendBuf( (unsigned char *)&dTerm, 2);
  19.     UART_SendBuf( (unsigned char *)&drive, 2);

  20. }

  21. void UART_Send_Command2(void)
  22. {
  23.     //加热停止
  24.     UartInit();
  25.     UART_SendByte(0xff);
  26.     UART_SendByte(0x55);
  27.     UART_SendByte(0);  //数据大小
  28.     UART_SendByte(2);  //命令ID
  29. }

  30. void UART_Recv_Command(void)
  31. {
  32.     /*功能; 执行串口相关命令
  33.     接收命令格式定义 0xFF 0x55 (命令ID) 数据
  34.     */
  35.     //unsigned char buf[3];

  36.     //串口初始化
  37.     UartInit();

  38.     UART_RecvBuf( (unsigned char*)&ADCResult, 2);

  39.     //检测命令头 FF 55 00 00 ... 55 FF
  40.     //if (!((buf[0] == 0xFF) && (buf[1] == 0x55)))
  41.     //{
  42.     //    //命令头错误
  43.     //    return;
  44.     //}
  45.     if ( ADCResult != 0xFF55)
  46.         return;

  47.     UART_RecvBuf( &max_time, 1);
  48.     switch ( max_time)
  49.     {
  50.     case 0:  //开始加热
  51.         //系统参数
  52.         UART_RecvBuf( (unsigned char *)&config, sizeof(SysConfig));
  53.         UART_RecvBuf( (unsigned char *)&set_temper, 2);
  54.         set_temper = set_temper * 10 + 5;  //设定温度 将温度单位扩大十倍后取中间值 相当于浮点数 例如 设定300度为300.5度

  55.         //初始化参数
  56.         //AD相关
  57.         //ad_zeroValueFix = config.ad_zeroValueFix;  //AD调零值 用于在单电源情况下将ad输出调0
  58.         //ad_voltageScale = config.ad_voltageScale;  //AD值到电压值比例 单位uv的1/1000


  59.         //温度相关
  60.         //set_temper = config.set_temper * 10 + 5;  //设定温度 将温度单位扩大十倍后取中间值 相当于浮点数 例如 设定300度为300.5度
  61.         //ref_temper_voltage = TemperatureToVoltage( config.ref_temper);        //热电偶 参考端(冷端)温度 电压值 uv


  62.         //PID参数
  63.         //pGain = config.pGain;            // proportional gain
  64.         //iGain = config.iGain;            // integral gain
  65.         //dGain = config.dGain;             // derivative gain

  66.         EA = 0;
  67.         //擦除扇区
  68.         IAPCommand( IAP_SECTOR_ERASE, IAP_ADDRESS, 0); //第一扇区
  69.         //写入数据
  70.         IAPBufCommand(IAP_BYTE_PROGRAM, IAP_ADDRESS, (unsigned char *)&config, sizeof(SysConfig));          //系统参数
  71.         //历史温度列表
  72.         ADCResult = 200;
  73.         for(count=0; count<10; count++)
  74.         {
  75.             IAPBufCommand(IAP_BYTE_PROGRAM, IAP_ADDRESS + 0x100 + (count*2), (unsigned char *)&ADCResult, 2);
  76.             ADCResult = ADCResult + 20;
  77.         }
  78.         //验证写入数据
  79.         IAPBufCommand(IAP_BYTE_READ, IAP_ADDRESS, (unsigned char *)&config, sizeof(SysConfig));          //系统参数
  80.         EA = 1;

  81.         //将eeprom写入数据读取回来并发回
  82.         UART_SendByte(0xff);
  83.         UART_SendByte(0x55);
  84.         UART_SendByte(sizeof(SysConfig)+2);  //数据大小
  85.         UART_SendByte(0);  //命令ID        确认加热
  86.         UART_SendBuf((unsigned char *)&config, sizeof(SysConfig));
  87.         UART_SendBuf( (unsigned char *)&set_temper, 2);

  88.         StartWork();
  89.         break;
  90.     }

  91. }
复制代码


提交数据由UART_Send_Command1完成
UART_Recv_Command用来接收上位机命令
这是最新12bit版本的通讯部分

看协议就可以了, 串口处理很蹩脚, 104e没有硬件波特率发生器... AD和串口公用一个定时器, 只能来回切换.
 楼主| 发表于 2012-4-29 23:32 | 显示全部楼层
回复 107# fujiachun



   呵呵, 上位机编程我还是很在行的

   目前这个12bit的版本我用T12-C1还可以, 没看曲线...

   目前有个新版本准备开发不过不知道rom能否放下 选项为STC15F204EA 零售价 3元左右 4k rom 256 ram 10bit 8通道AD

   LGT的仿真器刚到手, 这个芯片与M8好像差不多(我没用过AVR) 零售价 1.99, 仿真器散件15 下午折腾一下午, 不好焊接 元件0603.

   我手里有12C5A60S2等, 不过价位都太高, 不过还是要谢谢你.

   温度和ADC位数我是这么算的不知道合理不合理, 因为PID需要运算数据 设烙铁使用温度最高为450度, 那么就要ADC获得温度的范围在, 不考虑放大部分

   0-500度之间

   8位 500 / 256 最小温度分辨率 1.953125 给PID运算的最小单位 1摄氏度
   10位 500 / 1024 最小温度分辨率 0.48828125  给PID运算的最小单位 1摄氏度 或者 *2
   12位 500 / 4096  最小温度分辨率 0.1220703125 给PID运算的最小单位 1摄氏度的十倍

   其实如果没有数码管或者LCD显示温度, 我觉得使用的时候都是差不多的
   但是有数码管显示的时候10位在设定温度上下跳动, 不是太好看.
   另外更细分的温度配合更高周期的PWM可以让输出功率变的更细一些
发表于 2012-4-30 00:05 | 显示全部楼层
晚上吃过饭后无聊不想修机子,干脆将图弄完,尺寸10.5X3.6左右,上嘉立创看下价格,5-10PCS 138文,20PCS 158文.还行这价格。明天准备将图丢过去打板。
未命名截图.png

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-5 20:01 , Processed in 0.087289 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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