-
아두이노 프로젝트 | 컨베이어 벨트Technology/Arduino 2024. 11. 17. 21:49
1. 컨베이어 벨트
컨베이어 벨트 생산 공장에서 쉽게 발견할 수 있는 컨베이어 벨트를 아두이노 플랫폼으로 구현해보자. 구현하고자 하는 컨베이어 벨트는 바이폴라 스텝모터와 모터를 제어하기 위한 모터 드라이버, 가변저항, 택트 스위치로 구성되어 있다. 스텝모터가 작동하여 벨트를 굴리면, 벨트 위에 놓여져 있는 물건들이 벨트를 따라 이동한다. 이때 가변저항의 저항값을 조정하면 그에 맞게 컨베이어 벨트의 속력을 조절할 수 있도록, 택트 스위치를 누르면 컨베이어 벨트의 방향이 반대가 되도록 프로그램을 작성해보자.
2. 프로젝트
2.1. 회로 구성
회로 구성 56각 100mm 바이폴라 스텝모터 NK2310028BH 2상 1.8도 8파이
모터뱅크
www.motorbank.kr
TB6600 스테핑 모터드라이버
사용 가능 모터 : 2상 및 4상 바이폴라 / 입력전압 : 9~40VDC / 최대 출력 전류:4A
www.devicemart.co.kr
아두이노 가변 저항 10KΩ (다이얼 타입)
10K옴 / 싱글턴 가변저항 포텐션미터 너트 와샤 포함 , 일반 가변 저항과 달리 돌리면 틱틱틱 걸리는 느낌이 있는 다이얼 타입의 저항 입니다. 일반 가변저항은 돌리면 저항감이 없어서 조정하는
www.devicemart.co.kr
브레드보드용 4핀 택트스위치 6x6 breadboard friendly switch 4p [SZH-TH0018]
TACT 스위치 / DIP TYPE / 4PIN / 빵판에 바로 연결사용하는 특별한 택트스위치입니다. 부품다리가 휘어져있는 다른 제품들과 다르게 브레드보드에 알맞은 길이로 곧게 뻗어있습니다.
www.devicemart.co.kr
1/2W 1% Axial Resistor 221F (220Ω)
일반막대저항 / 탄소피막 / 1/2W / F급(±1%) / 220옴
www.devicemart.co.kr
2.2. 프로그램 작성
#define dirPin 8 // 상수 정의 후 디지털 핀 번호 8로 초기화 #define stepPin 9 const int steps_per_rev = 200; // 정수형 변수 정의 후 200으로 초기화 int value = 0; // 정수형 변수 정의 후 0으로 초기화 #define Switch 2 volatile byte state = LOW; // 휘발성 바이트 변수 정의 후 LOW로 초기화 void setup() { pinMode(dirPin, OUTPUT); // 디지털 8번 핀을 출력(OUTPUT) 모드로 설정 pinMode(stepPin, OUTPUT); pinMode(A0, INPUT); // 아날로그 입력 A0번 핀을 입력(INPUT) 모드로 설정 pinMode(Switch, INPUT); // 디지털 인터럽트 정의 // (1) 디지털 2번 핀을 인터럽트로 사용 // (2) 인터럽트 시 changeDirection 함수 호출 // (3) 디지털 신호가 HIGH에서 LOW로 변할 때 함수 호출 attachInterrupt(digitalPinToInterrupt(Switch), changeDirection, FALLING); delay(3000); // 3000 ms 대기 } void loop() { // 컨베이어 벨트 방향 설정 digitalWrite(dirPin, state); // 디지털 8번 핀에 변수에 저장된 값을 출력 // 컨베이어 벨트 속력 설정 value = analogRead(A0); // 아날로그 입력 A0번 핀으로부터 아날로그 신호를 입력 받은 후 변수에 저장 int time = map(value, 0, 1023, 300, 150); // 아날로그 신호 변환 후 정수형 변수에 저장 // 컨베이어 벨트 가동 digitalWrite(stepPin, HIGH); delayMicroseconds(time); // 변수에 저장된 시간 만큼 대기 (단위: us) digitalWrite(stepPin, LOW); delayMicroseconds(time); } void changeDirection() { state = !state; // 변수에 저장된 논리값 반전 }
[함께 읽으면 좋은 페이지]
아두이노 디지털 신호 입력 | 택트 스위치
1. 디지털 신호 입력 아두이노 소프트웨어에서 디지털 신호를 받을 핀을 설정하고 함수를 작성하여 아두이노 하드웨어에 업로드하면, 앞서 설정한 핀을 통해 디지털 신호를 입력 받을 수 있다.
vedacube.tistory.com
아두이노 | 가변저항
1. 가변저항 저항값을 임의로 바꿀 수 있는 물리 소자이다. 극성이 없는 3개의 단자를 가지고 있으며, 손잡이를 돌리면 각 단자 사이의 저항값을 조절할 수 있다. 손잡이를 시계방향으로 돌리
vedacube.tistory.com
아두이노 | 바이폴라 스텝모터 드라이버 TB6600 모듈
1. 바이폴라 스텝모터 드라이버 TB6600 모듈 바이폴라 스텝모터 드라이버 TB6600 모듈은 바이폴라 스텝모터 1개를 양방향으로 제어할 수 있다. 바이폴라 스텝모터 전자석 단자에 스텝모터를 연결
vedacube.tistory.com
아두이노 | 디지털 인터럽트
1. 디지털 인터럽트 volatile byte LEDState = LOW;volatile byte SwitchState = LOW;void setup(){ pinMode(11, OUTPUT); pinMode(2, INPUT); Serial.begin(9600);}void loop(){ for (int i = 0; i = 1; i--) { Serial.println(i); SwitchRead = digitalRead(2); if
vedacube.tistory.com
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 라이브러리 | 다중 스텝모터 동시 제어 MultiStepper.h (1) 2024.11.20 아두이노 | 유도형 근접 스위치 DC 5V 모듈 (0) 2024.11.19 아두이노 | 디지털 인터럽트 (1) 2024.11.15 아두이노 | 바이폴라 스텝모터 드라이버 TB6600 모듈 (4) 2024.11.14 아두이노 라이브러리 | 스텝모터 가속 제어 AccelStepper.h (3) 2024.11.13