It took a bit of experimentation to get the 6+' distance. It's all about placement of the
small RFID LF antennas on the receiving unit. Once you get that dialed-in you get a
whopping range. The first pictures were the initial prototypes. These had around 3+'
range.
This picture is the final version that works at 6+' range. If you compare placement of the
small RFID antennas on this one to the one above you'll know how/where to put them for
excellent range. You can walk up to the initiator with the ID badge in your back pocket, and
it still gets solid comms.
The final ID board is about 1/3 the size of a credit card, and modified to fit into a keychain
type plastic enclosure.
SMD caps & resistors are all 0402 size. Boy were those fun to hand-solder on the last
prototype. Phew...
would I need to modulate the Debugout signal
I used a TC4422A high-speed MOSFET driver to drive the large LF antenna, and PWM to send
data like this;
Code:
ID_Init:
T1CON.0 = 0 ' Shut-down Timer1 during wake-up routine
' Wakeup sequence. 4mS ON, 500uS gap, 2mS ON, 2mS OFF. Then
' follow up with header & data.
CCP1CON = 12 ' PWM ON
PAUSEUS AGC_STABLE
CCP1CON = 0 ' PWM OFF
PAUSEUS GAP
CCP1CON = 12
PAUSEUS 2210 ' 2mS ON
CCP1CON = 0
PAUSEUS 2210 ' 2mS OFF
' Wakeup sequence complete
CCP1CON = 12 ' Send header after initial wakeup
PAUSE 1 ' 1mS high on receiver LFDATA pin
CCP1CON = 0
PAUSEUS 500 ' header complete
' Transponder should now be waiting for data payload
FOR LOOPS = 0 TO 7 ' loop for all 8-bits
CCP1CON = 12
IF DAT.0[LOOPS] THEN
PAUSEUS 500
ELSE
PAUSEUS 250
ENDIF
CCP1CON = 0
PAUSEUS 500 ' this pause allows 500uS for ID badge to respond
NEXT LOOPS ' after challenge code is sent.
CCP1CON = 0 ' turn off PWM
' Data payload complete
PAUSE 5 ' Pause a bit so interrupt flag-bit can be set when ID badge responds
TMR1L = 0
TMR1H = 0 ' Clear Timer1 count before re-enabling
T1CON.0 = 1 ' Re-enable Timer1 on exit
RETURN
' Notes: After wakeup the receivers 16F639 AFE inactivity
' timer will expire after 16mS. Any gap in transmision that
' exceeds 16mS will require another wakeup sequence before data
' can be sent.
The receiving end just uses PULSIN to grab the inbound data.
Bookmarks