PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET



Documenti analoghi
CIRCUITO DI TEST E SOFTWARE UTILIZZATI

PROCESSOR 16F84A. ;configurazione FUSES: oscillatore XT, WDT disabilitato PWRT abilitato, CP disabilitato config 0x3FF1

Lezione 8. Figura 1. Configurazione del registro INTCON

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti

Esercizi di verifica del debito formativo:

PIC Set istruzioni. Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS

PROGRAMMAZIONE ASSEMBLER

Microcontrollori. L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876.

MICROCONTROLLORE PIC16F84A

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware

ESERCIZI SUI SISTEMI DI NUMERAZIONE

APPUNTI SUL PIC16F84

List p=16f84 ;Tipo di processore include "P16F84.INC" ;Definizioni di registri interni. goto Inizio

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

Programmazione del microcontrollore PIC 16F84

GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876

1 Istruzioni Assembler

NOZIONI BASE DI ASSEMBLER PER PIC16C84

Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC.

Pilotare un motore passo-passo, in questo caso il modello della Sanyo le cui caratteristiche principali sono quelle di figura1.

LO HAI MAI REALIZZATO CON UN PIC? UN APPROCCIO AI TIMER DEI PICMICRO 1

SISTEMA DI SVILUPPO MC-16

Il µcontrollore PIC 16F84

Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM

CORSO di AUTOMAZIONE INDUSTRIALE

G&G ESEMPIO1 PROGRAMMAZIONE Progetto FACILEPLC Pag. 1 di 6

I PIC Partendo da Zero By link_89

ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84

Controllo di un asse

Lezione 6 L'hardware dedicato.

Introduzione ai microcontrollori PIC

PIC Esempi - LED. Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED.

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC

; Registro abilitazione interrupt TR_A EQU 85H ; Tris A TR_B EQU 86H ; Tris B

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino

Università degli studi di Roma La Sapienza. Laboratorio di Automatica

DISPLAY LCD HD44780U(LCD-II)

Lezione 2. Figura 1. Schema del circuito necessario per le prove

Assembly PIC16F8X. Dispensa di elettronica sull uso del microcontrollore PIC 16F8X

DEDALO. Motori passo-passo Ruota motrice n.1 Ruota motrice n.2. Ruota di snodo. avanti

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino

Marcia e Arresto di un Motore elettrico

MPLAB - IDE. Introduzione. 1. Benvenuti in MPLAB. Introduzione

Architettura del PIC 18F452

Progetto di Microcontrollori. Cronotermostato per Caldaia

mendiante un ciclo e finché il segnale rimane alto, si valuta il tempo T3 usando il timer del microcontrollore e una variabile di conteggio.

DECODER DTMF CON UN SOLO PIC

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC

Lancenigo di Villorba TREVISO CORSO SERALE AREA DI PROGETTO ANNO SCOLASTICO 2006/2007

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche:

CONTROLLO NUMERICO DI UN TORNIO DI TIPO DIDATTICO

Applicazioni dei microcontrollori PIC

PERIFERICHE INTELLIGENTI colleghiamo un display LCD

Gestione Degli INTERRUPT

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON ADCS1, ADCS CH2, CH1 E CH GO/DONE... 6 ADON...

release 3 Il microcontrollore PIC16F877A di Ippolito Perlasca Presentazione

ENCODER DTMF CON PIC 16F1705

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microprocessori - Microcontrollori. namoroso@mrscuole.net

ITIS MAX PLANCK ( Lancenigo di Villorba )

CORSO SERALE (Classe V/STE)

APPUNTI DI ASM PER PIC

Manuale Software e Hardware Control lights music 1.0. Sommario. Introduzione

Architettura dei Microcontrollori Microchip PIC18F

I microcontrollori PIC parte III

FRERVIEW2: PROGRAMMA PER LA SUPERVISIONE DELLE MISURE ELETTRICHE Vers. 3.0

ESERCIZI - SERIE N.1

GENERALITÀ. Unità: Canali di comunicazione:

Davide Gennaretti, Matteo Nicolini

I MICROCONTROLLORI PIC (Microchip) PARTE I

Controllo di un Motore Elettrico in Corrente Continua

Introduzione ai PICmicro

Corso introduttivo sui microcontrollori A. S Programmare i PIC in C. Timers Interrupts Prerequisiti: Lezione7 Lezione8.

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

IT Manuale istruzioni

overview PROGETTAZIONE ELETTRONICA CON MICROCONTROLLORI E PROGRAMMAZIONE IN C POLITECNICO DI MILANO PROGRAMMAZIONE C PER MICROCONTROLLORI

COMUNICAZIONE SERIALE

Centralina Meteorologica

Procedure per l upgrade del firmware dell Agility

Corso introduttivo sui microcontrollori A. S La programmazione dei PIC. Assembler: esempi - applicazioni.

Manuale IT_VNA by IZ1PMX

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Guida Rapida all Installazione Gamma Aqua PC Versione AquaNav

CNC a 3 ASSI. Ceccato Roberto - Nassuato Denis. Specializzazione: Elettronica e Telecomunicazioni. ISTITUTO TECNICO INDUSTRIALE STATALE Primo Levi

LaurTec. RS232-CAN Protocol Converter. Versione N 1.0. Autore : Mauro Laurenti. info.laurtec@gmail.com ID: PJ2003-IT

Transcript:

Canzian Sara Liberali Marco 5AT A.S.2007/2008 PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET Questo sistema permette di posizionare una luce laser in una determinata posizione data dalle coordinate che vengono inserite da un PC e trasmesse ad un altro che le invierà poi in seriale al microcontrollore PIC16F84A. Materiali utilizzati: 2 computer Alimentatore da +5V dc Alimentatore da +12V dc Cavo seriale 1:1 prolunga Sistema (scheda e motori passo passo unipolari) Dividiamo ora la spiegazione in due parti: parte hardware e parte software PARTE HARDWARE SCHEMA ELETTRICO In allegato alla pag. Calcoli di progetto Calcolo della resistenza di ogni fase del motore Indicando con R la resistenza generica che nello schema elettrico rappresenta le resistenze da R1 a R8 e con Q i transistor da Q1 a Q8, i calcoli sono i seguenti:

Usiamo un BC337-25 che ha un h FEmin di 160. Avendo una Vpp di 12V e una Rf (resistenza di fase di 70Ω) e sapendo che la Vcesat è di 0,2V possiamo calcolare la Icsat per poi trovare la Ibsat e quindi il valore della resistenza R. VPP Rf PIC R 2 1 Q 3 A livello basso il bjt è interdetto e quindi funziona come un interruttore aperto mentre a livello alto il bjt è in grado di pilotare la fase del motore. Dal grafico ricaviamo che con una V OHmin di 3.7V e con una I OH =Ibsat di 3.17mA Avremo Calcolo della resistenza relè I calcoli sono analoghi a quelli fatti per la resistenza delle fasi solo che in questo caso la Rf varrà 120Ω. 5V Rf PIC R 2 1 Q 3

PARTE SOFTWARE: SOFTWARE IN ASSEMBLY PER PIC 16F84: ;************************************************** ; Progetto Esami 2007/2008 ; Liberali Marco / Canzian Sara ;************************************************** PROCESSOR 16F84A RADIX DEC INCLUDE "P16F84A.INC" ERRORLEVEL -302 CONFIG 3FF1H N equ 23 RTS equ 0 CTS equ 1 TX equ 3 RX equ 4 LAS equ 2 swdir1 equ 0 swdir2 equ 4 swmot equ 3 ;0 se voglio mot1 ;1 se voglio mot2 btimer1 equ 0 ;Bit 0 di stimers - bit di On-Off di TMR1 btimer2 equ 1 ;Bit 1 di stimers - bit di On-Off di TMR2 n equ 9 ;Numero per inizializzare TMR0 in 'rtc' end1stp equ 1 end2stp equ 5 OP32exit equ 7 OP31exit equ 3 ; FILE REGISTER ORG 0CH ;Variabili di rtc w_stack res 1 s_stack res 1 stimers res 1 TMR1_L res 1 TMR1_H res 1 TMR2 res 1 TMR1 res 1 ;Variabili per lo Step Motor StepS res 1 ;Var. dello stato di rotazione del motore StepT res 1 ;Tempo in msec per efettuare mezzo passo Step1N res 1 ;Numero di mezzi passi del motore1 Step2N res 1 ;Numero di mezzi passi del motore2 Fptr1 res 1 ;Var. locale della fase attiva del motore Fptr2 res 1 ;Var. locale della fase attiva del motore ;Registri usati dalle subroutines per RS232 TmpReg res 1 ;Registro temporaneo ShiftReg res 1 ;Shift register BitCount res 1 ;Bit counter Count0 res 1 Tmp res 1 PBloc res 1 appoggio res 1 PxF res 1 PyF res 1 PxA res 1 PyA res 1 ; RESET VECTOR ORG 0x00 goto VectRes ORG 0x04 goto rtc ;ISR: Timeout TMR0

; Macro DELAY DELAY MACRO VALUE LOCAL Loop movlw VALUE movwf Tmp Loop decfsz Tmp, F goto Loop ENDM ; Subroutines per invio RS232 TxChar movwf ShiftReg movlw 8 movwf BitCount bcf PORTA, TX TxLoop btfss ShiftReg, 0 goto TxLo bsf PORTA, TX goto ctx TxLo bcf PORTA, TX ctx goto ctx rrf ShiftReg, 1 decfsz BitCount, 1 goto TxLoop bsf PORTA, TX DELAY 2 bsf PORTA, TX DELAY 2 ; Subroutines per ricezione RS232 RxChar clrf ShiftReg movlw 8 movwf BitCount DELAY 34 wdb btfss PORTA, RX goto RxBitL RxBitH bsf STATUS, C goto RxShift RxBitL bcf STATUS, C goto RxShift RxShift rrf ShiftReg, 1 decfsz BitCount, 1 goto wdb

movf ShiftReg,W ;******************** ISR Routine *************************** ;Questa routine implementa un RTC da 1msec per la gestione di ;due timers, TMR1 a 2 byte TMR1H e TMR1_L e TMR2. ;Usa: STimers: Byte contenente i bit di stato dei timer ; btimer: Bit di stato del timer: 1 = timer off ; 0 = timer on ; Per avviare il timer: ; movlw 0x30 ;load 12,5 sec: ; movwf TMR1_H ;12500 msec = 0x30D4 ; movlw 0xD4 ; ; movwf TMR1_L ; ; bcf stimers,btimer1 ; ; Attesa: ;Loop btfss stimers,btimer1 ; ; goto Loop rtc movwf w_stack ;Salva contesto... swapf STATUS, W movwf s_stack bcf INTCON,T0IF ;reset Interrupt timer0 flag movlw n ;n -> W e movwf TMR0 ;ricarica timer rt_tmr2 btfsc stimers,btimer2 ;Timer2 Spento? goto rt_back ;Si, esci decfsz TMR2,F ;Decrementa TMR_2, è zero? goto rt_back ;No, esci bsf stimers,btimer2 ;Si, Set btimer2 rt_back swapf s_stack,w ;Ripristina contesto movwf STATUS swapf w_stack,f swapf w_stack,w retfie ;Half Step Per il Motore1 HStp1 decf Step1N, f btfss StepS,swDir1 ;Test bit di direzione. decf Fptr1,W ;Queste istr. impiegano sempre btfsc StepS,swDir1 ;6 tempi istruzione in ogni caso incf Fptr1,W andlw 0x07 ;Conteggio in modulo 8 movwf Fptr1 ;(tieni solo bit LSB) call StpCd1 ; per puntare alla Transcode movwf PBloc movf PORTB,W andlw 0xF0 iorwf PBloc,W movwf PORTB StpCd1 addwf PCL,F retlw b'0001' retlw b'0011' retlw b'0010' retlw b'0110' retlw b'0100' retlw b'1100' retlw b'1000' retlw b'1001' ;Half Step Per il Motore2 HStp2 decf Step2N, f btfss StepS,swDir2 ;Test bit di direzione. decf Fptr2,W ;Queste istr. impiegano sempre btfsc StepS,swDir2 ;6 tempi istruzione in ogni caso

incf Fptr2,W andlw 0x07 ;Conteggio in modulo 8 movwf Fptr2 ;(tieni solo bit LSB) call StpCd2 ; per puntare alla Transcode movwf PBloc movf PORTB,W andlw 0x0F iorwf PBloc,W movwf PORTB StpCd2 addwf PCL,F retlw b'00010000' retlw b'00110000' retlw b'00100000' retlw b'01100000' retlw b'01000000' retlw b'11000000' retlw b'10000000' retlw b'10010000' ;MORE STEP MoreStp bsf INTCON, GIE ;attiva interroupt movf Step1N, f call HStp1 movf Step2N, f call HStp2 movf StepT, 0 movwf TMR2 bcf stimers, btimer2 LpMStp btfss stimers, btimer2 goto LpMStp movf Step2N, f goto MoreStp movf Step1N, f goto MoreStp bcf INTCON, GIE ;disattiva interroupt ;*** MAIN PROGRAM*** VectRes bsf STATUS,RP0 ;Attiva Banco 1 clrf TRISA ;Imposta PORTA bsf TRISA,RX movlw b'00000000' ;Imposta PORTB movwf TRISB movlw b'00000001' ;Pull-up ON, Prescaler 4 movwf OPTION_REG ;assegnato a TMR0 come Timer bcf STATUS,RP0 ;Attiva Banco 0 bsf INTCON,T0IE ;Abilita IRQ da TMR0 bcf INTCON,GIE ;Abilita IRQ clrf PORTA clrf PORTB bsf PORTA, TX ;Tx in stato di riposo bsf PORTA, RX ;Rx in stato di riposo bsf stimers,btimer1 ;Imposta timer come già scaduto

bsf stimers,btimer2 ;Imposta timer come già scaduto bsf PORTB, 7 bsf PORTB, 0 clrf PxA clrf PyA bsf StepS, swdir1 bsf StepS, swdir2 start btfsc PORTA, RX ;bit di start ricevuto? ;si, attiva ricezione movwf appoggio ;0XFF-appoggio=0? (quindi appoggio=0xff?) M1Lp btfsc PORTA, RX ;bit di start ricevuto? goto M1Lp ;si, attiva ricezione movwf appoggio movlw 0X07 ;0X00-appoggio=0? (quindi appoggio=0x00?) goto OP7 ;OP0= Reset Coordinate Motori (0,0) movlw 0X01 ;0X01-appoggio=0? (quindi appoggio=0x01?) goto OP1 ;OP1=Accendi Laser movlw 0X02 ;0X02-appoggio=0? (quindi appoggio=0x02?) goto OP2 ;OP2=Spegni Laser movlw 0X03 ;0X03-appoggio=0? (quindi appoggio=0x03?) goto OP3 ;OP3=Coordinate Motori(>>>2 BYTE<<<) movlw 0X04 ;0X04-appoggio=0? (quindi appoggio=0x04?) goto OP4 ;OP4=Test Connessione RS-232 movlw 0X05 ;0X05-appoggio=0? (quindi appoggio=0x05?) goto OP5 ;OP5=Tempo di passo StepTime movlw 0X06 ;0X06-appoggio=0? (quindi appoggio=0x06?) goto OP6 movlw 0X08 goto OP8 movlw 0X09 goto OP9 ; nessuna delle precedenti=errore OP7 clrf PxA

clrf PyA OP1 bsf PORTA, LAS OP2 bcf PORTA, LAS OP3 btfsc PORTA, RX ;bit di start ricevuto? goto OP3 movwf Step1N OP3z btfsc PORTA, RX ;bit di start ricevuto? goto OP3z movwf Step2N OP4 OP5 btfsc PORTA, RX goto OP5 movwf StepT OP6 call MoreStp OP8 bsf StepS, swdir1 bcf StepS, swdir2 OP9 bcf StepS, swdir1 bsf StepS, swdir2

end I FLOWCHART DEL SOFTWARE PER IL PIC E DEL SOFTWARE PER I DUE PC SONO ALLEGATI.