지난번 arduino 전압계에 이어 요번엔 자전거용 속도계를 만들어봤습니다.
회로는 전압계와 비슷합니다. 전압계는 아날로그 입력을 사용했고, 속도계는 디지털입력을 사용한다는 차이뿐
하지만 프로그램은 약간더 복잡하지요.
[플러그하우스판매]아두이노 두에밀라노브 1개
TRIMMER(가변저항) WIW1036(3323 Series)-10KΩ 1개 |
일반적으로 판매되는 자전거용 속도계와 원리는 같습니다.
자석 스위치를 앞바퀴 프레임에 붙이고 자석은 바퀴살에 붙였습니다. 자석이 스위치옆을 지날때마다 스위치가 단락됩니다.
자석을 스위치 근처로 가져가면 스위치가 단락됩니다.
스위치의 선은 브레이크 라인을 타고 올라와 아르두이노가 있는 빵판에 연결됩니다.
자전거에 장착은 검정테이프 하나가 다입니다. 떨어질까봐 조마 조마 ^^;
자전거를 살짝 움직여보니 시속5km라고 찍혔네요. 옆에 RPS는 초당 앞바퀴 회전수....나중에 페달 회전수가 들어가야 하는데,
스위치를 하나 망가트리는 바람에 바퀴 회전수가 들어갔습니다.
대충 맞는거 같기도 하고....어차피 숫자 계산이니 틀리면 고치면 되겠죠.
다음에 gps를 가져가서 속도를 비교해봐야겠네요. 그때까지 분해가 안된다면....ㅋㅋㅋ
자전거를 멈췄을때 속도가 0이 안되는 문제 -> 스위치가 on 됐을때만 속도를 계산하기 때문
페달 회정수 측정 -> 스위치 구입
외관 디자인 자전거고정 -> OTL
바퀴둘레 = 26인치 * 25.4 * 3.14 = 2074 mm = 2.074 m = 0.002074 km
속도(시속) -> 한바퀴회전시간(ms) : 0.002074 km(바퀴둘레) = 1000ms * 60 * 60 (1시간) : 1시간동안 이동거리
속도(km/h) = 7466.4 / 한바퀴회전시간(ms)
#include <stdio.h>
#include <LiquidCrystal_pepsiman.h>
// LiquidCrystal display with:
// rs. rw, e, d4, d5, d6, d7 - LCD pin name
// 4, 5, 6, 11, 12, 13, 14 - LCD pin #
LiquidCrystal lcd(2,3,4, 8,9,10,11); // arduino pin #
char buf[33]={0};
unsigned long time, oldtime, delta;
float spd=0;
int ledpin = 13, swpin=12, swval=0, oldswval=0;
void setup()
{
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
pinMode(swpin, INPUT);
lcd.clear();
lcd.print("hello, world!.............");
}
void loop()
{
swval = digitalRead(swpin);
if (oldswval == LOW && swval == HIGH)
{
time = millis();
delta = millis() - oldtime;
//26" * 25.4 * 3.141592 = 2.074m, 0.002174 km;
// * 3600 = 7446.4 km/s
spd = 7466.4 / (float)delta;
sprintf(buf, "SPD %3ld RPS %4ld", (long)spd, (long)(1.0 / (float)delta * 1000.0));
Serial.println(buf);
lcd.clear();
lcd.print(buf);
oldtime = time;
digitalWrite(ledpin, HIGH);
delay(20);
}
digitalWrite(ledpin, LOW);
oldswval = swval;
}
2009/04/20 - arduino에서 LCD 구동하기 (미해결)
2009/04/23 - arduino 에서 LCD 구동하기 2
'Arduino/AVR > 2. Arduino프로젝트' 카테고리의 다른 글
아두이노를 인터넷에 연결해보자 - arduino ethernet shield 호환모듈 WIZ811MJ (1) | 2009.06.08 |
---|---|
아두이노(arduino)를 이용한 도트매트릭스(dotmatrix 8x8 2색) (15) | 2009.06.03 |
arduino 전압계 (0) | 2009.05.04 |
arduino 에서 LCD 구동하기 2 (4) | 2009.04.23 |
arduino에서 LCD 구동하기 (미해결) (0) | 2009.04.20 |