#001 Amesis clean solenoid

.STL (fichier 3D ouvrable quasiment sur n'importe quel logiciel 3D

. Gcode (fichier pour imprimer directement sur une Créality CR10)

.skp (fichier 3D Logiciel Sketchup)


Fichier Fritzing

Fichier Fritzing

//22/06/2019 V2.0

//14/01/2020 V2.1

//Amesis Project

//https://www.youtube.com/channel/UCCexVZN3UYSep2lsj2jVjdg?view_as=subscriber

//https://create.arduino.cc/projecthub/AmesisProject/001-amesis-clean-solenoid-d1f4ee


//Amesis_clean_solenoid_V2.1 (By Amesis Project https://github.com/AmesisProject & Dawnaur https://github.com/Dawnaur)

//https://github.com/AmesisProject/-001-Amesis-clean-solenoid


//*************************

// Constantes

//*************************

#define K_TIME_COEF 25 // Coefficient de multiplication du temps d'activation des relais

#define PIN_LED 13 // Led Temoin elle indique que le relai 1 est a ON et que le relais2 et a OFF

#define PIN_RELAIS_1 4 // Relais Arduino 5v ouveture normal (quand la led est allume le relais est a ON)

#define PIN_RELAIS_2 7 // Relais Arduino 5v ouverture inverse (quand la led est eteinte le relais est a ON)

#define PIN_POTAR A2 // Potentiometre pour fair varier le TI entre 0 et 10 seconde par palier d'une seconde


//*************************

//Declaration des variables globales

//*************************

float PotarValeur; // Valeur brute de lecture [0;1023]

unsigned long g_time_cycle_start; // Temps lors du demarrage du cycle

unsigned long g_delay; // Temps d'ouverture et de fermeture de l'injecteur

unsigned int g_cycle; // identification du cycle [0;1]


//*****************

//Setup

//*****************


void setup() {


Serial.begin(9600); // Ouverture port Serie

pinMode(PIN_LED, OUTPUT); // Led en sortie

pinMode(PIN_RELAIS_1, OUTPUT); // relais 1 en sortie

pinMode(PIN_RELAIS_2, OUTPUT); // relais 2 en sortie

pinMode(PIN_POTAR, INPUT); // pontentiometre en entre


g_cycle = LOW;

g_time_cycle_start = millis();


//Temoin d'initialisation de la fin du setup

digitalWrite(PIN_LED, HIGH);

delay(100);

digitalWrite(PIN_LED, LOW);

delay(200);

digitalWrite(PIN_LED, HIGH);

delay(100);

digitalWrite(PIN_LED, LOW);

delay(200);

digitalWrite(PIN_LED, HIGH);

delay(100);

digitalWrite(PIN_LED, LOW);

delay(200);

digitalWrite(PIN_LED, HIGH);

delay(1000);

digitalWrite(PIN_LED, LOW);

delay(1000);

}


//****************

//Loop

//*****************

void loop() {

long l_act_time = millis();


PotarValeur = analogRead(PIN_POTAR); // lecture du potentiometre valeur de 0 = 1023

g_delay = map(PotarValeur * PotarValeur,0,1056529,20,2000); // convertion quadratique ramenant entre 20ms et 2s de temporisation (de 50Hz a 0.5Hz)


if (g_time_cycle_start + g_delay < l_act_time)

{

g_time_cycle_start = l_act_time;

g_cycle = !g_cycle; // Inversion de la valeur des relais

Serial.println(g_delay); // envoie la valeur de la temporisation sur le port serie

digitalWrite(PIN_LED, g_cycle); // Allume la led

digitalWrite(PIN_RELAIS_1, g_cycle); // Relais 1 en action

digitalWrite(PIN_RELAIS_2, !g_cycle); // relais 2 en repos

}

}