====== CFMEGA2 ===== This is an Arduino Mega compatible CPU module. It is designed to be used for GPIO, communication, ADC, NTC (temperature), etc. * The CPU module must be located on the far left. Connect the I/O module to the right. * Up to 16 I/O modules can be connected to one CPU module. [[https://comfiletech.com/embedded-controller/cfmega2-cpu-module/|View at our online store]]. ===== MCU Details===== * MCU: ATMega2560 * Program memory: 256KB * SRAM memory: 8KB * EEPROM: 4KB =====Device Details===== * Power supply: **DC 12~24V**((The capacity of the power supply connected here must be at least twice as large as the sum of the current consumption of all connected modules.)) * CPU module current consumption: 0.5W * Communication: **CH1 : RS232C, CH2 : RS232C, CH3 : RS485 ** * I2C : 1 (Can connect QWIIC Modules) * GPIO: 8 **(7 x PWM) 5V input/output** * INT : 2 (External Interrupt Input, 5V input) * ADC: 8 **(0~20mA - 4 channels, 0~10VDC - 4 channels)** * STATUS LED : 13=LED, 22=RUN, 23=ERROR * Temperature: 1 (NTC, measurement range -40~99℃, error +/- 1 degree) =====Description of each part===== {{ :modularfaduino:cfmega2_desc.png?nolink |}} * What is QWIIC? This is a product line of Arduino I2C peripherals sold by Sparkfun, USA. [[https://www.sparkfun.com/qwiic?__hstc=60407538.4b44870ec4a577029c49e44b73bd3bee.1716249600061.1716249600062.1716249600063.1&__hssc=60407538.1.1 716249600064&__hsfp=2770298663&gad_source=1&gclid=Cj0KCQjwhb60BhClARIsABGGtw-WwnEUOz4XK6vLKRqCMOMQY0uLOygX8VLSQokoFdw3Vu2qW3XFWrQaAhjaEALw_wcB|Reference link]] ===== About GPIO ===== The GPIO port is a port that can be used for 5V input/output or PWM output. In fact, it is the same as the I/O terminal on a regular Arduino. However, a TVS diode for surge blocking is installed internally. ===== About RS485 (Channel 3) ===== The RS485 port assigned to Channel 3 is a port that uses the MAX13487 chip, which automatically switches the transmission and reception directions. Therefore, there is no need for users to handle sending/receiving directly. ===== About Power Connection ===== Please connect a voltage between DC12 and 24V into one of the DC jack and terminal blocks. Determine the power capacity according to the total number of connected I/O modules. If there are less than five, 24V 1A is suitable. If it is more than that, choose a larger capacity. =====Example program===== ** - LED blinking **: This is a program that blinks the LED. const int StatusLED = 13; void setup() { pinMode(StatusLED, OUTPUT); } void loop() { digitalWrite(StatusLED, HIGH); delay(1000); digitalWrite(StatusLED, LOW); delay(1000); } ** - ADC analog input**: This is a program that receives current/voltage input. Additional logic is required to convert the raw digital value (0~1024) to units like milliamps or voltage. void setup() { Serial.begin(9600); } void loop() { int current_raw_value = analogRead(A0); int voltage_raw_value = analogRead(A5); Serial.print(" Current Raw Value = "); Serial.print(current_raw_value ) ; Serial.print("\r\n" ); Serial.print(" Voltage Raw Value = "); Serial.print(voltage_raw_value ); Serial.print("\r\n" ); delay(200); } ** - NTC Temperature**: NTC temperature measurement program. (Measurement range -40 ~ 99℃ / error +/-1 degree) * Use after registering “CFMEGA.h” library * Read temperature value with ''ntcRead_a4()'' function * NTC sensor sold separately int16_t ntcRead_a4(void); #include "CFMEGA.h" void setup() { Serial.begin(9600); } void loop() { int NTC_a4 = ntcRead_a4(); Serial.print(" TEMP = "); Serial.print(NTC_a4) ; Serial.print("\r\n" ); delay(1000); } ** - RS232 communication**: Eco communication program for channel 1 (Tx1, Rx1). void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial1.available() > 0) { char rx_Byte = Serial1.read(); Serial.print("I received: "); Serial.print(rx_Byte); Serial1.print(rx_Byte); } } ===== Power Supply ===== If the total number of connected modules is 8 or less, a 24V, 1A SMPS is suitable. If the total number is 8 or more, use a 24V, 2A SMPS. [[modularfaduino:index|Modular FADUINO]]