ENCICLOPEDIA DELLA RADIOELETTRONICA ED ELETTRICA Arduino. Operazioni di input-output analogico, funzionano con un suono. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica Enciclopedia della radioelettronica e dell'elettrotecnica / Progettista radioamatore Sebbene le operazioni di ingresso-uscita digitale consentano di risolvere un'ampia gamma di problemi, la presenza di un convertitore analogico-digitale (ADC) integrato nel microcontrollore della scheda Arduino e la capacità di emettere segnali analogici utilizzando la modulazione di larghezza di impulso ( PWM) garantiscono il funzionamento con sensori analogici e tutti i tipi di attuatori, influenzando l'oggetto in proporzione al segnale di controllo. A rigor di termini, in modalità output, tutte le porte di Arduino possono trasmettere solo segnali discreti che hanno solo due stati. Ma il microcontrollore è in grado di cambiare questi stati molto rapidamente, generando impulsi rettangolari. Se questi impulsi vengono applicati a qualsiasi dispositivo con proprietà inerziali, inizierà a comportarsi come se la tensione fornita fosse costante, uguale al valore medio dell'impulso e cambi gradualmente e non a salti tra alto e basso livelli logici. In modalità PWM, la porta genera un segnale di impulso con frequenza costante e ciclo di lavoro variabile (questo è il rapporto tra il periodo di ripetizione degli impulsi e la loro durata). Spesso, invece del ciclo di lavoro, funzionano con il suo valore inverso: il ciclo di lavoro, che può essere modificato da 0 (nessun impulso) al 100% (gli impulsi seguono, fondendosi, senza pause). Pertanto, sebbene in ogni momento la tensione di uscita corrisponda ad un livello logico alto o basso, il suo valore medio è proporzionale al ciclo di lavoro. Se colleghi un normale multimetro a questa uscita, mostrerà questo valore (ovviamente, se la frequenza degli impulsi è sufficientemente alta). In Arduino UNO, le uscite D3, D5, D6, D9, D10 e D11 possono funzionare in modalità PWM. Di solito sono contrassegnati sulla scheda con i segni "~" o con le abbreviazioni "PWM". Va notato che le schede Arduino di altre modifiche possono avere più o meno tali uscite. Nel caso più semplice, il PWM può essere utilizzato per controllare la luminosità di un LED. Questo dispositivo è praticamente privo di inerzia, ma la visione umana ha un'inerzia sufficiente affinché una sequenza di flash LED veloci venga percepita come un bagliore continuo con luminosità dipendente dal fattore di riempimento. Le uscite discrete in grado di generare PWM sono configurate per utilizzare questa modalità per impostazione predefinita, quindi non è necessario chiamare la funzione pinMode() per utilizzarle in questa modalità. Per impostare il ciclo di lavoro di un segnale PWM, esiste una funzione standard analogWrite(N, M), dove N è il numero di pin, M è un numero proporzionale al ciclo di lavoro richiesto. Deve essere compreso tra 0 e 255, dove 0 corrisponde a ciclo di lavoro zero (livello basso costante in uscita), ciclo di lavoro 255 - 100% (livello alto costante in uscita). I diagrammi temporali della tensione di uscita a determinati valori di M e, di conseguenza, il ciclo di lavoro di cortocircuito sono mostrati in Fig. 1.
Consideriamo ad esempio quello riportato in tabella. 1 programma che aumenta gradualmente la luminosità del LED collegato all'uscita digitale D9, per poi diminuirla gradualmente. Si basa sull'esempio standard 3.AnalogFading fornito con l'IDE di Arduino. L'enumerazione dei valori del duty cycle degli impulsi è qui implementata utilizzando gli operatori del ciclo for già discussi in [1]. Tabella 1. Per ricevere segnali analogici da dispositivi esterni in Arduino, sono previsti gli ingressi A0-A5, che per impostazione predefinita sono impostati sullo stato richiesto a tale scopo, quindi non è necessaria alcuna inizializzazione aggiuntiva. L'ADC integrato nell'Arduino UNO genera codici binari a 10 bit e converte la tensione di ingresso, che è compresa tra 0 e +5 V, in un numero intero compreso tra 0 e 1023 (210-1). Per leggere il risultato della conversione, utilizzare la funzione analogRead(N), dove N è il numero dell'ingresso analogico. È possibile collegare una varietà di sensori agli ingressi analogici di Arduino, la cui tensione di uscita è proporzionale al valore misurato (resistori variabili, termistori, fotoresistori, ecc.). Occorre tuttavia tenere presente che all'ingresso analogico può essere fornita solo una tensione compresa tra 0 e +5 V. Se la tensione di uscita del sensore si trova in un intervallo diverso o ha polarità negativa, il segnale deve prima essere collocato entro l'intervallo specificato allineare. L'ingresso analogico viene interrogato a una velocità inferiore a 10 kHz [2], che potrebbe non essere sufficiente per analizzare alcuni segnali che cambiano rapidamente. La presenza di ingressi analogici consente di trasformare Arduino in un semplice voltmetro digitale che misura la tensione continua da 0 a +5 V e trasmette il risultato della misurazione al computer. Per fare ciò basta caricare su Arduino il programma riportato in tabella. 2. Tabella 2 Si noti che nel programma la tensione ADC di riferimento Uref (in millivolt) e il fattore di conversione del codice di uscita ADC in tensione Ku sono specificati come costanti. Il valore del coefficiente viene calcolato dividendo la tensione di riferimento data per 1023. Il coefficiente è solitamente frazionario, quindi la costante Ki è di tipo float (numero in virgola mobile). La costante Uref ha lo stesso tipo per calcolare correttamente il coefficiente. Poiché il lato destro della formula contiene solo costanti, il coefficiente non viene calcolato dal microcontrollore durante l'esecuzione del programma, ma dal compilatore stesso nella fase della sua traduzione. Tutto ciò permette di aumentare la precisione del voltmetro misurando con un multimetro il valore esatto della tensione di riferimento al pin Uref della scheda Arduino e scrivendolo nel programma, assegnandolo alla costante Uref. Puoi leggere altri modi per migliorare la precisione della conversione da analogico a digitale in [3, 4]. Quando il programma in questione è in esecuzione, il LED TX sulla scheda lampeggia, segnalando il trasferimento delle informazioni attraverso la porta seriale. Il LED RX non è acceso perché il computer non invia nulla in risposta. Il terminale IDE Arduino integrato visualizza le informazioni ricevute (Fig. 2): i risultati della misurazione della tensione di una batteria galvanica 3332.
Arduino può fornire non solo segnali luminosi, ma anche sonori. Per fare ciò, è necessario collegare un emettitore di suono piezoelettrico, ad esempio ZP-1, a una delle sue uscite (Fig. 3).
Per lavorare con il suono, viene fornita una funzione speciale: tono(N, F, T), dove N è il numero del pin su cui verranno generati gli impulsi rettangolari; F - frequenza del suono, Hz; T - durata del suono, ms. L'ultimo parametro è facoltativo. In sua assenza, il suono sarà continuo. Per disattivarlo è prevista la funzione noTone(N). Naturalmente, l'emettitore sonoro piezoceramico difficilmente può essere definito un dispositivo di riproduzione di alta qualità e il segnale generato dal microcontrollore ha una forma rettangolare, tuttavia l'uso di queste funzioni consente di riprodurre melodie semplici. Un esempio è riportato nella tabella. 3. Questo è un esempio di programma leggermente modificato 02.Digital oneMelody, incluso nell'IDE di Arduino. Poiché è scomodo impostare manualmente la frequenza di ciascuna nota di una melodia, il file pitches.h viene allegato al programma nella sua intestazione utilizzando la direttiva #include. Questa operazione equivale ad includere nel programma il testo completo di questo file. In questo caso contiene l'elenco dei nomi delle note che possono essere suonate e le loro frequenze. Tabella 3 L'emettitore di suoni deve essere collegato all'uscita D8. Per un programma, una melodia è una sequenza di costanti dello stesso tipo (valori di frequenza), che sono opportunamente combinate in un array, un elenco numerato di elementi dello stesso tipo. Quando dichiari un array, devi elencare tutti i suoi elementi o indicarne il numero totale. Tieni presente che la numerazione degli elementi dell'array inizia sempre da zero. Nell'esempio in esame vengono utilizzati due array: int melody[] contiene i nomi delle note della melodia, int note Durations[] - la loro durata in millisecondi. Per fare riferimento ad un elemento dell'array, indicarne il nome con un numero progressivo racchiuso tra parentesi quadre. Per poter modificare facilmente il numero di note di una melodia, si calcola utilizzando le funzioni sizeof(V), che restituiscono il numero di byte occupati dal suo argomento (variabile o array di esse) nella memoria del microcontrollore. In questo caso, l'array della melodia occupa 16 byte e la lunghezza dei suoi elementi int è di due byte. Pertanto la variabile Note riceve il valore 8 e questo è il numero di volte in cui verrà ripetuto il corpo del ciclo for, suonando le note una ad una. Se aggiungi più di una nota all'array melody[], il valore Note cambierà di conseguenza. Devi solo ricordarti di aggiungere l'array noteDurations[] con le durate di queste note. Poiché la melodia viene eseguita una sola volta, tutte le operazioni necessarie vengono eseguite all'interno della funzione setup(). Per rieseguire è necessario ripristinare il microcontrollore al suo stato originale premendo il pulsante RESET situato sulla scheda Arduino I programmi per Arduino discussi nell'articolo possono essere scaricati da ftp://ftp.radio.ru/pub/2016/09/aninout.zip. Letteratura
Autore: D. Lekomtsev Vedi altri articoli sezione Progettista radioamatore. 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: ▪ Scelta della professione - dai geni ▪ A proposito dei pianeti di una stella racconterà la sua fotosfera ▪ Al computer è stato insegnato a distinguere il testo maschile da quello femminile ▪ Le mascelle più veloci del mondo News feed di scienza e tecnologia, nuova elettronica
Materiali interessanti della Biblioteca Tecnica Libera: ▪ sezione del sito Indovinelli per adulti e bambini. Selezione di articoli ▪ articolo Diritto doganale. Note di lettura ▪ articolo Quanto è profonda la grotta più profonda del mondo? Risposta dettagliata ▪ articolo Disinfettante. Descrizione del lavoro ▪ articolo Sonda sonora-ohmmetro. 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 |