Counting Poo/Version 1: Difference between revisions
Created page with "=Introduction= This page summarises the first version of the [Counting Poo] remote sensor unit. The complete unit comprises: *Electronics mounted on PCB and stripboard. *Sof..." |
m Danspencer101 moved page Project:Counting Poo/Version 1 to Counting Poo/Version 1 |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
=Introduction= | =Introduction= | ||
This page summarises the first version of the [Counting Poo] remote sensor unit. | This page summarises the first version of the [Counting Poo] remote sensor and datalogging unit unit. | ||
=Remote Sensor= | |||
The complete unit comprises: | The complete unit comprises: | ||
Line 14: | Line 16: | ||
The primary hardware blocks are: | The primary hardware blocks are: | ||
* Two thermistors (in potential divider configuration) | * Two thermistors (in potential divider configuration). [http://www.farnell.com/datasheets/86141.pdf Data sheet available here] | ||
* One IR sensor comprising: | * One IR sensor comprising: | ||
** Transistor switched IR emitter | ** Transistor switched IR emitter | ||
Line 37: | Line 39: | ||
When powered, the unit immediately begins polling for flushes (the test LED will briefly flash when doing so). | When powered, the unit immediately begins polling for flushes (the test LED will briefly flash when doing so). | ||
When the unit first detects a flush, it will increase its polling rate, and continue to test for flushes until 10 seconds have passed without detection. Only then will it consider a flush to have stopped. | When the unit first detects a flush, it will increase its polling rate, and continue to test for flushes until 10 seconds have passed without detection. Only then will it consider a flush to have stopped. | ||
A flush must last for more than one second (in total) to be considered a flush event. | |||
The unit will then send a "WAKE" serial string, followed by a "aAAFEttooddd" string, where: | The unit will then send a "WAKE" serial string, followed by a "aAAFEttooddd" string, where: | ||
Line 48: | Line 52: | ||
**This duration only counts ''detection time'', not the entire duration. For example, if the unit sensed for '''11''' seconds, followed by a 5 second gap, followed by another '''20''' seconds of detection, followed by the final 10 seconds of no detection, the total time reported would be 11 + 20 = 31 seconds. | **This duration only counts ''detection time'', not the entire duration. For example, if the unit sensed for '''11''' seconds, followed by a 5 second gap, followed by another '''20''' seconds of detection, followed by the final 10 seconds of no detection, the total time reported would be 11 + 20 = 31 seconds. | ||
==== Serial Comms and Programming ==== | |||
The unit has an 8-way connector on board for power, comms and programming. The connector pinout is shown in this image: | |||
<gallery> | |||
File:LatrineSensor_8Way_Pinout.jpg | |||
</gallery> | |||
==== Test Mode ==== | ==== Test Mode ==== | ||
In the bottom-right corner of the PCB, there are two jumpers. If the left-hand jumper is bridged on power-up, the unit enters a test mode. In this mode, the test LED reflects the state of the IR input. When lit, the input is registering an IR reflection. This mode is useful for range and sensitivity testing. | In the bottom-right corner of the PCB, there are two jumpers. If the left-hand jumper is bridged on power-up, the unit enters a test mode. In this mode, the test LED reflects the state of the IR input. When lit, the input is registering an IR reflection. This mode is useful for range and sensitivity testing. | ||
Line 64: | Line 75: | ||
TODO: Summarise build options | TODO: Summarise build options | ||
=Datalogging Unit= | |||
The data logger is based upon the [http://www.re-innovation.co.uk/web12/index.php/en/products-2/dataduino-arduino-data-acquisition-unit DataDuino hardware] but with a few hardware modifications and different software. | |||
The Datalogger unit usually stays in low power sleep mode. | |||
It wakes up when it receives data from the remote sensor unit. | |||
It is based upon the ATMEGA 328 microcontroller. | |||
==Hardware connections== | |||
There is a 6 pole connector between the | |||
Connections to the unit: | |||
*GND | |||
*Tx | |||
*Rx | |||
*PWR | |||
==Hardware changes== | |||
*AREF is connected to the 3V3 reference for battery voltage monitoring | |||
*A potential divider (100K + 100k) is used to monitor the battery voltage on A0. | |||
*A 330 ohm resistor from pin D2 (interrupt 0) to pin D0 (Rx). | |||
==Software== | |||
The software for the datalogger has been written for the Arduino IDE. | |||
The software is available here ***TO DO***. | |||
=Testing Version 1= | |||
12/3/14 | |||
The unit was tested with a tube and water down the tube. | |||
It was not as good as expected and did not always detect a 'flush' of water. | |||
There are a few things that it could be: | |||
*Water absorbs IR wavelengths | |||
*Focal point of sensor is too small | |||
*Focal point of sensor is too diffuse | |||
*Not bright enough IR pulse |
Latest revision as of 11:50, 5 February 2019
Introduction
This page summarises the first version of the [Counting Poo] remote sensor and datalogging unit unit.
Remote Sensor
The complete unit comprises:
- Electronics mounted on PCB and stripboard.
- Software to running on an onboard microcontroller.
- Casing, and other mounting/protection components.
System Components
PCB/Electronics
The remote sensor is designed around an ATTINY84V microcontroller.
The primary hardware blocks are:
- Two thermistors (in potential divider configuration). Data sheet available here
- One IR sensor comprising:
- Transistor switched IR emitter
- Matched IR photodiode (reverse biased)
- LM358 op-amp operating as comparator
- Potentiometer providing comparator voltage reference
The schematic of the main PCB is
The PCB has two IR inputs, but only one is used. In addition, the capacitor filter and pullup resistors are not populated on the used IR input.
The IR components are mounted on stripboard, as the circuit on the PCB was not effective in practice. Further revisions of the hardware will bring these improvements in, along with power reduction improvements.
Using the remote sensor
When powered, the unit immediately begins polling for flushes (the test LED will briefly flash when doing so).
When the unit first detects a flush, it will increase its polling rate, and continue to test for flushes until 10 seconds have passed without detection. Only then will it consider a flush to have stopped.
A flush must last for more than one second (in total) to be considered a flush event.
The unit will then send a "WAKE" serial string, followed by a "aAAFEttooddd" string, where:
- a is the LLAP start char
- AA is the unit ID
- FE is a constant string for "flush event"
- tt is a two-digit ambient temperature in degrees celcius
- oo is a two-digit outflow temperature in degrees celcius
- ddd is a three-digit flush duration in seconds
- This duration only counts detection time, not the entire duration. For example, if the unit sensed for 11 seconds, followed by a 5 second gap, followed by another 20 seconds of detection, followed by the final 10 seconds of no detection, the total time reported would be 11 + 20 = 31 seconds.
Serial Comms and Programming
The unit has an 8-way connector on board for power, comms and programming. The connector pinout is shown in this image:
Test Mode
In the bottom-right corner of the PCB, there are two jumpers. If the left-hand jumper is bridged on power-up, the unit enters a test mode. In this mode, the test LED reflects the state of the IR input. When lit, the input is registering an IR reflection. This mode is useful for range and sensitivity testing.
Note this this mode does NOT send any serial messages, and leaves the IR emitter LED permanently switched on. As such, it is NOT to be used in a real environment. It will eat batteries and provide no useful data.
The right-hand jumper is currently not used.
Software
The software can be found in this GitHub repo. Note that this requires the libraries found in this GitHub repo.
It should be noted that the unit does not implement the full LLAP protocol, due to flash and RAM limits. This is a recommended improvement for subsequent designs.
The UART is currently a receive-only software implementation. It is recommended that future versions use a microcontroller with a hardware UART.
TODO: Summarise build options
Datalogging Unit
The data logger is based upon the DataDuino hardware but with a few hardware modifications and different software. The Datalogger unit usually stays in low power sleep mode.
It wakes up when it receives data from the remote sensor unit.
It is based upon the ATMEGA 328 microcontroller.
Hardware connections
There is a 6 pole connector between the
Connections to the unit:
- GND
- Tx
- Rx
- PWR
Hardware changes
- AREF is connected to the 3V3 reference for battery voltage monitoring
- A potential divider (100K + 100k) is used to monitor the battery voltage on A0.
- A 330 ohm resistor from pin D2 (interrupt 0) to pin D0 (Rx).
Software
The software for the datalogger has been written for the Arduino IDE.
The software is available here ***TO DO***.
Testing Version 1
12/3/14
The unit was tested with a tube and water down the tube.
It was not as good as expected and did not always detect a 'flush' of water.
There are a few things that it could be:
- Water absorbs IR wavelengths
- Focal point of sensor is too small
- Focal point of sensor is too diffuse
- Not bright enough IR pulse