Răsfoiți Sursa

ajout des scripts d'étalonnages

Jackbot 4 ani în urmă
comite
a723d1f433
2 a modificat fișierele cu 310 adăugiri și 0 ștergeri
  1. 136 0
      etalonnage/focale.sh
  2. 174 0
      etalonnage/largeur_laser.sh

+ 136 - 0
etalonnage/focale.sh

@@ -0,0 +1,136 @@
+#!/bin/bash
+
+#fonction appelée en cas de paramètres non valide ou de l'option -h
+usage()
+{
+	# "$(basename "${0}") pour gérer les espaces
+	echo "$(basename "${0}") description"
+	echo ''
+	echo "Ce script permet de générer un fichier gcode"
+	echo " afin de trouver la bonne distance focale du laser"
+	echo "ce script n'est utile que sur les imprimantes 3D puisqu'on joue sur l'axe Z"
+	echo ""
+	echo "Le fichier gcode en sortie utilisera des coordonées relatives."
+	echo ""
+	echo "La procédure est la suivante :"
+	echo "-connaitre grossièrement la distance focale"
+	echo "-placer la tête de l'imprimante 3D en buté sur l'objet à graver"
+	echo "-exécuter le fichier gcode"
+	echo ""
+	echo "Détail des options"
+	echo -e "-m\thauteur relative minimale en mm"
+	echo -e "-M\thauteur relative maximale en mm"
+	echo -e "-p\tpas entre deux hauteurs en mm"
+}
+
+readonly VERSION='1.0'
+
+#affiche la version du script
+version()
+{
+	echo "$(basename "${0}") : ${VERSION}"
+	echo ''
+}
+
+#boucle pour la gestion des options
+#s: signifie qu'un paramètre est attendu
+#hV signifie que ces options existent mais ne prennent pas de paramètre
+while getopts "m:M:p:hV" OPT
+do
+	case "$OPT" in
+		h)
+			usage
+			exit 0
+			;;
+		V)
+			version
+			exit 0
+			;;
+
+		m)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly H_MIN=${OPTARG}
+			;;
+		M)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly H_MAX=${OPTARG}
+			;;
+		p)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly PAS=${OPTARG}
+			;;
+
+		*)
+			#ce point est atteint lorsqu'une option inexistante est demandée
+			echo "parametres non valide"
+			usage
+			exit 1
+			;;
+	esac
+done
+
+if [ -z "${H_MIN}" ]
+then
+	echo "la hauteur minimale est inconnue"
+	usage
+	exit 10
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $H_MIN =~ $re ]]
+	then
+		echo "l'argument de hauteur minimale n'est pas un nombre"
+		usage
+		exit 15
+	fi
+fi
+
+if [ -z "${H_MAX}" ]
+then
+	echo "la hauteur maximale est inconnue"
+	usage
+	exit 20
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $H_MAX =~ $re ]]
+	then
+		echo "l'argument de hauteur maximale n'est pas un nombre"
+		usage
+		exit 25
+	fi
+fi
+
+if [ -z "${PAS}" ]
+then
+	echo "le pas n'a pas été précisé, la valeur par défaut est 1mm"
+	PAS=1
+fi
+
+
+
+#echo "valeur=\"0\";text(valeur, size=50, halign=\"right\", valign =\"center\");" > temp.scad
+echo "\$fn = 30;valeur=\"0\";translate([0, 1, 0]){text(valeur, size=3);}" > temp.scad
+
+echo -e "G91\nG21\nG0 Z $H_MIN" > sortie.gcode
+echo -e "G1 F2000\n" >> sortie.gcode
+
+for i in `seq $H_MIN $PAS $H_MAX`
+do
+	openscad -o temp.dxf -D 'valeur="'$i'"' temp.scad
+	dxf2gcode temp.dxf -q -e "${i}.gcode"
+	
+	#numérotation de la ligne
+	cat $i.gcode >> sortie.gcode
+	#trçage d'une ligne
+	echo -e "\nM400\nM106 P1 S255\nG1 X 20" >> sortie.gcode
+	#retour au point de départ
+	echo -e "M400\nM106 P1 S0\nG1 X -20" >> sortie.gcode
+	#déplacement pour la nouvelle hauteur
+	echo -e ";changement de hauteur\nG1 X 0 Y 5 Z $PAS\n" >> sortie.gcode
+
+	rm $i.gcode
+done
+
+rm temp.scad
+rm temp.dxf
+
+exit 0

+ 174 - 0
etalonnage/largeur_laser.sh

@@ -0,0 +1,174 @@
+#!/bin/bash
+
+#fonction appelée en cas de paramètres non valide ou de l'option -h
+usage()
+{
+	# "$(basename "${0}") pour gérer les espaces
+	echo "$(basename "${0}") description"
+	echo ''
+	echo "Ce script permet de générer un fichier gcode"
+	echo "afin de trouver la taille du point focal du laser"
+	echo "un ensemble de trait seront tracés de plus en plus espacés"
+	echo ""
+	echo "Le fichier gcode en sortie utilisera des coordonées relatives."
+	echo ""
+	echo "La procédure est la suivante :"
+	echo "-connaitre la distance focale"
+	echo "-placer la tête de l'imprimante 3D en buté sur l'objet à graver"
+	echo "-exécuter le fichier gcode"
+	echo ""
+	echo "Détail des options"
+	echo -e "-l\tlargeur minimale en mm"
+	echo -e "-L\tlargeur maximale en mm"
+	echo -e "-p\tpas entre deux hauteurs en mm"
+	echo -e "-f\tla distance focale du laser en mm"
+}
+
+readonly VERSION='1.0'
+
+#affiche la version du script
+version()
+{
+	echo "$(basename "${0}") : ${VERSION}"
+	echo ''
+}
+
+#boucle pour la gestion des options
+#s: signifie qu'un paramètre est attendu
+#hV signifie que ces options existent mais ne prennent pas de paramètre
+while getopts "l:L:p:f:hV" OPT
+do
+	case "$OPT" in
+		h)
+			usage
+			exit 0
+			;;
+		V)
+			version
+			exit 0
+			;;
+		l)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly L_MIN=${OPTARG}
+			;;
+		L)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly L_MAX=${OPTARG}
+			;;
+		p)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly PAS=${OPTARG}
+			;;
+		f)
+			#afin de garantir le contenu de la variable il est préférable de la déclarer comme readonly
+			readonly FOCALE=${OPTARG}
+			;;
+		*)
+			#ce point est atteint lorsqu'une option inexistante est demandée
+			echo "parametres non valide"
+			usage
+			exit 1
+			;;
+	esac
+done
+
+if [ -z "${L_MIN}" ]
+then
+	echo "la largeur minimale est inconnue"
+	usage
+	exit 10
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $L_MIN =~ $re ]]
+	then
+		echo "l'argument de largeur minimale n'est pas un nombre"
+		usage
+		exit 15
+	fi
+fi
+
+if [ -z "${L_MAX}" ]
+then
+	echo "la largeur maximale est inconnue"
+	usage
+	exit 20
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $L_MAX =~ $re ]]
+	then
+		echo "l'argument de largeur maximale n'est pas un nombre"
+		usage
+		exit 25
+	fi
+fi
+
+if [ -z "${PAS}" ]
+then
+	echo "le pas est inconnue sa valeur sera fixée à 0.1mm"
+	PAS=0.1
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $PAS =~ $re ]]
+	then
+		echo "l'argument de largeur maximale n'est pas un nombre"
+		usage
+		exit 35
+	fi
+fi
+
+if [ -z "${FOCALE}" ]
+then
+	echo "la distance focale est inconnue sa valeur sera fixée à 5mm"
+	FOCALE=5
+else
+	re='^[0-9]+([.][0-9]+)?$'
+	if ! [[ $FOCALE =~ $re ]]
+	then
+		echo "l'argument de largeur maximale n'est pas un nombre"
+		usage
+		exit 45
+	fi
+fi
+
+#echo "valeur=\"0\";text(valeur, size=50, halign=\"right\", valign =\"center\");" > temp.scad
+echo "\$fn = 30;valeur=\"0\";translate([0, 1, 0]){text(valeur, size=3);}" > temp.scad
+
+echo -e "G91" > sortie.gcode
+echo -e "G0 Z $FOCALE" >> sortie.gcode
+echo -e "G1 F2000\n" >> sortie.gcode
+
+#Pour que seq renvoie des nombre avec '.' et non ',' il faut :
+LANG=en_US
+
+for i in `seq $L_MIN $PAS $L_MAX`
+do
+	openscad -o temp.dxf -D 'valeur="'$i'"' temp.scad
+	dxf2gcode temp.dxf -q -e "${i}.gcode"
+
+	#numérotation de la ligne
+	cat $i.gcode >> sortie.gcode
+
+	#On trace un paquet de lignes sur une hauteur de 3mm
+	#La première doit s'éloigner du nombre écrit juste avant
+	echo -e "\nM400\nM106 P1 S255\nG1 X 20" >> sortie.gcode
+	DELTA=$(echo "2*$i" | bc)
+	for j in `seq $i $DELTA 3`
+	do
+		#Une fois la première ligne tracée on fait des aller-retour sur 10mm
+		echo -e ";changement de ligne\nG1 X 0 Y $i" >> sortie.gcode
+		echo -e "M400\nG1 X -10" >> sortie.gcode
+		echo -e ";changement de ligne\nG1 X 0 Y $i" >> sortie.gcode
+		echo -e "M400\nG1 X 10" >> sortie.gcode
+	done
+	#pour la dernière étape on se déplace une dernière fois de $PAS sur l'axe Y et on revient au début sur X
+	echo -e ";changement de ligne\nG1 X 0 Y $i\n" >> sortie.gcode
+	echo -e "M400\nM106 P1 S0\nG1 X -20" >> sortie.gcode
+	echo -e "M400\nM106 P1 S0\n" >> sortie.gcode
+
+	rm $i.gcode
+done
+
+rm temp.scad
+rm temp.dxf
+
+exit 0