>Tests sur un sélecteur de pièce de monnaie

Auteur : mo_hand
Zine : Rafale #21


J’ai récupéré un monnayeur de pièce pour voir comment ça fonctionne. C’est assez 
simple en fait.





En bref, il y a un connecteur 16 broches, dont certaines renvoies une impulsion 
lorsque qu’une pièce est détectée. Par exemple si c’est 1€ c’est la broche 7, si 
2€ broche 8...

Ce sont des sorties à collecteurs ouvert il y a donc un petit montage à faire. 
Facile en lisant la datasheet.






J'ai fait le montage fait CMS...







Et branché sur une rasp. Le tout accompagné d’un petit programme en Python :

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP)

valeur = 0
print (valeur)

def my_callback(channel):
    global valeur
    print ("Piece detecte...")

    if channel == 13:
         print ("\nFront descendant détecté sur le GPIO 13")
         print ("****** Bouton ejection  *****")
         valeur = 0
         print ("Reset du compteur")
         print ("Total = ",valeur)

    elif channel == 12:
         print ("\nFront descendant détecté sur le GPIO 12")
         print ("****** 1 € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 1 € ")
         valeur = valeur + 1
         print ("Total = ",valeur)

    elif channel == 16:
         print ("\nFront descendant détecté sur le GPIO 16")
         print ("****** ? € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 0 € ")
         valeur = valeur + 0
         print ("Total = ",valeur)

    elif channel == 20:
         print ("Front descendant détecté sur le GPIO 20")
         print ("****** 0.20 € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 0.20 € ")
         valeur = valeur + 0.20
         print ("Total = ",valeur)

    elif channel == 21:
         print ("Front descendant détecté sur le GPIO 21")
         print ("****** 2 € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 2 € ")
         valeur = valeur + 2
         print ("Total = ",valeur)

    elif channel == 26:
         print ("Front descendant détecté sur le GPIO 26")
         print ("****** 0.50 € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 0.50 € ")
         valeur = valeur + 0.50
         print ("Total = ",valeur)

    elif channel == 19:
         print ("Front descendant détecté sur le GPIO 19")
         print ("****** 0.10 € *****")
         print ("channel : ",channel)
         print ("valeur = ",valeur," + 0.10 € ")
         valeur = valeur + 0.10
         print ("Total = ",valeur)


print ("TEST HORODATEUR V.1.00 - Mo_hand -")
input("Touche pour commencer...\n>")

GPIO.add_event_detect(13, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(12, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(16, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(20, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(21, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(26, GPIO.FALLING, callback=my_callback, bouncetime=300)
GPIO.add_event_detect(19, GPIO.FALLING, callback=my_callback, bouncetime=300)


try:
    input ("Appuyer sur une touche pour quitter \n\n")
    print ("Bye...")
except KeyboardInterrupt:
    GPIO.cleanup()       # clean up GPIO on CTRL+C exit
GPIO.cleanup()           # clean up GPIO on normal exit


La pièce passe par une boucle, une bobine, dont l'inductance varie en fonction 
des caractéristiques métalliques de la pièce.

Et la il y a moyen de tester TRANQUILLEMENT comment le système se comporte face 
à des pièces étrangères dans la valeur est moindre que l’euro ou bien face à 
tout type de produit se rapprochant d’une piéce...