Sommario:

Controlla i dispositivi del mondo reale con il tuo PC: 15 passaggi (con immagini)
Controlla i dispositivi del mondo reale con il tuo PC: 15 passaggi (con immagini)

Video: Controlla i dispositivi del mondo reale con il tuo PC: 15 passaggi (con immagini)

Video: Controlla i dispositivi del mondo reale con il tuo PC: 15 passaggi (con immagini)
Video: Quando provi a fare un complimento a una ragazza... 2024, Dicembre
Anonim
Controlla i dispositivi del mondo reale con il tuo PC
Controlla i dispositivi del mondo reale con il tuo PC

Questo Instructable mostra come interfacciare un PC e un microcontrollore. Questa demo rileverà il valore di un potenziometro o di qualsiasi ingresso analogico e controllerà anche un servo. Il costo totale è inferiore a $ 40 compreso il servo. Il servo accende un microinterruttore e poi il microinterruttore accende una lampada. In un'applicazione pratica la pentola potrebbe essere un sensore di temperatura e il servo potrebbe accendere un riscaldatore. Il servo potrebbe essere sostituito con un relè o un altro controller di potenza. Il picaxe è programmato in una versione semplificata di base e l'interfaccia utilizza VB. Net. Tutto il software è disponibile gratuitamente. Un Instructable correlato mostra come collegare due microcontrollori tramite Internet

Passaggio 1: raccogliere le parti

Raccogli le parti
Raccogli le parti

Elenco delle parti: Chip Picaxe 08M disponibile da molte fonti tra cui Rev Ed https://www.rev-ed.co.uk/picaxe/ (UK), PH Anderson https://www.phanderson.com/ (USA) e Microzed https://www.microzed.com.au/ (Australia)Scheda prototipi, servo, microinterruttore, batteria da 9V, 4 batterie AA e supporto, etichetta strip, resistore da 10k, resistore da 22k, condensatore da 33uF 16V, condensatore da 0.1uF, 7805L a bassa potenza 5V regolatore, potenziometro da 10k, cavi (cavo dati/telefono a nucleo solido ad es. Cat5/6), lampadina da 6 V, presa femmina D9 e coperchio, 2 metri di cavo dati a 3 (o 4) conduttori, clip per batterieLe società di cui sopra vendono anche da USB a dispositivi seriali che sono utili per i laptop che non hanno una porta seriale. Vale la pena notare che alcuni dispositivi da USB a seriale non funzionano bene come altri e vale la pena acquistarne uno da uno dei fornitori di cui sopra poiché sono stati testati per l'uso con i chip Picaxe. Quello che è noto per funzionare è https://www.rev-ed.co.uk/docs/axe027.pdf Naturalmente, se il tuo computer ha una porta seriale (o una vecchia scheda per porta seriale), questa non funzionerà essere un problema.

Passaggio 2: scarica e installa alcuni software

Scarica e installa alcuni software
Scarica e installa alcuni software

Avremo bisogno di VB. Net e del software del controller picaxe. VB. Net (Visual Basic Express) è disponibile da https://msdn2.microsoft.com/en-us/express/aa718406.aspxSe questo collegamento non funziona, cerca in Google per: download visual basic expressIl software picaxe è disponibile all'indirizzo https://www.rev-ed.co.uk/picaxe/ Dovrai registrarti con microsoft per ottenere il download - se questo è un problema usa un'e-mail falsa o qualcosa. In realtà ho trovato utile dare la mia vera email mentre inviano aggiornamenti occasionali.

Passaggio 3: crea un circuito di download

Costruisci un circuito di download
Costruisci un circuito di download

Questo circuito di download utilizza un chip Picaxe, un paio di resistori, un regolatore e una batteria da 9V. Maggiori informazioni sono disponibili nella documentazione picaxe e questo dovrebbe richiedere solo pochi minuti per costruire una volta che tutte le parti sono a portata di mano.

Potrei anche aggiungere che i picax funzionano felicemente con 3 batterie AA. Un'alimentazione regolata a 5V è utile per far funzionare gli ingressi analogici poiché le tensioni di riferimento non cambiano, ma per semplici circuiti on/off non è necessaria un'alimentazione regolata. Il registro 5V può essere omesso in queste situazioni.

Passaggio 4: layout della scheda prototipi del circuito di download

Layout della scheda prototipi del circuito di download
Layout della scheda prototipi del circuito di download

Questa foto mostra il cavo di download che è semplicemente una spina D9 e un paio di metri di cavo multicore. La maggior parte dei PC moderni dispone di una connessione alla porta seriale D9. Un PC costruito prima del 1998 potrebbe avere un connettore a 25 pin. Ho saldato circa 1 cm di cavo a nucleo solido all'estremità dei cavi flessibili e poi ho messo un termoretraibile attorno a questo: i cavi a nucleo solido vanno in una scheda prototipi molto meglio dei cavi flessibili.

Passaggio 5: scarica il programma Picaxe

Scarica il programma Picaxe
Scarica il programma Picaxe

Clicca sulla freccia blu per scaricare. Se non viene scaricato, ci sono alcuni suggerimenti per il debug nel manuale di istruzioni di Picaxe. Puoi provare a scaricare un semplice programma per accendere e spegnere un led per verificare il funzionamento del chip. Questo programma così com'è non fa nulla fino a quando non è collegato a un PC mentre aspetta che il PC gli invii qualcosa. Se il download è corretto, allora funziona e il chip è programmato e il passaggio successivo è riconfigurare il chip come chip di interfaccia seriale.

Copia e incolla il codice sottostante. Per visualizzarlo con la sintassi dei colori, guarda in Visualizza/Opzioni/Editor. Le convenzioni di colore sono simili a VB. Net main:serin 3, N2400, ("Dati"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 readadc 1, b1' legge il potenziometro poi rimanda indietro questo serout 0, N2400, ("Dati", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) seleziona case b0' legge bit di dati b0 case <140' se <140 quindi imposta servo su una posizione servo 2, 120 pausa 1000' pausa un secondo altrimenti servo 2, 160 pausa 1000 endselect low 2' disattiva il servo poiché serin lo fa comunque vai al principale

Passaggio 6: riconfigurare il circuito come circuito di interfaccia seriale

Riconfigurare il circuito come circuito di interfaccia seriale
Riconfigurare il circuito come circuito di interfaccia seriale

Sono state apportate due sottili modifiche al circuito Picaxe. Il resistore da 22k che prima andava alla gamba 2 ora va alla gamba 4. E la gamba 2 è stata messa a terra. L'unico scopo della gamba 2 è ricevere i dati di programmazione dal PC in modo che una volta programmato il chip possa essere collegato a massa. Se torni a programmare il chip per correggere bug, ecc., scollega la gamba 2 da terra e ricollega il 22k alla gamba 2. Il picaxe parla al PC tramite la gamba 7, quindi questo non deve cambiare.

È stato aggiunto un potenziometro ed è stato aggiunto il servo. Il servo non è realmente necessario e un led e un resistore da 1k funzionerebbero bene e/o qualsiasi circuito che desideri collegare. Ho appena usato un servo per mostrare come fare clic su qualcosa su uno schermo può far muovere effettivamente qualcosa. Il servo è alimentato dalla propria alimentazione. Questo alimentatore separato non sarebbe necessario se il picax stesse semplicemente accendendo e spegnendo i led. Il picaxe è pronto - ora abbiamo bisogno del codice VB.

Passaggio 7: scrivere un codice di interfaccia VB

Scrivi del codice di interfaccia VB
Scrivi del codice di interfaccia VB

Una volta installato VB. Net, eseguilo e seleziona File/Nuovo progetto e seleziona Applicazione Windows. Puoi fare clic su File/Salva tutto all'inizio e salvare dove preferisci e poi in futuro avviare il progetto da VB. Net o facendo clic su un file.sln che verrà creato.

Passaggio 8: progettare il modulo VB. Net

Progetta il modulo VB. Net
Progetta il modulo VB. Net

VB crea un nuovo modulo vuoto denominato Form1.vb. Puoi cambiare il nome di questo ora o più tardi o semplicemente lasciarlo come Form1 se il progetto è semplice. Lo lasceremo così com'è. Per aggiungere un po' di controllo dobbiamo aprire la casella degli strumenti che è cerchiata in verde. La casella degli strumenti può essere aperta e chiusa ogni volta che è necessario - di solito il primo passo è aggiungere i controlli, quindi chiudere la casella degli strumenti e lavorare sul codice. Puoi lasciarlo sempre aperto ma occupa un po' di schermo.

Passaggio 9: aggiungi un timer

Aggiungi un timer
Aggiungi un timer

Abbiamo fatto scorrere la casella degli strumenti e selezionato un timer. Fare doppio clic sul timer per aggiungerlo. Nella parte inferiore dello schermo apparirà l'immagine di un orologio chiamato Timer1 e in alto a destra verranno evidenziate le proprietà del timer. Puoi modificarli o possono essere modificati nel corpo del testo del codice. Le lasceremo così come sono e le modificheremo nel corpo del testo.

Per inciso, la casella degli strumenti sembra un po' scoraggiante, ma solo alcuni sono necessari per la maggior parte dei programmi: questi includono pulsanti, caselle di testo, etichette, timer, caselle di immagini, caselle di controllo e caselle radio. Forse apri un nuovo programma e gioca con qualcuno qualche volta.

Passaggio 10: aggiungi un paio di pulsanti

Aggiungi un paio di pulsanti
Aggiungi un paio di pulsanti

Fare clic sullo strumento pulsante e disegnare le dimensioni del pulsante in Form1. Avremo bisogno di due pulsanti, una scatola immagine e un'etichetta. Vai avanti e aggiungi questi: lo screenshot successivo li mostra tutti disegnati. La dimensione e la posizione non sono importanti e puoi rinominarli in seguito, se lo desideri.

Passaggio 11: modulo con tutti i controlli aggiunti

Modulo con tutti i controlli aggiunti
Modulo con tutti i controlli aggiunti

Form1 è ora disposto. La casella accanto a Button2 è una piccola casella immagine. Puoi inserire delle immagini in questo, ma lo useremo solo per indicare quale pulsante è stato premuto cambiandolo da rosso a verde. Label1 visualizza i registri Picaxe.

Passaggio 12: aggiungi del codice

Aggiungi del codice
Aggiungi del codice

Sulla destra cerchiati in verde ci sono diversi pulsanti utili: il secondo da destra è il pulsante Visualizza codice e il pulsante destro è View Designer. In pratica quando si scrive codice si va avanti e indietro tra queste viste. In genere, se si è in modalità Designer, fare doppio clic su un oggetto come un pulsante fa apparire un punto nella Vista codice per aggiungere del codice o ne porta uno al pezzo di codice che viene eseguito quando viene premuto il pulsante. In questo modo il flusso del programma diventa abbastanza intuitivo: l'utente fa clic su cose e frammenti di codice, esegui e cambia lo schermo e così via. avrà Public Class Form1 …End Class - evidenzia questo ed eliminalo. Ora prendi tutto il codice sottostante e incollalo in. Imports System. IOImports Strings = Microsoft. VisualBasic ' quindi puoi usare cose come left(and right(for stringsPublic Class Form1Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' per le istruzioni di sospensioneDim WithEvents serialPort As New IO. Ports. SerialPort ' porta seriale requireDim PicaxeRegisters(0 To 13) As Byte ' registra da b0 a b13Private Sub Form1_Load(ByVal sender As Object, ByVal e As System. EventArgs) gestisce Me. LoadTimer1. Enabled = True ' inseriscilo nel codice come impostazione predefinita su false quando createTimer1. Interval = 5000 ' 5 secondiPictureBox1. BackColor = Color. Red ' impostato sulla posizione 'red'Array. Clear(PicaxeRegisters, 0, 13) ' probabilmente non necessario come array dichiarato blankEnd SubPrivate Sub Timer1_Tick(ByVal sender As System. Object, ByVal e As System. EventArgs) Gestisce il timer Timer1. Tick' ogni 5 secondiCall SerialTxRx() ' parla con picaxeEnd SubSub SerialTxRx()Dim LabelString As String ' stringa per visualizzare i valori dei byteDim DatiP acket(0 To 17) As Byte ' intero pacchetto dati "Data"+14 bytesDim i As Integer ' i è sempre utile per i loop etcLabel1. Text = "" ' cancella il testo sullo schermoFor i = 0 To 3DataPacket(i) = Asc(Mid("Data", i + 1, 1)) ' aggiunge la parola "Data" al pacchettoNextFor i = 0 To 13DataPacket(i + 4) = PicaxeRegisters(i) 'aggiunge tutti i byte al pacchettoNextIf porta seriale. IsOpen ThenserialPort. Close() ' nel caso sia già apertoEnd IfTryWith serialPort. PortName = "COM1" ' La maggior parte dei nuovi computer usa com1 per impostazione predefinita, ma qualsiasi computer precedente al 1999 con un mouse seriale sarà probabilmente impostato su com2. BaudRate = 2400 ' 2400 è il massimo velocità per piccoli picax. Parity = IO. Ports. Parity. None ' nessuna parità. DataBits = 8 ' 8 bit. StopBits = IO. Ports. StopBits. One ' un bit di stop. ReadTimeout = 1000 ' millisecondi, quindi il timeout in 1 secondo se nessuna risposta. Open() 'apri la porta seriale. DiscardInBuffer() 'cancella il buffer di input. Write(DataPacket, 0, 18) 'invia l'array del pacchetto datiCall Sleep(300) 'minimo 100 millisecondi di attesa fo r dati per tornare e altro se il flusso di dati è più lungo. Read(DataPacket, 0, 18) 'rileggere nell'array del pacchetto di dati. Close() 'chiudere la porta serialeEnd WithFor i = 4 To 17LabelString = LabelString + " " + Str(DataPacket(i)) ' trasforma in una stringa di testoNextLabel1. Text = LabelString 'inserisci la stringa di testo sullo screenCatch ex As Exception'MsgBox(ex. ToString)' togli il commento se vuoi vedere l'effettivo messaggio di erroreLabel1. Text = " Timeout" ' visualizzerà questo se picaxe non è connesso etcEnd TryEnd SubPrivate Sub Button1_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Handles Button1. ClickPictureBox1. BackColor = Color. Red ' cambia la casella in redPicaxeRegisters(0) = 120 ' un valore arbitrario per il servoEnd SubPrivate Sub Button2_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Handles Button2. ClickPictureBox1. BackColor = Color. Green ' box to greenPicaxeRegisters(0) = 160 ' valore arbitrario per il servoEnd Classe SubEnd

Passaggio 13: eseguire il programma

Esegui il programma
Esegui il programma

Accendi il picaxe se non è acceso. Esegui il programma vb.net facendo clic sul triangolo verde nella parte superiore dello schermo vicino al centro. A destra del triangolo di esecuzione ci sono un pulsante di pausa e un pulsante di arresto, oppure il programma può essere interrotto facendo clic in alto a destra x o con File/Esci se è stato aggiunto un menu. Il programma può essere compilato se lo desideri, ma per il debug lascialo in esecuzione all'interno di VB. Il timer invia byte ogni 5 secondi, quindi ci vogliono 5 secondi prima che il display si attivi. L'etichetta 1 mostra un dump dei 14 registri Picaxe. Questi vengono inviati al picaxe e poi rispediti indietro. Quasi certamente non è necessario inviare tutti i 14 e il codice può essere modificato per adattarsi. Il secondo byte con valore 152 è il valore del pot che cambia da 0 a 255. Se si preme il pulsante1 invia un valore di 120 nel primo byte e se si preme il pulsante2 ne invia 160 e il programma picaxe li decodifica e muove il servo. Questo codice mostra come inviare dati e recuperare dati da un microcontrollore. Il microcontrollore può accendere tutti i tipi di dispositivi: ne ho circa 30 in casa che eseguono irrigatori, luci, sicurezza, rilevano auto nei vialetti, accendono un numero di pompe da 3,6 Kw e rilevano il livello dell'acqua nei serbatoi. I Picax possono essere collegati a margherita su un bus comune e possono persino comunicare tra loro tramite collegamenti radio. È inoltre possibile caricare e scaricare dati da siti Web e quindi utilizzare Internet per collegare dispositivi in qualsiasi parte del mondo https://www.instructables. com/id/Worldwide-microcontroller-link-for-under-20/Le prossime due pagine contengono anche alcuni esempi di come utilizzare sensori diversi e come controllare dispositivi diversi. Dr James Moxham Adelaide, South Australia

Passaggio 14: dispositivi di input

Dispositivi di input
Dispositivi di input

Il programmatore picaxe contiene alcuni file di aiuto molto utili, uno dei quali si chiama "Circuiti di interfaccia" ed è disponibile anche su https://www.rev-ed.co.uk/docs/picaxe_manual3.pdf Questo mostra come controllare i motori, percepire l'ambiente e altri controlli utili. Oltre a questi circuiti, ce ne sono alcuni che uso più e più volte. Temperatura - il sensore di temperatura LM35 produce una tensione che può andare direttamente in un picaxe e può essere letta con un comando readadc o readadc10. Luce: un resistore dipendente dalla luce ha una resistenza che varia da poche centinaia di ohm in piena luce solare a oltre 5 megaohm in condizioni di oscurità. Misurare la resistenza al livello di luce che si desidera commutare e mettere in serie l'LDR con un resistore di circa lo stesso valore. Ad esempio, volevo rilevare le luci di un'auto che entra nel posto auto coperto per accendere alcune luci. La resistenza era di circa 1 M dalla luce indiretta, quindi ho messo un 1 M in serie con l'LDR. Interruttore: alcuni interruttori commutano tra 5V e 0V (un interruttore unipolare a doppia corsa), ma alcuni si accendono e si spengono semplicemente. Se un interruttore si accende, può inviare 5V a un chip Picaxe, ma se è spento il pin Picaxe sarebbe "fluttuante" e potrebbe avere qualsiasi valore. Questo circuito mostra come portare l'ingresso a terra quando l'interruttore è spento. Questo è il circuito da utilizzare per la maggior parte degli interruttori a pulsante. Potenziometri: una buona manopola vecchio stile. Gira la manopola e leggi la tensione nel chip. Ci sono tutti i tipi di altri dispositivi elettronici che creano una tensione da 0-5 V o possono essere facilmente configurati per farlo. Esempi sono sensori magnetici, umidità, velocità, tocco, luce infrarossa, pressione, colore e suono. I sensori in generale costano solo pochi dollari ciascuno.

Passaggio 15: controllo dei dispositivi

Dispositivi di controllo
Dispositivi di controllo

Il file della guida di Picaxe contiene un'ottima spiegazione su come controllare motori e luci. Inoltre, trovo che ci siano alcuni circuiti che uso più e più volte. Il primo è un semplice circuito a transistor. Un chip Picaxe può accendere un massimo di 20 mA per pin, il che è buono per accendere un LED ma non molto altro. Un transistor 547 aumenta la corrente a 100 mA, il che è buono per le piccole lampadine. Il secondo circuito mostra un mosfet. I mosfet non hanno praticamente bisogno di corrente per guidarli - solo volt in modo che possano essere controllati direttamente da un picaxe. Ci sono tutti i tipi di mosfet disponibili, ma la mia preferenza è quella chiamata BUK555 60B https://www.ortodoxism.ro/datasheets/philips/BUK555-60A.pdf Può essere pilotato direttamente da 5V (a differenza di alcuni che richiedono 10V) ma il vantaggio principale è che ha una resistenza estremamente bassa quando è acceso - 0,045 ohm che non è molto più della resistenza dei fili che ci si collegherebbe. Ciò significa che non si surriscalda durante la guida di carichi piuttosto elevati, risparmiando energia e risparmiando anche sui costi del dissipatore di calore. Ad esempio guidare un carico di 5 ampere come un faro di un'auto; watt = corrente al quadrato x resistenza, quindi W = 5 * 5 * 0,045 = 1,12 watt che richiederebbero solo un dissipatore di calore come un pezzo quadrato da 1 pollice di alluminio sottile. Il terzo circuito mostra un relè. Esistono diversi parametri per tutti i relè: la tensione della bobina, la resistenza della bobina e la tensione e la corrente di carico. Ad esempio, un relè potrebbe avere una bobina da 12 V con una corrente della bobina di 30 mA, una resistenza della bobina di 400 ohm e potrebbe essere in grado di pilotare fino a 240 V a 1 amp. La corrente della bobina è più volt e ampere di quanto un picaxe possa fornire, quindi usiamo il circuito a transistor per commutare la bobina. C'è anche un diodo incluso - questo sopprime l'EMF posteriore quando il relè si spegne. L'EMF posteriore è ciò che crea la scintilla per una candela, quindi non vuoi queste alte tensioni ovunque in un circuito. I contatti avranno una corrente massima e volt - la corrente potrebbe essere di pochi ampere e i volt sono spesso 240 V, quindi la commutazione di 12 V o 24 V sarà ben entro il raggio d'azione. Se non hai esperienza con l'elettronica non giocare con le tensioni di rete. Ci sono anche piccoli relè che hanno tensioni di bobina di 5V o 6V. Per questi relè potrebbe non essere necessaria un'alimentazione separata da 12 V, ma basta osservare la resistenza della bobina poiché molti di questi hanno un assorbimento di corrente di oltre 100 mA. Se è così e stai usando un regolatore 78L05 100mA 5V potresti voler cambiarlo con un regolatore 7805 che può fornire fino a 1 amp. I relè sono particolarmente utili per commutare la corrente alternata, ad esempio solenoidi per irrigatori da giardino da 24 V CA, luci da giardino da 12 V CA e in ambienti elettricamente rumorosi come un'auto. Sono utili anche per controllare grossi carichi, ad esempio un picaxe che fornisce 20mA a 5V = 0.1W che controlla un transistor 12V a 100mA=1,2W ad un relè 24V 100mA =2,4W ad un contattore che pilota una pompa da 3600W. Se vuoi controllare l'alimentazione in quel modo, chiedi a un elettricista di cablare una scatola di controllo e di darti due fili in uscita (fili della bobina per un relè da 12 V) che puoi controllare. In questo modo l'elettricista può firmare sulla scatola di alimentazione e tu puoi fare tutta l'elettronica senza doversi preoccupare di essere fulminato. Un altro uso per i relè è un controllo inverso per un motore. Utilizzando la modulazione di larghezza di impulso in un mosfet è possibile controllare la velocità di un motore CC e con un relè di potenza DPDT è possibile cambiare la direzione. Questo è un modo semplice per controllare grandi motori come quelli usati nelle "guerre dei robot". Per favore pubblica un commento se hai bisogno di aiuto per costruire qualcosa.

Consigliato: