Sommario:

UChip - Semplice schizzo per il controllo remoto di motori e/o servi tramite radio Tx-Rx a 2,4 GHz!: 3 passaggi
UChip - Semplice schizzo per il controllo remoto di motori e/o servi tramite radio Tx-Rx a 2,4 GHz!: 3 passaggi

Video: UChip - Semplice schizzo per il controllo remoto di motori e/o servi tramite radio Tx-Rx a 2,4 GHz!: 3 passaggi

Video: UChip - Semplice schizzo per il controllo remoto di motori e/o servi tramite radio Tx-Rx a 2,4 GHz!: 3 passaggi
Video: disegni facile | Festa della mamma disegno con schizzo a matita per principianti | | رسم عيد الأم 2024, Dicembre
Anonim
Image
Image
UChip - Semplice schizzo per controllare a distanza motori e/o servi tramite radio Tx-Rx a 2,4 GHz!
UChip - Semplice schizzo per controllare a distanza motori e/o servi tramite radio Tx-Rx a 2,4 GHz!
UChip - Semplice schizzo per controllare a distanza motori e/o servi tramite radio Tx-Rx a 2,4 GHz!
UChip - Semplice schizzo per controllare a distanza motori e/o servi tramite radio Tx-Rx a 2,4 GHz!

Mi piace molto il mondo RC. Usare un giocattolo RC ti dà la sensazione di avere il controllo di qualcosa di straordinario, nonostante sia una piccola barca, un'auto o un drone!

Tuttavia, non è facile personalizzare i tuoi giocattoli e fargli fare quello che vuoi che facciano. Di solito, si è costretti a utilizzare le impostazioni predefinite del trasmettitore o le combinazioni di interruttori e manopole appositamente progettate.

Riuscire a controllare tutto come si vuole veramente è piuttosto difficile, soprattutto perché il mondo RC richiede una conoscenza abbastanza profonda della programmazione a livello hardware per ottenere il meglio da esso.

Ho provato molte piattaforme e configurazioni, ma è sempre costato uno sforzo enorme per prendere confidenza con il codice prima di fare una vera personalizzazione al mio giocattolo RC.

Quello che mi mancava è un semplice schizzo che potrei caricare usando l'IDE di Arduino e che mi permetterebbe facilmente di tradurre i valori in uscita dalla Radio RX (ricevitore) nel controllo Motore/Servo desiderato.

Pertanto, ecco cosa ho creato dopo aver giocato un po' con uChip e l'IDE Arduino: Un semplice schizzo per controllare a distanza Motori e/o Servi tramite Radio Tx-Rx a 2,4 GHz!

Distinta base

1 x uChip: scheda compatibile con Arduino IDE

1 xTx-Rx Sistema radio: qualsiasi sistema radio con ricevitore cPPM va bene (la mia combo è un vecchio Spectrum DX7 Tx + Orange R614XN cPPM Rx), assicurati di seguire la corretta procedura di associazione per associare Tx e Rx.

1 x Batteria: sono necessarie batterie ad alta corrente di scarica quando si ha a che fare con motori e servi.

Motori/Servo: secondo le tue esigenze

Componenti elettronici per pilotare i Motori/Servo: semplici resistenze, MOSFET e Diodi permettono di raggiungere lo scopo di pilotaggio.

Passaggio 1: cablaggio

Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio

Collegare i componenti insieme come descritto negli schemi.

L'Rx è collegato direttamente a uChipand non richiede alcun componente esterno. Nel caso in cui utilizzi un ricevitore diverso, verifica se hai bisogno di un traslatore di livello o meno. Assicurati di collegare il segnale cPPM a uChip PIN_9 (che è PORTA19 nel caso in cui desideri adattare il codice a un'altra scheda SAMD21).

Il cablaggio rimanente è necessario per azionare il motore e/o il servo. Lo schema allegato rappresenta il circuito di base per proteggere uChip da picchi/overshoot che di solito si verificano durante il pilotaggio di carichi induttivi. Il componente chiave per preservare la sicurezza di uChip è il diodo Zener di potenza da 5.1V (D1 nello schema) che è necessario mettere in parallelo a VEXT (pin 16 uChip) e GND (pin 8 uChip). In alternativa, invece di utilizzare il diodo Zener, è possibile optare per la circuiteria opzionale rappresentata da D2, C1 e C2, che impedisce ai picchi inversi di danneggiare i componenti uChip.

Puoi pilotare tutti i motori/servi di cui hai bisogno semplicemente replicando lo schema e cambiando i pin di controllo (puoi usare qualsiasi pin tranne i pin di alimentazione (PIN_8 e PIN_16) e il pin cPPM (PIN_9)). Si tenga presente che, mentre è necessaria una sola circuiteria di protezione che è rappresentata dal diodo Zener (o dai componenti per la circuiteria opzionale), i componenti elettrici relativi al pilotaggio motore/servo devono essere replicati tante volte quanti sono i motori/ servo che intendi pilotare.

Dato che volevo pilotare almeno 2 motori e 2 servocomandi, ho realizzato un piccolo PCB che implementava la circuiteria descritta e che potete vedere in foto. Tuttavia, il primo prototipo è stato realizzato su una protoscheda utilizzando cavi volanti.

Pertanto, non sono necessarie competenze di progettazione di saldatura/PCB per implementare questo semplice progetto:)

Passaggio 2: programmazione

Programmazione
Programmazione

Ecco la magia! È qui che le cose si fanno interessanti.

Nel caso tu abbia costruito il circuito descritto nello schema precedente, puoi semplicemente caricare lo sketch “DriveMotorAndServo.ino” e tutto dovrebbe funzionare.

Dai un'occhiata al codice e controlla come funziona.

All'inizio ci sono poche #define usate per definire:

- il numero di canali della Rx (6Ch con Orange 614XN)

- i perni su cui sono fissati i motori/servi

- Max e min utilizzati per servo e motori

- Max e min utilizzati per la gamma dei canali radio

Poi c'è la sezione di dichiarazione delle variabili dove vengono dichiarate le variabili dei motori/servi.

Nel caso in cui guidi più di un motore e di un servo collegato come descritto nello schema precedente, devi modificare lo schizzo e aggiungere il codice che gestisce i motori/servi aggiuntivi collegati. Devi aggiungere tanti Servo, servo_value e motor_value quanti servo/motori stai usando.

All'interno della sezione di dichiarazione delle variabili sono presenti anche alcune variabili volatili utilizzate per il Capture Compare del segnale cPPM. NON CAMBIARE QUESTE VARIABILI!

Quello che devi fare dopo è nella funzione loop(). Qui puoi decidere che uso fare del valore dei canali in entrata.

Nel mio caso ho collegato il valore in ingresso direttamente al motore e al servo, ma sei più che benvenuto a modificarlo in base alle tue esigenze! Nel video e nelle immagini linkate in questo tutorial ho collegato 2 motori e 2 servocomandi, ma potrebbero essercene 3, 4, 5, …fino al massimo di pin liberi disponibili (13 in caso di uChip).

Puoi trovare il valore del canale catturato all'interno dell'array ch[index], il cui “indice” va da 0 a NUM_CH - 1. Ogni canale corrisponde a uno stick/interruttore/manopola sulla tua radio. Sta a te capire cosa-è-cosa:)

Infine, ho implementato alcune funzioni di debug per rendere più semplice la comprensione di ciò che sta accadendo. Commenta/decommenta il #define DEBUG per stampare sul SerialUSB nativo il valore dei canali.

SUGGERIMENTO: c'è più codice sotto la funzione loop(). Questa parte del codice è necessaria per impostare i pin di alimentazione di uChip, gestire gli interrupt generati dalla funzione di confronto della cattura, impostare i timer e lo scopo del debug. Nel caso in cui ti senti abbastanza coraggioso da giocare con i registri, sentiti libero di modificarlo!

Modifica: schizzo aggiornato, corretto un bug nella funzione di mappatura.

Passaggio 3: gioca, guida, gareggia, vola

Image
Image

Assicurati di collegare correttamente il sistema Tx e Rx. Accendilo collegando la batteria. Verifica che tutto funzioni. Puoi espandere le funzionalità o modificare la funzione di ciascun canale a tuo piacimento, perché ora hai il pieno controllo del tuo futuro modello RC.

Ora costruisci il tuo modello RC personalizzato!

P. S.: poiché l'associazione può essere piuttosto noiosa da fare, ho intenzione di rilasciare presto uno schizzo che consenta di collegare il tuo sistema Tx-Rx senza doverlo fare manualmente. Resta sintonizzato per gli aggiornamenti!

Consigliato: