사용자 도구

사이트 도구


products:mpino_8a8r

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
products:mpino_8a8r [2026/09/15 13:15] – 바깥 편집 127.0.0.1products:mpino_8a8r [2026/11/01 21:38] (현재) – 바깥 편집 127.0.0.1
줄 5: 줄 5:
 Arduino IDE(Arduino C/C++) 또는 MPINO STUDIO 2(Arduino C/C++ & 래더로직)로 프로그램할 수 있습니다. Arduino IDE(Arduino C/C++) 또는 MPINO STUDIO 2(Arduino C/C++ & 래더로직)로 프로그램할 수 있습니다.
  
-[[:products:mpino_series#arduino_ide_설정표|MPINO Arduino IDE 설정표]]에서 MPINO-8A8R에 사용할 보드 이름, 연결 방법과 첫 입출력 번호를 확인할 수 있습니다.+[[:products:mpino_series#mpino_series_사양표|MPINO Series 사양표]]에서 MPINO-8A8R의 보드 이름, 연결 방법과 첫 입출력 번호를 확인할 수 있습니다.
  
  
줄 19: 줄 19:
 |  릴레이 출력  |  8점 \\ (유접점·절연)  |  R(62)~R(69)  | 동작 연결 전압: DC 0~30V 또는 AC 0~250V \\ 최대 출력 허용 전류: 5A/1점 \\ 2점/1COM × 4그룹  | |  릴레이 출력  |  8점 \\ (유접점·절연)  |  R(62)~R(69)  | 동작 연결 전압: DC 0~30V 또는 AC 0~250V \\ 최대 출력 허용 전류: 5A/1점 \\ 2점/1COM × 4그룹  |
 |  아날로그 입력  |  4점 \\ (비절연)  |  A(0)~A(3)  | DC 0~5V, DC 0~10V, DC 0~20mA 또는 NTC 10kΩ(25℃) 중 채널별 선택 \\ 분해능: 10bit (0~1023) \\ 입력저항: 2kΩ(0~5V), 4kΩ(0~10V), 250Ω(전류), 10kΩ 풀업(NTC)  | |  아날로그 입력  |  4점 \\ (비절연)  |  A(0)~A(3)  | DC 0~5V, DC 0~10V, DC 0~20mA 또는 NTC 10kΩ(25℃) 중 채널별 선택 \\ 분해능: 10bit (0~1023) \\ 입력저항: 2kΩ(0~5V), 4kΩ(0~10V), 250Ω(전류), 10kΩ 풀업(NTC)  |
-|  고속카운터 입력  |  2점 \\ (무접점·절연)  |  TCNT1, TCNT5  | 동작 입력 전압: DC 0~80V \\ HIGH 인식 전압: DC 3V 이상 \\ 최대 입력 주파수: 5kHz \\ TIMER1·TIMER5 사용  |+|  고속카운터 입력  |  2점 \\ (무접점·절연)  |  TCNT1, TCNT5  | 동작 입력 전압: DC 0~80V \\ HIGH 인식 전압: DC 3V 이상 \\ 최대 최대 입력 주파수: 5kHz \\ TIMER1·TIMER5 사용  |
 |  인터럽트 입력  |  4점 \\ (비절연)  |  PWM2(D2), PWM3(D3) \\ SDA(D20), SCL(D21)  | 입력 전압: DC 0~5V \\ HIGH 인식 전압: DC 3V 이상 \\ PWM2·PWM3: 풀업·풀다운 없음 \\ SDA·SCL: 4.7kΩ 풀업 내장  | |  인터럽트 입력  |  4점 \\ (비절연)  |  PWM2(D2), PWM3(D3) \\ SDA(D20), SCL(D21)  | 입력 전압: DC 0~5V \\ HIGH 인식 전압: DC 3V 이상 \\ PWM2·PWM3: 풀업·풀다운 없음 \\ SDA·SCL: 4.7kΩ 풀업 내장  |
 |  PWM 출력  |  6점 \\ (비절연)  |  PWM5(D5), PWM2(D2), PWM3(D3) \\ PWM6(D6), PWM7(D7), PWM8(D8)  | 출력 전압: LOW(DC 0V), HIGH(DC 5V) \\ 최대 출력 전류: 30mA \\ 150Ω 보호저항 내장  | |  PWM 출력  |  6점 \\ (비절연)  |  PWM5(D5), PWM2(D2), PWM3(D3) \\ PWM6(D6), PWM7(D7), PWM8(D8)  | 출력 전압: LOW(DC 0V), HIGH(DC 5V) \\ 최대 출력 전류: 30mA \\ 150Ω 보호저항 내장  |
줄 29: 줄 29:
 | ::: | ::: |  SRAM  | 8KB  | | ::: | ::: |  SRAM  | 8KB  |
 | ::: | ::: |  EEPROM  | 4KB  | | ::: | ::: |  EEPROM  | 4KB  |
 +
 +**Markdown 자료:** [[https://www.ilogics.net/docs/downloads:mpino:ko:mpino_8a8r?do=export_raw|MPINO-8A8R.md 다운로드]]
  
  
 ===== 디지털 입력 ===== ===== 디지털 입력 =====
  
-[[:guide:wiring#디지털_입력_한_채널_확인|처음 결선할 때는 디지털 입력 한 채널 확인 순서를 함께 보십시오. →]]+[[:guide:wiring#디지털_입력_한_채널_확인|처음 결선할 때는 디지털 입력 한 채널 확인 절차를 참고해주시기 바랍니다. →]]
 ^ 그룹 ^ 단자 ^ Arduino 핀 ^ 입력 구성 ^ 단자대 및 결선 예시 ^ ^ 그룹 ^ 단자 ^ Arduino 핀 ^ 입력 구성 ^ 단자대 및 결선 예시 ^
 | COM0 | I(22)~I(29) | D22~D29 | 디지털 입력 8점, COM0 공유 |  {{:products:mpino-8a8r-digital-input.svg?727|MPINO-8A8R 디지털 입력 단자대와 NPN·PNP 결선}}  | | COM0 | I(22)~I(29) | D22~D29 | 디지털 입력 8점, COM0 공유 |  {{:products:mpino-8a8r-digital-input.svg?727|MPINO-8A8R 디지털 입력 단자대와 NPN·PNP 결선}}  |
줄 69: 줄 71:
 </code> </code>
  
-IdigitalRead(22, 5)는 D22을 5회 연속 판독합니다. 모두 HIGH 또는 모두 LOW일 때 상태를 갱신하고, 값이 섞이면 이전 상태를 유지합니다. 시간 기준의 채터링 필터와 달리 판독 사이에 지연을 넣지 않습니다.+IdigitalRead(22, 5)는 D22를 5회 연속 판독합니다. 모두 HIGH 또는 모두 LOW일 때 상태를 갱신하고, 값이 섞이면 이전 상태를 유지합니다. 시간 기준의 채터링 필터와 달리 판독 사이에 지연을 넣지 않습니다.
  
 <code cpp> <code cpp>
줄 77: 줄 79:
  
 void loop() { void loop() {
-  const bool inputOn = IdigitalRead(22, 5);  // D22을 5회 연속 판독해 안정된 상태 반환+  const bool inputOn = IdigitalRead(22, 5);  // D22를 5회 연속 판독해 안정된 상태 반환
   Serial.println(inputOn ? F("D22 ON") : F("D22 OFF"));   Serial.println(inputOn ? F("D22 ON") : F("D22 OFF"));
   delay(200);   delay(200);
줄 133: 줄 135:
 </code> </code>
  
-Ialt(input, state)는 입력이 OFF에서 ON으로 바뀔 때마다 state를 반전합니다. D22을 한 번 누르면 D62가 ON, 다시 누르면 OFF가 되며 누르고 있는 동안은 유지됩니다. 예제는 Ibounce(22, 30)로 채터링을 걸러 Ialt()에 전달합니다. outputOn은 호출 사이에 유지되는 전역 변수이며, Ialt()가 이 값을 직접 변경합니다.+Ialt(input, state)는 입력이 OFF에서 ON으로 바뀔 때마다 state를 반전합니다. D22를 한 번 누르면 D62가 ON, 다시 누르면 OFF가 되며 누르고 있는 동안은 유지됩니다. 예제는 Ibounce(22, 30)로 채터링을 걸러 Ialt()에 전달합니다. outputOn은 호출 사이에 유지되는 전역 변수이며, Ialt()가 이 값을 직접 변경합니다.
  
 <code cpp> <code cpp>
줄 155: 줄 157:
 </code> </code>
  
 +
 +===== STATUS LED =====
 +
 +MPINO-8A8R의 STATUS LED는 보드에 실장된 상태 표시등입니다. 사용자 프로그램에서 보드의 동작 상태를 표시할 때 사용할 수 있습니다.
 +
 +STATUS LED는 디지털 핀 D13에 연결되어 있습니다. 스케치에서는 D13 대신 ''LED_BUILTIN''을 사용할 수 있습니다. ''pinMode(LED_BUILTIN, OUTPUT)''으로 출력 모드를 설정해야 합니다. ''digitalWrite(LED_BUILTIN, HIGH)''이면 LED가 켜지고, ''digitalWrite(LED_BUILTIN, LOW)''이면 꺼집니다.
 +
 +**주의사항:** STATUS LED는 보드 내장 표시등이며 외부 출력 단자와 다릅니다.
 +
 +==== 예제 · STATUS LED 점멸 ====
 +
 +다음 예제는 STATUS LED를 0.5초 간격으로 켜고 끕니다.
 +
 +<code cpp>
 +void setup() {
 +  pinMode(LED_BUILTIN, OUTPUT);
 +}
 +
 +void loop() {
 +  digitalWrite(LED_BUILTIN, HIGH);  // LED 켜기
 +  delay(500);
 +  digitalWrite(LED_BUILTIN, LOW);   // LED 끄기
 +  delay(500);
 +}
 +</code>
  
 ===== 릴레이 출력 ===== ===== 릴레이 출력 =====
  
-[[:guide:wiring#릴레이_출력_한_채널_확인|처음 결선할 때는 릴레이 출력 한 채널 확인 순서를 함께 보십시오. →]]+[[:guide:wiring#릴레이_출력_한_채널_확인|처음 결선할 때는 릴레이 출력 한 채널 확인 절차를 참고해주시기 바랍니다. →]]
 ^ 그룹 ^ 단자 ^ Arduino 핀 ^ 접점 정격 ^ 단자대 및 결선 예시 ^ ^ 그룹 ^ 단자 ^ Arduino 핀 ^ 접점 정격 ^ 단자대 및 결선 예시 ^
 | COM2 | R(62), R(63) | D62, D63 | AC 250V 또는 DC 30V, 최대 5A/1점 |  {{:products:mpino-8a8r-relay-output.svg?558|MPINO-8A8R 릴레이 출력 단자대와 부하 결선}}  | | COM2 | R(62), R(63) | D62, D63 | AC 250V 또는 DC 30V, 최대 5A/1점 |  {{:products:mpino-8a8r-relay-output.svg?558|MPINO-8A8R 릴레이 출력 단자대와 부하 결선}}  |
줄 165: 줄 192:
 | COM5 | R(68), R(69) | D68, D69 | AC 250V 또는 DC 30V, 최대 5A/1점 | ::: | | COM5 | R(68), R(69) | D68, D69 | AC 250V 또는 DC 30V, 최대 5A/1점 | ::: |
  
-릴레이 출력은 각 COM 단자와 출력 단자를 물리적으로 연결하는 무전압 접점입니다. 부하 전원은 별도로 연결합니다.+릴레이 출력은 각 COM 단자와 출력 단자를 물리적으로 연결하는 무전압 접점입니다. 부하 전원은 별도로 연결해야 합니다.
  
 ==== 예제 프로그램 · 릴레이 출력 ==== ==== 예제 프로그램 · 릴레이 출력 ====
줄 366: 줄 393:
 | 절연 고속카운터 | TCNT1(D79), TCNT5(D47), COM1 | 2점 | | 절연 고속카운터 | TCNT1(D79), TCNT5(D47), COM1 | 2점 |
 | 외부 인터럽트 | PWM2(D2), PWM3(D3), SDA(D20), SCL(D21) | 4점 | | 외부 인터럽트 | PWM2(D2), PWM3(D3), SDA(D20), SCL(D21) | 4점 |
-| 엔코더 입력 | A상: SDA(D20), B상: SCL(D21) | 1채널 |+| 엔코더 입력 | A상: SDA(D20), B상: SCL(D21) | 1채널, 입력 주파수: 최소 50kHz 이상 |
  
 TCNT1과 TCNT5는 TIMER1·TIMER5의 외부 클럭 입력으로 사용합니다. SDA와 SCL을 엔코더 입력으로 사용하면 I²C 통신을 동시에 사용할 수 없습니다. TCNT1과 TCNT5는 TIMER1·TIMER5의 외부 클럭 입력으로 사용합니다. SDA와 SCL을 엔코더 입력으로 사용하면 I²C 통신을 동시에 사용할 수 없습니다.
줄 471: 줄 498:
 ==== 예제 프로그램 · 엔코더 입력 ==== ==== 예제 프로그램 · 엔코더 입력 ====
  
-A상은 SDA(D20), B상은 SCL(D21)에 연결합니다. 4.7kΩ 풀업 (SDA/SCL)이며 FALLING 에지에서 B상이 LOW이면 증가하는 1배 계수 예제입니다. 실제 회전 방향은 A·B상 결선에 따라 달라집니다. SDA·SCL을 사용하므로 I²C 통신과 동시에 실행하지 않습니다.+A상은 SDA(D20), B상은 SCL(D21)에 연결해주시기 바랍니다. 4.7kΩ 풀업 (SDA/SCL)이며 FALLING 에지에서 B상이 LOW이면 증가하는 1배 계수 예제입니다. 실제 회전 방향은 A·B상 결선에 따라 달라집니다. SDA·SCL을 사용하므로 I²C 통신과 동시에 실행하지 않습니다.
  
 <code cpp> <code cpp>
줄 731: 줄 758:
 D22 상태를 M[0], A0 원시값(0~1023)을 D[0]에 넣어 상대 기기에서 읽습니다. RS-232(Serial1), 국번 1, 9600bps, 8N1로 설정하고, M[0]은 FC01·시작 주소 0·1비트, D[0]은 FC03·시작 주소 0·1워드로 읽습니다. 주소는 실제 전송 주소(0부터) 기준입니다. 통신 함수는 loop()마다 호출하며 출력은 제어하지 않습니다. D22 상태를 M[0], A0 원시값(0~1023)을 D[0]에 넣어 상대 기기에서 읽습니다. RS-232(Serial1), 국번 1, 9600bps, 8N1로 설정하고, M[0]은 FC01·시작 주소 0·1비트, D[0]은 FC03·시작 주소 0·1워드로 읽습니다. 주소는 실제 전송 주소(0부터) 기준입니다. 통신 함수는 loop()마다 호출하며 출력은 제어하지 않습니다.
  
-M과 D는 코어가 제공하는 공유 전역 메모리입니다. 이 스케치는 단독 실행하며, 다른 프로토콜과 함께 사용할 때는 메모리를 중복 할당하지 않습니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꾸며, UART 단자는 Serial3를 사용합니다.+M과 D는 코어가 제공하는 공유 전역 메모리입니다. 이 스케치는 단독 실행하며, 다른 프로토콜과 함께 사용할 때는 메모리를 중복 할당하지 않아야 합니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꿔야 합니다. UART 단자는 Serial3를 사용합니다.
  
 <code cpp> <code cpp>
줄 771: 줄 798:
 </code> </code>
  
-RS-232(Serial1)로 상대 슬레이브의 홀딩 레지스터 1개를 1초마다 읽습니다. 상대 기기는 국번 1, 9600bps, 8N1, FC03·실제 시작 주소 0으로 준비합니다. 응답은 received[0]에 저장하며 성공한 경우에만 표시합니다. 오류 코드는 16진수로 표시합니다. 위 슬레이브 예제와는 별도 스케치이며, M/D 메모리 대신 수신 배열을 사용합니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꾸며, UART 단자는 Serial3를 사용합니다.+RS-232(Serial1)로 상대 슬레이브의 홀딩 레지스터 1개를 1초마다 읽습니다. 상대 기기는 국번 1, 9600bps, 8N1, FC03·실제 시작 주소 0으로 준비합니다. 응답은 received[0]에 저장하며 성공한 경우에만 표시합니다. 오류 코드는 16진수로 표시합니다. 위 슬레이브 예제와는 별도 스케치이며, M/D 메모리 대신 수신 배열을 사용합니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꿔야 합니다. UART 단자는 Serial3를 사용합니다.
  
 <code cpp> <code cpp>
줄 802: 줄 829:
 **관련 내장 명령어** **관련 내장 명령어**
  
-=== 함수 예제 · LS산전 Cnet SLave: ICnetMem(), ICnetAdr(), ICnetInit(), ICnet() ===+=== 함수 예제 · LS산전 Cnet Slave: ICnetMem(), ICnetAdr(), ICnetInit(), ICnet() ===
  
 **함수 원형** **함수 원형**
줄 813: 줄 840:
 </code> </code>
  
-D22 상태를 M[0], A0 원시값(0~1023)을 D[0]에 넣어 HMI에서 읽습니다. 상대 기기는 LS산전 Cnet, RS-232, 국번 1, 9600bps, 8N1로 설정합니다. 비트는 %MX00000(M[0]), 워드는 %DW0(D[0])을 읽습니다. 통신 함수는 loop()마다 호출하며 출력은 제어하지 않습니다.+D22 상태를 M[0], A0 원시값(0~1023)을 D[0]에 넣어 HMI에서 읽습니다. 상대 기기는 LS산전 Cnet, RS-232, 국번 1, 9600bps, 8N1로 설정해주시기 바랍니다. 비트는 %MX00000(M[0]), 워드는 %DW0(D[0])을 읽습니다. 통신 함수는 loop()마다 호출하며 출력은 제어하지 않습니다.
  
-M·D·R은 코어가 제공하는 공유 전역 메모리이며, 이 예제는 R을 사용하지 않습니다. Modbus 예제와는 단독 실행하며, 다른 프로토콜과 함께 사용할 때는 메모리를 중복 할당하지 않습니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꾸며, UART 단자는 Serial3를 사용합니다.+M·D·R은 코어가 제공하는 공유 전역 메모리이며, 이 예제는 R을 사용하지 않습니다. Modbus 예제와는 단독 실행하며, 다른 프로토콜과 함께 사용할 때는 메모리를 중복 할당하지 않아야 합니다. RS-485 단자에 연결할 때는 Serial1을 Serial2로 바꿔야 합니다. UART 단자는 Serial3를 사용합니다.
  
 <code cpp> <code cpp>
줄 845: 줄 872:
 } }
 </code> </code>
 +
 +[[https://www.ilogics.net/ko-kr/products/mpino-8a8r|MPINO-8A8R 가격 및 구매하기]]
  
 [[products:mpino_series|← MPINO Series 비교표로 돌아가기]] [[products:mpino_series|← MPINO Series 비교표로 돌아가기]]
  
products/mpino_8a8r.1789445715.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki