Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4081|回復: 1

請問GP2D12接收電壓值

[複製鏈接]
發表於 2010-9-13 17:55:39 | 顯示全部樓層 |閱讀模式
為了運用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, [result\9]  ' 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 | 顯示全部樓層
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2022-1-19 01:28 , Processed in 0.143785 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表