查看: 2009|回复: 15
|
voltage level 问题
[复制链接]
|
|
发表于 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 是多少... |
|
|
|
|
|
|
|
发表于 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 |
|
|
|
|
|
|
|
发表于 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:
- Start:
- clrf PORTA
- clrf PORTB
- bsf STATUS,RP0 ; bank 1
- ifdef __16F88
- movlw B'11101111' ; PortA directions (16F88)
- movwf TRISA
- movlw B'11000001' ; PortB directions (16F88)
- movwf TRISB
- movlw B'01100000' ; 4MHz internal osc (16F88)
- movwf OSCCON
- else
- movlw B'11111111' ; PortA directions (16F870)
- movwf TRISA
- movlw B'00000000' ; PortB directions (16F870)
- movwf TRISB
- movlw B'11111111' ; PortC directions (16F870)
- movwf TRISC
- endif
- movlw B'01010111' ; Weak pullups enabled, Timer0 src = clkout/256
- movwf OPTION_REG
- bcf STATUS,RP0 ; bank 0
- ; Set up Interrupts
- clrf INTCON ; clear any pending ints
- clrf PIR1
- bsf INTCON,PEIE ; enable peripheral ints
- bsf INTCON,GIE ; enable interrupts
- ; set up LCD Display
- movlw 25 ; wait 500mS
- call waitx20k
- call LCDinit ; Set up the LCD display
- call show_signon ; show signon message
- movlw 50 ; wait 1 second
- call waitx20k
- ; set up A/D convertor
- bsf STATUS,RP0 ; bank 1
- ifdef __16F88
- movlw b'10110000' ; right-justify, ext vref (16F88)
- movwf ADCON1
- movlw b'00001111'
- movwf ANSEL ; Analog inputs on RA0~RA3 (16F88)
- else
- movlw b'10001101' ; right-justify, ext vref, RA1/RA0 (16F870)
- movwf ADCON1
- endif
- bcf STATUS,RP0 ; bank 0
- movlw b'01000000' ; CLK/8
- movwf ADCON0
- ; Start Timer0
- movlw REFRESH_DELAY
- movwf TMR0
- ; initialize variables
- clrf Flags
- clrf Flags2
- movlw 0
- movwf pagenum
- clrf Page_Timer
- clrf Blade_Timer
- clr16 CCPR
- clr16 Period
- clr32 AmpSum
- clr32 rpm
- movlw 2
- movwf NumBlades
- ; Set up CCP1 and Timer1 for rpm capture
- clrf TMR1L
- clrf TMR1H ; clear Timer1
- movlw b'00100001'
- movwf T1CON ; 4:1 prescaler, Timer1 ON
- bcf PIR1,TMR1IF
- bcf PIR1,CCP1IF ; clear Int flags
- banksel PIE1
- bsf PIE1,CCP1IE ; enable CCP1 Ints
- bsf PIE1,TMR1IE ; enable TMR1 Ints
- banksel 0
- movlw b'00000111' ; capture every 16th leading edge
- movwf CCP1CON ; enable Capture
- ReadInputs:
- clr16 Volts
- clr16 Amps
- clr16 Watts
- movlw 64 ; 64 times oversampling
- movwf Readings
- NextRead:
- movlw b'01000001' ; CLK/8, select RA0 (Volts), A/D on
- movwf ADCON0
- call wait100 ; wait 100uS to stabilize analog input
- bsf ADCON0,GO_DONE ; start A/D conversion
- waitv: btfsc ADCON0,GO_DONE
- goto waitv ; wait until conversion Done
- movf ADRESH,w
- movwf Temp1
- addwf Volts
- bsf STATUS,RP0
- movf ADRESL,w ; add 10 bit A/D result to Volts
- bcf STATUS,RP0
- movwf Temp2
- addwf Volts+1
- skpnc
- incf Volts
- bcf Flags,MAX_VOLTS
- movf Temp1,w
- xorlw b'00000011'
- skpnz
- bsf Flags,MAX_VOLTS ; Volts overloaded ?
- movf Temp2,w
- xorlw b'11111111'
- skpz
- bcf Flags,MAX_VOLTS
- movlw b'01001001' ; CLK/8, select RA1 (Amps), A/D on
- movwf ADCON0
- call wait100 ; wait 100uS to stabilize analog input
- bsf ADCON0,GO_DONE ; start A/D conversion
- waita: btfsc ADCON0,GO_DONE
- goto waita ; wait until conversion Done
- movf ADRESH,w
- movwf Temp1
- addwf Amps
- bsf STATUS,RP0
- movf ADRESL,w ; get 10 bit A/D result
- bcf STATUS,RP0
- movwf Temp2
- addwf Amps+1
- skpnc
- incf Amps
- bcf Flags,MAX_AMPS
- movf Temp1,w
- xorlw b'00000011'
- skpnz
- bsf Flags,MAX_AMPS ; Amps overloaded ?
- movf Temp2,w
- xorlw b'11111111'
- skpz
- bcf Flags,MAX_AMPS
- decfsz Readings
- goto NextRead ; accumulate readings
- clrc
- rr16 Volts ; Volts / 2
- movlw Volts
- call Divx12 ; Volts / 12.8
- movlw Amps
- call Divx12 ; Amps / 12.8
- btfsc Flags,GOT_ZERO ; have Amps been zeroed ?
- goto sub_zero
- get_zero:
- mov16 Amps,ZeroAmps ; record zero Amps value
- bsf Flags,GOT_ZERO
- sub_zero:
- bcf Flags,NEG_AMPS
- sub16 ZeroAmps,Amps ; subtract zero value from Amps
- skpnc
- goto got_amps
- bsf Flags,NEG_AMPS
- com16 Amps ; Amps = -0 to -0.99
- got_amps:
- mov16 Amps,aa
- mov16 Volts,bb
- call Mult16 ; Watts = Volts * Amps
- movi16 1000,aa
- call Div32 ; Watts = Watts / 1000
- subi16 500,bb
- skpc ; remainder > 0.5 ?
- goto store_watts
- inc16 dd+2 ; yes, round up
- store_watts:
- mov16 dd+2,Watts
- calc_Ah:
- add1632 Amps,AmpSum ; AmpSum = accumulated Amps
- mov32 AmpSum,dd
- movi16 3600*3,aa ; 3 reads per second, 3600 seconds per hour
- call Div32 ; AmpHours = AmpSum / (reads per hour)
- store_Ah:
- 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 必须是一起的~ |
|
|
|
|
|
|
| |
本周最热论坛帖子
|