佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2009|回复: 15

voltage level 问题

[复制链接]
发表于 10-4-2009 07:20 PM | 显示全部楼层 |阅读模式
各位,你们好.我正在 built 我的 circuit diagram..它主要的功能是 watt meter... 亦即测试负担所消耗的能量我在 simulation 的时候是没有问题...可是硬体上却跟 simulation result 格格不入.我用了几天的时间研究哪里出了差错..可是我觉得 component 应该没有连结错吧

好滴,我再详细一点.这个 circuit 是要测量 watt 的..
它的 range 可以去到 25 Volts...及 50 Amps (Op-Amp)目前我尝试使用9v的电池来 support 它的 source.
在 simulation 的时候..刚开始 LCD 会出现所有的价值为零可是在硬体上...voltage 那里竟然会有 23V 出来
也许是硬体连接上有差错,或者 Voltage reference 有问题
至于这方面需要大家的指导
它的 LOAD 可以是任何能够消耗能量的导电体Source 以及 LOAD 的电池时分开始用~
但是切记...这个系统只适合 DC connection 而不是 AC.目前我选用 16F88 为我的 MCU...coding 为 PIC ASM...我都使用 MPLAB compile 我的 HEX file...
这里是它的原码....为了方便我使用了 macro...
(软体方面应该不是问题)这个是 Onhonsoft simulate 出来的:

可是我的硬体 LCD 却是:


这个是 circuit design:

[ 本帖最后由 fritlizt 于 11-4-2009 10:44 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 10-4-2009 07:42 PM | 显示全部楼层
原帖由 ttbuddy 于 10-4-2009 07:20 PM 发表
各位,你们好.
我正在 built 我的 circuit diagram..它主要的功能是 watt meter... 亦即测试负担所消耗的能量
我在 simulation 的时候是没有问题...可是硬体上却跟 simulation result 格格不入.
我用了几天的时间研 ...


可是硬体上却跟 simulation result 格格不入.
怎样格格不入?你的circuit有16f88, firmware 也没有。 circuit也不解释怎样操作。
input是什么, output要什么?
既然有simulation result, 为何不post上来? 大家容易明白。

只有非常非常非常的空的人, 花时间帮你看circuit,了解你circuit的用途, 再猜你要的output是什么,然后自己写一个firmware, 一切都做好过后, 你可能来说“output应该是这样这样, 不是那样那样“。
而且你的主题也不明确。

现在你给的info只有-〉
你要用这个circuit diagram做watt meter.
exact output和expected output 不一样

我把贴封了。你改过后pm我自然会开。

改主题。然后
请写明。不懂可以写不懂
i. 你要想做什么? 你的应用是什么?
ii. 你想要拿到什么效果
iii. 你做了什么
iv. 你遇到了什么问题。
v. 你用什么MCU?
vi. 你用什么语言? ASM /C/PICBasic/Keil?Compiler 版本?
vii. 有源码吗? 有电路图吗?
viii. 有照片/图片补充吗?
回复

使用道具 举报

发表于 10-4-2009 08:09 PM | 显示全部楼层
asm你都可以写到floating point.强!
看不到你的simulation, 请update.
其实我不懂你的circuit怎样work.可以大概解释一下吗?
你要如何测量watt呢?

[ 本帖最后由 fritlizt 于 10-4-2009 08:10 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 10-4-2009 09:21 PM | 显示全部楼层
原帖由 fritlizt 于 10-4-2009 08:09 PM 发表
asm你都可以写到floating point.强!
看不到你的simulation, 请update.
其实我不懂你的circuit怎样work.可以大概解释一下吗?
你要如何测量watt呢?


它的 operation 是酱子的:
RA0 port 是负责 sense  voltage input 的, ADC 后 再与 RA1 的  current sensor 相乘得到 watt...
MCP 6022 主要是 amplify shunt current ....
至于 simulation..其实只是用 Onhonsoft 来 run 而已..
回复

使用道具 举报

发表于 10-4-2009 11:32 PM | 显示全部楼层
原帖由 ttbuddy 于 10-4-2009 09:21 PM 发表


它的 operation 是酱子的:
RA0 port 是负责 sense  voltage input 的, ADC 后 再与 RA1 的  current sensor 相乘得到 watt...
MCP 6022 主要是 amplify shunt current ....
至于 simulation..其实只是用 Onh ...


你的program里面的gain是什么?
你的问题是voltage error
确定你的R13, potential meter要调对。否这gain错, calculation也错.

还有你的主体不明确。我封帖。 已经第二次和你说了。
请修改你的主题。你修改过后我再开。

[ 本帖最后由 fritlizt 于 10-4-2009 11:34 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 11-4-2009 11:06 PM | 显示全部楼层
原帖由 fritlizt 于 10-4-2009 11:32 PM 发表


你的program里面的gain是什么?
你的问题是voltage error
确定你的R13, potential meter要调对。否这gain错, calculation也错.

还有你的主体不明确。我封帖。 已经第二次和你说了。
请修改你的主题。你修 ...


其实 program 里没有 involve 到 gain...
它是直接 sense input 的 。。。
所以它的 input 其实已经 amplified...
我已经尝试使用不同的 value 的 R13 ... 效果还是一样~
因为这个 design 是外国工程所设计...
我也 modify 了一点 (只是 LCD connection 而已)。。
我会尝试问他 gain 是多少...
回复

使用道具 举报

Follow Us
发表于 11-4-2009 11:36 PM | 显示全部楼层
原帖由 ttbuddy 于 11-4-2009 11:06 PM 发表


其实 program 里没有 involve 到 gain...
它是直接 sense input 的 。。。
所以它的 input 其实已经 amplified...
我已经尝试使用不同的 value 的 R13 ... 效果还是一样~
因为这个 design 是外国工程所设计. ...


R13 是10k potential meter.
根据你的calculation,你需要知道你的r13需要转到多少ohm.
你不知道怎样转, 换几个也没用。

还有, 你的circuit怎样操作?
你不可能量到0v吧?
无论如何 你也需要battery power来操作你的watt meter 啊。
一有电power你的watt meter,你的watt meter 一定量到source voltage。
回复

使用道具 举报

 楼主| 发表于 11-4-2009 11:43 PM | 显示全部楼层
原帖由 fritlizt 于 11-4-2009 11:36 PM 发表


R13 是10k potential meter.
根据你的calculation,你需要知道你的r13需要转到多少ohm.
你不知道怎样转, 换几个也没用。

还有, 你的circuit怎样操作?
你不可能量到0v吧?
无论如何 你也需要battery po ...


它其实一开始 initialization 的时候
voltage suppose 是零的
一旦有 load connected.. 就会有 voltage 和 current ...
然后即时计算 watt .....
watt meter 也有自己本身的 power supply
我用的是 9V 的 battery
回复

使用道具 举报


ADVERTISEMENT

发表于 11-4-2009 11:46 PM | 显示全部楼层
原帖由 ttbuddy 于 11-4-2009 11:43 PM 发表


它其实一开始 initialization 的时候
voltage suppose 是零的
一旦有 load connected.. 就会有 voltage 和 current ...
然后即时计算 watt .....
watt meter 也有自己本身的 power supply
我用的是 9V 的  ...


我在你的schematics中看不到你如何使用watt meter自己本身的 power supply,也就是9v battery。
还有R13你要转去什么value你懂吗?
回复

使用道具 举报

 楼主| 发表于 12-4-2009 12:00 AM | 显示全部楼层
原帖由 fritlizt 于 11-4-2009 11:46 PM 发表


我在你的schematics中看不到你如何使用watt meter自己本身的 power supply,也就是9v battery。
还有R13你要转去什么value你懂吗?


SOURCE +/- 就是 watt meter 的 power supply 啊~
R13 是什么 value 其实我真得不晓得~
只知道它的 range 是 818.18mV 和  685.57mv  而已
                              
回复

使用道具 举报

发表于 12-4-2009 12:13 AM | 显示全部楼层
原帖由 ttbuddy 于 12-4-2009 12:00 AM 发表


SOURCE +/- 就是 watt meter 的 power supply 啊~
R13 是什么 value 其实我真得不晓得~
只知道它的 range 是 818.18mV 和  685.57mv  而已
                              


这样的话你的load power也就是你的source power.在你的schematics他们是short的。
你如何分开使用?

只知道它的 range 是 818.18mV 和  685.57mv  而已
-〉你指的“它“是什么东西?
818.18mV 和  685.57mv这个是什么value? 用来做什么的?

R13 是什么 value 其实我真得不晓得~
-〉这样的话我很难帮你。 你都不知道, 难道我知道?
运算方法, source code你也没有。我猜不到你要的R13.我只能告诉你的R13 小过10k ohm.
R13就是那个量voltage 的key.不知道R13,你拿不到正确的value.

[ 本帖最后由 fritlizt 于 12-4-2009 12:19 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 12-4-2009 12:41 AM | 显示全部楼层
原帖由 fritlizt 于 12-4-2009 12:13 AM 发表


这样的话你的load power也就是你的source power.在你的schematics他们是short的。
你如何分开使用?

只知道它的 range 是 818.18mV 和  685.57mv  而已
-〉你指的“它“是什么东西?
818.18mV 和  685.57m ...


这样说来那个  source 其实是 power supply for 我的 load 咯~
谢谢你提醒。。因为我真的 follow 他的 set up...
这里是 main program:
  1. Start:
  2.         clrf         PORTA
  3.         clrf        PORTB
  4.         bsf        STATUS,RP0        ; bank 1
  5.         ifdef        __16F88
  6.         movlw        B'11101111'        ; PortA directions (16F88)
  7.         movwf        TRISA
  8.         movlw        B'11000001'        ; PortB directions (16F88)
  9.         movwf        TRISB
  10.         movlw        B'01100000'        ; 4MHz internal osc (16F88)
  11.         movwf        OSCCON
  12.         else
  13.         movlw        B'11111111'        ; PortA directions (16F870)
  14.         movwf        TRISA
  15.         movlw        B'00000000'        ; PortB directions (16F870)
  16.         movwf        TRISB
  17.         movlw        B'11111111'        ; PortC directions (16F870)
  18.         movwf        TRISC
  19.         endif
  20.         movlw   B'01010111'        ; Weak pullups enabled, Timer0 src = clkout/256
  21.         movwf        OPTION_REG
  22.         bcf        STATUS,RP0        ; bank 0

  23. ; Set up Interrupts

  24.         clrf        INTCON                ; clear any pending ints
  25.         clrf        PIR1
  26.         bsf        INTCON,PEIE        ; enable peripheral ints
  27.         bsf        INTCON,GIE        ; enable interrupts

  28. ; set up LCD Display

  29.         movlw        25                ; wait 500mS
  30.         call        waitx20k

  31.         call        LCDinit                ; Set up the LCD display
  32.         call        show_signon        ; show signon message

  33.         movlw        50                ; wait 1 second
  34.         call        waitx20k

  35. ; set up A/D convertor

  36.         bsf        STATUS,RP0        ; bank 1
  37.         ifdef        __16F88
  38.         movlw        b'10110000'        ; right-justify, ext vref (16F88)
  39.         movwf        ADCON1
  40.         movlw        b'00001111'
  41.         movwf        ANSEL                ; Analog inputs on RA0~RA3 (16F88)
  42.         else
  43.         movlw        b'10001101'        ; right-justify, ext vref, RA1/RA0 (16F870)
  44.         movwf        ADCON1
  45.         endif
  46.         bcf        STATUS,RP0        ; bank 0
  47.         movlw        b'01000000'        ; CLK/8
  48.         movwf        ADCON0

  49. ; Start Timer0

  50.         movlw        REFRESH_DELAY
  51.         movwf        TMR0

  52. ; initialize variables

  53.         clrf        Flags
  54.         clrf        Flags2
  55.         movlw        0
  56.         movwf        pagenum
  57.         clrf        Page_Timer
  58.         clrf        Blade_Timer
  59.         clr16        CCPR
  60.         clr16        Period
  61.         clr32        AmpSum
  62.         clr32        rpm
  63.         movlw        2
  64.         movwf        NumBlades

  65. ; Set up CCP1 and Timer1 for rpm capture

  66.         clrf        TMR1L
  67.         clrf        TMR1H                ; clear Timer1
  68.         movlw        b'00100001'
  69.         movwf        T1CON                ; 4:1 prescaler, Timer1 ON
  70.         bcf        PIR1,TMR1IF
  71.         bcf        PIR1,CCP1IF        ; clear Int flags
  72.         banksel        PIE1
  73.         bsf        PIE1,CCP1IE        ; enable CCP1 Ints
  74.         bsf        PIE1,TMR1IE        ; enable TMR1 Ints
  75.         banksel        0
  76.         movlw        b'00000111'        ; capture every 16th leading edge
  77.         movwf        CCP1CON                ; enable Capture

  78. ReadInputs:
  79.         clr16        Volts
  80.         clr16        Amps
  81.         clr16        Watts
  82.         movlw        64                ; 64 times oversampling
  83.         movwf        Readings
  84. NextRead:
  85.         movlw        b'01000001'        ; CLK/8, select RA0 (Volts), A/D on
  86.         movwf        ADCON0
  87.         call        wait100                ; wait 100uS to stabilize analog input
  88.         bsf        ADCON0,GO_DONE        ; start A/D conversion
  89. waitv:        btfsc        ADCON0,GO_DONE
  90.         goto        waitv                ; wait until conversion Done
  91.         movf        ADRESH,w
  92.         movwf        Temp1
  93.         addwf        Volts
  94.         bsf        STATUS,RP0
  95.         movf        ADRESL,w        ; add 10 bit A/D result to Volts
  96.         bcf        STATUS,RP0
  97.         movwf        Temp2
  98.         addwf        Volts+1
  99.         skpnc
  100.         incf        Volts

  101.         bcf        Flags,MAX_VOLTS
  102.         movf        Temp1,w
  103.         xorlw        b'00000011'
  104.         skpnz
  105.         bsf        Flags,MAX_VOLTS        ; Volts overloaded ?
  106.         movf        Temp2,w
  107.         xorlw        b'11111111'
  108.         skpz
  109.         bcf        Flags,MAX_VOLTS

  110.         movlw        b'01001001'        ; CLK/8, select RA1 (Amps), A/D on
  111.         movwf        ADCON0
  112.         call        wait100                ; wait 100uS to stabilize analog input
  113.         bsf        ADCON0,GO_DONE        ; start A/D conversion
  114. waita:        btfsc        ADCON0,GO_DONE
  115.         goto        waita                ; wait until conversion Done
  116.         movf        ADRESH,w
  117.         movwf        Temp1
  118.         addwf        Amps
  119.         bsf        STATUS,RP0
  120.         movf        ADRESL,w        ; get 10 bit A/D result
  121.         bcf        STATUS,RP0
  122.         movwf        Temp2
  123.         addwf        Amps+1
  124.         skpnc
  125.         incf        Amps

  126.         bcf        Flags,MAX_AMPS
  127.         movf        Temp1,w
  128.         xorlw        b'00000011'
  129.         skpnz
  130.         bsf        Flags,MAX_AMPS        ; Amps overloaded ?
  131.         movf        Temp2,w
  132.         xorlw        b'11111111'
  133.         skpz
  134.         bcf        Flags,MAX_AMPS

  135.         decfsz        Readings
  136.         goto        NextRead        ; accumulate readings

  137.         clrc
  138.         rr16        Volts                ; Volts / 2

  139.         movlw        Volts
  140.         call        Divx12                ; Volts / 12.8

  141.         movlw        Amps
  142.         call        Divx12                ; Amps / 12.8

  143.         btfsc        Flags,GOT_ZERO        ; have Amps been zeroed ?
  144.         goto        sub_zero
  145. get_zero:
  146.         mov16        Amps,ZeroAmps        ; record zero Amps value
  147.         bsf        Flags,GOT_ZERO
  148. sub_zero:
  149.         bcf        Flags,NEG_AMPS
  150.         sub16        ZeroAmps,Amps        ; subtract zero value from Amps
  151.         skpnc
  152.         goto        got_amps
  153.         bsf        Flags,NEG_AMPS
  154.         com16        Amps                ; Amps = -0 to -0.99
  155. got_amps:
  156.         mov16        Amps,aa
  157.         mov16        Volts,bb
  158.         call        Mult16                ; Watts = Volts * Amps
  159.         movi16        1000,aa
  160.         call        Div32                ; Watts = Watts / 1000
  161.         subi16        500,bb
  162.         skpc                        ; remainder > 0.5 ?
  163.         goto        store_watts
  164.         inc16        dd+2                ; yes, round up
  165. store_watts:
  166.         mov16        dd+2,Watts
  167. calc_Ah:
  168.         add1632        Amps,AmpSum        ; AmpSum = accumulated Amps
  169.         mov32        AmpSum,dd
  170.         movi16        3600*3,aa        ; 3 reads per second, 3600 seconds per hour
  171.         call        Div32                ; AmpHours = AmpSum  / (reads per hour)
  172. store_Ah:
  173.         mov16        dd+2,AmpHours
复制代码
回复

使用道具 举报

发表于 18-4-2009 10:34 PM | 显示全部楼层
帮顶,版主怎不出现了?!
回复

使用道具 举报

发表于 19-4-2009 01:03 AM | 显示全部楼层
原帖由 carimood 于 18-4-2009 10:34 PM 发表
帮顶,版主怎不出现了?!


之前rothman 大大有回复了。 只是楼主不理不睬。 他就删了
我想这样的情况下, 要人继续回复应该很难吧。
迟点在上来看看。
回复

使用道具 举报

发表于 19-4-2009 02:35 AM | 显示全部楼层
呵呵~~~幸苦了!
回复

使用道具 举报

 楼主| 发表于 20-4-2009 10:03 AM | 显示全部楼层
最近都在忙考试...所以没时间上来...
可是从原先的设计图看来,负担和 source 应该是 share 同一个 supply 吧....
或者大大有什么见解呢?

根据原者的解说是:
如果我要另外 power up 我的 wattmeter 的话
我就必须 disconnect 我的 D1  from +ve terminal...
然后 connect 自己的 power 进去....
然而,LOAD 与 power supply 的 ground 必须是一起的~
回复

使用道具 举报


ADVERTISEMENT

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 8-1-2025 12:52 PM , Processed in 0.152766 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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