Odometrie Teiler

paddy

Active member
Hallo zusammen,

das neue Board verfügt über einen Odometrie Teiler. Ich habe es so verstanden, dass damit die vielen Ticks der Shop Motoren reduziert werden um den Arduino nicht mit zu vielen Interrupts zu stören. Gibt es irgendwo eine Anleitung, wie der Teiler arbeitet bzw. welche Lötbrücke was bewirkt? Ich blicke da nicht ganz durch.

Hintergrund meiner Frage: ich verwende andere Motoren und nutze eine Lichtschranke zur Erfassung. Damit komme ich ohnehin auf deutlich weniger Ticks und möchte diese 1-zu-1 an den DUE senden. Muss ich hier bestücken und wenn ja, wo?

Hi there,
as I see, the new board provides hardware settings for odometry. As I understood, it is used to reduce the ticks and so the interrupts for Arduino. Because I can't find any information about possible settings. I wonder what I should solder here. I don't use shop motors. Instead, I use an IR sensor to count the ticks. I want to give all signals to DUE resulting that 1 tick triggers 1 interrupt. Do I need to solder here?

Viele Grüße/greetings
Patrick
 
I think you donˋt have to solder a bridge. Then you get the encodersignal 1:1. (take a look to the schematics) If you have not enough encoder flanks per second, you can also triggering on the positive and negative flank in the software.
 
There's a counter cd4017 in use: https://docs.google.com/viewerng/viewer?url=http://www.ti.com/lit/ds/symlink/cd4017b.pdf (Page 18 in the schematics)

It took me some time to understand how it works: It's some kind of running light (Lauflicht) on its 10 outputs. The soldering bridge decides which light resets the counter. If you don't solder a bridge at all I expect the divider to be 1:10. The best you can get (based on the existing implementation) is to pick the 1:2 divider mentioned by Bernard, since the Arduino is connected to the second "light" (Pin 2).
 
Hi.
The green shunt on my picture show the /2 count of the motor odometry so each 2 rising edge the due receive only one , but the last azurit interupt code count rising and descending edge so it can count exactly the coder pulse note in the datasheet of your motor.
The only problem into this working mode is maybe that into big division,/8 for example the pulse is very short and maybe the interupt can't be manage by the arduino.
But if you have less than 1500 ticks each turn of wheel , all is perfectly working.

Be carrefull that the main problem with the speed of the arduino is the IMU GY801,It s why i use instead a GY88 with a DMP inside.

By.
 
What's the purpose of the odometry divider anyhow? The number of events to be handled by the Arduino is far from what I'd consider "detectable load". There are at most 400* events per second and an Arduino running at 16 MHz can easily handle about 1 000 000 of them per second. In my opinion the downscaling could be done in software. It would be more flexible and needs less components.

The downscaling will lead to a complicated timing pattern. Example for downscaling of 1:10.
A continuous wave from the odometer (1010101010...) will result in the following events seen by the Arduino (U=Up, D=Down) UD________UD________UD________
Is this by intention?

*) (4000 rpm + 4000 rpm + 4000 rpm) * 2 = 400 Hz
 
It was done, because there were often problems with the Mega when it runs with Gyro. Normaly an encoder has two channels A and B. To reduce the amount of flanks, there is only one channel used. And to reduce it further, the divider was build in. For the DUE there is no need to do that, but there is no option to use 1:1 without soldering and to use both channels you have to use pins which are on other connectors.
In my software I use the 2 times divider and then trigger on positive and negative flanks, because my service to control speed is called every 33ms and wouldn't I not using the positive and negative flank, I would not have enough flanks to control speed.
If one uses a higher downscaling as 1:2 it's maybe better to use the positive flank only.
 
Oben