서보모터는 별도의 드라이버 없이 아두이노의 라이브러리만 이용하여 동작시킬 수 있습니다. (엄밀히 말해서 서보모터 안에 컨트롤러가 들어있습니다.) 테스트에 사용한 서보모터는 'DGS-288'입니다. (참고 : 스카이홀릭 - DGS-288 - Digital Servo) 1. 서보 모터 동작시키기 일단 서보모터를 연결해 봅시다. 1-1. 보드 구성 그냥 아두이노에 연결해도 됩니다. 전 포스팅을 하는 입장이라 다른 글과 비슷한 화면을 보여주기 위해 브레드보드를 사용한 것입니다. 1-2. 펌웨어 작성 서보모터는 라이브러리를 이용하면 간단하게 제어할 수 있습니다. #include int potPin = 0; int servoPin = 9; Servo servo; int nSwitch = 0; int nAngle =..
'L293D'는 스테핑모터를 제어할 때 쓰던 칩입니다. (참고 : [Arduino] L293D칩을 이용한 유니폴라 스테핑 모터(unipolar stepping motor) 제어) DC모터의 양방향 제어를 할때도 사용이 가능합니다. (참고 : 디바이스 마트 - L293D ) 'L293B'을 이용해도 됩니다. (참고 : 디바이스 마트 - L293B ) 모터는 'KR-300'와 'MDN-4RA3ETA' 사용 했습니다. (참고 : 디바이스 마트 - 서보형 DC모터 (KR-300), MDN-4RA3ETA ) 외부전원을 이용할 때는 'KR-300'를 아두이노 전원을 이용할 때는 'MDN-4RA3ETA'를 사용합니다. 1. 테스트 해보기 일단 아두이노가 아닌 손으로 배선을 수정하여 동작을 확인하기 위한 구성을 합니다..
스테핑 모터 제어에 사용한 ULN2004(ULN2003)칩은 DC모터를 단순하게 돌릴 때도 사용할 수 있습니다. ( 참고 : [Arduino] ULN2004(ULN2003)칩을 이용한 유니폴라 스테핑 모터(unipolar stepping motor) 제어 ) 여기서 '단순하게'라는 의미는 역방향으로 돌리는 것이 안 되기 때문입니다. 가격은 400원 정도 합니다. (참고 : 동신전자 - ULN2004A ) 모터는 KR-300를 사용 했습니다. (참고 : 디바이스 마트 - 서보형 DC모터 (KR-300)) 이 모터가 사용하는 전류가 '160[mA] +/- 40[mA]'이기 때문에 아두이노가 공급하는 '40mA'보다 많기 때문에 아두이노보드가 죽는 현상이 있습니다 ㅡ,.ㅡ;;; (잘못하면 아두이노가 망가집니다..
시중에 팔고 있는 로드셀은 비쌉니다 ㅡ.-;;; 대량으로 사도 비싼데... avr관련 카페들을 검색해보니 몇십만개 단위로는 싸게 살수 없다는 군요 ㅡ,.ㅡ;; 그런 이유로 보통 디지털 체중계를 분해해서 사용합니다. 저도 분해해 보겠습니다. 연관글 영역 1. 분해하기 제가 이번 포스팅에서 분해할 체중계는 다음과 같습니다. 모델 : 카스 HE-18 1눈의 값 : 100g 사용 범위 : 4kg~150kg 시중에서 15000원 정도 하는 나름 고가(?)의 디지털 체중계입니다. 원래는 싸구려 중국제를 2개 분해했는데 둘 다 값이 이상하게 나와서 찾아보니 어떤 분께서 추천해주신 제품입니다. (다른 모델명(생긴 건 똑같은데-_-;)의 체중계는 괜찮은 것으로 보아 저 제품이 이상한듯하네요.) 디지털 체중계에서 최소 범..
아두이노는 자체적으로 멀티쓰래드를 지원하지 않습니다. 그러다 보니 쓰래드 작업을 하고 싶으면 방법이 없죠. 결론부터 이야기하자면 아두이노에서 다른 언어의 쓰래드와 같은 동작을 하는 구현은 불가능합니다. 지금부터 소개할 라이브러리도 시분할로 쓰래드처럼 보이도록 해둔 것이지 쓰래드라고 볼 수 없죠. 1. 'ArduinoThread' 프로젝트 깃허브에 'ivanseidel'라는 분께서 만든 프로젝트입니다. (참고 : github - ivanseidel / ArduinoThread ) 소스코드를 보면 우리가 생각하는 쓰래드처럼 동작하지 않을 것 같습니다. 구현된 방식이 아두이노의 'loop()'에서 쓰래드 컨트롤러를 지속해서 호출하면서 타이밍 맞을 때 쓰래드로 지정한 함수를 호출하는 방식입니다. 구조만 봐서는 ..
로드셀처럼 변화값이 작은 센서들은 컴퓨터로 읽기 위해서 전압을 증폭해야 합니다. (낮은 전압을 읽을 수 있는 보드라면 상관없지만 일반적인 범용보드들은 이정도로 낮은 값은 재대로 읽지 못합니다.) 아두이노에서 읽을 수 있는 전압값은 '참조 전압 /1024'이라고 입니다. 인터넷을 뒤져보면 1mV 정도까지는 읽는 듯 한데 직접 해보면 가변저항 이 값이 비교적 정확하게 들어오는 센서들이나 의미 있는 내용이고 값이 불안정하게 들어오는 센서들(로드 셀, 거리측정 센서) 같은 것들은 10mV정도부터 의미 있는 값으로 보는 게 맞는 듯 하네요. 어찌됐건 로드셀은 낮은 전압을 내보내기 때문에 증폭해야 아두이노에서 읽을 수 있습니다. 이 포스팅에서 사용된 증폭용 칩은 'AD620'입니다. (참고 : 디바이스 마트 - A..
요번에 로드셀 하나 테스트 해보려고 별짓을 다하고 있네요-_-;;; 증폭용칩이 -(마이너스)전압을 필요로 해서 그냥 캐패시터만 가지고 만들려다가 전자는 까막눈이라 ㅡ.-;;; 그래서 -전압을 만들어주는 DC/DC컨버터인 ICL7660칩을 이용하여 -전압을 만들어 보겠습니다. ICL7660SCPAZ칩은 900원 정도 합니다. (참고 : 디바이스 마트 - ICL7660SCPAZ) 캐패시터는 10uF를 사용합니다. 캐패시터도 LED처럼 짧은쪽이 음극입니다.(극성이 있는 경우) (참고 : 디바이스 마트 - E/C 50V 10uF (85℃)-10EA) 1. 보드 구성 캐패시터는 10uF짜리 2개를 사용해야 합니다. 캐패시터가 극성이 있는경우 반대로 꼽으면 터진다는데.....5V에서도 터지는건가 ㅡ.-;;; 그러니..
스텝모터와 스텝모터 제어용칩을 여러가지 테스트하다보니 불편해서 컴퓨터없이 전원만 넣고 테스트할 필요성을 느꼈습니다. 1. 기획 테스트를 위한 기능은 2가지입니다. 속도 조절과 앞과 뒤로 움직이는 동작 입니다. 스텝모터는 스텝을 조절할 수 있지만 7세그먼트나 LCD없이 스텝을 조절하는 동작을 넣는건 사용상 데이터를 보여주기 힘들기 때문에 1회전을 기준으로 합니다. 속도조절의 경우 증가/감소 각각 스위치를 넣는 것도 좋지만 정밀하게 속도 조절을 할것이 아니기 때문에 누를때마다 속도가 증가하다가 최대치가 되면 다시 0이 되도록 하는 것이 인터페이스상 더 좋을것 같습니다. 정리하면 속도조절 : 스위치 1개를 이용하여 속도 증가. 속도를 표시하기위해 LED의 발기를 조절 한다. 앞/뒤 회전 : 속도조절값을 기준으..
푸시버튼은 눌렀을 때 인풋이 보드로 들어가는 가장 기본이 되는 센서입니다. 이 포스팅에서는 버튼을 눌렀을 때 LED에 불이 들어오는 동작을 통해 푸시버튼을 사용해 봅시다. 연관글 영역 1. 보드 구성 간단하면서도 간단하지 않은 배선입니다 ㅎㅎ 2번 핀을 스위치의 입력으로 사용합니다. 7번 핀을 LED 출력으로 사용합니다. 저항은 10k를 썼습니다. 2. 펌웨어 작성 스위치가 눌리면 LED가 들어오게 해야 하는데..... 직접 스위치에 배선하지 않고 아두이노에 연결하여 값을 받아 LED를 켜게 되면 문제가 하나 있습니다. 아두이노의 반복 주기에 따라 스위치값을 읽지 못하거나 생각했던것 보다 여러 번 작동할 수 있죠. #define LED2 #define BTN 7 int m_nBtn = 0; void se..
이전 글에서 'Stepper.h'는 '.step()'이 동작하는 동안 다른 동작을 할 수 없다는 것을 이야기하였습니다. (참고 : [Arduino] 'Stepper.h'는 두개의 모터를 제어할 수 없다.) 그래서 'Stepper.h'를 약간 개조하여 한번에 여러 개의 동작(스탭모터라던가 led같은 것들)을 할 수 있도록 수정하겠습니다. 연관글 영역 * Stepper library for Wiring/Arduino - Version 0.4 기준 입니다. * * 2023-06-06 기준 최신버전은 5버전입니다 -> Stepper Async 5 * 참고 : [Arduino] Stepper Async 5 - 비동기 스탭 모터 라이브러리 1. 기존 라이브러리 분석하기 저번 글에서도 잠깐 이야기했습니다만 기존 라이..