log4518 發表於 2010-9-13 17:55:39

請問GP2D12接收電壓值

為了運用ACS712低電流檢測器測量電池殘餘電量,
我修改了GP2D12的程式碼,目的是將GP2D12的顯示接收距離值取消轉換,直接顯示其量測電壓值,
但是BASIC STAMP界面顯示數值始終為0伏特,請問以下程式碼該如何修改才能達到其目的,
謝謝。
---以下為未經修改的原始碼---
' -----[ I/O Definitions ]-------------------------------------------------
Adc0831         PIN   0               ' ADC0831 Chip Select (ADC0831.1)
AdcClock      PIN   1               ' ADC0831 Clock (ADC0831.7)
AdcData         PIN   2               ' ADC0831 Data (ADC0831.6)
' -----[ Constants ]-------------------------------------------------------
span            CON   5               ' 5 cm Per Data Point
' -----[ Variables ]-------------------------------------------------------
result          VAR   Byte            ' ADC8031 Result
volts         VAR   Word            ' Volts (0.01 Increments)
cm            VAR   Byte            ' centimeters
index         VAR   Nib
test1         VAR   Byte            ' Values For
test2         VAR   Byte            ' Interpolation
slope         VAR   Word            ' mV/cm between test points
' -----[ EEPROM Data ]-----------------------------------------------------
Vout            DATA    251, 179, 139, 114,97
                DATA   85,76,67,62,57
                DATA   53,50,48,46,43
                DATA      0
' -----[ Initialization ]--------------------------------------------------
HIGH Adc0831                            ' Disable ADC0831

' -----[ Program Code ]----------------------------------------------------
DO
    GOSUB Read_GP2D12                     ' Read Sensor Value
    GOSUB Calculate_Distance            ' Convert Value To cm
    DEBUG HOME, "Distance = ", DEC cm, " cm "
    PAUSE 100
LOOP
END
' -----[ Subroutines ]-----------------------------------------------------
Read_GP2D12:
volts = 0                           ' Reset Sensor Value
FOR index = 0 TO 2                  ' Read 3 Times
    LOW Adc0831                         ' Enable ADC0831
    SHIFTIN AdcData, AdcClock, MSBPOST, ' Read The Voltage
    HIGH Adc0831                        ' Disable ADC0831
    volts = volts + result            ' Add The Values
    PAUSE 30
NEXT
volts = volts / 3                     ' Average The Readings
RETURN
Calculate_Distance:
FOR index = 0 TO 15                   ' Search DATA Table For Value
    READ (Vout + index), test2          ' Get Value From DATA Table
    IF (test2 <= volts) THEN EXIT       ' Found Value
NEXT
SELECT index
    CASE 0
      cm = 10                           ' Set To Minimum Distance
    CASE 1 TO 14                        ' Calculate Distance
      cm = 10 + (5 * index)
      IF (test2 < volts) THEN         ' Estimate Using Interpolation
      READ (Vout + index - 1), test1
      slope = (test1 - test2) * 10 / span' Calculate Slope
      cm = cm - ((volts - test2) * 10 / slope)
      ENDIF
    CASE 15
      cm = 80                           ' Set To Maximum Distance
ENDSELECT
RETURN

playrobot 發表於 2010-9-15 07:25:46

http://www.playrobot.com/sensor/product%20information/IR/prox/GP2D12.html
頁: [1]
查看完整版本: 請問GP2D12接收電壓值