Détecteur de Boss flatulant (7 / 9 étapes)

Etape 7: maintenant pour la partie la plus délicate.

Il n’est pas vraiment ça compliqué, si vous connaissez un peu électronique, mais l’affaire est que vous devrez utiliser le signal de déclenchement pour activer le système. Vous pouvez utiliser une minuterie d’One-Shot, ou un comparateur ou une minuterie 555, mais, pour moi, la chose la plus facile est d’utiliser un microcontrôleur 8 broches. J’ai utilisé un 12F675 Micro PIC. Avec cela, je pourrais déclencher sur le changement d’entrée d’une épingle et flash LED rouge. En outre, si 5 personnes marchent dans je ne veux pas la chose devenir fou pendant 15 secondes, alors j’ai mis dans un délai de 30 secondes pour je puisse frapper un coupe-circuit et l’éteindre. Donc, je vais juste rapide-fwd et montrer le résultat final de l’engin. Remarque, j’ai couvert la LED afin que l’ancien patron ne verrait pas un léger virage sur chaque fois qu’il a fait irruption dans mon humble 1/4 d’une cabine.

Ce pic est le produit final. Je vous laisse l’électronique comme un exercice pour l’élève.

Voici le code pour le 12F675 Micro PIC :

;*****************************************************************************
; Nom du fichier : Flatulant_Boss
; Processeur : 12F675
; Auteur : Alan Mollick (alanmollick.com)
; Mode : Interruption sur l’évolution du GP2
;
; ~ ENREGISTRE LA GPIO ~
; GP0 = entrée--n/c
; GP1 = sortie--relais
; GP2 = entrée--High = mouvement détecté
; GP3 = entrée--n/c
; GP4 = sortie--LED rouge
;*****************************************************************************
liste p = 12F675 ; directive de la liste pour définir le processeur
#include < p12f675.inc > ; définitions de variables spécifiques processeur
ERRORLEVEL-302 ; supprimer message 302 du fichier de la liste
CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

; ~ Variables ~
w_temp EQU 0 x 20 ; variable utilisée pour l’enregistrement de contexte
status_temp EQU 0 x 21 ; variable utilisée pour l’enregistrement de contexte
hiB EQU 0 x 21 ; MSByte
lowB EQU 0 x 22 ; LSByte
Temp EQU 0 x 23
rechange EQU 0 x 24
Temp1 EQU 0 x 25 ; gâchette interrupt flag
Temp2 EQU 0 x 26
retard EQU 0 x 27 ; temps de retard
broches EQU 0 x 28 ; État de la broche
spare1 EQU 0 x 29
spare2 EQU 0x2a
comte EQU 0x2b ; nombre de boucles
count1 EQU 0x2c ; comte de boucle externe
count2 EQU 0x2d ; comte de boucle externe
D1 EQU 0x2e ; compteur de retard
D2 EQU 0x2f ; compteur de retard
D3 EQU 0 x 30 ; compteur de retard
D4 EQU 0 x 31 ; compteur de retard
;**********************************************************************

RESET_VECTOR ORG 0X000 ; processeur vectoriel de réinitialisation
Goto principal ; aller au début du programme
INT_VECTOR ORG 0X004 ; Interrupt vecteur position
movwf w_temp ; enregistrer hors cours W contenu du Registre
movf statut, w ; déplacer le registre d’État dans le registre W
movwf status_temp ; économiser sur le contenu du registre d’État

; code de l’ISR
appel motion_detect ; Envoyer des signaux d’alarme

banksel INTCON
BCF INTCON, INTF ; Pavillon Claire GP2/INT

movf status_temp, w ; récupérer la copie du registre d’État
movwf statut ; restauration pre-isr statut contenu de la caisse enregistreuse
swapf w_temp, f
swapf w_temp, w ; restaurer le contenu de la caisse enregistreuse W pre-isr
retfie ; retour d’interruption
;****************************************************************

principal: ; programme principal

; Ces 4 premières instructions ne sont pas nécessaires si l’oscillateur interne n’est pas utilisé
appel 0x3FF ; récupérer la valeur de calibrage d’usine
BSF STATUS, RP0 ; Banque de fichier registre la valeur 1
movwf OSCCAL ; mise à jour de Registre avec la valeur d’usine cal
BCF STATUS, RP0 ; Banque de fichier registre la valeur 0

;***********************************
; * Initialisation *
;***********************************
; GP0 = non utilisé, GP1 = sortie relais, GP2 = input (détecteur de mouvement),
; GP3 = entrée pour cntrl/urgence coupure, GP4 = sortie à voyant,
; GP5 = non utilisé

; mettre en place la direction des broches e/s
banksel TRISIO
movlw b « 00000101 »
; XX---non implémenté
; --0---0 = output, GP5 = n/c
; ---0---0 = output, GP4 = LED
; ---x---ne pas utilisé, GP3, dédié à MCLR
; ---1--1 = entrée, GP2 mouvement détecté
; ---0-0 = output, GP1 = électrovanne
; ---1 1 = entrée GP0 = A/D
movwf TRISIO

; mettre en place le convertisseur A/D
banksel ANSEL
b movlw « 00010000 »
; x---non implémenté
; -001---001 = Focs/8 Conversion horloge
; ---0---0 = e/s numériques, GP4, clockout Fosc/4 à des fins de débogage.
; ---0--0 = e/s numériques, GP2
; ---0-0 = e/s numériques, GP1, relais/etc.
; ---0 0 = e/s numériques, 1 = GP0 analogiques
movwf ANSEL

banksel ADCON0
movlw b "00000000"
; 0---1 = résultat justifiée à droite
; -0---0 = Vdd est la référence de tension
; --xx---non implémenté
; ---00--00 = sélectionner le canal 0 (GP0)
; ---0-0 0 0/D conversion ne pas démarrée
; ---0 0 = A/D converter module est éteint
movwf ADCON0

; initialiser les broches de sortie
init
banksel GPIO
movlw b "00000000"
movwf GPIO

; initialiser les interruptions
banksel INTCON
movlw b "00000000"
; 0---0 = globales interruptions désactivées
; -0---1 = activer les interruptions périphériques
; --0---0 = désactiver TMR0 débordement interruption
; ---1---1 = enable GP2/INT interruption externe
; ---0---0 = désactiver GPIO port changement interruption
; ---0--0 ne = aucun dépassement de capacité sur TMR0
; ------0- 1=
; ---0 0 = aucun changement de port GPIO
movwf INTCON

; initialiser l’interruption sur le changement de NIP GP2
banksel IOC
movlw b « 00000100 »
; x---non implémenté
; -x---non implémenté
; --0---0 = désactiver GP5
; ---0---0 = désactiver GP4
; ---0---0 = désactiver GP3
; ---1--1 = activer GP2/INTR ***
; ---0-0 = désactiver GP1
; ---0 0 = désactiver GP0
movwf IOC

banksel PIE1
movlw b "00000000"
; 0---0 = désactiver EE écrire interruption complète
; -0---0 = désactiver convertisseur A/D interruption
; --xx---non implémenté
; ---0---0 = interruption comparateur désactivée
; ---xx-non implémenté
; ---0 1 = enable TMR1 débordement interruption
movwf PIE1

banksel PIR1
movlw b "00000000"
; 0---0 ne = aucune écriture EE complet
; -0---0 ne = aucune conversion A/D complete
; --xx---non implémenté
; ---0---0 ne = aucune interruption de comparateur
; ---xx-non implémenté
; ---0 0 ne = aucun débordement TMR1
movwf PIR1

;**********************************************************
; GP1 = sortie à relais
; GP4 = sortie à LED
;**********************************************************

banksel INTCON
BSF INTCON, INTE ; activer les interruptions de GP2
BSF INTCON, GIE

Main_Loop :
; Si GP2 = 1 et sorties de signaux d’alarme sur la GP1, GP4 via interruption

sommeil
NOP
Goto Main_Loop

;**********************************************************
; Gestionnaire d’interruption de détection mouvement
;
; GP1 = sortie à relais, GP4 = sortie à LED
;**********************************************************
motion_detect :
BSF GPIO, 1 ; dynamiser les relais pour 100 msec
appel pause_100ms
BCF GPIO, 1 ; désactiver le relais

BSF GPIO, 4 ; activer les LED de 0,5 sec.
appel pause_500ms
BCF GPIO, 4
retour

;**********************************************************
; Générateur de Code en ligne retard
; http://massmind.org/techref/piclist/CodeGen/Delay.htm
;**********************************************************

pause_100msec :
; Retard = 0,1 secondes
; Fréquence d’horloge = 4 MHz

movlw 0x1F ; 99998 cycles
movwf d1
movlw 0x4F
movwf d2
Delay_100
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto Delay_100
GoTo $+ 1; 2 cycles
retour

pause_500msec :
; Retard = 0,5 secondes
; Fréquence d’horloge = 4 MHz
movlw 0 x 03 ; 499994 cycles
movwf d1
movlw 0 x 18
movwf d2
movlw 0 x 02
movwf d3
Delay_500
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto $+ 2
decfsz d3, f
Goto Delay_500

GoTo $+ 1; 6 cycles
GoTo $+ 1
GoTo $+ 1
retour

pause_1sec
; Retard = 1 secondes
; Fréquence d’horloge = 4 MHz

movlw 0 x 08 ; 999997 cycles
movwf d1
movlw 0x2F
movwf d2
movlw 0 x 03
movwf d3
Delay_1sec
decfsz d1, f
Goto $+ 2
decfsz d2, f
Goto $+ 2
decfsz d3, f
Goto Delay_1sec
GoTo $+ 1; 3 cycles
NOP
retour

;*****************************************************************************

Articles Liés

Arduino Robots

Arduino Robots

Voici mon point de vue sur un petit robot reprogrammables utilisant un Arduino comme le cerveau.Elles ont été construites dans le cadre de mon travail comme teneur en résidence au Moulin de soie Derby au Royaume-Uni.J'ai voulu intégrer quelque chose
Sens machine : Nez détecteur de fumée

Sens machine : Nez détecteur de fumée

Si vous pensez cela, machines et ordinateurs nous ressemblent à bien des égards - ils ont des cerveaux (processeurs), yeux (caméras), oreilles (microphones), etc. Sens Machine est une série d'objets ayant pour but d'inverser la perspective sur la faç
Détecteur de métaux

Détecteur de métaux

Pourquoi ne pas découvrir les émanations des trésors de civilisations révolues, (ou peut-être oubliés biens auprès d'une partie près de la plage) avec votre propre détecteur de métal ? Dans ce Instructable, je vais vous montrer comment construire un
Détecteur de Pollution de l’air

Détecteur de Pollution de l’air

Ce dispositif est destiné à fournir à l'utilisateur un moyen rentable de déterminer la qualité de l'air. Notre capteur se concentre sur les cinq composantes de cote l'Environmental Protection Agency d'Air : l'ozone, particules, le monoxyde de carbone
Créer votre propre sac d’ordinateur portable de protection bosse.

Créer votre propre sac d’ordinateur portable de protection bosse.

Presque chacun d'entre nous permet de voyager avec nos ordinateurs portables ici et là.Et nous permet de le porter dans nos sacs traditionnels qui ne fournissent pas n'importe quoi au nom de la sécurité pour notre ordinateur portable.Cette instructab
Prévention des incendies de maison avec le sectionneur de détecteur de fumée

Prévention des incendies de maison avec le sectionneur de détecteur de fumée

Il y a près de dix ans j'ai commencé un sinistre majeur. Yep, les accidents se produisent, et parfois une petite erreur peut avoir des conséquences désastreuses. Un jeune fabricant couchait avec électricité peut être particulièrement vulnérable à ces
Détecteur de mouvement PIR 3V conduisant à un Module de relais (défectueux) 3v

Détecteur de mouvement PIR 3V conduisant à un Module de relais (défectueux) 3v

S'il vous plaît votez pour ce instructable. Rechercher pour le vote en haut à droite. Ce serait génial de gagner un t-shirt ! C'est tout que je suis à la recherche sortir de cette.Le but de cette instructable est de montrer comment utiliser un capteu
Arduino Uno - détecteur de flamme

Arduino Uno - détecteur de flamme

Dans ce Instructable, j'ai montrer comment j'ai câblé, programmé et découvre un détecteur de flamme OSEPP avec mon Arudino Uno.Ce petit appareil va venir maniable avec mes objectifs futurs en matière d'automatisation, ainsi que certains soignée autou
Lampe détecteur de mouvement mini de

Lampe détecteur de mouvement mini de

Voici les pièces :LED 5mm * 4Sortie 5V DC / DCDÉTECTEUR DE MOUVEMENT PIR HC-SR5013.7V batterie 14500100Ω, Ohm * 110kΩ, Ohm * 1Transistor 2N3904 * 1Étape 1: Imprimer la boîteÉtape 2: assembler !
FANTÔME de détecteur ou un Simple détecteur de Charge

FANTÔME de détecteur ou un Simple détecteur de Charge

c'est un détecteur de charge simple et rien de tel que détecteur de fantôme si vous le croyez mais il détecte charge négative et positive, c'est un peu comme détecteur de fantôme car il détecte aussi bien l'énergie négative. alors laissez-nous faire
Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

SalutJ'ai déjà fait quelques projets de pendules à lecture digitale avec Arduino, y compris les écrans LED et LCD, mais celui-ci est plus spécial car j'ai introduit une nouvelle fonctionnalité avec un capteur de mouvement (PIR).Voir la vidéoPrincipal
Secteur Hum détecteur / Détecteur d’électricité statique

Secteur Hum détecteur / Détecteur d’électricité statique

Bienvenue,Cette instructable est sur un circuit petit et facile qui détecte le réseau Hum c'est à dire que vous pouvez détecter où les câbles secteur sont situés à l'extérieur de la paroi. Il détecte également l'électricité statique et peut également
Kit de détecteur de Bug FM

Kit de détecteur de Bug FM

C'est pour tout le peuple d'espions/paranoïaque là-bas. Un morceau essentiel d'équipement pour n'importe quel espion est un détecteur de Bug électronique. On ne sait jamais ce que le gouvernement Agence peut être essayer d'écouter vos conversations o
À l’aide de téléphone intelligent comme alarme de détecteur de mouvement

À l’aide de téléphone intelligent comme alarme de détecteur de mouvement

Aujourd'hui, nous vivons dans un monde où les téléphones intelligents devenons de plus en plus moins chers, téléphone Android de base juste coûte environ 60 $ dans la région du monde où j'habite à. Quelle que soit la marque et le modèle du système d'