Sommario:

Arduino 2-in-1 Model Train Controller: 4 passaggi
Arduino 2-in-1 Model Train Controller: 4 passaggi

Video: Arduino 2-in-1 Model Train Controller: 4 passaggi

Video: Arduino 2-in-1 Model Train Controller: 4 passaggi
Video: Lets Model a Level Crossing with Arduino 2024, Dicembre
Anonim
Controller per trenini modello 2 in 1 Arduino
Controller per trenini modello 2 in 1 Arduino

Quarant'anni fa ho progettato un modello di acceleratore del treno basato su amplificatori operazionali per un paio di amici, e poi circa quattro anni fa l'ho ricreato usando un microcontrollore PIC. Questo progetto Arduino ricrea la versione PIC ma aggiunge anche la possibilità di utilizzare una connessione Bluetooth invece degli interruttori manuali per il controllo dell'acceleratore, del freno e della direzione. Sebbene il progetto che presento qui sia destinato a un motore per modellismo ferroviario da 12 volt, può essere facilmente modificato per una varietà di altre applicazioni di controllo del motore CC.

Passaggio 1: modulazione dell'ampiezza dell'impulso (PWM)

Modulazione dell'ampiezza dell'impulso (PWM)
Modulazione dell'ampiezza dell'impulso (PWM)

Per quelli di voi che non hanno familiarità con PWM, non è così spaventoso come sembra. Tutto ciò che significa veramente per la nostra semplice applicazione di controllo del motore è che generiamo un'onda quadra di una certa frequenza e quindi modifichiamo il ciclo di lavoro. Il ciclo di lavoro è definito come il rapporto tra il tempo in cui l'uscita è un valore logico alto rispetto al periodo della forma d'onda. Puoi vederlo abbastanza chiaramente nel diagramma sopra con la forma d'onda superiore con un ciclo di lavoro del 10%, la forma d'onda centrale con un ciclo di lavoro del 50% e la forma d'onda inferiore con un ciclo di lavoro del 90%. La linea tratteggiata sovrapposta a ciascuna forma d'onda rappresenta la tensione CC equivalente vista dal motore. Dato che Arduino ha una funzionalità PWM integrata, è davvero piuttosto semplice generare questo tipo di controllo del motore CC. Un altro vantaggio dell'utilizzo del PWM è che aiuta a mantenere il motore dall'avvio barcollante che può verificarsi quando si utilizza la corrente continua. Uno svantaggio del PWM è che a volte c'è un rumore udibile dal motore alla frequenza del PWM.

Passaggio 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

La prima immagine mostra le connessioni Arduino per gli interruttori e il modulo driver del motore LM298. Ci sono deboli resistori di pull-up interni ad Arduino, quindi non sono necessari resistori di pull-up per gli interruttori. L'interruttore di direzione è un semplice interruttore SPST (single pole single throw). Gli interruttori dell'acceleratore e del freno sono mostrati come pulsanti a contatto momentaneo normalmente aperti.

La seconda immagine mostra le connessioni Arduino per il modulo Bluetooth e il modulo driver motore LM298. L'uscita Bluetooth TXD si collega direttamente all'ingresso seriale Arduino RX.

La terza immagine è un modulo dual H-bridge L298N. Il modulo LM298 ha a bordo un regolatore da 5 volt che può essere abilitato da un ponticello. Abbiamo bisogno di +5 volt per Arduino e Bluetooth ma vogliamo +12 volt per guidare il motore. In questo caso applichiamo i +12 volt all'ingresso “+12V power” dell'L298N e lasceremo in posizione il jumper “5V enable”. Ciò consente al regolatore a 5 volt di inviare l'uscita alla connessione "+5 power" sul modulo. Collegalo ad Arduino e al Bluetooth. Non dimenticare di collegare i fili di terra per l'ingresso +12 e l'uscita +5 al modulo “power GND”.

Vogliamo che la tensione di uscita al motore vari in base al PWM generato da Arduino invece di essere completamente acceso o spento. Per fare ciò, rimuoviamo i ponticelli da "ENA" e "ENB" e colleghiamo la nostra uscita PWM Arduino a "ENA" sul modulo. Tieni presente che il pin di abilitazione effettivo è quello più vicino al bordo della scheda (accanto ai pin di "input"). Il pin posteriore per ogni abilitazione è +5 volt, quindi vogliamo assicurarci di non collegarci a quello.

I pin “IN1” e “IN2” del modulo sono collegati ai rispettivi pin Arduino. Quei pin controllano la direzione del motore e, sì, c'è una buona ragione per lasciare che Arduino li controlli invece di collegare semplicemente un interruttore al modulo. Vedremo perché nella discussione sul software.

Passaggio 3: modulo Bluetooth

Modulo Bluetooth
Modulo Bluetooth

L'immagine mostrata qui è tipica dei moduli Bluetooth disponibili. Quando ne cerchi uno da acquistare, puoi cercare i termini "HC-05" e HC-06". Le differenze tra i due sono nel firmware e solitamente nel numero di pin sulla scheda. L'immagine sopra è di un modulo HC-06 e viene fornita con un firmware semplificato che consente solo una configurazione di base. È anche impostato come dispositivo Bluetooth solo "Slave". In parole povere ciò significa che può rispondere solo ai comandi di un dispositivo "Master" e non può emettere comandi da solo. Il modulo HC-05 ha più possibilità di configurazione e può essere impostato come dispositivo “Master” o “Slave”. L'HC-05 di solito ha sei pin invece dei quattro mostrati sopra per l'HC-06. Il pin di stato non è molto importante, ma il pin della chiave (a volte viene chiamato con altri nomi come "EN") è necessario se si desidera eseguire qualsiasi configurazione. Generalmente, i moduli non hanno bisogno di alcuna configurazione se stai bene con il baud rate predefinito di 9600 e non ti interessa dare un nome specifico al modulo. Ho diversi progetti in cui li uso, quindi mi piace nominarli di conseguenza.

La configurazione dei moduli Bluetooth richiede l'acquisto o la creazione di un'interfaccia per una porta seriale RS-232 o per una porta USB. Non tratterò come costruirne uno in questo post, ma dovresti essere in grado di trovare informazioni sul web. O semplicemente acquista un'interfaccia. I comandi di configurazione utilizzano comandi AT in modo simile a quelli utilizzati in passato con i modem telefonici. Ho allegato un manuale utente qui che include i comandi AT per ogni tipo di modulo. Una cosa da notare è che l'HC-06 richiede i comandi MAIUSCOLE e la stringa di comando deve essere completata entro 1 secondo. Ciò significa che alcune delle stringhe più lunghe per cose come la modifica della velocità di trasmissione dovranno essere tagliate e incollate nel programma del terminale o sarà necessario impostare file di testo da inviare. Il requisito MAIUSCOLE è solo se stai tentando di inviare comandi di configurazione. La modalità di comunicazione normale può accettare qualsiasi 8 bit di dati.

Passaggio 4: software

Il software è piuttosto semplice sia per la versione manuale che per la versione Bluetooth. Per selezionare la versione Bluetooth è sufficiente decommentare l'istruzione "#define BT_Ctrl".

Quando ho scritto il codice PIC ho sperimentato la frequenza PWM e alla fine mi sono stabilito su 500-Hz. Ho scoperto che se la frequenza era troppo alta, il modulo LM298N non era in grado di reagire abbastanza rapidamente agli impulsi. Ciò significava che l'uscita di tensione non era lineare e poteva fare grandi salti. L'Arduino ha comandi PWM integrati ma consentono solo di variare il ciclo di lavoro e non la frequenza. Fortunatamente, la frequenza è di circa 490 Hz, quindi è abbastanza vicina ai 500 Hz che ho usato sul PIC.

Una delle "caratteristiche" dell'acceleratore del treno è un senso di slancio per l'accelerazione e la frenata per simulare il funzionamento di un vero treno. Per fare ciò, viene inserito un semplice ritardo nel loop per la versione manuale del software. Con il valore visualizzato, occorrono circa 13 secondi per passare da 0 a 12 volt o da 12 volt di nuovo a zero. Il ritardo può essere facilmente modificato per tempi più o meno lunghi. L'unico caso in cui lo slancio non è attivo è quando viene modificato l'interruttore di direzione. A scopo di protezione, il ciclo di lavoro PWM viene immediatamente impostato su 0% ogni volta che questo interruttore viene modificato. Ciò, in effetti, rende l'interruttore di direzione anche doppio come freno di emergenza.

Per garantire una gestione immediata dell'interruttore di direzione, ho inserito il suo codice in un gestore di interruzioni. Ciò ci consente anche di utilizzare la funzione "Interrompi al cambiamento", quindi non importa se il cambiamento è da basso ad alto o da alto a basso.

La versione Bluetooth del software utilizza comandi a lettera singola per avviare le funzioni Avanti, Indietro, Freno e Acceleratore. In effetti, i comandi ricevuti sostituiscono gli interruttori manuali ma provocano le stesse risposte. L'app che utilizzo per il controllo Bluetooth si chiama "Bluetooth Serial Controller" di Next Prototypes. Ti consente di configurare una tastiera virtuale e di impostare stringhe di comando e nomi personalizzati per ciascun tasto. Ti consente anche di impostare una frequenza di ripetizione, quindi ho impostato i pulsanti Brake e Throttle su 50 ms per dare circa 14 secondi di slancio. Ho disabilitato la funzione di ripetizione per i pulsanti Avanti e Indietro.

Questo è tutto per questo post. Dai un'occhiata ai miei altri Instructables. Se sei interessato ai progetti di microcontrollori PIC, dai un'occhiata al mio sito Web all'indirizzo www.boomerrules.wordpress.com

Consigliato: