이 튜토리얼에서는 FLEX 센서, Arduino Uno 및 서보 모터를 사용하여 회로를 개발할 것입니다. 이 프로젝트는 FLEX 센서의 구부러짐, 구부러짐 또는 편차에 의해 서보 샤프트 위치가 결정되는 서보 제어 시스템 입니다.
먼저 서보 모터에 대해 조금 이야기하겠습니다. 서보 모터는 정확한 샤프트 이동이나 위치가 필요한 곳에 사용됩니다. 고속 애플리케이션에는 제안되지 않습니다. 이는 저속, 중간 토크 및 정확한 위치 적용을 위해 제안됩니다. 이 모터는 로봇 팔 기계, 비행 제어 및 제어 시스템에 사용됩니다. 서보 모터는 자동 판매기 등과 같은 임베디드 시스템에 사용됩니다.
서보 모터는 다양한 모양과 크기로 제공됩니다. 서보 모터에는 주로 전선이 있으며, 하나는 양 전압 용이고 다른 하나는 접지 용이고 마지막 하나는 위치 설정 용입니다. 적색선은 전원, 흑색 선은 접지, 황색 선은 신호에 연결됩니다.
서보 모터는 DC 모터, 위치 제어 시스템, 기어의 조합입니다. DC 모터의 샤프트 위치는 PWM 신호 인 SIGNAL 핀의 듀티 비를 기반으로 서보의 제어 전자 장치에 의해 조정됩니다.
간단히 말해서 제어 전자 장치가 DC 모터를 제어하여 샤프트 위치를 조정합니다. 샤프트 위치에 관한 데이터는 SIGNAL 핀을 통해 전송됩니다. 제어 장치에 대한 위치 데이터는 서보 모터의 Signal 핀을 통해 PWM 신호 형태로 전송되어야합니다.
PWM (Pulse Width Modulated) 신호의 주파수는 서보 모터 유형에 따라 다를 수 있습니다. 여기서 중요한 것은 PWM 신호의 DUTY RATIO입니다. 이 의무에 따라 제어 전자 장치가 샤프트를 조정합니다. 샤프트를 9시 시계로 이동 시키려면 TURN ON RATION이 1 / 18.ie 여야합니다. 18ms 신호에서 'ON 시간'1 밀리 초 및 'OFF 시간'17 밀리 초.
샤프트가 12o 클럭으로 이동하려면 신호의 ON 시간이 1.5ms이고 OFF 시간은 16.5ms 여야합니다. 이 비율은 서보의 제어 시스템에 의해 디코딩되고이를 기반으로 위치를 조정합니다.
여기에있는이 PWM은 ARDUINO UNO를 사용하여 생성됩니다. 따라서 지금은 Arduino Uno에서 생성 된 PWM 신호의 듀티 비를 변경하여 서보 모터 샤프트를 제어 할 수 있음을 알고 있습니다. UNO는 PWM 신호의 문제없이 SERVO의 위치를 제공 할 수있는 특별한 기능을 가지고 있습니다. 그러나 PWM 듀티 비율-서보 위치 관계를 아는 것이 중요합니다. 설명에서 더 자세히 이야기하겠습니다.
이제 FLEX SENSOR 에 대해 이야기 해 봅시다. FLEX 센서를 ARDUINO UNO에 인터페이스하기 위해 8 비트 ADC (Analog to Digital Conversion) 기능을 사용하여 작업을 수행합니다. FLEX 센서는 모양이 변경 될 때 저항을 변경하는 변환기입니다. FLEX 센서는 길이 2.2 인치 또는 손가락 길이입니다. 그림에 나와 있습니다.
Flex 센서는 선형 표면이 구부러 질 때 저항을 변화시키는 변환기입니다. 따라서 플렉스 센서라는 이름입니다. 간단히 말하면 센서 단자 저항이 구부러지면 증가합니다. 이것은 아래 그림에 나와 있습니다.
저항의 이러한 변화는 우리가 읽을 수 없다면 소용이 없습니다. 손에있는 컨트롤러는 전압의 기회 만 읽을 수 있으며 그 이하도 아닙니다. 전압 변화에 따른 저항 변화를 유도 할 수있는 전압 분배기 회로 를 사용할 것 입니다.
전압 분배기는 저항성 회로이며 그림에 나와 있습니다. 이 저항 네트워크에는 하나의 일정한 저항과 다른 가변 저항이 있습니다. 그림에서 볼 수 있듯이 여기에서 R1은 일정한 저항이고 R2는 저항 역할을하는 FLEX 센서입니다.
분기의 중간 점을 측정합니다. R2 변경으로 Vout에 변경이 있습니다. 그래서 이것으로 우리는 무게에 따라 변하는 전압을가집니다.
여기서 주목해야 할 중요한 점은 ADC 변환을 위해 컨트롤러가 취하는 입력이 50µAmp만큼 낮다는 것입니다. 저항 기반 전압 분배기의 이러한 부하 효과는 전압 분배기의 Vout에서 끌어온 전류가 오류 비율을 증가시키기 때문에 중요합니다. 지금은 부하 효과에 대해 걱정할 필요가 없습니다.
FLEX SENSOR가 구부러지면 저항이 바뀝니다. 이 변환기를 전압 분배기 회로에 연결하면 변환기에서 FLEX로 전압이 변경됩니다. 이 가변 전압은 ADC 채널 중 하나에 FED이며 FLEX와 관련된 디지털 값을 갖게됩니다.
이 디지털 값을 서보 위치와 일치 시켜서 플렉스로 서보 제어합니다.
구성품
하드웨어: Arduino Uno , 전원 공급 장치 (5v), 1000uF 커패시터, 100nF 커패시터 (3 개), 100KΩ 저항, SERVO MOTOR (SG 90), 220Ω 저항, FLEX 센서.
소프트웨어: Atmel studio 6.2 또는 Aurdino nightly.
회로도 및 설명
FLEX 센서에 의해 서보 모터의 제어 회로도 도 이하에 나타낸다.
센서의 전압은 완전히 선형이 아닙니다. 시끄러울 것입니다. 노이즈를 필터링하기 위해 그림과 같이 분배기 회로의 각 저항에 커패시터를 배치합니다.
여기에서는 분배기에서 제공하는 전압 (무게를 선형으로 나타내는 전압)을 가져와 Arduino UNO의 ADC 채널 중 하나에 공급합니다. 이를 위해 A0을 사용할 것입니다. ADC 초기화 후 센서의 구부러진 부분을 나타내는 디지털 값을 갖게됩니다. 이 값을 가져 와서 서보 위치와 일치시킵니다.
이를 위해서는 프로그램에서 몇 가지 지침을 설정해야하며 아래에서 자세히 설명하겠습니다.
ARDUINO에는 그림과 같이 6 개의 ADC 채널이 있습니다. 이들 중 하나 또는 모두를 아날로그 전압에 대한 입력으로 사용할 수 있습니다. UNO ADC는 10 비트 분해능입니다 (따라서 (0- (2 ^ 10) 1023)의 정수 값). 즉, 0에서 5V 사이의 입력 전압을 0에서 1023 사이의 정수 값으로 매핑합니다. (5 / 1024 = 4.9mV) 단위당.
여기서는 UNO의 A0을 사용하겠습니다.
우리는 몇 가지를 알아야합니다.
|
먼저 모든 UNO ADC 채널의 기본 참조 값은 5V입니다. 즉, 모든 입력 채널에서 ADC 변환을 위해 최대 5V의 입력 전압을 제공 할 수 있습니다. 일부 센서는 0-2.5V의 전압을 제공하기 때문에 5V 기준으로 정확도가 떨어 지므로이 기준 값을 변경할 수있는 명령이 있습니다. 따라서 참조 값을 변경하려면 ("analogReference ();") 지금은 그대로 둡니다.
기본적으로 최대 보드 ADC 분해능은 10 비트이며,이 분해능은 명령어 (“analogReadResolution (bits);”)를 사용하여 변경할 수 있습니다. 이 해상도 변경은 경우에 따라 유용 할 수 있습니다. 지금은 그대로 둡니다.
이제 위의 조건을 기본값으로 설정하면“analogRead (pin);”함수를 직접 호출하여 채널 '0'의 ADC에서 값을 읽을 수 있습니다. 여기서“pin”은 아날로그 신호를 연결 한 핀을 나타냅니다.이 경우에는 "A0"이됩니다.
ADC의 값은“int SENSORVALUE = analogRead (A0); ”,이 명령어에 의해 ADC 이후의 값은 정수“SENSORVALUE”에 저장됩니다.
이제 SERVO에 대해 이야기 해 보겠습니다. UNO에는 각도 값만 제공하여 서보 위치를 제어 할 수있는 기능이 있습니다. 서보가 30이되기를 원한다면 프로그램에서 값을 직접 나타낼 수 있습니다. SERVO 헤더 파일은 내부적으로 모든 듀티 비 계산을 처리합니다.
#포함
서보 서보; servo.attach (3); servo.write (degrees); |
첫 번째 문은 SERVO MOTOR 제어를위한 헤더 파일을 나타냅니다.
두 번째 문장은 서보의 이름을 지정하는 것입니다. 서보 자체로 남겨 둡니다.
세 번째 문은 서보 신호 핀이 연결된 위치를 나타냅니다. 이것은 PWM 핀이어야합니다. 여기에서는 PIN3을 사용하고 있습니다.
네 번째 문은 서보 모터 위치 지정 명령을 제공하며 각도 단위입니다. 30이 주어지면 서보 모터가 30도 회전합니다.
이제 sg90은 0-180도에서 이동할 수 있으며 ADC 결과는 0-1024입니다.
따라서 ADC는 SERVO POSITION의 약 6 배입니다. 따라서 ADC 결과를 6으로 나누면 대략적인 SERVO 손 위치를 얻을 수 있습니다.
이것으로 우리는 플렉스 또는 벤트에 비례하는 서보 모터에 공급되는 서보 위치 값을 갖게됩니다. 이 플렉스 센서를 장갑에 장착하면 손의 움직임으로 서보 위치를 제어 할 수 있습니다.