오늘날 애호가들은 전통적인 DC 모터와 비교하여 브러시리스 DC (BLDC) 제어에 매우 관심이 있으며 , 모터의 성능이 향상되었으며 에너지 효율도 개선되었지만 사용하기가 더 어렵습니다. 많은 외부 선반 제품이 존재합니다. 이 목적을 위해 예를 들어, RC 항공기에 매우 잘 작동하는 소형 BLDC 컨트롤러가 많이 있습니다. BLDC의 제어를 더 깊이 조사하고자하는 사람들에게는 산업 사용자를위한 다양한 마이크로 컨트롤러 및 기타 전자 하드웨어가 있으며 일반적으로 매우 우수한 문서가 있습니다. 지금까지 BLDC 제어를 위해 Arduino Micro-Controller를 사용하는 방법에 대한 포괄적 인 설명을 찾지 못했습니다. 또한 재생 제동에 관심이 있거나 발전을 위해 BLDC를 사용하는 데 관심이 있다면 작은 모터와 함께 사용하기에 적합한 제품을 많이 찾지 못했으며 3 상 생성기를 제어하는 방법에 대해서는 알지 못했습니다. 이 구조는 원래 실제 계산에 관한 이야기에 있었으며 코스가 끝난 후에도 계속합니다. 이 프로젝트의 아이디어는 플라이휠 에너지 저장 및 재생 제동 기능이있는 하이브리드 자동차의 비례 모델을 보여주는 것입니다. 이 프로젝트에 사용 된 모터는 손상된 컴퓨터 하드 드라이브에서 청소 된 작은 BLDC입니다. 이 매뉴얼은 Arduino 마이크로 컨트롤러를 사용하는 방법을 설명하고 운전 및 재생 제동 모드에서 위치 센서에 영향을 미칩니다. Oscillisoft 방문은이 프로젝트를 완료하는 데 필수적이지는 않지만 매우 유용합니다. 범위에 액세스 할 수없는 경우 범위없이 수행하는 방법에 대한 제안을 추가했습니다 (5 단계). 이 프로젝트가 실제 모터 컨트롤러에 포함해서는 안되는 한 가지는 현재 보호 기능과 같은 안전 함수입니다. 사실, 최악의 것은 HD 모터를 태우는 것입니다. 그러나 현재 하드웨어로 과전류 보호를 구현하는 것은 어렵지 않으며 어쩌면 어느 시점에서 그렇게 할 것입니다. 더 큰 모터를 제어하려면 모터와 자신의 안전을 보호하기 위해 전류 보호를 추가하십시오. 나는 \ 'real \'작업을 수행 할 수있는 더 큰 모터와 함께이 컨트롤러를 사용하려고하지만 아직 올바른 모터를 사용하지 않습니다. 나는 eBay가 86W 자동차를 약 40 달러에 팔았다는 것을 알았습니다. 좋은 후보처럼 보입니다. 자체 BLDC를 조립하는 키트를 판매하는 \ 'Gobrushless \'라는 RC 웹 사이트도 있습니다. 이것들은 너무 비싸지 않으며 하나를 구축하는 경험이 가치가 있습니다. 이 웹 사이트에는 모터에 대한 홀 센서가 없습니다. 아휴! 이 구조를 작성하는 것은 큰 일입니다. 유용하기를 바랍니다. 의견과 제안을하십시오. DMM (Digital Multimeter)- DMM에 주파수 미터 오실로스코프가있는 경우 ( 최소 2 개의 채널을 갖는 것이 좋습니다) T8 Torx 드라이버 ( 하드 드라이브를 열려면 그 중 하나가 필요합니다). 좋은 철물점이 있습니다. 기계 워크샵과 빠른 프로토 타입 ( 이것은 매우 도움이되지만이 프로젝트는이 프로젝트 없이는 이루어질 수 있다고 생각합니다). 컴퓨터 하드 디스크의 재료 BLDC 모터 마그네틱 고리 다른 하드 드라이브 베스본 (3-6)의 하드 디스크 (DC 브러시 오크) 고무 밴드의 실버 디스크에 두 번째 작은 모터가 있습니다. 또는 (바람직하게는) 다른 모터 전자 빵 플레이트 솔리드 와이어의 달이있는 핸들이있는 브러시리스 DC 모터는 Arduino duemilanove 120 k Ohm 저항을 가진 다른 모터 전자 빵 플레이트 와이어의 달을 가진 브러시리스 DC 모터가 있습니다. OHMST 마이크로 회로 L6234 3 상 모터 드라이버 IC 2 100 UF 커패시터 1 10 NF 커패시터 1 220 NF 커패시터 1 1 UF 커패시터 1 100 UF 커패시터 3 수신 다이오드 1 2. Honeywell SS411A Bipolar Hall-5 Amp Fuse 1 Fuse Holder 3 Note : Mike Anton은 전력을 대체 할 수있는 제품을 대체 할 수있는 제품을 판매 할 것입니다. 매뉴얼 ( 등 전위 유도를 사용하여 제어). 사양 및 조달 정보는이 두 링크에서 찾을 수 있습니다.이 프로젝트를 수행하려면 BLDC의 작동 및 제어 방식을 철저히 이해하는 데 시간을내어 제안합니다. 온라인으로 많은 참고 문헌이 있습니다 ( 일부 제안은 아래 참조). 그러나 나는 당신이 이해하는 데 도움이되는 프로젝트에 차트와 테이블을 포함합니다. 다음은이 프로젝트를 이해하는 데 가장 중요하다고 생각되는 개념의 목록입니다. MOSFET 트랜지스터 3 단계 하프 브리지 6- 3 단계 문장 펄스 폭으로 위상 모터 (PWM) Hall-Microchip AVR443의 문장 펄스 폭 변조 감소 의 . 하드 드라이브 모터를 청소하는 좋은 비디오 인 홀 센서이지만 저자는 모터를 스테핑 모터와 스테핑 모터로 작동시키는 것 같습니다. 데이터 시트, 애플리케이션 노트 및 구매 정보를 포함하여 L6234 모터 드라이브 IC의 BLDC에 대한보다 구체적인 참조 웹 페이지. 하이브리드 전기 자동차 응용을위한 PM 브러시리스 모터 드라이브 용 무료 샘플. 이것은 재생 제동 단계 변화의 순서를 설명하는 유일한 논문입니다. 이 백서, 전기 자동차의 재생 제동은 유용합니다. 나는 몇 숫자를 빌 렸지만 재생의 작동 방식을 잘못 설명합니다. 통과하기 쉬웠 기 때문에 재활용 디스크 드라이브 모터 로이 프로젝트를 수행했으며 작은 저전압 모터를 사용하여 BLDC로 제어되는 코드를 배우고 안전 문제를 일으키지 않습니다. 또한, 홀 센서의 자석 구성은 이들 모터의 두 번째로부터 자기 고리 (로터)를 사용하여 매우 간단 해집니다 (4 단계 참조). 홀 센서 (5-7 단계)를 설치하고 보정하는 번거 로움을 원하지 않으면 홀 센서 내장 내장 된 CD/DVD 드라이브 모터가 있다는 것을 알고 있습니다. 모터에 약간의 관성을 제공하고 약간의 하중을 제공하기 위해, 나는 모터에 5 개의 하드 드라이브를 넣고, 약간의 강한 접착제와 부드럽게 붙이고 모터에 붙어 있습니다 ( 이것은 원래 프로젝트에서 플라이휠을 만들었습니다). 하드 드라이브에서 모터를 제거하려면 하우징을 풀려면 T8 Torx 드라이브가 필요합니다 ( 일반적으로 중심선 라벨에 스틱 뒤에 숨겨진 두 개의 나사가 있습니다) . 또한 헤드 리더 ( 를 제거해야합니다 Sound Circle Executive) .이 방법으로 메모리 디스크를 꺼내 모터에 도달 할 수 있습니다. 또한 해당 모터에서 로터를 제거하려면 두 번째 동일한 하드 드라이브 모터가 필요합니다 ( 내부에 자석이 있음). 모터를 분해하기 위해, 나는 로터 (상단)를 모터의 바이즈를 잡고 고정자 (아래)에 들어 올렸다 . 변형없이 모터를 충분히 단단한 쌍으로 고정시키는 것은 쉽지 않습니다. 목재 V- 블록을 만들고 싶을 수도 있습니다 . 이 목적으로 사용되는 나는 모터 상단에 편안하게 맞도록 선반의 자기 고리에 구멍을 뚫었습니다. 선반을 사용할 수없는 경우 모터의 역전 로터를 강한 접착제로 고정시킬 수 있습니다. 아래 그림 2와 3은 내가 분해 한 모터 중 하나의 내부를 보여줍니다. 전반전 (로터)에는 8 개의 극 ( 플라스틱으로 감싸는 자석)이 있습니다. 후반 (고정자)에는 12 개의 슬롯 (권선)이 있습니다. 3 개의 모터 위상 각각에는 4 개의 슬롯이 직렬로 제공됩니다. 일부 HD 모터는 하단에 3 개의 접점이 있으며, 하나는 위상 당 접촉, 다른 하나는 모터의 중심 탭 ( 3 단계가 만나는 곳)입니다. 이 프로젝트에서는 센터 탭이 필요하지 않지만 센서가없는 제어에 유용 할 수 있습니다 ( 언젠가 감각 제어에 대한 메모를 공개하고 싶습니다). 모터에 4 개의 접점이있는 경우 OHMeter로 위상을 식별 할 수 있습니다. 중앙 탭과 단계 사이의 저항은 두 단계 사이의 저항의 절반입니다. BLDC 모터에 관한 대부분의 문헌은 사다리 모양의 후면 잠재적 파형을 가진 사람들을 다루지 만 하드 드라이브 모터는 사인처럼 보이는 등의 잠재력을 가진 것으로 보입니다 (아래 참조). 내가 아는 한, 사인 웨이브 PWM으로 사인파 모터를 구동하는 것은 잘 작동하지만 효율은 다소 떨어질 수 있습니다. 모든 BLDC 모터와 마찬가지로이 모터는 3 단계 반 로 구성됩니다 ( 트랜지스터 브리지 아래 2 장 참조). 나는 ST Micro (L6234)가 만든 IC를 사용합니다 . 모터 드라이버라고도하는 브리지에 L6234의 전기적 연결은 8 단계에 나와 있습니다. 아래 세 번째 사진은 모터 드라이버의 개략도와 3 개의 모터 단계를 보여줍니다. 모터가 시계 방향으로 작동하기 위해서는 다음 순서로 스위치가 이루어집니다 ( 첫 번째 글자는 상단 트랜지스터이고 두 번째 글자는 하부 트랜지스터입니다) : 1 단계 2 3 4 5 6 시계 방향 : CB, AB, AC, BC, BA, CA 카운터 시계 방향 : BC, BA, CA, CB, AB, AC이 6- '전자 '의 전자적 정도가 필요합니다. 모터. 따라서 각 모터의 회전 속도는 4 번 발생합니다. 두 시퀀스는 동일하게 보이지만 6 단계 시퀀스의 경우 CW의 경우 위상을 통한 현재 방향은 1 방향이고 CCW의 경우 현재 방향이 반대이기 때문에 동일하지 않습니다. 배터리 또는 전원 공급 장치의 전압을 어느 모터 단계에도 적용하여 직접 볼 수 있습니다. 전압을 적용하면 모터가 한 방향으로 약간 움직이고 정지됩니다. 위의 시퀀스 중 하나에서 위상에서 전압을 빠르게 변경할 수 있으면 모터를 수동으로 회전시킬 수 있습니다. 트랜지스터와 마이크로 컨트롤러는 이러한 모든 스위치를 매우 빠르게 완료하여 모터가 고속으로 작동 할 때 초당 수백 번 전환합니다. 또한 전압이 두 단계에 모두 적용되면 모터가 약간 움직이고 정지됩니다. 토크가 0이기 때문입니다. 아래 네 번째 사진에서 이것을 볼 수 있으며, 이는 한 쌍의 모터 단계의 후면 잠재력을 보여줍니다. 이것은 사인파입니다. 파도가 X- 샤프트를 통과하면이 단계에서 제공하는 토크는 0입니다. 6 단계 BLDC 위상 변화 시퀀스에서는 결코 일어나지 않았다. 특정 위상의 토크가 낮아지기 전에 전원은 다른 위상 조합으로 전환됩니다. 더 큰 BLDC 모터는 일반적으로 모터 내부의 홀 센서로 제조됩니다. 그러한 모터가 있다면이 단계를 건너 뛸 수 있습니다. 또한 이미 힐 센서에 내장 된 CD/DVD 드라이브 모터가 있다는 것을 알고 있습니다. 모터가 회전하면 위치 감지에 3 개의 홀 센서가 사용되므로 위상 변경은 적절한 순간에 수행됩니다. 내 HD 모터는 최대 9000 rpm (150Hz)까지 실행됩니다. 9000 rpm에서 휠당 24 개의 변화가 있으므로 기계는 280 마이크로 초마다 변경됩니다. Arduino 마이크로 컨트롤러는 16MHz에서 작동하므로 각 클록주기는 0.06 마이크로 초입니다. 나는 문장을 줄이기 위해 얼마나 많은 클럭 사이클이 필요한지 모르지만, 100 클럭 사이클이 필요하더라도, 즉 문장의 감소에 5 마이크로 초가 걸립니다. HD 모터에는 홀 센서가 없으므로 모터 외부에 설치해야합니다. 센서는 모터 회전과 관련하여 고정되어야하고 모터 회전과 일치하는 일련의 극에 노출되어야합니다. 내 해결책은 동일한 모터에서 자기 고리를 제거하고 제어 할 모터에 거꾸로 설치하는 것입니다. 그런 다음 모터 샤프트 (120도 전기 모터 회전)에서 서로 30도 떨어져있는이 자기 링 위에 3 개의 홀 센서를 설치했습니다 . 내 홀 센서 홀더는 나에 의해 처리 된 3 개의 알루미늄 부품과 빠른 프로토 타입으로 만든 3 개의 플라스틱 부품으로 구성된 간단한 홀더로 구성됩니다. 이러한 도구가없는 경우 위치를 표시하는 다른 방법을 찾는 것이 어렵지 않아야합니다. 홀 센서 용 괄호를 만드는 것은 더 어려울 것입니다. 이것은 가능한 작업 방법입니다. 1. 올바른 크기의 플라스틱 트레이를 찾으면 홀 센서를 신중하게 에폭시 할 수 있습니다. 2. 템플릿은 종이에 인쇄되며, 이는 자기 고리 반경과 동일한 원이며 3 마크는 15도 떨어져 있습니다. 템플릿을 디스크에 붙인 다음 템플릿을 가이드로 사용하여 홀 센서 에폭시를 조심스럽게 놓습니다. 홀 센서가 모터에 설치되었으므로 아래 그림에 표시된 회로에 연결하여 DMM 또는 오실로스코프를 사용하여 테스트하여 모터가 회전 할 때 출력이 더 높아지도록합니다. Arduino의 5V 출력을 사용 하여이 센서를 5V 미만으로 실행합니다. 홀 센서는 출력이 높거나 낮으며 (1 또는 0), 남극 또는 북극을 느끼는지 여부에 따라 다릅니다. 그것들은 15도 떨어져 있기 때문에 자석은 그 아래에서 회전하고 45도마다 극성을 바꾸 므로이 세 가지 센서는 동시에 높거나 낮지 않습니다. 모터가 회전하면 센서 출력은 6입니다. 다음 표에 표시된 단계 패턴입니다. 센서는 모터의 움직임과 정렬되어 3 개의 센서 중 하나가 모터 위상 변경 위치에서 정확하게 변경되도록해야합니다. 이 경우, 제 1 홀 센서 (H1)의 상승 가장자리는 C 조합 (높음) 및 B (낮음)의 개구부와 일치해야합니다. 이는 브리지 회로에서 트랜지스터 3과 5를 켜는 것과 같습니다. 센서를 자석과 오실로스코프와 정렬합니다. 이를 위해서는 3 개의 범위 채널을 사용해야합니다. 두 번째 모터의 벨트에 연결하여 모터를 회전시키고 2 상 조합 ( A 및 B, A 및 C) 사이의 후면 전위를 측정합니다 . 이것은 두 사인입니다. 아래 그림의 파도와 마찬가지로 오실로스코프의 채널 3에서 홀 센서 2의 신호를보십시오. 홀 센서 홀더는 홀 센서의 상승 가장자리가 위상 변경이 수행되어야하는 지점과 완전히 정렬 될 때까지 돌립니다 (아래 참조). 이제 동일한 교정을 수행 할 채널이 두 개 뿐이라는 것을 알고 있습니다. 위상 조합 B의 BEMF가 C를 사용하는 경우, H2의 상승 에지는 BC 곡선과 관련이있다. 위상 변화가 여기에서 수행되어야하는 이유는 항상 모터 토크를 가능한 한 높게 유지하기 때문입니다. 등 전위는 토크에 비례하며, 후면 전위가 다음 단계 곡선 아래로 지나갈 때 각 위상 변화가 발생한다는 것을 알 수 있습니다. 따라서 실제 토크는 각 위상 조합의 가장 높은 부분으로 구성됩니다. 범위에 액세스 할 수 없다면 여기에서 정렬에 대한 나의 생각이 있습니다. 이것은 실제로 BLDC 모터가 어떻게 작동하는지 알고 싶어하는 사람에게는 흥미로운 운동입니다. 모터 위상 A가 전원 공급 장치에 연결 (양수) 및 B (음수)를 연결하고 전원 공급 장치를 켜면 모터가 약간 회전하여 정지됩니다. 그런 다음 네거티브 전력 리드가 C 단계로 이동하고 전원이 켜지면 모터가 더위가 더 멈 춥니 다. 시퀀스의 다음 부분은 양수 리드를 위상 B 등으로 이동시키는 것입니다. 이 작업을 수행 할 때 모터는 항상 토크가 0 인 위치를 중지하며, 이는 차트가 차트의 x 축을 통과하는 한 곳에 해당합니다. 3 상 조합의 제로 점은 처음 두 조합의 위상 변화 위치에 해당합니다. 따라서 B- C 조합의 0 토크 위치는 H2의 상승 가장자리를 배치하려는 곳입니다. 이 위치를 미세 표시 또는 날카로운 블레이드로 표시 한 다음이 마크에서 H2의 출력이 정확히 높아질 때까지 DMM을 사용하여 홀 센서 홀더를 조정하십시오. 학교 일정에서 조금 벗어나더라도 모터는 잘 작동합니다. 3 개의 모터 단계는 L6234 3 상 모터 드라이버로부터 전원을 공급합니다. 나는 이것이 시간의 시험을 견딜 수있는 좋은 제품이라는 것을 알았습니다. 전력 전자 장치를 사용할 때 실수로 구성 요소를 볶는 방법에는 여러 가지가 있습니다. 전기 엔지니어가 아니며 항상 무슨 일이 일어나고 있는지 항상 알지 못합니다. 학교 프로그램에서 우리는 6 개의 MOSFET 트랜지스터와 6 개의 다이오드의 3 단계 하프 브리지 출력을 수행했습니다. 우리는 이것을 다른 드라이버 Intersil의 HIP4086에서 사용했지만,이 설정에 많은 문제가 있습니다. 우리는 많은 트랜지스터와 칩을 태웠습니다. 를 실행합니다 . 12V에서 L6234 (모터) L6234에는 6 개의 트랜지스터의 하프 브리지를 제어하기위한 비정상적인 입력 세트가 있습니다. 모든 트랜지스터에 입력이있는 것은 아니지만 활성화 (EN) 입력을 한 다음 다른 입력 (in) 3 단계 각각에 대한 개방 단계 (상단 또는 하단)의 트랜지스터를 선택합니다. 예를 들어, 트랜지스터 1 (상단) 및 6 (하단) 켜기 en1 및 en3은 모두 높습니다 ( 스테이지 폐쇄를 유지하기 위해 EN2 낮음) 1 인치, 3 인치. 이것은 위상 조합 C를 만듭니다. L6234 애플리케이션 노트는 모터의 속도를 IN 핀에 제어하는 데 사용되는 PWM을 적용하는 것을 제안했지만, 그 당시에는 핀에서 그것을하기로 결정했기 때문에, 나는 그 당시에는 \ '이상한 \'라고 생각하기 때문에 \ '의 상단 및 하단 트랜지스터를 교대로 \'로 바꾸는 것이 \ ' 라고 생각합니다 . 전류를 통과하면 My 방법을 통해 높은 위상은 PWM 주파수에서 번갈아 가며, 아래의 전체 위상 변화가 남아 있습니다 비트가 작기 때문에 더 큰 버전의 경우 L6234의 문서를 참조하십시오. 참고 : Mike Anton은 L6234 용 PCB를 만들었습니다. 이 트랙을 대체하고 조립 작업을 저장할 것입니다. 사양 및 구매 정보에 대한이 링크를 참조하십시오. 나는 약 3에 대해 많은 것을 발견하지 못했습니다. 나는 그것이 어떻게 작동하는지에 대한 나의 이해를 설명 할 것입니다. 전기 엔지니어가 아니며 설명에 대한 수정에 감사드립니다. 운전할 때 제어 시스템은 토크를 최대화하는 방식으로 전류를 3 개의 모터 단계로 보냅니다. 재생 제동에서 제어 시스템은 토크를 최대화하지만 이번에는 음의 토크로 전류를 배터리로 전송하는 동안 모터가 속도가 느려집니다. 내가 사용한 재생 제동 방법은 미국의 Oakridge National Laboratory의 종이에서 나왔습니다. S. Govt. 자동차 모터에 대한 많은 연구를 수행하는 실험실. 아래 차트는 그것이 어떻게 작동하는지를 설명하는 다른 논문에서 나온 것입니다 ( 그러나이 두 번째 논문에서 주어진 설명은 부분적으로 부정확하다고 생각합니다). 모터가 회전하면 모터 위상의 BEMF 전압이 위아래로 변동합니다. 그림에서, 그것은 BEMF가 단계 B에서 높고 단계에서 낮은 순간을 보여줍니다. 이 경우 전류가 B에서 B로 흐를 수 있습니다. 재생 제동에 중요하면 저가형 트랜지스터가 빠르게 켜지고 꺼져 있습니다 ( 초당 수천 개의 PWM 스위치). 고급 트랜지스터 스위치가 꺼질 때; 낮은 트랜지스터가 켜지면 첫 번째 그림에 표시된대로 전류가 흐릅니다. 전력 전자 장치 측면에서 회로는 Boost Converter라는 장치와 같습니다. 여기서 에너지는 모터 단계에 에너지가 저장됩니다 ( Wikipedia는 Boost 컨버터의 작동 방식을 설명하는 좋은 기사가 있습니다). 이 에너지는 저가형 트랜지스터가 꺼질 때 해제되지만 더 높은 전압에서 전류는 각 트랜지스터 옆의 \ 'anti-excitation \'다이오드를 통해 즉시 흐르고 배터리로 돌아갑니다. 다이오드는 전류가 배터리에서 모터로 흐르는 것을 방지합니다. 동시에,이 방향으로의 전류 ( 운전과는 달리) 는 자석 고리와 상호 작용하여 모터를 늦추는 음의 토크를 생성합니다. 낮은 측 트랜지스터는 PWM 스위치를 사용하고 PWM의 듀티 사이클은 제동량을 제어합니다. 운전할 때 모터의 정류는 한 조합에서 다음 조합으로 전환하여 가능한 최고 토크를 유지합니다. 일부 스위칭 모드로 인해 모터가 가능한 한 많은 음의 토크를 생성하기 때문에 재생 브레이크의 정류는 매우 유사합니다. 첫 번째 단계에서 비디오를 보면 재생 브레이크가 잘 작동한다는 것을 알 수 있지만 잘 작동하지 않습니다. 주된 이유는 내가 사용하는 하드 드라이브 모터가 매우 낮은 토크 모터이기 때문에 최고 속도를 제외하고는 BEMF를 많이 생성하지 않기 때문입니다. 더 낮은 속도에서는 재생 제동이 거의 없습니다 (있는 경우). 또한, 내 시스템은 비교적 낮은 전압 (12V)으로 실행됩니다. 또한 항-운동 다이오드를 통한 각 경로는 전압을 여러 볼트로 줄이기 때문에 효율도 크게 줄어 듭니다. 정상 정류기 다이오드를 사용하고 전압 강하가 낮은 특수 다이오드를 사용하면 더 나은 성능을 얻을 수 있습니다. 아래는 Arduino의 입력 및 출력 목록입니다. 내 보드의 차트와 사진도 포함하십시오. 2- 디지털 진입장 1 120 K 저항 GND 3 디지털 입력 홀 2 120 K 저항 GND 4 HALL 3 디지털 입력 -120K GND 5 1 디지털 출력 400 OHM 저항기 6 2 디지털 출력 400 OHM 저항력 7 3 디지털 출력 400 OHM 저항기 9- 400 OHM의 디지털 출력 시리즈의 400 OHM Digital Output에서 400 OHM 저항력으로 400 OHM 저항력 을 갖추고 있습니다. 400 Ohm 저항 11- EN 3 디지털 출력은 400 옴 저항, 100k Ohm 전위차계와 직렬로, 5V 및 GND는 양쪽 끝에 연결되고 아날로그 핀 0은 중간에 연결됩니다. 이 전위차계는 운동 속도 및 제동량을 제어하는 데 사용됩니다. 5 V 전원 공급 장치는 또한 홀 센서를 실행하는 데 사용됩니다 (5 단계 참조). 다음은 내가 Ardjuino에 대해 쓴 전체 프로그램입니다. 여기에는 David Glazer의 의견이 포함되어 있습니다. X 시리즈는 ST L6234 3 단계 모터 드라이버 IC * 디스크 드라이브 모터를 시계 방향으로 실행 중 * 모터 속도 * 모터 속도 및 3 개의 전위차계 * 모터 위치에 의해 제동되는 제동 * Arduino는 3 개의 홀 센서 (핀 2,3,4)로부터 출력을 수신하고 조합에서 조합을 통합하여 6 개의 서로 다른 위상 선택 단계로 변환합니다. 조합 1,2, 3 * 3은 각각 1,6, 7에서 (1,2,3), PWM 듀티 사이클을 변경하여 운전과 재생 제동 사이의 시뮬레이션을 전위차계에 연결하십시오 * 0-523 : 택시 * 500-1023 : 해당 지역에 대한 댓글을 달아주십시오 . 3,2,1 int ) ; hallstate 3 /Hall 1 Pinmode (3, 입력); /Hall 2 Pinmode (4, 입력); /l6234 Hall 3/Pinmode 모터 드라이버의 출력 (5, 출력); /1 Pinmode (6, 출력); /2 핀 모드 (7, 출력); /3 핀 모드 (9, 출력); /en 1 Pinmode (10, 출력); /en 2 Pinmode (11, 출력); /en 3/직렬. 시작 (9600); 일련의 연결을 사용하는 경우이 줄을 타협하십시오. 프로그램 끝의 플러시 명령. /* 핀 9, 10 및 11에서 PWM 주파수 설정 PIN 9, 10/첫 번째 사전 디바이더 비트 모두에 대한 PWM을 32 kHz로 설정하십시오. int prescalerval = 0x07; /prescalerval이라는 변수를 생성하고 이진 번호 \ '00000111 \'tccr1b & = ~ prescaler /및 tccr0b의 값 \ '11111000 \' /이제 적절한 사전 에코딩 비트를 설정합니다. int pre-encoding bit 2 = 1; /이진 번호와 동일하게 prescalerval을 설정하십시오 \ '00000001 \'tccr1b | = prescalerval2; /또는 이진 수의 \ '00000001 \' /PIN 3,11의 경우 PWM을 32 kHz로 설정 한 TCCR0B의 값 ( 이 프로그램은 핀 11 만 사용) /3 개의 프리 캘러 비트를 모두 지우십시오. 먼저 : TCCR2B & = ~ CALERVAL; /및 이진수 \ '11111000 \'의 이진 수를 가진 tccr0b의 값은 이제 적절한 사전 인코딩 비트를 설정합니다 : tccr2b | = 사전 인코딩 비트 2; /또는 이진 수의 \ '00000001 \'의 TCCR0B의 값/먼저 세 가지 사전 인코딩 된 비트를 모두 지우십시오.} /prgrom void loop ()의 기본 루프 { /time = millis (); 인쇄 프로그램이 시작된 후 시간. println (시간); //연속물. 인쇄(\'\'); 스로틀 = analogread (0); /스로틀 전위차계 msps =지도 ( 스로틀, 512,1023, 0,255); /운전은 전위차계의 상단 절반에 매핑됩니다. bspeed = map ( 스로틀, 0,511,255, 0); /냄비의 바닥에서/MSPS ED = 100의 반 부분 재생 제동; /디버깅 Hallstate1 = DigitalRead (2); /홀에서 입력 값을 읽습니다 1 2 = 디지털 읽기 (3); /홀에서의 입력 값 읽기 2 3 = 디지털 읽기 (4); 입력 값/숫자 쓰기 읽기 홀 3 (8, Hallstate1); /해당 센서가 고전력이있는 경우 LED는 원래 DigitalWrite (9, Hallstate2)를 디버그하는 데 사용됩니다. // DigitalWrite (10, Hallstate3); HallVal = (Hallstate1)+ (2*hallstate2)+ (4*hallstate3); /3 홀 센서/* 시리즈의 이진 값을 계산하십시오. print (\ 'h 1 : \'); 직렬 포트 디버깅 용. println (hallstate1); 연속물. print (\ 'h 2 : \'); 연속물. println (hallstate2); 연속물. print (\ 'h 3 : \'); 연속물. println (hallstate3); 연속물. println (\ '\'); */// 직렬. println (mspeed); //연속물. println (hallval); //연속물. 인쇄(\'\'); /모니터 트랜지스터 출력/지연 (1000); /* t1 = DigitalRead (2); // t1 = ~ t1; T2 = DigitalRead (4); // t2 = ~ t2; T3 = DigitalRead (5); // t3 = ~ t3; 연속물. 인쇄 (t1); 연속물. print (\ '\ t \'); 연속물. 인쇄 (T2); 연속물. print (\ '\ t \'); 연속물. 인쇄 (t3); 연속물. 인쇄(\'\'); 연속물. 인쇄(\'\'); 연속물. print (DigitalRead (3)); 연속물. print (\ '\ t \'); 연속물. print (DigitalRead (9)); 연속물. print (\ '\ t \'); 연속물. println (DigitalRead (10)); 연속물. 인쇄(\'\'); 연속물. 인쇄(\'\'); // 지연 (500); */구동 위상 변경/각 바이너리 숫자는 출력 Arduino :/Portd의 값을 변경하는 데 사용되는 다른 트랜지스터 켜기/비트 수학에 해당하는 사례를 가지고 있습니다. Arduino :/Portd는 L6234 드라이버에서 IN 핀의 출력을 포함합니다./각 위상에 대한 상단 트랜지스터/EN 핀이 Arduino 명령에 의해 제어되는지 여부를 결정하는 데 사용되는 출력/각 위상에 대한 하부 트랜지스터/en 핀이 제어되는지 여부를 결정합니다 ( 0 = 255). 전위차계에 의해 제어되는 스로틀 값). if (스로틀> 511) {switch (hallval) { case 3 :/portd = 1111xxx00; /PIN 0-7 XXX의 예상 출력은 홀 입력을 말하고 PORTD & = B00011111은 변경되지 않아야합니다. portd | = B01100000; /analowrite (9, mspeed); 위상 ( 고급 트랜지스터) 아날로그 작품의 PWM (10,0); Phase B 폐쇄 (듀티 = 0) 아날로그 작품 (11,255); // -duty = 100% ( 저급 트랜지스터) BREAK의 Phase C; 사례 1 :/portd = b001xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 /portd | = B00100000; /analowrite (9, mspeed); 상 ( 고급 트랜지스터) 유사체 (10,255)의 PWM; // 위의 ( 저급 트랜지스터) 아날로그 라이팅 (11,0); // Phase B Off (듀티 = 0) 브레이크; 사례 5 :/portd = b101xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 /portd | = B10100000; 아날로그 작품 (9,0); 아날로그 라이팅 (10,255); 아날로그 라이팅 (11, mspeed); 부서지다; 사례 4 :/portd = b100xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 portd | = BYM000; /analowrite (9,255); 아날로그 작품 (10,0); 아날로그 라이팅 (11, mspeed); 부서지다; 사례 6 :/portd = b110xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 PORTD B11. 000 =; /analowrite (9,255); 아날로그 라이팅 (10, mspeed); 아날로그 라이팅 (11,0); 부서지다; 사례 2 :/portd = b010xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 B0201700 PORTD | =; /analowrite (9,0); 아날로그 라이팅 (10, mspeed); 아날로그 라이팅 (11,255); 부서지다; }} /재생 브레이크 위상 변경 /portd ( L6234의 핀 출력) 핀은 항상 낮으므로 각 단계의 낮은 트랜지스터 만 재생 중에 사용됩니다. 제동. else { /portd = b000xxx00; /PIN 의 예상 출력 ; 0-7 PORTD & = B00011111 portd | = BYM0000; // 스위치 (HallVal) { 사례 3 : 비유 쓰기 (9, bspeed); // 아날로그 라이팅 (9,0); 아날로그 작품 (10,0); 아날로그 라이팅 (11,0); 부서지다; 사례 1 : 비유 쓰기 (9, bspeed); 아날로그 작품 (10,0); 아날로그 라이팅 (11,0); 부서지다; 사례 5 : 비유 작문 (9,0); 아날로그 작품 (10,0); 아날로그 라이팅 (11, bspeed); 부서지다; 사례 4 : 비유 작문 (9,0); 아날로그 작품 (10,0); 아날로그 라이팅 (11, bspeed); 부서지다; 사례 6 : 비유 작문 (9,0); 아날로그 라이팅 (10, bspeed); 아날로그 라이팅 (11,0); 부서지다; 사례 2 : 비유 작문 (9,0); 아날로그 라이팅 (10, bspeed); 아날로그 라이팅 (11,0); 부서지다; }} /time = millis (); 인쇄 프로그램이 시작된 후 시간. println (시간); //연속물. 인쇄(\'\'); //연속물. 플러시(); /직렬 포트를 사용하여 디버그하려면 타협하십시오} 이 프로젝트에서 Arduino가하는 작업은 너무 간단하여 마이크로 프로세서 로이 작업을 수행하는 폐기물처럼 보입니다. 실제로 L6234 의 응용 프로그램 노트는 이 작업을 수행하기 위해 간단한 프로그래밍 가능한 게이트 어레이 (격자 반도체로 만든 Gal16v8)를 권장합니다. 이 장치의 프로그래밍에 익숙하지는 않지만 IC의 비용은 $ 2입니다. 뉴 어크에서 39. 다른 유사한 통합 회로도 매우 저렴합니다. 또 다른 옵션은 신중한 논리 게이트를 모으는 것입니다. 나는 3 개의 홀 센서의 출력에서 L6234 IC를 구동 할 수있는 비교적 간단한 논리 시퀀스를 생각해 냈습니다. 단계 A에 대한 차트는 아래에 표시되고 3 단계 모두에 대한 진실 테이블 ( B 및 C 단계의 논리 회로를 위해서는 \ '\'도어가 \의 다른쪽으로 전환되어야합니다 이 접근법의 문제는 각 단계에서 거의 20 개의 연결이 거의 필요하다는 것입니다. . '또는