ENCICLOPEDIA DELLA RADIOELETTRONICA ED ELETTRICA Progettazione di un sistema di controllo accessi automatizzato. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica Enciclopedia della radioelettronica e dell'elettrotecnica / microcontrollori Oggi il mercato dei componenti elettronici offre ampie opportunità per la creazione di sistemi per vari scopi. Tuttavia, sorge la domanda: come scegliere i componenti giusti per un particolare sistema? L'articolo pubblicato discute la progettazione di un sistema di controllo accessi automatizzato utilizzando componenti ampiamente disponibili e poco costosi. Allora da dove cominciare? Lo sviluppo di qualsiasi sistema inizia con un elenco di requisiti che deve soddisfare. Per il sistema descritto nell'articolo, l'elenco può apparire come segue. Il sistema deve:
Definiamo quali componenti deve contenere il sistema. Per fare ciò, considera i requisiti sopra elencati. Dal paragrafo 1 segue che sarà necessaria una linea di I/O per controllare il meccanismo di apertura/chiusura della porta e un dispositivo per inserire un identificatore. La scelta della tecnologia di identificazione dell'utente (clausola 2) influisce in modo significativo su caratteristiche del sistema come la stabilità (impedisce l'accesso all'oggetto da parte di terzi selezionando una chiave/codice elettronico), la facilità d'uso (il tempo che gli utenti impiegheranno per il processo di identificazione) , costare il sistema stesso e il suo ulteriore funzionamento. Esempi di possibili soluzioni qui includono l'inserimento di una password tramite la tastiera, l'utilizzo di schede a banda magnetica e dongle iButton di Dallas Semiconductor [1,2]. L'inserimento di una password tramite tastiera è il più semplice ed economico da implementare, anche se non è molto comodo e resistente, poiché gli utenti possono dimenticare la password o qualcun altro può sbirciare. Inoltre, con frequenti accessi ai locali, l'inserimento della combinazione di codici richiede molto tempo. Le carte di plastica sono più comode da usare e un tale sistema è più difficile da "hackerare", tuttavia, la sua implementazione richiede dispositivi aggiuntivi per leggere le informazioni dalla carta, nonché attrezzature speciali per scrivere informazioni su di essa, che verranno utilizzate quando aggiunta di un nuovo utente. Ciò aumenta notevolmente il costo del sistema finale. Consideriamo l'ultima opzione. La chiave iButton è un circuito integrato inserito in una custodia metallica per tablet MicroCan con un diametro di 18 e un'altezza di 6 mm. La gamma di prodotti realizzati con questo design è piuttosto ampia: orologi in tempo reale, sensori di temperatura, memoria non volatile e molto altro. Il costo di un iButton è basso (circa $ 2) e anche l'implementazione del lettore è abbastanza semplice: infatti, il bus dati è collegato direttamente a una linea I / O della porta del microcontrollore. In questo caso, è necessario solo implementare il protocollo 1-Wire nel software. Anche la comodità di utilizzare un tale sistema è ovvia: per leggere il codice, l'utente deve solo toccare il "tablet" sul pad di contatto. Per il sistema descritto è stata scelta la modifica DS1990, che non svolge altre funzioni oltre all'identificazione, ovvero il chip contiene solo un codice univoco che può essere letto inviando un apposito comando al dispositivo. Torniamo ai requisiti per la funzionalità. Dal paragrafo 3 segue che sarà necessario tenere traccia del tempo e registrare le informazioni sull'accesso dell'utente all'oggetto della protezione. Naturalmente, le interruzioni di corrente devono essere anticipate, quindi il tempo e il meccanismo di registrazione devono essere resistenti a questo tipo di problemi. Poiché DS1990 viene scelto come identificatore utente e in ogni caso è necessario implementare il protocollo 1-Wire nel software, ha senso utilizzare un'altra modifica iButton: DS1994 come orologio in tempo reale. Questo chip contiene una batteria al litio integrata che garantisce un'autonomia di 10 anni. Per memorizzare il log dei passaggi è stata scelta una serie di Flash-memory di Atmel AT45 [3]. La lettura/scrittura dei dati su questo tipo di memoria avviene tramite il protocollo SPI seriale, il numero totale di linee di input/output coinvolte è 7. AT45D041 con una capacità di memoria di 4 Mbit è stato selezionato tra i microcircuiti disponibili di questa serie. È necessaria una tastiera per controllare le impostazioni di sistema. In questo caso è sufficiente una matrice di pulsanti 3x4 con i numeri 0...9 ei simboli "*" e "#". Una tale tastiera richiederebbe 3+4=7 linee di I/O del microcontrollore in più. L'ultima cosa che devi avere nel sistema è un piccolo display per visualizzare il registro dei passaggi e configurare il sistema. La gamma di display a basso costo attualmente disponibili è piuttosto ampia, ma nel nostro caso non è richiesta l'uscita grafica, quindi è sufficiente un LCD per visualizzare informazioni alfanumeriche. Gli LCD basati sul controller HITACHI HD44780 sono oggi i più popolari [4]. Si distinguono per facilità di connessione e basso costo. I dati vengono trasferiti su un'interfaccia a otto o quattro bit (a seconda della modalità utilizzata), inoltre sono necessarie altre tre linee di I/O per trasmettere i segnali di controllo. Per risparmiare linee di I/O è stata scelta un'interfaccia a quattro bit, quindi anche il numero totale di linee di I/O per il controllo dell'LCD è 7. Questo completa la scelta delle periferiche. Ora dobbiamo scegliere un microcontrollore in grado di controllare efficacemente tutti i dispositivi di cui sopra. Per cominciare, calcoliamo il numero di linee di input / output richieste che saranno coinvolte nel sistema (Tabella 1). Il risultato ottenuto non è definitivo, poiché in futuro (durante il funzionamento) potrebbero essere necessarie linee I / O aggiuntive, ad esempio per collegare LED, una testina dinamica dell'altoparlante, ecc. Pertanto, è consigliabile scegliere un microcontrollore con un numero di linee di I/O maggiore di quanto specificato in tabella. 1. Dal punto di vista della programmazione, i microcontrollori sono molto attraenti, in cui è implementata la cosiddetta tecnologia ISP (Ip-System Programming - programmazione in-circuit). Per caricare un nuovo codice di programma nel microcontrollore non è necessario rimuoverlo dalla scheda: la programmazione avviene in-circuit tramite apposite uscite. Inoltre, per alcune modifiche, non è necessario nemmeno un programmatore: il "firmware" viene eseguito tramite la porta parallela del computer. Naturalmente, la soluzione più accettabile è utilizzare proprio un tale microcontrollore nel sistema, che non richiede fondi aggiuntivi per il firmware. Per implementare l'attività, è stato selezionato il microcontrollore AT89S8252, che è completamente compatibile nel codice e nella piedinatura con i microcontrollori della famiglia 8051. Dispone di 8 KB di memoria di programma flash programmabile nel circuito con una risorsa di 1000 cicli di riscrittura, 2 KB di memoria di programma incorporata -in EEPROM (memoria di sola lettura programmabile cancellabile elettricamente), 256 byte di RAM, 32 linee di I/O, tre timer, watchdog timer, l'hardware supporta l'interfaccia SPI. Frequenza di clock - O...24 MHz (un ciclo macchina viene eseguito in 12 cicli, pertanto la prestazione massima è di due milioni di operazioni al secondo). La scelta di questo particolare microcontrollore è giustificata da quanto segue. I microcontrollori della serie 8051 dispongono di un ampio set di istruzioni, che ne facilita la programmazione a basso livello (ad esempio, sono supportate operazioni su singoli bit [5]). La tecnologia ISP accelera il debug e facilita lo sviluppo, il supporto hardware per l'interfaccia SPI consente di collegare la memoria flash della serie AT45 selezionata senza ulteriore programmazione di questo protocollo. I 2 KB di EEPROM incorporata possono essere utilizzati per memorizzare informazioni che devono essere preservate indipendentemente dalla presenza di alimentazione esterna. 32 linee di I/O sono sufficienti per implementare il sistema descritto. La presenza di timer consente un'implementazione flessibile del protocollo 1-Wire, poiché richiede precisione nell'osservazione dei ritardi temporali. Il watchdog timer assicura che il sistema rimanga operativo quando esposto a forti interferenze elettromagnetiche, che possono causare il blocco del controller. Il watchdog timer è un sottosistema indipendente nel microcontrollore che ogni N cicli controlla lo stato di un bit nel registro di stato del microprocessore. Se questo bit è impostato, il microcontrollore viene ripristinato allo stato iniziale e, se viene ripristinato, viene impostato a 1 e il test si interrompe. Pertanto, il programma in esecuzione deve azzerare questo bit ad intervalli non superiori a N cicli. Se ciò non accade, significa che il funzionamento del microcontrollore è stato interrotto da interferenze esterne e alla successiva attivazione del timer watchdog, il microcontrollore verrà ripristinato allo stato iniziale. Prima di passare all'implementazione del software, esaminiamo nuovamente l'architettura dal punto di vista della sua efficacia nello svolgere le funzioni dirette del sistema. Il sistema progettato supporterà due modalità di inserimento delle informazioni: tramite tastiera (comandi per l'impostazione del sistema, visualizzazione del registro passaggi) e tramite la pulsantiera dell'interfaccia 1-Wire. Poiché lo scopo principale del sistema è il controllo degli accessi, il tempo di polling della piazzola 1-Wire deve superare il tempo assegnato per il polling della tastiera. Considerando le specifiche del protocollo 1-Wire, puoi vedere che sono possibili due situazioni fondamentalmente diverse: la prima, quando c'è un solo dispositivo sulla linea, e la seconda, quando ce ne sono più. Per determinare il numero di dispositivi sulla linea e i relativi identificatori, esiste uno speciale meccanismo di ricerca specificato nella specifica del protocollo 1-Wire. Consiste nel successivo vaglio dei dispositivi sulla linea e nella scansione bit per bit dello spazio degli indirizzi (lo spazio identificativo del "Pulsante"), inoltre questa procedura deve essere ripetuta dopo ogni ciclo di comunicazione con i dispositivi collegati (poiché la loro composizione può modifica). Come già accennato, nel nostro sistema è prevista una linea 1-Wire, che verrà utilizzata sia per il collegamento dell'orologio in tempo reale che per le chiavi di identificazione, e l'orologio in tempo reale, che fa parte del sistema, sarà sempre connesso . Ciò significa che abbiamo una situazione in cui può esserci più di un dispositivo sulla linea. Tenendo conto di quanto sopra e della presenza di linee libere di porte I/O, è ragionevole allocare due linee nel sistema per il protocollo 1-Wire: collegare permanentemente un orologio in tempo reale ad una di esse, e utilizzare la seconda solo per presentare gli identificatori utente. Questa configurazione garantisce la presenza di un solo dispositivo su ogni linea in qualsiasi momento, il che semplifica enormemente l'implementazione del sistema, riduce i tempi di risposta e consente di risparmiare spazio nella memoria del programma. L'orologio in tempo reale DS1994 ha un contatore di cinque byte che incrementa 256 volte al secondo. Quando va in overflow, il conteggio continua da zero. La capacità di 5 byte è sufficiente per 136 anni di funzionamento finché il contatore non va in overflow. A causa del fatto che l'utente deve visualizzare l'ora in un formato a lui conveniente, ed è anche necessario fornire la possibilità di impostare l'orologio, il sistema integrato deve supportare la conversione di data e ora dal formato interno al testo e viceversa. Come punto di riferimento è stata scelta la data 01.01.2000/00/00 00:2136:XNUMX, che garantisce il funzionamento dell'orologio e la registrazione fino al XNUMX circa. E un altro punto a cui dovresti prestare attenzione. Abbiamo concordato che il registro dei passaggi verrà archiviato in una memoria flash esterna, ma dobbiamo ancora determinare il luogo in cui archiviare l'elenco dei diritti di accesso. Nella descrizione del microcontrollore è stata menzionata una EEPROM integrata con una capacità di 2 KB, ideale per questo scopo, poiché l'elenco di accesso è più prezioso del registro dei passaggi e se, ad esempio, quest'ultimo può essere rimosso (fisicamente) dal sistema rimuovendo il chip corrispondente dalla scheda, quindi l'elenco dei diritti di accesso può essere cancellato solo rimuovendo il microcontrollore, senza il quale il sistema non può funzionare. Nel sistema descritto, la quantità di memoria specificata era sufficiente per ospitare 168 account, ovvero il numero massimo di utenti è 168. Il registro passaggi è implementato come un elenco circolare e, quando è pieno, le voci più vecchie vengono eliminate. La dimensione di una voce di registro è di 12 byte (4 byte per il tempo di passaggio e 8 byte per l'identificatore). Ne consegue che la memoria di registro è sufficiente per registrare circa 45 passaggi prima che si verifichi il primo overflow del registro. Durante il processo di sviluppo, al sistema è stato aggiunto un altro componente: un interruttore reed sulla porta. È necessario affinché il sistema possa determinare se la porta è attualmente aperta o chiusa, nonché per spegnere tempestivamente l'alimentazione dell'elettromagnete. Viene implementato il seguente algoritmo di apertura della porta: viene applicata tensione alla bobina del solenoide e il sistema attende fino all'apertura della porta o allo scadere di un tempo di ritardo pari a 5 s, dopodiché l'alimentazione di tensione si interrompe. Il diagramma schematico del dispositivo sviluppato è mostrato in figura. Come puoi vedere, oltre al microcontrollore DD1, contiene un chip di memoria Flash DS1, una tastiera a 12 pulsanti SB1 - SB12 e un LCD HG1. La frequenza di clock del microcontrollore imposta il risonatore al quarzo ZQ1 a 24 MHz. La porta P0 permette di inserire le informazioni dell'orologio iButton (collegato alla presa X1) e dell'identificatore (collegato alla X2), comandare il relè (tramite un tasto a transistor) che alimenta il solenoide della serratura, il LED HL1 che segnala l'apertura del porta e registrare lo stato installato sul suo interruttore reed. Lo scambio di informazioni con il chip di memoria Flash DS1 avviene attraverso la porta P1. La tastiera è servita dalla porta P2, l'indicatore HG1 è servito dalla porta РЗ. Il dispositivo è alimentato da una tensione stabilizzata di 5 V. Per alimentare il relè che controlla il funzionamento dell'elettromagnete, è necessaria una sorgente di tensione di 16 ... 20 V. Il dispositivo è assemblato su una tavola di opportune dimensioni. Per collegare il microcontrollore DD1 e il chip di memoria DS1 si consiglia di utilizzare gli appositi zoccoli. La scheda montata è collocata in una custodia di plastica o metallo, la tastiera e il display LCD sono visualizzati sul pannello frontale. Il dispositivo è installato all'interno del locale protetto. Codici firmware del microcontrollore e testi sorgente del programma Dopo che il dispositivo è stato acceso, il display LCD visualizza un elenco di voci di menu mostrate nella Tabella. 2. Poiché l'indicatore ha solo due righe, i tasti "#" e "*" vengono utilizzati per lo "scorrimento" orizzontale. Per eseguire uno qualsiasi di questi comandi sono richiesti i privilegi di amministratore e, dopo aver selezionato una voce di menu premendo il tasto corrispondente, è necessario presentare un tasto con diritti di amministratore, altrimenti il comando richiesto viene ignorato. Durante il lavoro sul dispositivo, sono sorti problemi in varie fasi di sviluppo. Vorrei notare i seguenti punti. Parte hardware. Qualsiasi microprocessore ha i valori massimi consentiti della corrente di ingresso e di uscita delle porte di ingresso / uscita. Ad esempio, se è necessario utilizzare un LED nel sistema, la maggior parte dei microcontrollori non sarà in grado di fornire la corrente richiesta alla porta I / O se lo stato attivo è log. 1. In tal caso, è necessario rendere attivo lo stato del registro. 0 collegando l'anodo del LED alla barra di alimentazione. Non dobbiamo inoltre dimenticare la limitazione di corrente accendendo un resistore con una resistenza di circa 2 kOhm in serie al carico. Se hai ancora bisogno di usare il file log. 1 come stato attivo e il carico è troppo grande, è necessario utilizzare un interruttore a transistor per accendere il carico. Quando si implementa un bus 1-Wire, è necessario "tirare su" il bus dati attraverso un resistore alla tensione di alimentazione. Ciò è necessario affinché durante la transizione dal basso all'alto la linea raggiunga rapidamente la soglia di commutazione al registro. 1. Il valore del resistore deve essere compreso tra 4,7 e 5,1 kOhm. Se la lunghezza dei fili è sufficientemente grande (diversi metri), la resistenza del resistore può essere ridotta. Non dobbiamo dimenticare la corrente massima che può essere consumata da tutti i dispositivi collegati alle porte del microcontrollore. È necessario considerare il caso in cui tutti sono in uno stato attivo e calcolare se il microcontrollore può fornire tale potenza di uscita. Se supera il massimo consentito, i dispositivi semplicemente non si accenderanno al momento giusto. Parte software. Molto nel processo di sviluppo dipende da quale compilatore viene utilizzato, quanto bene ottimizza il codice e lo alloca in memoria, se consente di eseguire il debug dei programmi sul proprio emulatore, nonché di tenere traccia del tempo di esecuzione del programma, ecc. Se il programma utilizza costanti stringa, a causa della quantità limitata di RAM, è necessario utilizzare direttive speciali per indicare al compilatore che devono trovarsi nell'area di memoria del programma. Ad esempio, per il compilatore Keil uVision ha questo aspetto: 'const char code sz[6] = "Hello"', dove il modificatore "code" indica al compilatore che la stringa deve essere inserita nella memoria del programma. Per le operazioni time-critical è preferibile utilizzare un timer, poiché in questo caso il riferimento alla frequenza di clock avviene introducendo una costante, facilmente correggibile al variare della frequenza. Non dovresti creare funzioni con un numero elevato di parametri passati, poiché quando vengono chiamate, vengono passate attraverso i registri (e quando ci sono troppi parametri, attraverso aree fisse in memoria). Ciascuna di queste chiamate richiede un codice aggiuntivo per memorizzare i valori del registro prima che la funzione venga chiamata e per recuperare quei parametri all'interno della funzione. La soluzione potrebbe essere quella di utilizzare variabili globali, ma qui bisogna stare molto attenti se la funzione chiamata chiama a sua volta una funzione che utilizza gli stessi parametri. Se si utilizza un linguaggio di alto livello per la programmazione, è utile valutare il codice assembler risultante in termini di ottimalità (se si riscontra un problema di carenza di memoria). I compilatori moderni generano codice assembly abbastanza compatto e veloce quando scrivono programmi in un linguaggio di alto livello, quindi non è necessario scrivere tutto il codice in assembly. Tuttavia, l'uso dell'assembler è ragionevole nelle procedure time-critical (in termini di velocità e accuratezza). Naturalmente, il sistema descritto nell'articolo può essere migliorato in più direzioni. Ad esempio, aggiungi la limitazione dell'accesso per ora del giorno, registra i tentativi di accesso non autorizzati (presentando un identificatore senza diritti di accesso), aggiungi il supporto per il controllo dell'accesso al secondo oggetto (questo richiederà tre linee I / O aggiuntive), tuttavia, come sai , non c'è limite alla perfezione, ma qui la quantità di memoria del programma nel microcontrollore è limitata. Lo scopo principale dell'articolo è mostrare l'intero ciclo di creazione di un sistema embedded utilizzando un esempio specifico, nonché fornire alcuni consigli pratici sulla risoluzione dei problemi che si possono incontrare durante il suo sviluppo. Letteratura
Autore: A.Rantsevich, Minsk Vedi altri articoli sezione microcontrollori. Leggere e scrivere utile commenti su questo articolo. Ultime notizie di scienza e tecnologia, nuova elettronica: Macchina per diradare i fiori nei giardini
02.05.2024 Microscopio infrarosso avanzato
02.05.2024 Trappola d'aria per insetti
01.05.2024
Altre notizie interessanti: ▪ I cani robotici voleranno su Marte ▪ Chip Samsung DDR8 da 4 GB e moduli DDR32 da 4 GB ▪ Proiettore Android Canon M-i1 ▪ Huawei Watch D con sfigmomanometro ed ECG News feed di scienza e tecnologia, nuova elettronica
Materiali interessanti della Biblioteca Tecnica Libera: ▪ sezione del sito Alimentazione. Selezione dell'articolo ▪ articolo Altri poeti, buoni e diversi. Espressione popolare ▪ articolo Cos'è più forte: rete o acciaio? Risposta dettagliata ▪ articolo Kalanchoe pennate. Leggende, coltivazione, metodi di applicazione ▪ articolo Fusibile elettronico. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica
Lascia il tuo commento su questo articolo: Tutte le lingue di questa pagina Homepage | Biblioteca | Articoli | Mappa del sito | Recensioni del sito www.diagram.com.ua |