Pour ma scie kity je souhaitais réaliser un affichage de la hauteur de lame mais cette réalisation à base d'arduino UNO est adaptable à tous type de machines à partir du moment ou vous avez la possibilité de positionner un encodeur rotatif.
25/08/2017 : Je vais mettre à jour l'ensemble de la réalisation sur le POST initial, ce sera plus simple
Réalisation en cours : projet non finalisé
Matériel (<20€):
Un afficheur LCD
https://www.banggood.com/IIC-I2C-2004-2 ... 08616.html
Un arduino uno compatible
https://www.banggood.com/Wholesale-Ardu ... 68537.html
Son alimentation
http://www.ebay.fr/itm/9V-1A-AC-DC-Plug ... 2618602494
Un codeur rotatif
https://www.banggood.com/KY-040-Rotary- ... 14010.html
2 boutons poussoirs
https://www.banggood.com/20Pcs-Tactile- ... 64789.html
Une solution mécanique pour asservir le volant/axe à asservir pour ma part j'ai rajouté en bout d'arbre une poulie sur l'axe de l'arbre de monté de la scie et sur le codeur le tout raccordé avec une poulie.
2 Poulies
https://www.banggood.com/GT2-Timing-Pul ... 06314.html
Courroie
https://www.banggood.com/3Pcs-GT2-Timin ... 09460.html
Fonctions :
Un bouton de remise à zero de la position.
La sauvegarde de la position sera automatique (périodiquement) afin de prévenir la perte de l'information en cas de coupure électrique et de minimiser l'usure de l'EEPROM de la carte.
Un paramètre dans le code permettra de changer le ratio en fonction de la mécanique en place (Faire correspondre les déplacements du codeur avec le déplacement de l'objet à mesurer.
Schéma du prototype :
Environnement pour programmer l'Arduino:
https://www.arduino.cc/download_handler ... indows.exe
La bibliothèque MSTIMER2 http://playground.arduino.cc/uploads/Main/MsTimer2.zip à ajouter dans l'IDE
(Croquis/Inclure une bibliothèque/Ajouter la bibliothèque.zip)
Code de préparation de l'EEPROM
Un grand merci à Aeth pour son aide, sa pédagogie et son code
C'est le premier fichier à téléverser sur l'arduino
Code : Tout sélectionner
#include <EEPROM.h>
struct ROM_MEMORY_MAP
{
int addr;
int writeCnt;
};
void setup ()
{
struct ROM_MEMORY_MAP encoderMemMap;
int xencoderPosCount = 0;
encoderMemMap.addr = sizeof(struct ROM_MEMORY_MAP); // Défini l'adresse de xencoderPosCount a la suite de la structure ROM_MEMORY_MAP
encoderMemMap.writeCnt = 0x0000;
EEPROM.put(0x0000, encoderMemMap);
EEPROM.put(encoderMemMap.addr, xencoderPosCount);
}
void loop ()
{
}
