Comments (15)
OK, this is not working properly at all. It is being triggered multiple times during one cycle. We need a new algorithm.
from leads.
Bringing angular acceleration into consideration may be the solution. By limiting the angular acceleration we might be able to dynamically adjust the bounce time.
from leads.
I haven't had a chance to look at the code but maybe we can discuss this before the 3pm team meeting today.
from leads.
Another possible solution is to add an acceleration sensor as a reference.
from leads.
Yes, might not be a bad idea to add an accelerometer ... could be useful for other purposes.
from leads.
This looks promising but seems to be hard to implement on Arduino: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3871922/
from leads.
Bounce time turns out to be an ineffective way to pop up the noise.
If the input is plotted in relation to time, it looks like this:
..... ..... .... ... .. ..
We determine the exit of the magnet by checking if the dots are consecutive.
from leads.
- Does the 5 dot sequence at the left represent the peak of the magnet entry and exit?
- Is this pattern repeatable (or somewhat repeatable) for each entry and exit of the magnet?
from leads.
The pattern shows that every time the magnet is close enough to the sensor, the sensor will be consecutively triggered for a period of time, and the period ends as it departs farther enough. The sensor reads at a variable rate, yet, in the triggering period, every time it reads it is triggered. We recognize this pattern as the entry and the exit, which means we have a bounce time that is equivalent to the sensor's detection interval.
If the wheel is running fast enough that it is meant to trigger the sensor constantly, the algorithm will fail to validate that input and interpret it as 0 RPM.
from leads.
The pattern shows that every time the magnet is close enough to the sensor, the sensor will be consecutively triggered for a period of time, and the period ends as it departs farther enough. The sensor reads at a variable rate, yet, in the triggering period, every time it reads it is triggered. We recognize this pattern as the entry and the exit, which means we have a bounce time that is equivalent to the sensor's detection interval. If the wheel is running fast enough that it is meant to trigger the sensor constantly, the algorithm will fail to validate that input and interpret it as 0 RPM.
This has been proved effective.
from leads.
Can run an experiment on different diameter wheels to pin down a linear distance during which the sensor is triggered while in the field of the magnet? Our target wheel is 20". We would want to find the optimal distance away from the axle to mount the magnet and specify a mechanical mount for the sensor.
from leads.
It's about less than 2 cm by visual inspection.
from leads.
It looks just fine now except for two drawbacks.
- The feedback rate depends on the speed of the wheel
- Cannot determine zero speed
from leads.
Btw I've completed the adapter that provides the connection between the Raspberry Pi (I'm using a laptop instead for debugging purposes, but it should work just the same on the Raspberry Pi) and the Arduino.
from leads.
Zero speed determination algorithm will be discussed in a separate issue (#48).
from leads.
Related Issues (20)
- Support GPS Only Mode
- Use `match` Instead of `if` Trees
- Add a GUI Application for the Post-process Analysis
- Support Automatic Serial Port Recognization HOT 1
- Support Pedals as Built-in Devices HOT 3
- Detailed Testing of LEADS Analog Sensors HOT 2
- Support CAN Bus
- Support Motor Control
- Fix System Failure Tracer Logic
- Dennis Weishar Engineering Design Award - Waterloo EV Challenge HOT 4
- TypeError: called match pattern must be a class
- Provide Tensor Interfaces for Deep Learning Use Cases
- Jarvis: Teaching Drivers How to Drive HOT 1
- Include Throttle and Brake Data in the Default Header
- Improve the Efficiency of Calling the Super Method in `CallbackChain`
- Add Video Support
- Include Front View in the Data Container
- Support Throttle and Brake Emulation
- Simplify the Path of Package `leads_vec` with a Keyword
- Support an Alternative Devices Module for Jarvis
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from leads.