Acquisizione dati con ADC 0831 e PIC 16F84

Slides:



Advertisements
Presentazioni simili
PROGRAMMARE IN PASCAL (le basi)
Advertisements

Corrado Cavalli Microsoft .NET MVP
Lez 4 (11/12)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Elementi di Programmazione
EP 10/11 - PBLezione 2-21 Elementi di Programmazione Tipi di Dati Conversioni Istruzioni di controllo del flusso.
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Recupero lez.4.
Dipartimento di Matematica
Circuiti sequenziali Capitolo 5.
Digital Data Acquisition
Moduli 1 In Access è possibile automatizzare diverse operazioni mediante l’utilizzo del linguaggio VBA (Visual Basic for Applications). Le istruzioni.
Programmazione Concorrente
MICROCONTROLLORI Di Tiziano Ragazzi.
Introduzione allambiente BasicX Informatica. Argomenti Le caratteristiche principali del BX-24 Il BOS (BasicX Operating System) on-chip Lambiente di sviluppo.
CONVERSIONE ANALOGICO-DIGITALE, A/D
CONVERTITORI A/D ad ELEVATE PRESTAZIONI
INTRODUZIONE AI CONVERTITORI ANALOGICO-DIGITALI (ADC)
L’organizzazione della comunicazione di I/O G. Vercelli
Il linguaggio Fortran 90: 5. Formato di I/O e Files
Somma = A + B start Stampa Somma Leggi A,B stop Sub SOMMA( ) Dim A, B as Integer A = InputBox("Immetti un numero") B = InputBox(Immetti un secondo numero)
Come aumentare le linee di I/O?
Convertitore A/D e circuito S/H
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Strutture di controllo in C -- Flow Chart --
I File.
Lezione 2 Programmare in ASP
Con i microcontrollori
Sistemi di acquisizione
Simulazione cassa Super-mercato
Simulatore Breve riassunto dei comandi più importanti del simulatore MPLAB.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Programmare in Visual Basic
Un modem, una scheda di rete, o comunque una unità di comunicazione tra calcolatori elettronici, trasmettendo uninformazione, a causa di disturbi esterni,
Esercitazione Microcontrollori PIC
Esempi di sistemi di trigger MUSE FPGA-simple CMS-I level CMS-II level TINA TRASMA.
Ottimizzazione del tempo morto
Registro a scorrimento
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Assembly per pic 16fxx Generalità.
Interfacciamento emissione su stampante di un dato che rappresenta una tensione acquisita da un convertitore analogico digitale decodifica e visualizzazione.
Assembly2 Gestione dei ritardi.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
PIC16F84A (seconda lezione). VARIABILI E COSTANTI.
Programmazione in linguaggio C
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
PIC16F84A (terza lezione). PARAMETRI MASSIMI DEL PIC Dissipazione totale = 800 mW Corrente diogni pin = 25 mA Corrente della PORTA completa = 50 mA Corrente.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
ADC – SCHEMA GENERALE I convertitori AD sono disponibili come circuiti integrati in diversi modelli, che differiscono fra loro per prezzo, prestazioni.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Gestione dei dispositivi di I/O:
Lez. 12 (13/14)Elementi di Programmazione1 Lezione 12 Esercizi.
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Comunicazione seriale Gestione ad eventi a cura di Marco Zucchini.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
DAC A RESISTORI PESATI.
Informatica Generale Marzia Buscemi
Data Acquisition System I° Modulo(DAS) Corso di Elettronica1.
Conversione Analogico/Digitale Le grandezze fisiche che vogliamo misurare variano con continuità in un dato intervallo ed in funzione del tempo: sono descrivibili.
Hardware necessario Una board Intel galileo Un alimentatore Dc 7-15 v
Corso di Informatica Applicata Lezione 7 Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Ing. Saverio De Vito.
Ordinamento. Introduzione Una delle operazioni che si possono eseguire sui vettori, è quella di ordinare gli elementi del vettore in ordine crescente.
Corso di Informatica Applicata - Lezione 4 - © 2005 Saverio De Vito Corso di Informatica Applicata Introduzione Università degli studi di Cassino Corso.
HI-TECH INNOVATION AT WORK. HI-TECH INNOVATION AT WORK 2 “EASY Programming & Testing tools” Apparecchiature di programmazione e collaudo.
Luca Chichisola1 Dal problema al programma LUCA CHICHISOLA.
Introduzione ai Microcontrollori Una prima definizione I microcontrollori sono utilizzati per gestire segnali in ingresso (input utente o da sensori),
Laboratorio II, modulo Conversione Analogico/Digitale ( cfr.
ASSEMBLY Seconda parte.
Pic16f84 Assembly I/O.
Transcript della presentazione:

Acquisizione dati con ADC 0831 e PIC 16F84 Esempio di uso di un convertitore analogico digitale con uscita seriale controllato da un PIC 16F84 e visualizzazione della conversione su 8 led Schema elettrico Temporizzazione del convertitore Software di controllo del convertitore Simulazione e collaudo

Per usare il ADC 0831 occorre generare un segnale di clock ed abilitare la conversione con un segnale CS attivo basso. ADC 0831, dopo CS basso, fornisce un bit 0 (start) seguito dagli 8 bit che rappresentano la codifica digitale del segnale analogico in ingresso, seguito dal bit di stop. Questi segnali possono essere prodotti da dispositivi integrati, dal PIC o software (mediante le linee output seriale o parallela).

Controllo dell’ADC 0831 tramite PIC (assembler) out Ck RA1 CS RA2 inp D0 RA3 RS232 PORTB 8 led Codice assembler RA1 basso : il primo clock a vuoto per perdere il bit di start 8 cicli di clock 8 bit del dato da acquisire RA1 alto: fine conversione

Controllo dell’ADC 0831 tramite PIC (C) #include "0831_c.h" void main() { char indice; short bbit; char dato; dato=0; setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); while(1) delay_ms(1000); output_bit(PIN_A1,1); //CS alto delay_us(100); output_bit(PIN_A0,1); output_bit(PIN_A1,0); //CS basso output_bit(PIN_A0,0); //CK basso, butta primo bit for(indice=8;indice>0;--indice) { output_bit(PIN_A0,1); output_bit(PIN_A0,0); delay_us(10); bbit=input(PIN_A2); if (bbit==1) bit_set(dato,indice); else bit_clear(dato,indice); //delay_us(4); } output_b(dato); putc(dato); RA0 out Ck RA1 CS RA2 inp D0 RA3 RS232 PORTB Out 8 led #include <16F84A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #use delay(clock=1000000) #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A4,bits=8) Il programma scritto in C permette di acquisire il dato seriale sul pin RA2, bit a bit, memorizzarlo in una variabile (dato),scrivere il dato sulla porta B e trasmetterlo via RS232 al PC che lo acquisisce tramite un programma in Visual Basic

Software di acquisizione RS232 Private Sub cmdesci_Click() Dim uscita As String uscita = MsgBox("sei sicuro?", vbInformation + vbOKCancel, "Stai uscendo") If uscita = vbOK Then MSComm1.PortOpen = False End End If End Sub Private Sub Form_Load() MSComm1.CommPort = 1 'Porta com1 MSComm1.Settings = "9600,n,8,1" On Error Resume Next MSComm1.PortOpen = True If Err Then MsgBox "Impossibile aprire la porta n " & MSComm1.CommPort & vbCrLf & Error$, vbCritical, "Attenzione" MSComm1.RThreshold = 1 Private Static Sub MSComm1_OnComm() Select Case MSComm1.CommEvent ' Event messages. Case comEvReceive Dim Buffer As Variant MSComm1.InputMode = comInputModeBinary Buffer = MSComm1.Input List2.AddItem StrConv(Buffer, vbUnicode) List3.AddItem Asc(StrConv(Buffer, vbUnicode)) List1.AddItem Format(5 * Asc(StrConv(Buffer, vbUnicode)) / 256, "0.##") End Select

Controllo dell’ADC 0831 da LPT (Visual Basic) pin Bit REGISTRO INDIRIZZO 2 D0 => b0 DR=>data register 0x378 3 D1 => b1 4 D2 => b2 5 D3 => b3 6 D4 => b4 7 D5 => b5 8 D6 => b6 9 D7 => b7 1 STROBE b0 CR=>control register 0x37A 14 LFEED b1 11 BUSY b7 SR=>status register 0x379 10 ACK b6 12 PAPER b5 13 SELECT b4

Controllo dell’ADC 0831 da LPT (Visual Basic) Option Explicit Dim IO As NINOUT32.CNINOUT32 Dim ind_porta As Long Dim scala As Single Dim vref As Single Dim errore As Single Private Sub cmd_enable_Click() Call IO.BitSet(ind_porta, 3) 'fissa CS=1 cmd_enable.Enabled = False cmd_acquisisci.Enabled = True End Sub Private Sub cmd_acquisisci_Click() Dim j As Integer Dim appoggio As Byte Dim bit(0 To 7) As Byte Dim vmis As Single Call IO.BitReset(ind_porta, 3) 'fissa CS=0 inizio conversione Call IO.BitSet(ind_porta, 1) 'Ck=1 Call IO.BitReset(ind_porta, 1) 'Ck=0 perde il bit di start For j = 7 To 0 Step -1 Call IO.BitReset(ind_porta, 1) 'Ck=0 bit(j) = IO.Inp(ind_porta + 1) \ 128 Next j bit(j) = bit(j) Xor 1 lblbit(j).Caption = bit(j) vmis = Round((bit(j) * 2 ^ j) * scala + vmis, 2) Call IO.BitSet(ind_porta, 3) 'fissa CS=0 inizio conversione Label1.Visible = True lblv.Caption = Format(vmis, "0.00") & " V" Private Sub Form_Load() ind_porta = 888 Set IO = New NINOUT32.CNINOUT32 spegni vref = 5 scala = vref / 256 End Sub Private Sub Form_Unload(Cancel As Integer) Set IO = Nothing Private Sub spegni() Call IO.Out(ind_porta, 0) 'chip spento

Torna ;Ricezione Seriale 16F84A ADC0831 PROCESSOR 16F84A RADIX DEC INCLUDE "P16F84A.INC" ORG 0x00 BitCount EQU 0x0D BITCONV EQU 0X0E start: bsf STATUS,RP0 ;Seleziona Banco 1 movlw b'00000100' movwf TRISA ;RA2 Ingresso D0,RA1 Uscita CS, RA0 Uscita CLK. movlw b'00000000' movwf TRISB ;Porta B Tutti di Uscita bcf STATUS,RP0 ;Seleziona Banco 0 clrf BitCount clrf BITCONV clrw disable: movlw b'00000111' ;Sposta 7 in Accumulatore movwf BitCount ;Memorizza il valore 7 nel registro BitCount movlw b'00000010' ;Conversione Disabilitata CS=1 CK=0 movwf PORTA call visualizza enable: bcf PORTA,0 ;CLK basso bcf PORTA,1 ;Conversione Abilitata.CS=0 bsf PORTA,0 ;CLK ALTO call ritardo bcf PORTA,0 ;CLK BASSO Primo clk a vuoto. clk: call ritardo bcf PORTA,0 ;CLK BASSO call getbit ;Va a prendere il bit di conversione goto controllo getbit: btfsc PORTA,2 ;Vai a leggere D0. Salta se 0 goto set1 rlf BITCONV,f ;RUOTA A SX IL CONTENUTO DEL REGISTRO return set1: rlf BITCONV,f movlw 1 addwf BITCONV,f controllo: decfsz BitCount,F ;DECREMENTA BITCOUNT E SALTA SE ZERO goto clk goto disable ritardo: nop visualizza clrw movfw BITCONV movwf PORTB END Torna