Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os circuitos do sensor são baseados nos circuitos de amostra que são fornecidos pela Parallax em suas fichas técnicas do sensor. Estes circuitos são projetados para integrar cada sensor com o microcontrolador programável Parallax BS2.
Por exemplo, a folha de dados para o sensor de distância ultra-sônico mostra o seguinte diagrama de circuito e imagem:
Neste diagrama, o pino 15 do BS2 recebe os dados do sensor. O firmware para cada um dos sensores é muito semelhante. Ele consiste em duas funções principais: PollSensor e RetrieveInterval.
O código encontrado na função PollSensor varia de sensor para sensor. No caso do sensor de distância ultra-sônico, a função PollSensor emite um pulso com o transdutor ultrassônico, escuta uma resposta e, em seguida, mede o tempo que leva para a resposta ocorrer.
PollSensor:
PULSOUT 15, 5
PULSIN 15, 1, time
cmDistance = cmConstant ** time
RETURN
A função RetrieveInterval é idêntica para todos os sensores. Esta função recupera um novo pacote de intervalo do driver WPD (se um tiver sido enviado) e, em seguida, atualiza a propriedade de intervalo no firmware em conformidade. Se nenhum intervalo foi recebido do driver, a função RetrieveInterval invoca uma função de tempo limite padrão. Esta função transmite os dados do sensor de volta para o driver WPD.
RetrieveInterval:
SERIN 16, 16780, Interval, Timeout, [DEC NewInterval] 'Retrieve interval
IF NewInterval >= 10 AND NewInterval <= 60000 THEN
Interval = NewInterval
ENDIF
RETURN
A função Timeout tem o seguinte formato:
Timeout:
SEROUT 16, 16780, [DEC1 SensorID, DEC1 ElementSize, DEC1 ElementCount, DEC5 cmDistance, DEC5 Interval]
GOTO Main
Lembre-se de que a função Timeout retorna à rotina principal, que invoca PollSensor.
Main:
GOSUB PollSensor 'Determine distance
GOSUB RetrieveInterval 'Retrieve interval data
A seguir está o código-fonte completo para o sensor de distância ultra-sônico:
' Smart Sensors and Applications - PingMeasureCmAndIn.bs2
' Measure distance with Ping))) sensor and display in both in & cm
' {$STAMP BS2}
' {$PBASIC 2.5}
' Conversion constants for room temperature measurements.
CmConstant CON 2260
'InConstant CON 890
cmDistance VAR Word
'inDistance VAR Word
time VAR Word
SensorID VAR Byte 'Sensor identifier = 5 for PIR
ElementSize VAR Byte 'Size (in bytes) of each element
ElementCount VAR Byte 'Count of elements in packet
Padding VAR Byte 'Padding for the 8-byte element
SensorID = 4
ElementSize = 1
ElementCount = 5 '5bytes for distance data
NewInterval VAR Word 'New interval requested by user
Interval VAR Word 'Interval value utlized by firmware
Interval = 2000
NewInterval = 2000
Main:
GOSUB PollSensor 'Was motion detected?
GOSUB RetrieveInterval 'Retrieve units data
Timeout:
SEROUT 16, 16780, [DEC1 SensorID, DEC1 ElementSize, DEC1 ElementCount, DEC5 cmDistance, DEC5 Interval]
GOTO Main
PollSensor:
PULSOUT 15, 5
PULSIN 15, 1, time
cmDistance = cmConstant ** time
RETURN
RetrieveInterval:
SERIN 16, 16780, Interval, Timeout, [DEC NewInterval] 'Retrieve interval
IF NewInterval >= 10 AND NewInterval <= 60000 THEN
Interval = NewInterval
ENDIF
RETURN