int led_R = 9; int led_G = 10; int led_B = 11; void setup() {
}
void loop() { int R = analogRead(A1); analogWrite(led_R, R/4); int G = analogRead(A2); analogWrite(led_G, G/4); int B = analogRead(A3); analogWrite(led_B, B/4); }
본 게시글에서는 아두이노를 이용하여 서보모터를 어떻게 제어하는지 살펴보도록 하겠습니다. 서보를 자동으로 앞뒤로 움직이게 만들어보고, 포텐셔미터를 추가하여 서보의 포지션을 제어하도록 하겠습니다.
브레드보드 레이아웃1
아래의 브레드보드에서는 서보 모터만이 아두이노에 연결되어 있습니다. 아래와 같이 브레드보드를 셋업합니다.
서보모터는 3개의 리드선을 가지고 있는데 보통 빨강이 5V, GND는 검정이나 갈색입니다. 나머지 리드선은 제어 리드선으로 보통 오렌지색이나 노랑색을 띄고 있습니다. 제어 리드선을 디지털 핀 9번에 연결합니다.
서보 리드선 끝의 소켓에 점퍼를 연결하여 아래와 같이 브레드보드에 셋업합니다.
만약 서보가 오동작을 한다면,
위와 같이 셋업을 하였는데 만약 서보가 이상하게 동작을 한다면, 그것은 서보가 너무 많은 전력을 끌어다 쓰기 때문일 수 있습니다. USB로 아두이노에 전원을 공급하기 때에만 이러한 현상이 발생할 수 있습니다. 보통 모터가 움직이기 시작할때 전력을 많이 쓰기 때문에 이는 아두이노 보드의 전압을 떨어 뜨릴 수 있으며, 이는 다시 아두이노 보드를 리셋하게 만듭니다.
만약 이러한 현상이 발생한다면, 캐페이시터(470uF이상)를 GND와 5V 사이에 추가함으로써 해결할 수 있습니다.
캐패에시터는 모터가 사용하는 전력 저장소와 같은 역활을 하여 모터가 시작할때 아두이노 전원뿐아니라 캐패이시터에서 전기를 끌어다 쓸수 있습니다.
캐패이시터의 긴 다리가 양극이며 이 리드선이 5V에 연결되어야 합니다. 음극 리드선은 보통 '-' 심볼로 표시됩니다.
아래의 스케치 코드를 아두이노에 업로드하면 서보가 한방향으로 돌다가 다른 방향으로 다시 도는 것을 확인 할 수 있습니다.
본 스케치 코드는 아두이노 servo 예제 폴더에 있는 sweep 코드를 기반으로 작성된 코드입니다.
#include<Servo.h>
int servoPin =9;
Servo servo;
int angle =0;// servo position in degrees
void setup()
{
servo.attach(servoPin);
}
void loop()
{
// scan from 0 to 180 degrees
for(angle =0; angle <180; angle++)
{
servo.write(angle);
delay(15);
}
// now scan back from 180 to 0 degrees
for(angle =180; angle >0; angle--)
{
servo.write(angle);
delay(15);
}
}
서보 모터는 펄스에 의해 제어되어 사용하기 쉽습니다. 서보용 아두이노 라이브러리가 있어 서보에게 단지 동작할 각도를 알려주기만 하면 됩니다.
이러한 서보 라이브러리를 사용하기 위해서는 아래와 같은 코드로 아두이노 IDE에게 서보 라이블러리를 사용할 것임을 알려주어야 합니다.
#include<Servo.h>
그리고, 서보를 제어하기 위해 servoPin이라는 이름의 변수를 정의하였습니다.
Servo servo;
위의 코드에서 보면 Servo 타입 servo변수를 정의한 것을 볼 수 있습니다. Servo는 라이브러리에서 제공하는 변수 타입으로 서보사용시 사용합니다. 8개까지의 서보를 정의할 수 있습니다. 만약 두개의 서보를 가지고 있다면, 아래와 같이 정의 할 수 있을 것입니다.
Servo servo1;
Servo servo2;
servo변수에게는 실제로 제어할 서보의 제어핀이 어떤 핀인지를 알려주어야 니다. 아래의 코드로 servo변수에게 제어핀을 알려줍니다.
servo.attach(servoPin);
변수 angle은 서보의 현재각도를 저장하기 위해 사용됩니다. loop함수에서 우리는 두개의 for loop를 사용하는 것을 볼 수 있는데, 첫번째로 각도를 한방향으로 180도까지 증가 시키고, 다음 for 루프에서는 반대방향으로 욺직이게 합니다.
servo.write(angle);
위의 코드는 서보에게 파라메터로 들어온 각도로 위치를 업데이트 하는 명령입니다.
브레드보드 레이아웃2
그럼 두번째 브레드보드 레이아웃을 살펴보겠습니다. 이 레이아웃에는 포텐셔미터가 포함되어 포텐셔미터를 돌려 서보의 위치를 조절할 수 있습니다. 포텐셔미터의 슬라이더 리드를 아두이노의 A0에 연결합니다.
요즘 취업도 어렵구 공무원준비할 경제적 지웜이나 머리가 안되기도 하고 전기분야가 앞으로 전망이 있고 기술 익히면 밥은 굶지 않는다는 말을 듣고 전기기능사 자격증 딴후 전기쪽 노가다 일을 하면서 돈 모아서 폴리텍대학 전기과 가서 상급자격을 딸 계획이 어떻겠냐는 말을 듣고여. 혹시 이쪽 분야나 전기관련일에 잘 아시면 현실적인 얘기 부탁드립니다. 앞날을 좀 긍정적이고 희망을 좀 갖져도 될지요? 치킨집배달하는 친구도 요즘 AI 때뮨에 쉬고 있다는데 너무 부정적인 얘기만 해서여. 살아가는데 팔수적인 실용적 지식이나 지혜를 좀 알려주세여
LED는 P-N 접합 반도체 (발광 다이오드)이며, LED 양단에서 발생하는 전압 강하 (저항이 아님, 저항은 0)는 정해져 있습니다. 전압강하가 0.7V 정도이며 (정확한 것은 부품 제조사 datasheet에), 5V IO 출력을 사용 시 전류를 계산하는 방법을 예로 들면,
1) 저항이 없을 경우: I = V/R = (5V-0.7V) / 0옴 = 4.3V/0옴 = 무한대 전류 -->즉, IO가 출력할수 있는 전류만큼 출력하며, 전류가 매우 높을 경우 전기 에너지가 모두 열 에너지화 되면서 타버림
2) 저항이 200옴 경우: I = V/R = (5V-0.7V) / 200옴 = 4.3V/200옴 = 21.5mA
3) 원하는 전류로 저항 계산 방법: R = V/I = (5V-0.7V) / I = 4.3V/I --> 전류 10mA로 하려면 저항 R = 4.3V/10mA = 430옴
4) LED를 2개 직렬로 연결하고 저항이 1개이고 100옴인 경우 : I = V/R = (5V - 0.7V - 0.7V) / 100옴 = 3.6V / 100옴 = 36mA
LED 전류는 보통 10mA 정도로 하면 되며, 전류를 높이면 전류 대비 빛 양의 효율이 떨어지고 나머지 에너지는 열로 변환 됩니다. 보통 전류가 많이 흐를 경우 탄다는 것은 결국은 열이 많이 발생에서 화학적인 반응으로.. 전류가 낮더라도 전압이 높아서 망가지는 경우는 트레시홀드 이상 넘어가서 차단을 못해서 손상이 발생하는 것입니다.
오옴의 법칙과 LED (다이오드) 전압 강하만 이해하면 간단히 계산 됩니다.^^ 실제 멀티미티로 찍어보면 정확히 계산대로 됩니다. (열 영향으로 인한 특성 변화를 감안하면)
전기회로는 이론이 확률적으로 딱 들어 맞는다고 생각합니다. 왜냐하면 엄청 많은 수량의 전자가 확률적으로 움직이고, 모수가 많아서 잘 들어맞는다고..
댓글을 달아 주세요
행님.. led 스펙을 보면 허용 전압과 전류가 있습니다. 그걸 맞추기 위해 저항을 사용하는거고
옴의공식으로 저항값( r = v / i ) 을 계산하는건데, 어려운가요.?
그림은 첫번째가 맞습니다.
^__^
아... 알려 주셔서 감사합니다.
저도 짐작은 했지만....
짐작은 짐작일 뿐.... 꾸벅
진짜 감사합니다.^^
그러니까 LED도 전기를 잡아먹는 저항으로 간주하고 계산한다는 거죠?
넹.. 그리고 led 스펙을 알기 힘드니까.
470옴 짜리 저항을 쓰면,대부분의 led 스펙 안에 듭니다. 약간 어둡게 보이긴 하지만요..
^__^
아~ 그렇군요.^^
좋은 거 하나 또 배웠네요.
요즘 취업도 어렵구 공무원준비할 경제적 지웜이나 머리가 안되기도 하고 전기분야가 앞으로 전망이 있고 기술 익히면 밥은 굶지 않는다는 말을 듣고 전기기능사 자격증 딴후 전기쪽 노가다 일을 하면서 돈 모아서 폴리텍대학 전기과 가서 상급자격을 딸 계획이 어떻겠냐는 말을 듣고여. 혹시 이쪽 분야나 전기관련일에 잘 아시면 현실적인 얘기 부탁드립니다. 앞날을 좀 긍정적이고 희망을 좀 갖져도 될지요? 치킨집배달하는 친구도 요즘 AI 때뮨에 쉬고 있다는데 너무 부정적인 얘기만 해서여. 살아가는데 팔수적인 실용적 지식이나 지혜를 좀 알려주세여
요즘은 사람일 이라는 게 운이 100%라는 생각이 듭니다.
세상에 태어난 사람 중에 살기 위해 노력 안 하는 사람도 있을까요?
있다면, 모든 노력을 해 본 뒤에 지쳐서 포기한 사람이겠죠?
(기본적으로 모든 사람이 노력을 하고 있는 상태라면 성공과 실패를 결정짓는 핵심 요소는 행운이 될 수 밖에 없습니다.)
저도 거의 반백수로 매일 블로그질이나 하는 주제에 님께 알려드릴 지혜가 있을리는 없지만,
그냥, 남들이 '뭐 하면 좋다더라~~ '하는 거 말고,
님이 '죽어도 하고싶은 것'을 찾는 게 좋지 않을까요?
예를 들어서 누가
'너 김태희랑 결혼 할래? 아니면 이거 할래?'
라고 물을 때
조금도 주저없이
" 저는 김태희랑 결혼 하는 것 보다 이게 10000000000000000000배 좋아요."
라고 할 수 있는 것을 찾으세요.
만에 하나 돈을 잘 못 벌어도 그 걸 하는 동안만은 행복할테니까 그리 큰 손해는 아닐 겁니다.
저 에게는 그게 바로 '아두이노, 외국어 공부, 경제공부' 입니다.
낼 모래 나이 50 되는 저도
제가 이런 것을 좋아한다는 사실을 최근에야 깨달았습니다.
내가 뭘 좋아하는지를 찾아내는 게 쉬운 일이 아닙니다.
그걸 알아내려면 이것 저것 해 볼 수 있는 시간적 여유와 경제적 여유가 있어야하는대
일단 당장 먹고 살아야 하니까요.
아! 그리고 뭐든지 사람이 몰리면 임금 단가가 떨어집니다.
요즘 또 전기쪽 공학쪽으로 사람이 몰리는 분위기던대.....
희소성의 원칙은 만고불변입니다.
다이야몬드가 길거리에 발에 채이면 그걸 누가 돈 주고 사겠어요?
성경에도 '좁은 길로 가라. 좁은 길에는 사람이 적다' 고 했습니다.
이 말은 직업 진로를 선택 할 때에도 참고할만한 말인 것 같습니다.
짱님, 제가 알고 있는 것을 간단히 정리하였습니다.
LED는 P-N 접합 반도체 (발광 다이오드)이며, LED 양단에서 발생하는 전압 강하 (저항이 아님, 저항은 0)는 정해져 있습니다.
전압강하가 0.7V 정도이며 (정확한 것은 부품 제조사 datasheet에), 5V IO 출력을 사용 시 전류를 계산하는 방법을 예로 들면,
1) 저항이 없을 경우: I = V/R = (5V-0.7V) / 0옴 = 4.3V/0옴 = 무한대 전류
-->즉, IO가 출력할수 있는 전류만큼 출력하며, 전류가 매우 높을 경우 전기 에너지가 모두 열 에너지화 되면서 타버림
2) 저항이 200옴 경우: I = V/R = (5V-0.7V) / 200옴 = 4.3V/200옴 = 21.5mA
3) 원하는 전류로 저항 계산 방법: R = V/I = (5V-0.7V) / I = 4.3V/I
--> 전류 10mA로 하려면 저항 R = 4.3V/10mA = 430옴
4) LED를 2개 직렬로 연결하고 저항이 1개이고 100옴인 경우
: I = V/R = (5V - 0.7V - 0.7V) / 100옴 = 3.6V / 100옴 = 36mA
LED 전류는 보통 10mA 정도로 하면 되며, 전류를 높이면 전류 대비 빛 양의 효율이 떨어지고 나머지 에너지는 열로 변환 됩니다.
보통 전류가 많이 흐를 경우 탄다는 것은 결국은 열이 많이 발생에서 화학적인 반응으로..
전류가 낮더라도 전압이 높아서 망가지는 경우는 트레시홀드 이상 넘어가서 차단을 못해서 손상이 발생하는 것입니다.
오옴의 법칙과 LED (다이오드) 전압 강하만 이해하면 간단히 계산 됩니다.^^
실제 멀티미티로 찍어보면 정확히 계산대로 됩니다. (열 영향으로 인한 특성 변화를 감안하면)
전기회로는 이론이 확률적으로 딱 들어 맞는다고 생각합니다. 왜냐하면 엄청 많은 수량의 전자가 확률적으로 움직이고, 모수가 많아서 잘 들어맞는다고..
정말 감사합니다.
잊어버릴 때 마다 찾아 보고 참고하게 댓글을 지우지 말아주세요.
아두이노 재밌어요?
저는 외국어 공부를 좋아하고,
컴퓨터를 좋아하고,
전자부품을 보면 여자들이 다이야몬드 반지를 보고 정신을 잃는 것 처럼 정신을 잃습니다.
그리고 손으로 만지작 거리고 뭘 만드는 것도 잘 합니다.
이 모든 것을 한꺼번에 모아놓은 것이 아두이노입니다.
저온의 진공(우주)에다 열에너지를 가하면 열에너지가 유지될까요 아님 열에너지가 빨리 사라질까요?
^^ 글쎄요... 아주 어려운 질문이군요.
제가 그걸 대답할 수 있을까요?
할 수 있다면 한 10년 정도 골똘히 생각해 봐야할 것 같습니다.
고양이 영상은 무슨 기기로 올리시죠?요즘 유튜브같은걸 올리는1인 미디어 시대인대 dslr 카메라를 사야 할지 새로 니콘에서 30만원대 키미션 액션캠이 나왔더군요. 실용적이고 가성비에는 액션캠이 유리해보이는데 선택이 어럽내요
친구에게 얻은 중고 스마트폰 입니다.
그냥 카메라로 쓰고 있습니다.
그게.... 뭐더라....
팬텍이라고 망한 회사에서 마지막으로 만든 거....
중고가도 10만원 정도 밖에 안 하는 듯...
막 쓰기 좋네요^^
아두이노 배워 볼려하는데 뭐가 필요할까요?
일단 아두이노 관련 책 중에 그림이 많고 설명이 쉽게 되어있는 책을 골라야겠죠?
무엇보다도,
'나는 아두이노로 이런 것을 만들어보고싶다.' 는 것이 있으면 훨씬 공부가 잘 됩니다.
중간에 어려워도 포기도 안되고요.
저는 주로 용산에 가서 관련 부품을 삽니다.
교통이 그쪽이 더 편리해서요.