지난번 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)를 이용한 자전거 속도계 (9) | 2009.05.10 |
arduino 전압계 (0) | 2009.05.04 |
arduino 에서 LCD 구동하기 2 (4) | 2009.04.23 |
arduino에서 LCD 구동하기 (미해결) (0) | 2009.04.20 |
자전거가 왠 쌩쇼냐?
ㅎㅎ 자전거 쌩쇼하는거 첨이야
답글
잘 모르는 사람이 보면 생쑈로 보일수도 있겠네요^^
대단 하십니다. 수고 많으셨네요.
잘 보고 갑니다. 나도 한번 만들어 봐야지............... 소스 퍼갑니다
답글
어렵지 않으니 꼭 성공하세요 ^^
저도 친구 이거 만들어줬는데 친구놈이 그걸버리고 5마넌짜리 속도계 달았다능 ㅠㅠ
답글
다시 뺏어서 기능 왕창 추가해서 자랑하세요.
케이던스, 누적거리, GPS등등 ^^
질문이 있습니다.
님이 올려준 소스와 회로를 기반으로 똑같이 구현해보려고 시도해보았는데요...
리드스위치에 자석을 접근시켜도 LCD출력에 변화가 없네요.
LCD에는 "speed 7656 rps 100" 이라는 문구만 고정되서 출력되는데...
소스가 문제가 있는건지, 회로설계에서 이상이 있는건지 감이 안잡히네요ㅠ
댓글 부탁드립니다^^
답글
펩시맨님...
리드스위치를 gnd 에 연결하고 아두이노 D12 번에 꽂는순간 속도가 110~150 으로 표현이 됩니다....
그리고 저는 칼로리도 추가했는데 칼로리도 10억칼로리 이상나오네요..ㅡㅡㅋ ㅎㅎㅎㅎㅎㅎ
외람된 질문일지모르겠지만.....혹시 제가 한게 뭐가 잘못된건지 좀 지적해주실수있을까요??ㅠㅠ 부탁드립니다....
넘 중요한거라.....꼭 좀 답변 부탁드리겠습니다.....great-55@hanmail.net 메일로 답변주셔도 감사하겠습니다...
답글
안녕하세요 저는 아두이노를 사용안하고 PIC을 사용하고 있습니다.
속도를 구하는부분이 궁금한데 죄송하지만 설명 좀 해주시면 안될까요? 저도 리드스위치를 사용중이거든요..
답글