Arduino mega 2560 Parker - AC10

Hello, my name is Viktor and I work as an electrician. I'm new, I'm a complete novice in this world, but one has to grow. I have a task set to regulate a three-phase motor with a Parker - AC10 controller and to regulate its start stop and revolutions with an arduino mega 2560. I have read so many things that my head is a complete mess. Please help make my project come true. Considering I'm just a beginner. My power is high electricity. 380 volts up. Yes, some will say that I should hire someone to do the project for me, they will surely be right. But the question is, how am I going to learn if someone else does it for me?
I'm sorry my english is not very good.
I hope the topic is posted in the correct section.
Thank you for your attention and patience.

parker ac10 manual
https://www.parker.com/content/dam/Parker-com/Literature/Electromechanical-Europe/User-Guides/HA502320U001.pdf

If You could provide technical data like operators manual, OEM, for the AC controller replies will come faster.

Yes of course
https://www.parker.com/content/dam/Parker-com/Literature/Electromechanical-Europe/User-Guides/HA502320U001.pdf

In section 7.4 the manual tells about modbus. 7.10 ads more info.
Can You continue reading, collecting sections regarding the RS485?
What are the commands for the action You want?....

yes I will continue to read about RS485
the commands I need for the electric motor to move from 0 to 100% smoothly, and the time to reach 100% should be a few minutes, about 5 minutes.

here in this video it is done. Arduino controls FVD over RS485 plus Encoder and SH1106 OLED Screen - YouTube
but I don't need a display I don't need a manual controller as shown in the video.

Whatever You want the Mega to do You need to find the commands needed to send and how they should be formatted.
Of course the Mega can send speed commands at a rate giving You any ramp up characteristics You want, and the same for slowing down. No problem.
How much hardware have You got except the Mega? You need an RS485 driver as I can see.
Adding an I2C display would not be difficult but for debugging serial monitor and a few Serial.print in the code would do fine.

thanks for the guidance I will purchase the necessary hardware.
and I will do some experiments, hopefully it will work.
I wish you a good evening.
It's evening for me. :grinning:

We'll stay in touch until the project is working. Good luck. Getting late for the head here as well.

My project gradually began to take shape and come to life
There is a lot of work on it

Hello, sorry if I bother you. My project is now live.
Video: https://youtu.be/2S2-g1iqypI
Program code
I guess the code is not perfect but it works perfectly for me if you have any comments please share

//loading required libraries
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
//End of module
//define of the required variables
//#define SENSOR_READ_TIMEOUT 420000 //milliseconds period for reading sensors in loop
#define ONE_WIRE_BUS 53   //display
#define BLACK   0x0000   //display
#define BLUE    0x001F    //display
#define RED     0xF800    //display
#define GREEN   0x07E0    //display
#define CYAN    0x07FF    //display
#define MAGENTA 0xF81F    //display
#define YELLOW  0xFFE0    //display
#define WHITE   0xFFFF    //display
#define TX 11 //Communication on the PWM module
#define RX 10 //Communication on the PWM module
//Relay 1 
int RelayPin = 18;
//END
//Relay 2 
int RelayAC10 = 16;
//END
//setting the heat sensors
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
      // promenlivi teplota 
          float temperatureData = 00.0;
          float teplota25 = 18.0;
          float teplota50 = 26.0;
          float teplota100 = 29.0;
          float teplotaV2 = 31.0;
          int i;
      //END
//the definiens of 16bit mode as follow:
uint8_t address[] = {40, 250, 31, 218, 4, 0, 0, 52};
uint8_t selected;
LCDWIKI_KBV mylcd(ILI9341,40,38,39,-1,41); //model,cs,cd,wr,rd,reset
SoftwareSerial swSerial(RX, TX);
//END
//----------------------------------------------------------------------
void setup() 
{
   //PWM module
  // starting communication over a serial line at a speed of 9600 baud
  Serial.begin(9600);
  // starting communication over the software serial line at 9600 baud
  swSerial.begin(9600);
  // 1kHz to output/set frequencies
  swSerial.print("F1.00");
  delay(500);
  // setting initial shift 0% to output
  swSerial.print("D000");
  delay(500);
 //END PWM  
// Relay
    pinMode(RelayPin, OUTPUT); 
    pinMode(RelayAC10, OUTPUT);
//END  
//heat sensors
  // Start serial communication for debugging purposes
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
//END  
//Display
  mylcd.Init_LCD();
  mylcd.Fill_Screen(BLACK); 
//END
}
//working cycle start
void loop() 
{  
unsigned long currentTime = millis();
//display
delay(500);
mylcd.Set_Rotation(1);
mylcd.Set_Text_Mode(0);
mylcd.Set_Text_colour(GREEN);
mylcd.Set_Text_Back_colour(BLACK);
mylcd.Set_Text_Size(3);
mylcd.Print_String("TYPOS PLZEN", 45, 10);
mylcd.Set_Text_Size(2);
mylcd.Print_Number_Float (sensors.getTempCByIndex(0), 1, 140, 70, '.', 0, ' ');
mylcd.Print_Number_Float (sensors.getTempCByIndex(1), 1, 140, 100, '.', 0, ' ');
mylcd.Print_String("Vstupni", 5, 70);
mylcd.Print_String("Vystupni", 5, 100);
mylcd.Print_String("C", 205, 70);
mylcd.Print_String("C", 205, 100);
mylcd.Print_String("Ventilator 1", 5, 130);
mylcd.Print_String("Ventilator 2", 5, 160);
mylcd.Set_Text_Size(1);
mylcd.Print_String("development Veselin Madzharov 2023", 10, 230);
//END
//
delay(1000);
//operation of heat sensors
sensors.requestTemperatures(); 
    temperatureData = sensors.getTempCByIndex(0);
    delay(500);
 

//END
//Fan stop condition 1
if (temperatureData < 15.0)  //the water temperature is below 15 degrees
{
  swSerial.print("D000");
  delay(500);
      digitalWrite(RelayAC10, HIGH);
      mylcd.Set_Text_Size(2);
      mylcd.Print_String("OFF", 180, 130);
}
//END
//25 percent
if ((temperatureData >= teplota25) && (temperatureData < teplota50))  
{
        digitalWrite(RelayAC10, LOW);  
        delay(500);
        swSerial.print("F1.00");
        swSerial.print("D025");
        delay(500);
        mylcd.Set_Text_Size(2);
        mylcd.Print_String("ON", 180, 130);
             for(i=0;i<300000;i++) {
                swSerial.print("D025");
                delay(500);
             }
 }
   // 50 percent
  if ((temperatureData >= teplota50) && (temperatureData < teplota100))
    {
        digitalWrite(RelayAC10, LOW);
        swSerial.print("D050");
        delay(500);
        mylcd.Set_Text_Size(2);
        mylcd.Print_String("ON", 180, 130);
             for(i=0;i<300000;i++) {
                swSerial.print("D050");
                delay(500);
             }
    }
//100 percent
if (temperatureData >= teplota100)
  {
      digitalWrite(RelayAC10, LOW);
      swSerial.print("D100"); 
      delay(500);
      mylcd.Set_Text_Size(2);
      mylcd.Print_String("ON", 180, 130);
            for(i=0;i<300000;i++) {
                swSerial.print("D100");
                delay(500);
             }    
  }
 //----- ventilator 1 end 

//----checking for warmth of ventilator 2
if (temperatureData > teplotaV2)
{
digitalWrite(RelayPin, LOW);
mylcd.Set_Text_Size(2);
mylcd.Print_String("ON.", 180, 160);
}
if (temperatureData < 24.0)
{
digitalWrite(RelayPin, HIGH);
  mylcd.Set_Text_Size(2);
mylcd.Print_String("OFF", 180, 160);
//ventilator 2 end
}}

Great! That's the goal. Thanks for telling! Thanks for the video.
Impressive rig. Couldn't identify You stuff.
Know that Arduino controllers are not certified "serious use".....

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.