Go Down

Topic: Project 001 Solari flip clock (Read 1 time) previous topic - next topic

claudegu

Here is my first project:


I own this Solari flip clock but it is a secondary clock, not a stand alone. So it needs a signal to drive the electric motor.
This motor drive the minute dot, all the remaining flip number and text is driven by gear and mechanic.





Each 2 minutes, a position sensor is on, so I drive the motor for the first minute (about 400ms) and wait for the sensor information for the other minute.

I have an Uno and a shield with a relay to drive the 220V motor.




Code: [Select]
/*
Horloge "suiveuse" à palettes type Solari, un fin de course passe
à 1 toutes les 2 secondes, son information sert à recaler
le pilotage du moteur.

Pilotage d'un relais 5V pour le moteur, avec transistor NPN 2N2222
voie 2 puis résistance de 10k sur Base,
bobine entre + et Collecteur
Emetteur au 0V
diode 1N4001 anti retour en parallèle sur bobine relais
Moteur de l'horloge 220V sur le contact NO du relais
*/

int relais = 2;// pilotage du moteur de l'horloge
int fdc = 3; //fin de course toutes les 2 minutes
int long valeur;
unsigned long tempsactuel;
int long decalage;
int long correction = 0;

void setup(){
  pinMode(relais, OUTPUT);// voie 2 en sortie
  pinMode(fdc, INPUT);// voie 3 en entrée
// test  Serial.begin(9600);
    }

void loop() {
  // première minute
   tempsactuel=millis();
    digitalWrite(relais, HIGH);  // relais piloté
  delay(400); // temps nécessaire pour faire un demi tour
  digitalWrite(relais, LOW); // relais au repos
  delay(59600 + correction); // attente pour faire une minute
// test     Serial.println("une minute");
 
  // deuxième minute avec utilisation du fin de course
 
   digitalWrite(relais, HIGH);  // relais piloté
   valeur=0;  // attente du fin de course
     while(valeur==0){
     valeur = digitalRead (fdc);
     Serial.println(valeur);
     }
   digitalWrite(relais, LOW); // relais au repos
   
   // recalage sur l'horologe "millis"
   decalage = millis()-tempsactuel;
 
   if (decalage<120000){  //si il ne s'est pas écoulé 2 minutes
   delay(120000 - decalage); // attente pour complèter
   correction = 0; // pas de correction sur la première minute
   }
   else{  // si il s'est écoulé plus de 2 minutes
   correction = 120000 -decalage; //correction nécessaire sur la première minute
   if (correction <-59600 ){ // ne peut dépasser cette valeur
     correction =-59600; // pour éviter un "delay" négatif
   }
   }
// test   Serial.println(millis() % 60000);
// test   Serial.println(decalage);

  // test  Serial.println(correction);
 
}
 
 


As it is only for demo purpose, I don't care about the "49 days limit" for the millis.

Stone age was not finished due to a lack of stones

barnoin

j have a 5 cifra slave, you sell the implusion minutes?

barnoin

Traduction
j have a clock solari model udine 5 cifra slave, you sell the implusion to run it without the master clock?

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy