06
2016-Mar
[아두이노] RC용 ESC(변속기) 작동방법
작성자: Blonix
IP ADRESS: *.148.87.98 조회 수: 1762
아두이노 PWM 헤더는 인터넷에 쳐보면 나온다.
아래 코드는 내가 전기자전거 만들면서 사용했던 코드다. 작동 확인함.
ESC는 기동신호를 줘야지 시작이 되는데, 이게 낮은 듀티비의 PWM 신호다.
(조종기를 사용할 경우 스로틀을 최하로 맞춘 상태)
아래 코드에서는 기동 신호의 PWM 듀티비가 3000 / 65535 로 맞춰져 있다.
PWM 주파수는 대충 45 나 50 쯤 주니까 돌아가더라.
변속기 기동에 성공하면 삑-삑-삑-삑-삐로링~ (변속기마다 다를 수 있음) 하고 소리를 낸다.
아래 듀티비는 내가 실험적으로 찾아낸 내용으로, 환경에 따라 조금씩 달라질지도 모른다...
(글쎄 과연 그럴까?)
#include <PWM.h>
int pin = 9;
int reading = 0;
int32_t frequency = 50; //frequency (in Hz)
uint16_t frequencyt = 0;
uint16_t Speed = 0;
String incomingString;
void setup()
{
InitTimersSafe();
Serial.begin(9600);
Serial.println("wait a second...");
bool success = SetPinFrequencySafe(pin, frequency);
if(success) {
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
}
frequencyt = Timer1_GetFrequency();
char strOut[20];
sprintf(strOut, "Frequency: %u Hz", frequencyt);
Serial.println(strOut);
delay(500);
Serial.println("-= RUN =-");
}
void loop()
{
reading = analogRead(A0);
Speed = 3480 + (reading << 1);
if(Speed < 3487){
Speed = 3000;
}
Serial.println(Speed);
pwmWriteHR(pin, Speed);
// 3000 Arm
// 5475 ~ 5900 << 45Hz
// 3487 ~ 6300 << 50Hz
delay(30);
}