Bonjour,
pour un projet j'utilise un Arduino Mega pour gérer en temps réel par USB 28 Mofset IRF540 V4.0comme ceux-ci (7 platines de 4): https://fr.aliexpress.com/item/32326885309.html
Tout cela pour gérer 12 moteurs vibrants (sur les sorties PWM) et 16 solénoïdes.
J'alimente l'Arduino par une alimentation externe 9V 1A. Les moteurs vibrants sont alimentés par une alimentations de 6V 20A et les solénoïdes par une alimentation 12V 25A.
Parfois je perds la liaison avec l'ARDUINO si j'actionne tous les Mofset au même temps. J'imagine que c'est un problème d'alimentation ? Je demande trop de courant à l'Arduino ?
J'ai rajouté une alimentation de 5V en parallèle reliées aux Mofsets et au Ground, mais de temps en temps je perds la liaison. Dois-je relier aussi le pin 5V à l'alimentation externe 5V ?
Pour info voici mon code très simple:
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(23, OUTPUT);
pinMode(25, OUTPUT);
pinMode(27, OUTPUT);
pinMode(29, OUTPUT);
pinMode(31, OUTPUT);
pinMode(33, OUTPUT);
pinMode(35, OUTPUT);
pinMode(37, OUTPUT);
pinMode(39, OUTPUT);
pinMode(41, OUTPUT);
pinMode(43, OUTPUT);
pinMode(45, OUTPUT);
pinMode(47, OUTPUT);
pinMode(49, OUTPUT);
pinMode(51, OUTPUT);
pinMode(53, OUTPUT);
Serial.begin(57600);
}
void loop(){
while (Serial.available()) {
int Vib1 = Serial.parseInt();
int Vib2 = Serial.parseInt();
int Vib3 = Serial.parseInt();
int Vib4 = Serial.parseInt();
int Vib5 = Serial.parseInt();
int Vib6 = Serial.parseInt();
int Vib7 = Serial.parseInt();
int Vib8 = Serial.parseInt();
int Vib9 = Serial.parseInt();
int Vib10 = Serial.parseInt();
int Vib11= Serial.parseInt();
int Vib12= Serial.parseInt();
int relay1 = Serial.parseInt();
int relay2 = Serial.parseInt();
int relay3 = Serial.parseInt();
int relay4 = Serial.parseInt();
int relay5 = Serial.parseInt();
int relay6 = Serial.parseInt();
int relay7 = Serial.parseInt();
int relay8 = Serial.parseInt();
int relay9 = Serial.parseInt();
int relay10 = Serial.parseInt();
int relay11 = Serial.parseInt();
int relay12 = Serial.parseInt();
int relay13 = Serial.parseInt();
int relay14 = Serial.parseInt();
int relay15 = Serial.parseInt();
int relay16 = Serial.parseInt();
if (Serial.read()) {
// PWM
analogWrite(2, Vib1);
analogWrite(3, Vib2);
analogWrite(4, Vib3);
analogWrite(5, Vib4);
analogWrite(6, Vib5);
analogWrite(7, Vib6);
analogWrite(8, Vib7);
analogWrite(9, Vib8);
analogWrite(10, Vib9);
analogWrite(11, Vib10);
analogWrite(12, Vib11);
analogWrite(13, Vib12);
// Relay
digitalWrite(23, relay1);
digitalWrite(25, relay2);
digitalWrite(27, relay3);
digitalWrite(29, relay4);
digitalWrite(31, relay5);
digitalWrite(33, relay6);
digitalWrite(35, relay7);
digitalWrite(37, relay8);
digitalWrite(39, relay9);
digitalWrite(41, relay10);
digitalWrite(43, relay11);
digitalWrite(45, relay12);
digitalWrite(47, relay13);
digitalWrite(49, relay14);
digitalWrite(51, relay15);
digitalWrite(53, relay16);
}
}
}
Merci d'avance de votre précieux aide !
Vinkia