基于单片机的高精度多路数据采集系统内容摘要:

最大 5. 高电源电压范围: 177。 3V 至 177。 22V 基于单片机的高精度多路数据采集系统 13 图 210 OP07 外型图片 图 211 OP07 管脚图 OP07 芯片 引脚 功能说明: 1 号和 8 号引脚为偏置 平衡 (调零端 ), 2 号引脚为反向输入端, 3 号引脚为正向输入端, 4 号引脚接地, 5 号引脚空脚, 6 号引脚为输出, 7 号引脚接电源 +。 ( 2) OP27 低噪声高精度运算放大器 OP27 的 特点如下: 1. 低噪声: 80nV(峰 峰值 )(~ 10Hz), 3nV/√Hz 2. 低漂移: ℃ ;高速:转换率 , 8MHz 增益带宽 3. 低 VOS: 10μV 4. 良好的 CMRR:在 VCM 为 177。 11V 时为 126dB 5. 高开环增益: 图 212 OP27 管脚图 基于单片机的高精度多路数据采集系统 14 运算放大器 OP0 OP27 组成的差分放大电路,对输入信号有很强的 抑制能力。 图 213 差分放大电路模块 对 图 213所示的差分放大电路 的一些 说明: 1. U5为 +,可将输入的 +5V电压稳定在 +。 2. R7为可调电阻,可将输入电压限定在一个值上。 3. R11同样为可调电阻,可调整偏置电压。 4. C R2 R25具有滤波作用。 5. R20起到分压的作用。 输入输出驱动模块 ( 1)输入驱动模块 图 214 三极管 Q1 构成的输入电路 SWin1 与 MSP430F425 的 53 号引脚相连; Din1 与 UART 通用串口通讯的 4 号引脚相连。 基于单片机的高精度多路数据采集系统 15 输入电路的作用是读取 外界的高低电平,当外部的电压、电流变化较大时,使输入电压只在 DVCC之间变动,避免单片机受到外部大电压的冲击而损坏。 ( 2)输出驱动模块 图 215 三极管 Q2 构成的输出电路 SWout1 与 MSP430F425 的 54 号引脚相连; Dout1 与 UART 通用串口通讯的 1 号引脚相连。 单片机驱动能力有限,不能输出大电流。 使用三极管后,单片机可以通过控制基极电流来控制三极管的输出,使输出电压在 0V~5V 之间变动,并可输出较大电流。 当 Din1 输入一个较小的小电流时, Dout1 就可输出一个较大的电流。 使得 该电路抗 干扰能力强,可以不受到单片机的局限。 基于单片机的高精度多路数据采集系统 16 3 MSP430F425 数据采集系统的仿真与调试 PCB 板的绘制 PCB 板的绘制过程如下: ( 1)得到正确的原理图和网络表 绘制原理图是绘制 PCB 板 图的前提,网络表是连接原理图和 PCB 板 图的中介,所以在绘制 PCB 电路板之前一定要先得到正确的原理图和网络表。 另外 ,我们可以通过手工更改网络表,将一些元件的固定接脚等原理图上没有的焊盘定义到与它相通的网络上,没任何物理连接的可定义到地或保护地等。 ( 2)画出自己定义的非标准器件的封装库 自己独立绘制的封装一定要在 PCB 设计 之前完成,在制作 PCB 电路板 时,我们会导入这些自己制作的封装。 ( 3)规划电路板 电路板是采用 单面板还是多层板, 电路板 的形状、尺寸等具体的参数以及电路板的安装方式等在这里都要一并考虑。 另外,还要考虑 电路板 与外界的接口形式,选择具体接插件的封装形式。 ( 4)元件手工布局 应当从机械结构、散热、电磁干扰、将来布线的方便性等方面综合考虑。 先布置与机械尺寸有关的器件并锁定这些 器件,然后是大的占位置的器件和电路的核心元件,再是外围的小元件。 对于同一个器件用多种封装形式的,可以把这个器件的封装改为第二种封装形式并放好后对这个器件用撤消元件组功能,然后再调入一次网络表并放好新调入的这个器件,有更多种封装形式时依此类推。 放好后可以用 VIEW3D 功能查看一下实际效果。 如果不甚满意的话可以根据实际情况再作适当调整,然后将全部器件锁定。 假如板上空间允许,则可在板上放上一些类似于实验板的布线区。 对于大板子应在中间多加固定螺丝孔,板上有重的器件或较大的接插件等受力器件边上也应加固定螺丝孔。 有需 要的话,可在适当位置放上一些测试用焊盘。 将过小的焊盘过孔改大,将所有固定螺丝孔焊盘的网络定义到地或保护地等。 ( 5)布线完成后的调整 布通之后,对布线进行手工初步调整。 调整的内容有:需加粗的地线、电源线、功率输出线等进行手动加粗;某几根绕得太多,太过繁琐的线重布;消除部分不必要的过孔。 另外,我们还要切换到单层显示模式下将每个布线层的线拉整齐和美观。 手工调整时应经常进行 DRC,因为有时有些线会断开。 快完成时可将每个布线层单独打印出来基于单片机的高精度多路数据采集系统 17 以方便改线。 图 31 使用 Protel99SE 绘制的系统 PCB 板 系统程序编译 本课题使用 IAR Embedded Workbench for TI MSP430——MSP430 集成开发环境和C/C++编译器对系统程序进行编译。 基于单片机的高精度多路数据采集系统 18 图 32 使用 IAR for MSP430 软件进行编译 ( 1)变量定义和 LCD 地址影射程序 define Clock_MHZ define SD16_CH BIT0 define SD16_CH_END BIT1 define Run_Led_ON P2DIR|=BIT2。 P2OUTamp。 =~BIT2。 define Run_Led_OFF P2DIR|=BIT2。 P2OUT|=BIT2。 define IO_OUT_H P1DIR|=BIT1。 P1OUT|=BIT1。 define IO_OUT_L P1DIR|=BIT1。 P1OUTamp。 =~BIT1。 /* LCD Mapping Array */ const char digit[40] = { 0x11, 0x11, // 39。 039。 LCD segments a+b amp。 c+d = lower two bytes 基于单片机的高精度多路数据采集系统 19 0x11, 0x00, // 39。 039。 LCD segments e+f amp。 g+h = upper two bytes 0x10, 0x01, // 39。 139。 0x00, 0x00, // 39。 139。 0x11, 0x10, // 39。 239。 0x01, 0x01, // 39。 239。 0x11, 0x11, // 39。 339。 0x00, 0x01, // 39。 339。 0x10, 0x01, // 39。 439。 0x10, 0x01, // 39。 439。 0x01, 0x11, // 39。 539。 0x10, 0x01, // 39。 539。 0x01, 0x11, // 39。 639。 0x11, 0x01, // 39。 639。 0x11, 0x01, // 39。 739。 0x00, 0x00, // 39。 739。 0x11, 0x11, // 39。 839。 0x11, 0x01, // 39。 839。 0x11, 0x11, // 39。 939。 0x10, 0x01, // 39。 939。 }。 ( 2)系统设置程序 void Init_System(void) { unsigned long clock。 double temp_clk。 volatile unsigned int i。 // Use volatile to prevent removal WDTCTL = WDTPW + WDTHOLD。 // Stop WDT FLL_CTL0 |= XCAP14PF。 // Configure load caps for (i = 0。 i 10000。 i++)。 // Delay for 32 kHz crystal to //初使化写入 FLASH 的时钟 FCTL2 = FWKEY + FSSEL_1 + FN1。 // MCLK/3 for Flash Timing Generator //初使化端口 0 temp_clk=Clock_MHZ。 temp_clk=temp_clk*。 clock=temp_clk/9600。 基于单片机的高精度多路数据采集系统 20 UCTL0 = CHAR。 // 8bit character, UTCTL0 = SSEL0。 // UCLK = ACLK UMCTL0 = 0x52。 // modulation UBR00 = clock。 // UBR10 = clock8。 // ME1 |= UTXE0 + URXE0。 // Enable USART0 TXD/RXD IE1 |= URXIE0。 // Enable USART1 RX interrupt P2SEL |= BIT4+BIT5。 // ,7 = USART1 TXD/RXD //初使化 SD16 的部分 SD16CTL = SD16REFON+SD16SSEL_2+SD16VMIDON。 // ref, SMCLK SD16CCTL0 |= SD16GRP。 // Group with CH1 SD16CCTL1 |= SD16GRP。 // Group with CH2 SD16CCTL2 |= SD16IE。 // Enable interrupt for (i = 0。 i 0x3600。 i++)。 // Delay for ref startup //当前为初使化输入的部分 P1DIRamp。 =~BIT0。 //初使化输出的部分 P1DIR|=BIT1。 //初使化按键的部分 P2DIRamp。 =~BIT3。 //初使化 LCD 部分 LCDCTL = LCDSG0_5 + LCDSTATIC + LCDON。 // Static LCD, segments S0S31 BTCTL = BT_fLCD_DIV256。 // LCD 的时钟频率 ACLK/256 for(i=0。 i16。 i++) LCDMEM[i]=0x00。 _EINT()。 //一般中断启用 SD16CCTL2 |= SD16SC。 // 设置断点 KEY_Status=0。 //变量清零 Count=0。 SD16_Status=0。 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。