RC카 제작에 사용하는 DC모터를 제어해 보자. DC모터 제어 배선은 아래 그림과 같이 아두이노 우노와 DC모터 사용에만 한하기로 하자. DC모터의 배선은 디지털 3번 핀과 GND 핀을 사용하도록 배선한다.
이 DC모터를 제어하기 위한 아두이노 모터 제어 코드는 다음과 같다.
int pin = 3;// 아두이노 PWM 디지털 핀
int rpm1 = 150;// DC모터 저속 회전
int rpm2 = 255;// DC모터 고속 회전
void setup() {
Serial.begin(9600);
pinMode(pin, OUTPUT);
}
void loop() {
analogWrite(pin, rpm1);
delay(5000);
analogWrite(pin, rpm2);
delay(5000);
}
물론 이 코드는 아무런 문제없이 잘 작동하지만 스스로 회전을 시작하지 못하기 때문에 모터 구동을 위해 손으로 돌려 줄 필요가 있다. 따라서 이 문제를 개선하기 위하여 L293D 모터 제어 IC칩을 사용해 보자.
이 배선의 특징은 전압이 5V가 아닌 5~32V 사이의 높은 배터리 전압의 경우에도 Vcc2에 공급이 가능하지만 아두이노 PWM 핀을 사용하는 이유로 인해 PWM 의 최대전압이 5V에 국한된다는 제약이 있다는 점이다. 한편 Vcc2 는 고정된 전압 5V를 공급하면서 Enable1,2에서 공급하는 전압을 PWM 신호로 공급하는 방법이 있을 수 있다. 이렇게 배선을 하면 Vcc2에 5~32V 사이의 높은 전압 배터리를 사용할 수 있는 이점이 있을 수 있다.
다음은 실제 배선 사례이다. RC카용 직류모터를 사용하면 모터 부하로서 바퀴를 끼워주도록 한다.
//motor_contrpl_01
int pin2 = 2;//pwm 이 불가능한 그냥 디지털 핀
int pin3 = 3;//pwm 출력 가능 핀
int rpm1 = 150;
int rpm2 = 255;
void setup() {
Serial.begin(9600);
pinMode(pin2, OUTPUT);
digitalWrite(pin2,HIGH);
pinMode(pin3,OUTPUT);
}
void loop() {
analogWrite(pin3, rpm1);
delay(5000);
analogWrite(pin3, rpm2);
delay(5000);
}
'공기정화 식물-인공지능-IOT' 카테고리의 다른 글
Moisturesensor_esp32_AI_TalkBack (0) | 2021.04.23 |
---|---|
ESP32보드 SPS30 I2C + SparkFun CCS811+BME280 인터페이스 미세먼지 및 유해가스 농도 측정 (0) | 2021.03.23 |
화분의 젖은 인공토 저항값 측정센서 제작, ThingSpeak 데이터 전송, Capacitive 센서와의 비교 (0) | 2021.01.01 |
공기정화식물 화분 인공토 알맹이와 식물의 잔뿌리 조직 관찰 (0) | 2020.12.30 |
차량 설치 스킨답서스 화분 (0) | 2020.12.09 |