0% found this document useful (0 votes)
5 views

How-to-Make-a-Small-Measuring-Wheel

This document provides a detailed guide on how to create a small measuring wheel using Arduino components. It includes steps for hardware selection, circuit diagram, coding, and 3D printing the wheel's crust. The project emphasizes the convenience and precision of the measuring wheel compared to traditional distance measuring methods.

Uploaded by

aureopcb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

How-to-Make-a-Small-Measuring-Wheel

This document provides a detailed guide on how to create a small measuring wheel using Arduino components. It includes steps for hardware selection, circuit diagram, coding, and 3D printing the wheel's crust. The project emphasizes the convenience and precision of the measuring wheel compared to traditional distance measuring methods.

Uploaded by

aureopcb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

instructables

How to Make a Small Measuring Wheel

by Jaychouu

Open Google map, input starting point and Couple of days before, I was suddenly to find a man
destination then the distance will display in your who holds a wheel rolling along the road. I was
screen. Compared to traditional maps, the current incontinent of curiosity, I came to talk with the man
electronic maps are of vast information and better and knew he is a map worker and used the wheel to
distance calculation. However, how could it counts measure distance then draw routes. The distance
the distance? Is it uses satellite, tape or other tools? measure wheel is convenient to take, flexible and
Satellite can explore topography and land resource precise. How could I resist its temptation to make a
but lack of precision; tape is inflexible and distance measuring wheel?
limited. Except these tools, is there anything else?

How to Make a Small Measuring Wheel: Page 1


Step 1: Hardware

In this project, I would love to choose DFRduino UNO Cable Adapter Module 4
R3 that fully compatible with Arduino UNO R3 as a
main board. It adopts ENIG (emersion gold) Gravity: IO Expansion Shield for Arduino V7.1
technique, cost effective and more delicate.
Moreover, we need another powerful component Digital Push Button (.NET Gadgeteer Compatible)
which is an encoder to count distance.
7.4V Lipo 2500mAh Battery (Arduino Power Jack)
Incremental Photoelectric Rotary Encoder - 400P/R
D80mm Silicone Wheel For TT Motor
Gravity: I2C 16x2 Arduino LCD with RGB Backlight
Display

Step 2: Circuit Diagram

Step 3: Rendering

Reset: you could clear up data and make a restart measurement more convenient in this mode.

Detection: You can measure distance freely, up to down, right to left in this mode. Slipping to left, the value is
positive; slipping to right, the result is negative (when the value is a positive one, rolling right and the result is
decreasing).

How to Make a Small Measuring Wheel: Page 2


Step 4: Lock

when the measurement finished, you need to keep data. In this mode, all data is locked and would not change that
helps you record results. It works with simply three presses.

How to Make a Small Measuring Wheel: Page 3


Step 5: Print the Crust

I have print a crust by 3D printer to make it convenient to take and more beautiful. Is it looks a little unnatural? The
crust is too square. I am sorry but I have tried my best. I believe your ideas must better than mine. The 3D printing
file is in the end page.*Caution: I have make a 80mm hub with 3D printer to suit the wheel.Tires of quality
enviromentally friendly D80mm Silicone Wheel For TT Motor is still in use.

Step 6: Code

#include
#include "DFRobot_RGBLCD.h"

DFRobot_RGBLCD lcd(0x7c >> 1, 0xc0 >> 1, 16, 2);

//rgb_lcd lcd;

#define A 3
#define B 4
#define Key 12//key

#define D 79 //Diameter 79mm

float C = 0; //perimeter
unsigned int Distance;
int VA = 0;
int VB = 0;
unsigned long Count = 0;//count
unsigned int Count_1 = 0; //Negative count
unsigned char flag = 1, Mark = 0;
unsigned long lasttime = 0, Modetime = 0;

//Length measurement range is ± 6 M


void setup()
{
Serial.begin(9600);
lcd.init();
How to Make a Small Measuring Wheel: Page 4
lcd.init();
lcd.setRGB(255, 255,0);
lcd.setCursor(2, 0 );
lcd.print("M:");
lcd.setCursor(2, 1 );
lcd.print("D:");
lcd.setCursor(12, 1 );
lcd.print("cm");
pinMode(A, INPUT_PULLUP); //Pull-up input
pinMode(B, INPUT_PULLUP);
pinMode(Key, INPUT);
attachInterrupt(1, interrupt, RISING);
C = D * PI;
}

void loop()
{
if (millis() - 150 > lasttime)//Detect keys once every 150ms
{
if (digitalRead(Key) == HIGH)
if (digitalRead(Key) == HIGH)
Mark += 1;
if (Mark > 2)
Mark = 0;

while (digitalRead(Key) == HIGH);


lasttime = millis();
}

if (millis() - 100 > Modetime)//Refresh the data every 100ms


{
if (Mark == 0) //Cleared
{
lcd.setCursor(6, 0 );
lcd.print("Reset ");
Distance = C * Count / 40;
flag = 3;
lcd.setCursor(11, 0 );
lcd.print(" ");
}

if (Mark == 1) //Calculate the measured value


{
lcd.setCursor(6, 0 );
lcd.print("Detection");//
lcd.setCursor(4, 1 );
if (Count > 0 && Count < 0xffff)//Determine whether the length is positive
{
lcd.print('-');//The length is negative
Distance = C * Count / 40;
}

else if (Count == 0 && Count_1 == 0 )//Determine whether the length is zero


{
lcd.setCursor(4, 1 );
lcd.print(' ');
Distance = C * Count / 40;
}

else//Length is positive
{
lcd.print('+');
Distance = Count_1 * C / 40;
}
}

else if (Mark == 2) //lock


{
lcd.setCursor(6, 0 );
lcd.print("Lock ");
Count = 0;
Count_1 = 0;
}

Modetime = millis();
}
How to Make a Small Measuring Wheel: Page 5
}

lcd.setCursor(5, 1 );//Displays the value of Distance


lcd.print(Distance / 10000);
lcd.print((Distance / 1000) % 10);
lcd.print((Distance / 100) % 10);
lcd.print('.');
lcd.print((Distance / 10) % 10);
lcd.print(Distance % 10);
}

void interrupt()//Interrupt handler


{
VB = digitalRead(B);
if (Mark == 1)//Detects whether the current mode is a measurement
{
if (VB == 1)//To determine whether the positive measurement
{
flag = 1;

if (Count > 0xffff)


{
Count_1 -= 1;
}

Count += 1;
}

else//Reverse measurement
{
flag = 0;
Count -= 1;

if (Count > 0xFFFF)


{
Count_1 += 1;
}
}

//Count is cleared over the range


if (Count < 0xFFFF && Count > 0x294A)
Count = 0;

else if (Count < 0xFFFFD6B5 && Count > 0xFFFF)


Count = 0;
}
}

How to Make a Small Measuring Wheel: Page 6

You might also like