Marcia e Arresto di un Motore elettrico Si vuole realizzare un circuito elettronico gestito da un microcontrollore PIC16F876 che sia in grado di pilotare un motore elettrico AC 220 volt utilizzando i classici componenti dell autoritenuta elettromeccanica Il circuito prevede la gestione dei seguenti dispositivi - 1 pulsante di start che serve per avviare il motore - 1 pulsante di stop che serve per fermarlo - 1 pulsante a fungo di emergenza che serve per fermare il motore in caso di emergenza - 1 contatto NA che indica l eventuale scatto della protezione termica del motore - 3 spie luminose : - 1 led Rosso (motore spento) - 1 led Giallo (emergenza o guasto) - 1 led Verde ( motore in funzione) - 1 Rele (con relativo circuito di potenza) per il comando del motore 220v Circuito Autore Gabriele Viscardi - 1 -
1) Definizione degli ingressi e delle uscite : P_START P_STOP P_EMERGENZA CNT_GUASTO pulsante di start collegato all ingresso RB0 pulsante di stop collegato all ingresso RB1 pulsante di stop collegato all ingresso RB2 contatto N.A Per la segnalazione di un guasto al motore (termica) ( ingresso RB3 ) LED_VERDE Motore Fermo ( uscita RB4 ) LED_ROSSO Motore Fermo ( uscita RB5 ) LED_GIALLO Motore guasto o emergenza ( uscita RB6 ) RELE_MOTORE Rele per il comando del motore 220v ( uscita RB7 ) Autore Gabriele Viscardi - 2 -
Diagramma di flusso Generale Configurazione degli ingressi e delle uscite Main Test_Start Spegni il motore, spegni LED_VERDE, accendi LED_ROSSO P_START = 1? Accendi il motore spegni LED_ROSSO accendi LED_VERDE Test_0 C_GUASTO = 1? CALL R_GUASTO Test_1 P_EMERGENZA = 1? CALL R_EMERGENZA Test_2 P_STOP = 1? Autore Gabriele Viscardi - 3 -
Diagramma di flusso Routine Guasto R_GUASTO Spegni Motore Spegni LED_ROSSO Spegni LED_VERDE Accendi LED_GIALLO C_GUASTO = 0? Spegni LED_GIALLO RETURN Diagramma di flusso Routine di Emergenza R_EMERGENZA Spegni Motore Spegni LED_ROSSO Spegni LED_VERDE Lampeggio LED_GIALLO C_GUASTO = 0? Spegni LED_GIALLO RETURN Autore Gabriele Viscardi - 4 -
Sorgente.ASM (motore.asm) #define P_START PORTB,0 #define P_STOP PORTB,1 #define CNT_GUASTO PORTB,2 #define P_EMERGENZA PORTB,3 #define LED_VERDE PORTB,4 #define LED_ROSSO PORTB,5 #define LED_GIALLO PORTB,6 #define RELE_MOTORE PORTB,7 LED_VERDE_ON macro ; Questa macro accende il led verde LED_VERDE LED_VERDE_OFF macro LED_VERDE LED_ROSSO_ON macro LED_ROSSO LED_ROSSO_OFF macro LED_ROSSO ; Questa macro spegne il led verde ; Questa macro accende il led rosso ; Questa macro spegne il led rosso LED_GIALLO_ON macro LED_GIALLO LED_GIALLO_OFF macro LED_GIALLO ; Questa macro accende il led giallo ; Questa macro spegne il led giallo MOTORE_ON macro ; Questa macro accende il motore ( chiude i contatti del rele ) RELE_MOTORE MOTORE_OFF macro ; Questa macro spegne il motore ( apre i contatti rele ) RELE_MOTORE Autore Gabriele Viscardi - 5 -
#include <std.inc> org 0h banksel movlw movwf banksel TRISB 00001111b ; RB0 - RB3 aa in, RB4 - RB7 as outs TRISB PORTB Main MOTORE_OFF LED_VERDE_OFF LED_ROSSO_ON Test_Start btfss goto P_START Test_Start Test0 Test1 Test2 MOTORE_ON LED_VERDE_ON LED_ROSSO_OFF btfss CNT_GUASTO ; controlla se c è qualche quasto goto Test1 ; se non c è nessun guasto vai al test successivo call R_GUASTO ; se c è un guasto esegui la routine di gestione del guasto goto Main ; al rientro salta a main btfss P_EMERGENZA ; controlla se il pulsante di emergenza è stato premuto goto Test2 ; se non è premuto passa al test successivo call R_EMERGENZA ; se il pulsante è premuto esegui la routine di gestione ; dell emergenza goto Main ; al rientro salta a main btfss P_STOP ; controlla se è stato premuto il pulsante di stop goto Test0 ; se non è stato premuto ricomincia salta a test0 goto Main ; se il pulsante di stop è stato premuto salta a main ; Routine di emergenza R_EMERGENZA MOTORE_OFF LED_ROSSO_OFF LED_VERDE_OFF ; spegni motore ; spegni led rosso ; spegni led verde loop_lampeggio LED_GIALLO_ON ; lampeggio led giallo call Delay LED_GIALLO_OFF call Delay btfsc P_EMERGENZA ; controlla il pulsante di emergenza goto loop_lampeggio ; se P_EMERGENZA = 1 continua a far ; lampeggiare il led giallo retlw 0 Autore Gabriele Viscardi - 6 -
; Routine di emergenza R_GUASTO ;routine gestione EMERGENZA MOTORE_OFF LED_ROSSO_OFF LED_VERDE_OFF ; spegni motore ; spegni led rosso ; spegni led verde LED_GIALLO_ON ; lampeggio led giallo test_rguasto btfsc CNT_GUASTO ; Controlla se CNT_GUASTO = 1 goto test_rguasto ; Se CNT_GUASTO = 1 salta a test_rguasto LED_GIALLO_OFF retlw 0 ROUTINES_RITARDI_SOFTWARE ; includo all'interno del sorgente ; le Routines di delay che mi servono per il lampeggio ; del LED giallo end Autore Gabriele Viscardi - 7 -