单片机采集交流信号电路_单片机采集交流信号 - CSDN
  • 用stc单片机内部ad采集多路交流信号,有两种办法: 一、用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。 二、用两个采样保持器...

    用stc单片机内部ad采集多路交流信号,有两种办法:
      一、用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。
      二、用两个采样保持器(LF398),来暂时保存模拟量的瞬时值。两个保持器后面接模拟多路转换器,模拟多路转换器后面接一个AD转换器。过程是这样的:要采集之前先给两个采样保持器一个保持信号,紧接着选择多路开关通道,紧接着启动AD转换器。分别选择多路开关的两个通道,来取得两路模拟量的值。因为有采样保持器的存在,可以保证采集到的模拟量是同一时刻的。
      单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

    
    展开全文
  • 单片机采集交流电流/

    2020-05-30 00:08:45
    交流电压怎么计算? 1 想计算出交流电压电流,要求单片机得先...由于是交流信号,所以需要采集交流信号一个完整周期的信号,能采集的点也越多越好。 2 由于要确保采集的信号是一个交流周期内的,所以要用到上述1中的方

    交流电压怎么计算?

    1 想计算出交流电压电流,要求单片机得先有类似于捕获功能,或者定时器外部脉冲触发功能,当触发后开启ad采集中断。采集完,继续开启ad采集中断,直到一个完整的交流信号周期结束,完成本次采样工作。这里需要注意的是,由于是交流信号,不能像直流信号那样简单采样,采样时间可以是这ms级别,计算出ad采样值后,再通过ad精度和参考电压,算出直流信号值。由于是交流信号,所以需要采集交流信号一个完整周期的信号,能采集的点也越多越好。

    2 由于要确保采集的信号是一个交流周期内的,所以要用到上述1中的方式,依靠定时器来实现一个交流周期内多次触发ad采集功能,采集多个点。

    3 使用单片机采集多个点后,如何计算出交流电压,交流电流??举个例子,计算交流电压?求rms。
    意思就是求均方根!不懂??大一的电路书中有,还是不明白?就是将所采集的点,取平方和,再求平均,最后开方。算出得值就是这rms值。再将该值结合比例关系,算出交流电压。这里涉及到积分思想。

    展开全文
  • 手上一个项目需要用光耦采集一个外部的220V直流信号(220V表示高电平,0V低电平), 这块电路应该怎么设计(放在pcb板子上用)。
  • 电压的采集是我们进行电路设计常常用到的,具体的采集类型上又分为直流采集交流采集,将源电压通过一系列的电路设计,最终通过AD(数模转换芯片或单片机内部AD)读入MCU,并执行相应的决策,是我们大多设计的要求...

         电压的采集是我们进行电路设计常常用到的,具体的采集类型上又分为直流采集交流采集,将源电压通过一系列的电路设计,最终通过AD(数模转换芯片或单片机内部AD)读入MCU,并执行相应的决策,是我们大多设计的要求。下文将通过具体的实例介绍如何设计合适的电压采集电路。

    直流电压采集

    要求:采集一个输出范围为20V-28V的Uo电压信号到0-3.3V的AD。

    设计思路:将20v到28v中的8v压差全部映射到0-3.3v的范围内,才内能更好的利用AD模块,所以首先将Uo与20V做差分,将电压抬低到0-8v(注:有时碍于仪放信号输入电压的范围较小会先分压再抬低见形式二),然后通过电阻分压将8v映射到3.3v的范围内。

    形式一:

    1、利用现有的电压产生20v的基准电压

    2、通过仪放将Uo与20v差分(注:826的REF引脚为输出基准)

    3、分压及输出阻抗匹配(电压跟随器)

    4、输出钳位保护

    形式二:

    1、将Uo分压7倍,即将0-28v映射到0-4v,同理将20v也分压7倍即要产生2.857v的电压基准

    2、差分并放大2.887倍及钳位电路(计算方法:3.3/(4-2.857),差放直接输入给AD不需要阻抗匹配)

     

    交流电压采集

    要求:采集单相正弦交流电的有效值范围为(0-24v)

    设计思路:通过电压互感器将电压读取到,并放缩到合适的范围内,输入给有效值检测芯片,再将有效值检测芯片的输出给AD

    1、电压互感器读取

    2、有效值检测芯片及保护电路

    总结:不论电路设计的多么精确,误差总会是有的,所以在电路的设计基础上,再通过MATLAB将数据进行拟合,才能将误差进一步的消除。

    展开全文
  • 1、电流信号采集需要将电流信号转化为电压信号才能进行采集,如下图所示: 图1单片机ADC采集到的电压模拟数字信号后,需要除以ADC的分辨率再乘以基准电压得到单片机采集的数字电压,根据欧姆定律,U=IRàI=U/R,求得...
    1、电流信号采集

    需要将电流信号转化为电压信号才能进行采集,如下图所示:

     

                                        图1

    单片机ADC采集到的电压模拟数字信号后,需要除以ADC的分辨率再乘以基准电压得到单片机采集的数字电压,根据欧姆定律,U=IRàI=U/R,求得电流信号。当然,分压电阻精度越高越好。

    2、电压信号采集

    需要根据单片机ADC的测量电压峰峰值最高是多少。假如单片机的ADC最大采集电压有效值为3.3V,如果采集5V的有效值电压,则需要把5V电压分压,如下图2,然后再把分压输出的信号作为单片机输入信号进行采集。


                                     图2

    展开全文
  • ...

    http://cache.baiducontent.com/c?m=9d78d513d98207f04fece47f0d01d7174a02d1743ca6c76409c3e03984145b563710f4bb56644b5bc7823c390ef50f1aa8e737012a1e65f2dedf883d80f9c57478de6323706bd71c4dce5ff58b11769737902cefaa18ecb9e732e5adc5d3a95744ca245f3cdfae&p=8b2a975fca9d5bff57ee947a5b47cc&newp=9133c64ad49614f543bd9b7d0d12cc231610db2151d2d401298ffe0cc4241a1a1a3aecbf21231a01d0ce786c0aaa4e57e1f03772350034f1f689df08d2ecce7e7add7d2f&user=baidu&fm=sc&query=stm32+adc+%CD%AC%B2%BD%A1%A1tim&qid=809b98c2000086f6&p1=4

    void ADC_DMA_Config(void)
    {
     DMA_InitTypeDef DMA_InitStructure;              
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
     DMA_DeInit(DMA1_Channel1);  //DMA复位
     DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;  //外设的地址
     DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;  //存储区的起始地址
     DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //DMA传输方向到内部存储区
     DMA_InitStructure.DMA_BufferSize = ADC_NUM;  //ADC转换的次数
     DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                 //外设地址不变
     DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                          //内存地址递增
     DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  //ADC数据长度为16位
     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;  //存储区数据长度为16位
     DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  //DMA工作方式为循环工作
     DMA_InitStructure.DMA_Priority = DMA_Priority_High;  //DMA 优先级高
     DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //存储器对存储器关闭
     DMA_Init(DMA1_Channel1, &DMA_InitStructure);  //DMA通道初始化
     DMA_Cmd(DMA1_Channel1,ENABLE);  //DMA使能
    }

    void ADC_START(void)
     {
        ADC1, ENABLE);    //ADC的DMA功能开启
       ADC1);  //ADC_GetResetCalibrationStatus(ADC等待完成
       ADC1);                                                    //开始校准
       while(ADC1));  //ADC_SoftwareStartConvCmd(ADC的软件转换启动功能
      } void ADC1_Config(void)
    {
     GPIO_InitTypeDef GPIO_InitStructure;
     ADC_InitStructure;     
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);                         ////PA4567时钟使能
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);                         ////PC45时钟使能
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);                         ////PB01时钟使能     
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; ////初始化PA4567为模拟输入
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //管脚设为模拟输入
     GPIO_Init(GPIOA, &GPIO_InitStructure);
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;     ////初始化PC45为模拟输入
     GPIO_Init(GPIOC, &GPIO_InitStructure);
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; ////初始化PB0 1为模拟输入
     GPIO_Init(GPIOB, &GPIO_InitStructure);
     ADC设置
      
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC时钟
     ADC_Mode = ADC1和ADC2工作在独立模式 
     ADC_ScanConvMode = ENABLE;                                        //多通道
     ///ADC_ContinuousConvMode = ENABLE;                               //连续转换
     ADC_ContinuousConvMode = DISABLE;                              //连续转换
     ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;
     ///ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;             //软件启动转换
     ADC_DataAlign = ADC_DataAlign_Right;                             //转换结果右对齐
     ADC_NbrOfChannel = ADC_NUM;                                      //通道数目
     ADC1, &ADC_InitStructure);  
    /// ADC_TempSensorVrefintCmd(ENABLE);                                            //使能片内温度传感器  
    /// RCC_ADCCLKConfig(RCC_PCLK2_Div6);                                            //PCLK 6分频
     RCC_ADCCLKConfig(RCC_PCLK2_Div8);                                               //ADC_RegularChannelConfig(ADC_Channel_4,  1, ADC_SampleTime_239Cycles5);  //通道4,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道5,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道6,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道7,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道8,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道9,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道14,转换次序,转换时间
     ADC1, ADC_SampleTime_239Cycles5);  //通道15,转换次序,转换时间
    // ADC1, ADC_SampleTime_239Cycles5);
     ADC_START();
    }
    /*
     系统时钟为72MHZ,FPCLK2=72 000 000HZ
     对50HZ交流信号进行采集,一个周期为20MS, 采集8路信号,每个信号采用64次,
     20*1000us/64=312us,即每隔312us要启动一次采集信号(需要采集8路信号),采集64次后正好是一个周期;
     采集一次8路的时间:(239.5+12.5)*8/9M =224us

     */
     void TIM2_Configuration(void) 
     { 
      TIM_TimeBaseStructure; 
      TIM_OCInitStructure;  
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 
      TIM_Period    = 312;                             //设置一个周期0.312ms 
      TIM_Prescaler = 71;                           //系统主频72M,这里分频72,相当于1000K的定时器2时钟 
      TIM_ClockDivision = 0x0; 
      TIM_CounterMode = TIM_CounterMode_Up;          /////
      TIM2, & TIM_TimeBaseStructure); 
      TIM_OCMode = TIM_OCMode_PWM1;                     //下面详细说明  
      TIM_OutputState = TIM_OutputState_Disable; 
      TIM_Pulse = 20; /////
      TIM_OCPolarity = TIM_OCPolarity_Low;              //如果是PWM1要为Low,PWM2则为High
      TIM2, & TIM_OCInitStructure);    
      TIM2, ENABLE);   
      TIM2); 
      TIM2, TIM_OCPreload_Enable); 
      TIM2, DISABLE); 
      }

    转载于:https://www.cnblogs.com/zym0805/p/7149232.html

    展开全文
  • 单片机之整流电路

    2019-04-29 10:44:51
    之前想用MSP430采集音频信号,用三极管开关来驱动LED电平灯。...故需要搭建整流电路交流信号变为直流信号。常见有三种: 半波整流 半波整流电路只有一只二极管,这种特点决定了输出的电压...
  • 研究了矿用隔爆兼本质安全型交流电动机软起动控制器的三相同步信号采集与晶闸管相位触发电路,将采集到的三相电压同步信号送入PIC16F877A单片机,由单片机来检测信号的过零点。当检测到过零点时,PIC16F877A单片机根据...
  • 用于对交流信号的采样
  • 单片机如何采样电流

    2020-01-04 22:37:14
    单片机如何采样电流 单片机工程师在面试的过程中,经常会...现在我们来分析单片机工程师常遇面试问题之三:单片机如何采样电流? 单片机的AD模块转换原理我这里就不做讲解了,有兴趣的小伙伴可以找度娘了解,百度...
  • 距离漆包线上方约15~20cm处,工字电感检测到的信号约为30mV左右的20KHz的交变小信号,由于后级单片机无法处理这类小信号,必须进行放大处理。因此需要放大倍数为100倍左右的放大电路,对交流信号放大处理并整流...
  • 便携式数据采集装置将在现场采集到的数据装入装置的内部数存贮器,以待送实验室或试验中心的计算机进行分析处理,由于现场不一定有交流电供电,而且采集到的数据必须保存到送实验室,因此装置必须以电池或蓄电池供电...
  • 采集交流的时候我们需要一个交流霍尔,需要采集一个完整的周期,所以采集的数据个数需要计算,AD采集周期*采集点数 = 交流点周期。 所以就是对采到的数据做一个均方根就是这个交流电的有效值。 转载于:...
  • AD模块电压采集电路

    2019-06-27 18:21:50
    之前一直没搞明白模拟电压转换电路,不知道应该怎么计算转换电压,最近一个项目中用到几处模拟电压的采集,硬件是由其他同事设计的,转换公式也是他给的,记录一下;  24V电压采集:  公式:Vout = Vin/(100...
  • 信号调理电路

    2012-03-14 20:36:58
    2.3.2信号调理电路 1.设计目标 电能质量各项指标的监测主要是通过对三相电压...信号调理电路的工作环境含有大量的电磁和数字信号,会产生高频干扰,所以模拟量采集模块应该具有低通滤波的功能。在模拟信号接入AD模块
  • STM32芯片想采集0~30V电压信号!要如何采集,还有就是电路要如何设计?控制程序要如何编写?
  • 本文章只做交流用,如果有错误欢迎回帖指出或加入QQ群143586739. 微信公众号:micropoint8. PT100是正温度系数的热敏电阻,顾名思义,随着温度的升高,电阻的阻值变大;相反,如果随着温度的升高,电阻的阻值变小...
  • STM32f103的数电采集电路的ADC多通道采集程序 STM32拥有1~3个ADC(STM32F101/102系列只有1个ADC),这些ADC可以独立使用,也可以使用双重模式(提高采样率)。STM32的ADC是12位逐次逼近型的模拟数字...
  • 现在想用电流互感器 后接一个整流桥 串联电阻测量 是否可行?
1 2 3 4 5 ... 20
收藏数 1,055
精华内容 422
关键字:

单片机采集交流信号电路