正电原子SMT32精英板+研华ADAM4117模拟5V电压检测

经过3个星期的学习,今日终于调通正电原子SMT32精英板+研华ADAM4117模拟5V电压检测

今日总结分享给大家

一、研华ADAM4117是正负15V电压检测仪器,精度相对很高。具体资料百度搜索可知,典型使用是上位机+ADAM4520+ADAM4117,其中4520是串口转485,4117需要485连接;

4117检测需要接收到“#01+回车符”

二、准备阶段使用串口助手+USB to 485模块+ADAM

使用串口助手发送#01,选中发送新行;当发出命令时,就收到ADAM4117发会的电压值

使用自己编辑的VB.NET2022串口助手,发送命令:可以实现

三、今天调试正点原子485模块实验,先用串口实验调试通过。485能收能发,并且通过验证每一个字符的判读。可以实现串口助手对小灯的控制。

四、STM32485AB接通ADAM4117AB,开始调试;

这里对正点原子485程序的数据发送命令进行了更改,增加字符串功能。更改原来的程序,使用一个变量,因为初学这样比较好理解。

经过前面类似的调试方法,ADAM4117终于被调试通了。非常HAPPY,初学者的乐趣

1、进一步说明这些数据

最长的一串数据时ADAM4117发回来的电压值,刚开始字符显示不全,通过改变LCD显示字符多少的值调试好

ADAM4117返回的值第一个是一个>符号,经过反复调整485回收显示函数的值,发现我们可以对字符数组的维数进行处理,所一显示屏参数直接给BUF[1],之后数据的第一位不显示,看着更像测试数据。

对数据的第1,8,15,22,29位进行判读,他们都是‘+’字符,通过判断他们的位与关系控制STM32的LED翻转

对数据的第3位进行5V范围判读,模拟4.85-5.25范围,采用IF语句,控制LED翻转,同时对细节判断让他回显"OK"和"KO"字符。 将结果字符保存在数组中

程序的主循环:

while(1)
    {
        key=KEY_Scan(0);
        if(key==KEY0_PRES)//KEY0°´ÏÂ,·¢ËÍÒ»´ÎÊý¾Ý
        {
            LCD_ShowxNum(30+i*32,190,rs485buf[i],3,16,0X80);    //ÏÔʾÊý¾Ý
             RS485_Send_Data_str("#01");     //¸øADAM·¢ËÍ×Ö·û´® ĩβ'\r'
            //RS485_Send_Data(rs485buf,1);//·¢ËÍ5¸ö×Ö½Ú                                        
        }         
        RS485_Receive_Data(rs485buf,&ke);
    //ADAMÊý¾ÝÊǵÚ0λ> µÚ1£¬8£¬15£¬22£¬29.ÊÇ·ûºÅ
            if(ke)//½ÓÊÕµ½ÓÐÊý¾Ý
        {
            LCD_ShowString(30,230+1*32,800,16,16,&rs485buf[1]);
           if(rs485buf[1]=='+'&&rs485buf[8]=='+'&&rs485buf[15]=='+'&&rs485buf[22]=='+'&&rs485buf[29]=='+')  //µÚһλºÍµÚ°ËλʮÎåÊÇÕý
            {
            LED0=!LED0;
            
                    LCD_ShowString(30,230+5*32,41,16,16,&rs485buf[3]);
            delay_ms(3000);
                
                    if(rs485buf[3]>='4'&&rs485buf[3]<'6')
                    {
                        LED0=!LED0;
                        delay_ms(3000);
                        if(rs485buf[3]=='4'&&rs485buf[5]>='8'&&rs485buf[6]>='5')
                        {
                          LED0=!LED0;
                          delay_ms(3000);
                            LCD_ShowString(30,230+8*32,41,16,16,rusalt);
                            printf("%c%c",rusalt[0],rusalt[1]);
                        }
                       
                        else if(rs485buf[5]<='2'&&rs485buf[6]<='5')
                                {
                                   LED0=!LED0;
                                    delay_ms(3000);
                                    LCD_ShowString(30,230+8*32,41,16,16,rusalt);
                                    printf("%c%c",rusalt[0],rusalt[1]);
                                }
                                else
                                {
                                LCD_ShowString(30,230+8*32,41,16,16,rusalt1);
                                    printf("%c%c",rusalt1[0],rusalt1[1]);
                                }
                    }
            
            }
            //ke=0;
    
        }       
    } 
}

今天对学到内容进行总结,防止自己后续忘记和有相同学习经历的朋友参考。

手机微信15762271229  QQ 923800110

近期课题VB.NET2012串口助手调通ADAM4117,前面的VB.2022已经调试通,由于没有总结可能还要重新实验,前进CLICK!!!

  • 33
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值