STMA Sensor Data Transmit Controller Design
: Ultra sonic sensor gateway with ATmega8
#0 Speed of Sound
Temperature (˚C) |
Speed of sound (m/s) |
-5 |
328.25 |
0 |
331.30 |
5 |
334.32 |
10 |
337.31 |
15 |
340.27 |
20 |
343.21 |
25 |
346.13 |
30 |
349.02 |
35 |
351.88 |
340m / 1s
= 340,000mm / 1,000ms
= 340mm / 1ms
= 0.34mm / 1us
#1 Data sheet & User manual guide check
- Spec.
Operating Voltage : 10~16V
Detectable Range : 0.3m~2.0m
Directivity : 80~100 Degree
Output : 5V TTL Level
- Guide.
Trigger output mode data : 31 Hex (0b00110001)
Response wait time 1.3ms~32ms
-> Start signal : After voltage level low input 936~1200us When voltage level high
-> Delay : 113us (Sensor delay : 80us + Circuit delay : 33us)
#2 System design
#3 Hardware design
- Regulator : lm2576 (etc. switching type)
- Trigger, Detect pin : Use ATmega8 internal pull-up resistor
#4 Software design (sudo)
1) port initialize- PB0~PB3 : input mode and internal pull-up
- PB4 : output mode external pull-up
2) Timer interrupt initialize
- 10us Timer set
3) UART interrupt initialize
4) Sensor Setting
- PB4 trigger output mode setting (31hex) like UART signal
5) Logic
- if UART RX input
: All stop (delay 80ms)
: Controller & sensor setting again
: UART data clear, ALL variable clear
- if time >= 60ms, 1stConditionFLAG == 0
: PB4 Sensing Start (00hex)
: time = clear, Timer clear
: set 1stConditionFLAG 1
- else if time >= 45ms, 2ndConditionFLAG == 0
: UART TX (!!! TXdata limit 12byte : Baud 9600, 14.4ms)
: set 2ndConditionFLAG 1
- else if time >= 40ms, 3rdConditionFLAG == 0
: array[n] data calc
: set 3rdConditionFLAG 1
- else
: if PB0 ~ PB3 pin level == low
-> array[n] = Timer
6) ISR UART RX
- uart input = set
- global variable = UDRR
7) ISR OVF 10us Timer
- u16g Timer++ (10us)
- u8g time = Timer / 100 (1ms)
#5 Sensor purchasing link
- STMA-503ND
: http://www.devicemart.co.kr/goods/view?no=1376557
- STMA-506ND
: http://www.devicemart.co.kr/goods/view?no=1376558